UNPKG

test-contracts-sovryn

Version:

Smart contracts for the Sovryn protocol and external integrations.

1,676 lines 132 kB
{
  "_format": "hh-sol-artifact-1",
  "contractName": "LoanTokenLogicWrbtc",
  "sourceName": "contracts/connectors/loantoken/LoanTokenLogicWrbtc.sol",
  "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": "burner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assetAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "loanToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "loanAmount",
          "type": "uint256"
        }
      ],
      "name": "FlashBorrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assetAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "addresses",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "limits",
          "type": "uint256[]"
        }
      ],
      "name": "SetTransactionLimits",
      "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"
    },
    {
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assetBorrow",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "assetSupply",
          "type": "uint256"
        }
      ],
      "name": "_supplyInterestRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "admin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "assetBalanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "avgBorrowInterestRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "baseRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "loanId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "withdrawAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "initialLoanDuration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "collateralTokenSent",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "collateralTokenAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "borrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "borrowInterestRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "burnAmount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "loanAmountPaid",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "burnAmount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "useLM",
          "type": "bool"
        }
      ],
      "name": "burnToBTC",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "loanAmountPaid",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "string",
          "name": "funcId",
          "type": "string"
        }
      ],
      "name": "checkPause",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isPaused",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "leverageAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "loanTokenSent",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "collateralTokenSent",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "collateralTokenAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minReturn",
          "type": "uint256"
        }
      ],
      "name": "checkPriceDivergence",
      "outputs": [],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "checkpointPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "checkpointSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "collateralTokens",
          "type": "address[]"
        },
        {
          "internalType": "bool[]",
          "name": "isTorqueLoans",
          "type": "bool[]"
        }
      ],
      "name": "disableLoanParams",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "earlyAccessToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "depositAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "initialLoanDuration",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "collateralTokenAddress",
          "type": "address"
        }
      ],
      "name": "getBorrowAmountForDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "initialLoanDuration",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "collateralTokenAddress",
          "type": "address"
        }
      ],
      "name": "getDepositAmountForBorrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "depositAmount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "leverageAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "loanTokenSent",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "collateralTokenSent",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "collateralTokenAddress",
          "type": "address"
        }
      ],
      "name": "getEstimatedMarginDetails",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "principal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "collateral",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "interestRate",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "leverageAmount",
          "type": "uint256"
        }
      ],
      "name": "getMaxEscrowAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "maxEscrowAmount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "initialPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kinkLevel",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "liquidityMiningAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "loanParamsIds",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "loanTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lowUtilBaseRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lowUtilRateMultiplier",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "loanId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "leverageAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "loanTokenSent",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "collateralTokenSent",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "collateralTokenAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minReturn",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "loanDataBytes",
          "type": "bytes"
        }
      ],
      "name": "marginTrade",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "loanId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "leverageAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "loanTokenSent",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "collateralTokenSent",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "collateralTokenAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minReturn",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "affiliateReferrer",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "loanDataBytes",
          "type": "bytes"
        }
      ],
      "name": "marginTradeAffiliate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "marketLiquidity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxScaleRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "depositAmount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "useLM",
          "type": "bool"
        }
      ],
      "name": "mintWithBTC",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        }
      ],
      "name": "nextBorrowInterestRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "supplyAmount",
          "type": "uint256"
        }
      ],
      "name": "nextSupplyInterestRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "pauser",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "profitOf",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "rateMultiplier",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        }
      ],
      "name": "setAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_baseRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_rateMultiplier",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_lowUtilBaseRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_lowUtilRateMultiplier",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_targetLevel",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_kinkLevel",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxScaleRate",
          "type": "uint256"
        }
      ],
      "name": "setDemandCurve",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "LMAddress",
          "type": "address"
        }
      ],
      "name": "setLiquidityMiningAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_pauser",
          "type": "address"
        }
      ],
      "name": "setPauser",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "active",
              "type": "bool"
            },
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "loanToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "collateralToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "minInitialMargin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maintenanceMargin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxLoanTerm",
              "type": "uint256"
            }
          ],
          "internalType": "struct LoanParamsStruct.LoanParams[]",
          "name": "loanParamsList",
          "type": "tuple[]"
        },
        {
          "internalType": "bool",
          "name": "areTorqueLoans",
          "type": "bool"
        }
      ],
      "name": "setupLoanParams",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "sovrynContractAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "supplyInterestRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "targetLevel",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "target_",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "string",
          "name": "funcId",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "isPaused",
          "type": "bool"
        }
      ],
      "name": "toggleFunctionPause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "tokenPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalAssetBorrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalAssetSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assetSupply",
          "type": "uint256"
        }
      ],
      "name": "totalSupplyInterestRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "transactionLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "wrbtcTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052600160009081556200001e6001600160e01b036200007216565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000076565b3390565b615d2c80620000866000396000f3fe6080604052600436106103d95760003560e01c80637e37c08c116101fd578063ca37e66611610118578063e41b07e3116100ab578063f2fde38b1161007a578063f2fde38b14610a98578063f6b69f9914610ab8578063f851a44014610acb578063fb5f83df14610ae0578063ffa1ad7414610af3576103d9565b8063e41b07e314610a23578063e697d2ee14610a43578063eebc508114610a63578063ef2b0b3914610a83576103d9565b8063d8f06c83116100e7578063d8f06c83146109a3578063d97206a4146109c3578063dd62ed3e146109e3578063e3cded6114610a03576103d9565b8063ca37e66614610939578063cb926cb31461094e578063d65a50211461096e578063d759dbeb1461098e576103d9565b806395d89b4111610190578063a9059cbb1161015f578063a9059cbb146108c4578063b9fe1a8f146108e4578063ba0e43bf14610904578063be19421714610919576103d9565b806395d89b41146108655780639bda3a981461087a5780639dc29fac1461088f5780639fd0506d146108af576103d9565b80638da5cb5b116101cc5780638da5cb5b146108115780638ee6c4e6146108265780638f32d59b1461083b5780638fb807c514610850576103d9565b80637e37c08c146107b25780637ff9b596146107c7578063829b38f4146107dc5780638325a1c0146107fc576103d9565b80632ea295fa116102f857806356e07d701161028b578063704b6c021161025a578063704b6c021461072857806370a08231146107485780637288b34414610768578063797bf385146107885780637b7933b41461079d576103d9565b806356e07d70146106af578063612ef80b146106c4578063631a3ef8146106d95780636b40cd40146106f9576103d9565b8063330691ac116102c7578063330691ac1461064557806340c10f191461065a57806344a4a0031461067a57806354198ce91461068f576103d9565b80632ea295fa146105db5780632f6b600d146105ee578063313ce567146106035780633291c11a14610625576103d9565b806318160ddd1161037057806320f6d07c1161033f57806320f6d07c1461056557806323b872dd1461057a57806328a02f191461059a5780632d88af4a146105bb576103d9565b806318160ddd1461050457806318498b1d146105195780631d0806ae1461053b5780631f68f20a14610550576103d9565b806306fdde03116103ac57806306fdde0314610480578063095ea7b3146104a257806309ec6b6b146104cf57806312416898146104e4576103d9565b806304797930146103e85780630506af041461041e57806306947a3a1461043e57806306b3efd614610460575b3480156103e557600080fd5b50005b3480156103f457600080fd5b50610408610403366004614b7f565b610b08565b60405161041591906158a6565b60405180910390f35b34801561042a57600080fd5b506104086104393660046146ff565b610cb1565b34801561044a57600080fd5b50610453610d83565b604051610415919061571d565b34801561046c57600080fd5b5061040861047b3660046145dc565b610d92565b34801561048c57600080fd5b50610495610e7e565b6040516104159190615925565b3480156104ae57600080fd5b506104c26104bd3660046146cf565b610f09565b6040516104159190615898565b3480156104db57600080fd5b50610408610f74565b3480156104f057600080fd5b506104086104ff366004614af4565b610f89565b34801561051057600080fd5b50610408610fb4565b34801561052557600080fd5b50610539610534366004614c23565b610fba565b005b34801561054757600080fd5b50610408610ff4565b34801561055c57600080fd5b50610408610ffa565b34801561057157600080fd5b50610408611000565b34801561058657600080fd5b506104c2610595366004614652565b61108f565b6105ad6105a83660046149fc565b611158565b604051610415929190615b46565b3480156105c757600080fd5b506105396105d63660046145dc565b61137d565b6105ad6105e9366004614855565b6113c3565b3480156105fa57600080fd5b506104536116a3565b34801561060f57600080fd5b506106186116b2565b6040516104159190615b6f565b34801561063157600080fd5b50610408610640366004614af4565b6116bb565b34801561065157600080fd5b506104086116cd565b34801561066657600080fd5b506104086106753660046146cf565b6116d3565b34801561068657600080fd5b50610408611714565b34801561069b57600080fd5b506104086106aa3660046145dc565b611726565b3480156106bb57600080fd5b506104086117c7565b3480156106d057600080fd5b506104086117cd565b3480156106e557600080fd5b506104086106f4366004614b7f565b6117fe565b34801561070557600080fd5b50610719610714366004614bc2565b61199e565b60405161041593929190615b54565b34801561073457600080fd5b506105396107433660046145dc565b611aaf565b34801561075457600080fd5b506104086107633660046145dc565b611af5565b34801561077457600080fd5b50610408610783366004614b30565b611b10565b34801561079457600080fd5b50610453611bf3565b3480156107a957600080fd5b50610408611c07565b3480156107be57600080fd5b50610408611c0d565b3480156107d357600080fd5b50610408611c13565b3480156107e857600080fd5b506104086107f7366004614af4565b611c51565b34801561080857600080fd5b50610408611cd1565b34801561081d57600080fd5b50610453611cdd565b34801561083257600080fd5b50610453611cec565b34801561084757600080fd5b506104c2611cfb565b34801561085c57600080fd5b50610408611d21565b34801561087157600080fd5b50610495611d51565b34801561088657600080fd5b50610453611dac565b34801561089b57600080fd5b506104086108aa3660046146cf565b611dbb565b3480156108bb57600080fd5b50610453611e2f565b3480156108d057600080fd5b506104c26108df3660046146cf565b611e3e565b3480156108f057600080fd5b506104086108ff366004614af4565b611e4e565b34801561091057600080fd5b50610408611e59565b34801561092557600080fd5b506104c2610934366004614a8b565b611e5f565b34801561094557600080fd5b50610453611ee1565b34801561095a57600080fd5b506105396109693660046145dc565b611ef0565b34801561097a57600080fd5b50610408610989366004614af4565b611f36565b34801561099a57600080fd5b50610408611f49565b3480156109af57600080fd5b506105396109be3660046147e4565b611f4f565b3480156109cf57600080fd5b506105396109de366004614d1f565b61211e565b3480156109ef57600080fd5b506104086109fe366004614618565b612225565b348015610a0f57600080fd5b50610539610a1e366004614abf565b612250565b348015610a2f57600080fd5b50610408610a3e3660046145dc565b6122f5565b348015610a4f57600080fd5b50610539610a5e366004614742565b612307565b348015610a6f57600080fd5b50610408610a7e3660046145dc565b6124b8565b348015610a8f57600080fd5b506104086124d3565b348015610aa457600080fd5b50610539610ab33660046145dc565b6124d9565b6105ad610ac636600461491c565b612509565b348015610ad757600080fd5b506104536125d9565b610408610aee36600461469f565b6125e8565b348015610aff57600080fd5b50610408612632565b60008315610caa576001600160a01b038216610b2d576017546001600160a01b031691505b600060106000846001604051602001610b4792919061569e565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610bb8918a91016158a6565b60206040518083038186803b158015610bd057600080fd5b505afa158015610be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c089190810190614b12565b60016040518663ffffffff1660e01b8152600401610c2a959493929190615797565b60206040518083038186803b158015610c4257600080fd5b505afa158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7a9190810190614b12565b9150610c8e82610c88611d21565b86612637565b9350610c9c91506126b09050565b821115610ca857600091505b505b9392505050565b6000600160005414610cde5760405162461bcd60e51b8152600401610cd590615af6565b60405180910390fd5b60026000558115610cf957610cf2836126e6565b9050610d05565b610d028361288c565b90505b8015610d7757601754604051632e1a7d4d60e01b81526001600160a01b0390911690632e1a7d4d90610d3b9084906004016158a6565b600060405180830381600087803b158015610d5557600080fd5b505af1158015610d69573d6000803e3d6000fd5b50505050610d778482612a43565b60016000559392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610e2d57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610dda9030908790600401615739565b60206040518083038186803b158015610df257600080fd5b505afa158015610e06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2a9190810190614b12565b90505b610e75670de0b6b3a7640000610e69610e44611c13565b610e5d85610e5189611af5565b9063ffffffff612ae416565b9063ffffffff612b0916565b9063ffffffff612b4316565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610f015780601f10610ed657610100808354040283529160200191610f01565b820191906000526020600020905b815481529060010190602001808311610ee457829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610f629086906158a6565b60405180910390a35060015b92915050565b6000610f836104ff6000612b85565b90505b90565b600080610f94611000565b90508015610fae57610fa68184611b10565b915050610e79565b50919050565b60155490565b6000610fc88686868661199e565b5091505081811015610fec5760405162461bcd60e51b8152600401610cd590615936565b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe9361103f9330936101009092049091169101615739565b60206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f839190810190614b12565b60165460405163115dd4b160e01b8152600091611150918691869186916001600160a01b03169063115dd4b1906110ca90339060040161572b565b60206040518083038186803b1580156110e257600080fd5b505afa1580156110f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061111a9190810190614837565b611147576001600160a01b038816600090815260146020908152604080832033845290915290205461114b565b6000195b612bbf565b949350505050565b60008060016000541461117d5760405162461bcd60e51b8152600401610cd590615af6565b600260005561118a612d92565b6111978989898988610fba565b6001600160a01b0386166111b4576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156111e75760405162461bcd60e51b8152600401610cd590615a06565b8915806111fc5750336001600160a01b038616145b6112185760405162461bcd60e51b8152600401610cd590615b16565b6001600160a01b0386166000908152601260205260409020541561125b576001600160a01b03861660009081526012602052604090205487111561125b57600080fd5b60045461010090046001600160a01b0316600090815260126020526040902054156112ac5760045461010090046001600160a01b03166000908152601260205260409020548811156112ac57600080fd5b60006112b987898b612e12565b9050806112d85760405162461bcd60e51b8152600401610cd590615a36565b6112e06142dc565b6112e86142fa565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a905261132061303f565b6113318c82600160200201516130e5565b825260208201526113526f4b3b4ca85a86c47a098a2240000000008d612b43565b9b506113648d60008e8c86868c613134565b6001600055909e909d509b505050505050505050505050565b611385611cfb565b6113a15760405162461bcd60e51b8152600401610cd590615a96565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806001600054146113e85760405162461bcd60e51b8152600401610cd590615af6565b60026000558861140a5760405162461bcd60e51b8152600401610cd590615b26565b611412612d92565b6001600160a01b03861660009081526012602052604090205415611455576001600160a01b03861660009081526012602052604090205487111561145557600080fd5b34158061146157508634145b801561147557508615158061147557508915155b801561149c57506001600160a01b03861615158061149257503415155b8061149c57508915155b80156114b857508915806114b85750336001600160a01b038616145b6114d45760405162461bcd60e51b8152600401610cd5906159b6565b6001600160a01b0386166114f1576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156115245760405162461bcd60e51b8152600401610cd590615946565b61152c61303f565b6115346142dc565b61153c6142fa565b3082526001600160a01b03878116602080850191909152908716604084015281018b90526115748b61156e6000612b85565b8c612637565b83600060200201846002602002018560016020020192909252919052528881600460200201818152505061168b8c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e60016040516020016115df92919061569e565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b815260040161162391906158a6565b60206040518083038186803b15801561163b57600080fd5b505afa15801561164f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116739190810190614b12565b8b868660405180602001604052806000815250613134565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b60006001600054146116f75760405162461bcd60e51b8152600401610cd590615af6565b60026000556117068383613393565b90505b600160005592915050565b6000610f83611721611000565b61349f565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b60405160200161175f9291906156c4565b604051602081830303815290604052805190602001209050610e758160136000866001600160a01b03166001600160a01b03168152602001908152602001600020546117a9611c13565b6001600160a01b0387166000908152601160205260409020546134d7565b600a5481565b6000806117da6000612b85565b905060006117e6611000565b9050808211156117f95790039050610f86565b505090565b60008315610caa57600061181485610c88611d21565b925050506118206126b0565b8111610ca8576001600160a01b038316611843576017546001600160a01b031692505b60006010600085600160405160200161185d92919061569e565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b815292945061199593600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d9916118d3918c91016158a6565b60206040518083038186803b1580156118eb57600080fd5b505afa1580156118ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119239190810190614b12565b60016040518663ffffffff1660e01b8152600401611945959493929190615797565b60206040518083038186803b15801561195d57600080fd5b505afa158015611971573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e519190810190614b12565b92505050610caa565b600080806001600160a01b0384166119bf576017546001600160a01b031693505b60006119cc858789612e12565b90506119d888826130e5565b90945091506119e56126b0565b8411156119fc575060009250829150819050611aa5565b611a0c878563ffffffff612ae416565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f707793611a519361010090930416918a918d918d918a918d91016157d9565b60206040518083038186803b158015611a6957600080fd5b505afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aa19190810190614b12565b9250505b9450945094915050565b611ab7611cfb565b611ad35760405162461bcd60e51b8152600401610cd590615a96565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611b215750828210155b15610f6e57611bec701d6329f1c35ca4bfabb9f5610000000000610e69611bd668056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9957600080fd5b505afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bd19190810190614b12565b613531565b610e5d611be38888613573565b610e5d8961349f565b9050610f6e565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611c3a57611c366135a5565b9150505b611c4b611c4682612b85565b613671565b91505090565b600080611c7061016d610e69601c600b54612b0990919063ffffffff16565b90506000611c8d68056bc75e2d631000008363ffffffff61353116565b90506000611caa68056bc75e2d63100000610e6984610e5d6117cd565b9050611cc885610e6983670de0b6b3a764000063ffffffff612b0916565b95945050505050565b6000610f8360006136a0565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611d126136f6565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611d4857611d446135a5565b9150505b611c4b81612b85565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610f015780601f10610ed657610100808354040283529160200191610f01565b6018546001600160a01b031681565b6000600160005414611ddf5760405162461bcd60e51b8152600401610cd590615af6565b6002600055611ded8261288c565b9050801561170957611709600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b8152506136fa565b601b546001600160a01b031681565b6000610caa338484600019612bbf565b6000610f6e826136a0565b60095481565b60008082604051602001611e739190615706565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611ec09291906156ea565b60408051808303601f19018152919052805160209091012054949350505050565b601a546001600160a01b031681565b611ef8611cfb565b611f145760405162461bcd60e51b8152600401610cd590615a96565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f6e6104ff83610e516000612b85565b60075481565b611f57611cfb565b80611f6c57506019546001600160a01b031633145b611f885760405162461bcd60e51b8152600401610cd590615a96565b60045460609061010090046001600160a01b031660005b84518110156120125781858281518110611fb557fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505083611fe7576224ea00611fea565b60005b62ffffff16858281518110611ffb57fe5b602090810291909101015160e00152600101611f9f565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e90612043908790600401615887565b600060405180830381600087803b15801561205d57600080fd5b505af1158015612071573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261209991908101906147b0565b915060005b8251811015612117578281815181106120b357fe5b6020026020010151601060008784815181106120cb57fe5b602002602001015160800151876040516020016120e992919061569e565b60408051601f198184030181529181528151602092830120835290820192909252016000205560010161209e565b5050505050565b612126611cfb565b8061213b57506019546001600160a01b031633145b6121575760405162461bcd60e51b8152600401610cd590615a96565b68056bc75e2d63100000612171878963ffffffff612ae416565b111561218f5760405162461bcd60e51b8152600401610cd590615a26565b68056bc75e2d631000006121a9858763ffffffff612ae416565b11156121c75760405162461bcd60e51b8152600401610cd590615a26565b68056bc75e2d6310000083111580156121e9575068056bc75e2d631000008211155b6122055760405162461bcd60e51b8152600401610cd590615a56565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b0316331461227a5760405162461bcd60e51b8152600401610cd590615ae6565b60008260405160200161228d9190615706565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f26040516020016122d59291906156ea565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b61230f611cfb565b8061232457506019546001600160a01b031633145b6123405760405162461bcd60e51b8152600401610cd590615a96565b82811461235f5760405162461bcd60e51b8152600401610cd590615996565b60408051848152602080860282010190915260609084801561238b578160200160208202803883390190505b50905060005b8481101561244e5760008686838181106123a757fe5b90506020020160206123bc91908101906145dc565b8585848181106123c857fe5b90506020020160206123dd9190810190614819565b6040516020016123ee92919061569e565b6040516020818303038152906040528051906020012060001c9050601060008281526020019081526020016000205483838151811061242957fe5b6020908102919091018101919091526000918252601090526040812055600101612391565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a9061247f908490600401615876565b600060405180830381600087803b15801561249957600080fd5b505af11580156124ad573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b6124e1611cfb565b6124fd5760405162461bcd60e51b8152600401610cd590615a96565b6125068161375a565b50565b6000806001600160a01b038516156125805760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf4489061254d908a908990600401615739565b600060405180830381600087803b15801561256757600080fd5b505af115801561257b573d6000803e3d6000fd5b505050505b6125c68c8c8c8c8c8c8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061115892505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600060016000541461260c5760405162461bcd60e51b8152600401610cd590615af6565b600260005581156126285761262183346137dc565b9050611709565b6126218334613393565b600681565b60008060006126468686613865565b925061269361267b670de0b6b3a7640000611bd16b0a3098c68eb9427db8000000610e6983610e5d8a8c63ffffffff612b0916565b610e6988670de0b6b3a764000063ffffffff612b0916565b90506126a5818763ffffffff61353116565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a082319161103f9130910161571d565b601c54604051636822955360e11b815260009182916001600160a01b039091169063d0452aa69061271d9030903390600401615754565b60206040518083038186803b15801561273557600080fd5b505afa158015612749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061276d9190810190614b12565b90508261278961277c33611af5565b839063ffffffff612ae416565b10156127a75760405162461bcd60e51b8152600401610cd5906159d6565b8015612887578281101561282057601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906127e99030908590339060040161584e565b600060405180830381600087803b15801561280357600080fd5b505af1158015612817573d6000803e3d6000fd5b50505050612887565b601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906128549030908790339060040161584e565b600060405180830381600087803b15801561286e57600080fd5b505af1158015612882573d6000803e3d6000fd5b505050505b610e75835b6000816128ab5760405162461bcd60e51b8152600401610cd590615aa6565b6128b433611af5565b8211156128e85760001982146128dc5760405162461bcd60e51b8152600401610cd590615a66565b6128e533611af5565b91505b6128f061303f565b60006128ff611c466000612b85565b9050600061291f670de0b6b3a7640000610e69868563ffffffff612b0916565b9050600061292b6126b0565b9050819350808411156129505760405162461bcd60e51b8152600401610cd5906159e6565b601c546000906001600160a01b0316156129e957601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906129969030903390600401615754565b60206040518083038186803b1580156129ae57600080fd5b505afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e69190810190614b12565b90505b33600090815260136020526040812054612a09908363ffffffff612ae416565b90506000612a1d828963ffffffff61353116565b9050612a2b3389898961397b565b50612a3833838389613ab1565b505050505050919050565b80471015612a635760405162461bcd60e51b8152600401610cd5906159c6565b6000826001600160a01b031682604051612a7c90615712565b60006040518083038185875af1925050503d8060008114612ab9576040519150601f19603f3d011682016040523d82523d6000602084013e612abe565b606091505b5050905080612adf5760405162461bcd60e51b8152600401610cd5906159a6565b505050565b600082820183811015610caa5760405162461bcd60e51b8152600401610cd590615976565b600082612b1857506000610f6e565b82820282848281612b2557fe5b0414610caa5760405162461bcd60e51b8152600401610cd590615a86565b6000610caa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b67565b6000601554600014610e7957600c5480612baf57612bac612ba4611000565b610e516126b0565b90505b610fa6818463ffffffff612ae416565b60006000198214612c1b576040805180820190915260028152610c4d60f21b6020820152612bf6908390859063ffffffff613b9e16565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b038416612c415760405162461bcd60e51b8152600401610cd590615956565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b92820192909252909190612c8c908390879063ffffffff613b9e16565b6001600160a01b03808916600090815260136020526040808220849055918916815290812054919250612cc5828863ffffffff612ae416565b6001600160a01b0389166000908152601360205260408120829055909150612ceb611c13565b601c549091506001600160a01b038b8116911614801590612d1a5750601c546001600160a01b038a8116911614155b15612d3757612d2b8a868684613ab1565b612d3789848484613ab1565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051612d7a91906158a6565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001612dd29291906156ea565b6040516020818303038152906040528051906020012090506000815490508015612e0e5760405162461bcd60e51b8152600401610cd590615a96565b5050565b808215610caa57600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e6a57600080fd5b505afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ea291908101906145fa565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612edb938c936101009091049092169101615739565b604080518083038186803b158015612ef257600080fd5b505afa158015612f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f2a9190810190614b4f565b9150915081600014158015612f3e57508015155b612f5a5760405162461bcd60e51b8152600401610cd590615ad6565b6000612f7082610e69888663ffffffff612b0916565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612fb3936101009004909116918d9188910161576f565b60206040518083038186803b158015612fcb57600080fd5b505afa158015612fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130039190810190614b12565b90508681146130235761302087610e69848463ffffffff612b0916565b91505b613033828663ffffffff612ae416565b98975050505050505050565b600f5442906001600160581b038083169116146125065760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa09361308f936101009004909116910161571d565b600060405180830381600087803b1580156130a957600080fd5b505af11580156130bd573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080613105670de0b6b3a7640000610e69868863ffffffff612b0916565b905061311a816131156000612b85565b613865565b915061312a826224ea0083613bca565b9250509250929050565b60008061313f612d92565b6131476126b0565b602085015111801590613166575060208501516001600160a01b031615155b6131825760405162461bcd60e51b8152600401610cd5906159f6565b60408501516001600160a01b03166131a85760208501516001600160a01b031660408601525b60006131b68787878c613c2b565b602086015160608701519192506131cd9190612ae4565b606086015288156131ed5760608501516131e7908a613531565b60608601525b600089156131f9575060015b6000601060008a8460405160200161321292919061569e565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b815260040161328a97969594939291906158b4565b60408051808303818588803b1580156132a257600080fd5b505af11580156132b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506132db9190810190614b4f565b6080890152602088018190526133035760405162461bcd60e51b8152600401610cd590615a46565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b916133369160040161571d565b600060405180830381600087803b15801561335057600080fd5b505af1158015613364573d6000803e3d6000fd5b505050508660016005811061337557fe5b6020020151608090970151969c969b50959950505050505050505050565b60008061339f83613e85565b601c5491935091506000906001600160a01b03161561343d57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906133ea9030908990600401615739565b60206040518083038186803b15801561340257600080fd5b505afa158015613416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061343a9190810190614b12565b90505b6001600160a01b038516600090815260136020526040812054613466908363ffffffff612ae416565b9050600061347a828663ffffffff612ae416565b905061348887868887613f8f565b5061349587838387613ab1565b5050505092915050565b60008115610e795760006134b16135a5565b509050610fa683610e6961016d610e5d8568056bc75e2d6310000063ffffffff612b0916565b6000816134e657506000611150565b508354611cc881613525670de0b6b3a76400006135198861350d898963ffffffff61409f16565b9063ffffffff6140e516565b9063ffffffff61415016565b9063ffffffff6141b416565b6000610caa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b9e565b6000821580159061358357508115155b15610f6e57611bec82610e698568056bc75e2d6310000063ffffffff612b0916565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb0936135e793309361010090049091169101615739565b60c06040518083038186803b1580156135ff57600080fd5b505afa158015613613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136379190810190614c98565b509196509450925061366a915068056bc75e2d631000009050610e6961365d8285613531565b859063ffffffff612b0916565b9150509091565b6015546000908061368457600e54610e75565b610e7581610e6985670de0b6b3a764000063ffffffff612b0916565b60008082156136e957600f54426001600160581b039081169116146136cb576136c76135a5565b9150505b60006136d982610e516126b0565b9050808411156136e7578093505b505b610e758361311583612b85565b3390565b60405161375490859063a9059cbb60e01b9061371c9087908790602401615833565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152836141fa565b50505050565b6001600160a01b0381166137805760405162461bcd60e51b8152600401610cd590615966565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006137e88383613393565b601c549091506138049084906001600160a01b03168380612bbf565b50601c546040516336305cf160e21b81526001600160a01b039091169063d8c173c4906138379086908590600401615833565b600060405180830381600087803b15801561385157600080fd5b505af1158015613495573d6000803e3d6000fd5b60008061387d61387785610e51611000565b84613573565b600554600654600954600a54600b54949550600094859493929190828810156138a4578297505b8188111561391757968190039668056bc75e2d63100000829003808911156138ca578098505b6138eb68056bc75e2d63100000610e6985610e5d898b63ffffffff612ae416565b965061390f87610e5183610e69613902878d613531565b8e9063ffffffff612b0916565b99505061396d565b61393885610e5168056bc75e2d63100000610e698c8963ffffffff612b0916565b9850939550859361394f848663ffffffff612ae416565b9550868910156139615786985061396d565b8589111561396d578598505b505050505050505092915050565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b038716600090815260139091529182205482916139c39190879063ffffffff613b9e16565b9050600a81116139e4576139dd858263ffffffff612ae416565b9450600090505b6001600160a01b0386166000908152601360205260409020819055601554613a12908663ffffffff61353116565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b464490613a5490889088908890615b54565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613aa091906158a6565b60405180910390a395945050505050565b604051600090613ae79086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb6906020016156c4565b60405160208183030381529060405280519060200120905060008360001415613b135760009250613b44565b8415613b44576001600160a01b038616600090815260116020526040902054613b41908390879086906134d7565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b60008183613b885760405162461bcd60e51b8152600401610cd59190615925565b506000838581613b9457fe5b0495945050505050565b60008184841115613bc25760405162461bcd60e51b8152600401610cd59190615925565b505050900390565b600080613be56301e13380610e69878763ffffffff612b0916565b90506000613c0268056bc75e2d631000008363ffffffff61353116565b9050613c2181610e698668056bc75e2d6310000063ffffffff612b0916565b9695505050505050565b60175460408401516020840151606085015160808601516000946001600160a01b039081169485949093909290918b16851415613c7a5760405162461bcd60e51b8152600401610cd590615ab6565b3496508715613d2557604051632e1a7d4d60e01b81526001600160a01b03871690632e1a7d4d90613caf908b906004016158a6565b600060405180830381600087803b158015613cc957600080fd5b505af1158015613cdd573d6000803e3d6000fd5b50505050613ceb8489612a43565b87831115613d2057601654604080516020810190915260008152613d209187916001600160a01b03909116908b8703906136fa565b613d5a565b601654604080518082019091526002815261323760f01b6020820152613d5a9187916001600160a01b039091169086906136fa565b8015613d9557601654604080518082019091526002815261064760f31b6020820152613d95918d9133916001600160a01b03169085906142b8565b8115613e77578615801590613daa5750818710155b15613e4257856001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613dea57600080fd5b505af1158015613dfe573d6000803e3d6000fd5b5050601654604080518082019091526002815261323960f01b6020820152613e3894508993506001600160a01b03909116915085906136fa565b8187039650613e77565b601654604080518082019091526002815261323960f01b6020820152613e7791879133916001600160a01b03169086906142b8565b505050505050949350505050565b60008082613ea55760405162461bcd60e51b8152600401610cd590615a76565b613ead61303f565b613eba611c466000612b85565b9050613ed881610e6985670de0b6b3a764000063ffffffff612b0916565b915034613f2057613f1b600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b8152506142b8565b613f8a565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613f7057600080fd5b505af1158015613f84573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613fb75760405162461bcd60e51b8152600401610cd590615956565b6001600160a01b038516600090815260136020526040812054613fe0908663ffffffff612ae416565b6001600160a01b0387166000908152601360205260409020819055601554909150614011908663ffffffff612ae416565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb9061405390889088908890615b54565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613aa091906158a6565b60008183038183128015906140b45750838113155b806140c957506000831280156140c957508381135b610caa5760405162461bcd60e51b8152600401610cd590615b06565b6000826140f457506000610f6e565b826000191480156141085750600160ff1b82145b156141255760405162461bcd60e51b8152600401610cd590615ac6565b8282028284828161413257fe5b0514610caa5760405162461bcd60e51b8152600401610cd590615ac6565b60008161416f5760405162461bcd60e51b8152600401610cd590615b36565b816000191480156141835750600160ff1b83145b156141a05760405162461bcd60e51b8152600401610cd590615a16565b60008284816141ab57fe5b05949350505050565b60008282018183128015906141c95750838112155b806141de57506000831280156141de57508381125b610caa5760405162461bcd60e51b8152600401610cd590615986565b60006060846001600160a01b0316846040516142169190615706565b6000604051808303816000865af19150503d8060008114614253576040519150601f19603f3d011682016040523d82523d6000602084013e614258565b606091505b509150915081839061427d5760405162461bcd60e51b8152600401610cd59190615925565b5080511561211757808060200190516142999190810190614837565b8390610fec5760405162461bcd60e51b8152600401610cd59190615925565b6040516121179086906323b872dd60e01b9061371c9088908890889060240161576f565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610f6e81615cc3565b8051610f6e81615cc3565b60008083601f84011261434057600080fd5b5081356001600160401b0381111561435757600080fd5b60208301915083602082028301111561436f57600080fd5b9250929050565b600082601f83011261438757600080fd5b815161439a61439582615ba3565b615b7d565b915081818352602084019350602081019050838560208402820111156143bf57600080fd5b60005b8381101561349557816143d58882614480565b84525060209283019291909101906001016143c2565b600082601f8301126143fc57600080fd5b813561440a61439582615ba3565b915081818352602084019350602081019050838561010084028201111561443057600080fd5b60005b838110156134955781614446888261451b565b8452506020909201916101009190910190600101614433565b8035610f6e81615cd7565b8051610f6e81615cd7565b8035610f6e81615ce0565b8051610f6e81615ce0565b60008083601f84011261449d57600080fd5b5081356001600160401b038111156144b457600080fd5b60208301915083600182028301111561436f57600080fd5b600082601f8301126144dd57600080fd5b81356144eb61439582615bc3565b9150808252602083016020830185838301111561450757600080fd5b614512838284615c49565b50505092915050565b6000610100828403121561452e57600080fd5b614539610100615b7d565b905060006145478484614475565b82525060206145588484830161445f565b602083015250604061456c84828501614318565b604083015250606061458084828501614318565b606083015250608061459484828501614318565b60808301525060a06145a884828501614475565b60a08301525060c06145bc84828501614475565b60c08301525060e06145d084828501614475565b60e08301525092915050565b6000602082840312156145ee57600080fd5b60006111508484614318565b60006020828403121561460c57600080fd5b60006111508484614323565b6000806040838503121561462b57600080fd5b60006146378585614318565b925050602061464885828601614318565b9150509250929050565b60008060006060848603121561466757600080fd5b60006146738686614318565b935050602061468486828701614318565b925050604061469586828701614475565b9150509250925092565b600080604083850312156146b257600080fd5b60006146be8585614318565b92505060206146488582860161445f565b600080604083850312156146e257600080fd5b60006146ee8585614318565b925050602061464885828601614475565b60008060006060848603121561471457600080fd5b60006147208686614318565b935050602061473186828701614475565b92505060406146958682870161445f565b6000806000806040858703121561475857600080fd5b84356001600160401b0381111561476e57600080fd5b61477a8782880161432e565b945094505060208501356001600160401b0381111561479857600080fd5b6147a48782880161432e565b95989497509550505050565b6000602082840312156147c257600080fd5b81516001600160401b038111156147d857600080fd5b61115084828501614376565b600080604083850312156147f757600080fd5b82356001600160401b0381111561480d57600080fd5b6146be858286016143eb565b60006020828403121561482b57600080fd5b6000611150848461445f565b60006020828403121561484957600080fd5b6000611150848461446a565b600080600080600080600080610100898b03121561487257600080fd5b600061487e8b8b614475565b985050602061488f8b828c01614475565b97505060406148a08b828c01614475565b96505060606148b18b828c01614475565b95505060806148c28b828c01614318565b94505060a06148d38b828c01614318565b93505060c06148e48b828c01614318565b92505060e08901356001600160401b0381111561490057600080fd5b61490c8b828c016144cc565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561493c57600080fd5b60006149488d8d614475565b9a505060206149598d828e01614475565b995050604061496a8d828e01614475565b985050606061497b8d828e01614475565b975050608061498c8d828e01614318565b96505060a061499d8d828e01614318565b95505060c06149ae8d828e01614475565b94505060e06149bf8d828e01614318565b9350506101008b01356001600160401b038111156149dc57600080fd5b6149e88d828e0161448b565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b031215614a1957600080fd5b6000614a258b8b614475565b9850506020614a368b828c01614475565b9750506040614a478b828c01614475565b9650506060614a588b828c01614475565b9550506080614a698b828c01614318565b94505060a0614a7a8b828c01614318565b93505060c06148e48b828c01614475565b600060208284031215614a9d57600080fd5b81356001600160401b03811115614ab357600080fd5b611150848285016144cc565b60008060408385031215614ad257600080fd5b82356001600160401b03811115614ae857600080fd5b6146be858286016144cc565b600060208284031215614b0657600080fd5b60006111508484614475565b600060208284031215614b2457600080fd5b60006111508484614480565b60008060408385031215614b4357600080fd5b60006146ee8585614475565b60008060408385031215614b6257600080fd5b6000614b6e8585614480565b925050602061464885828601614480565b600080600060608486031215614b9457600080fd5b6000614ba08686614475565b9350506020614bb186828701614475565b925050604061469586828701614318565b60008060008060808587031215614bd857600080fd5b6000614be48787614475565b9450506020614bf587828801614475565b9350506040614c0687828801614475565b9250506060614c1787828801614318565b91505092959194509250565b600080600080600060a08688031215614c3b57600080fd5b6000614c478888614475565b9550506020614c5888828901614475565b9450506040614c6988828901614475565b9350506060614c7a88828901614318565b9250506080614c8b88828901614475565b9150509295509295909350565b60008060008060008060c08789031215614cb157600080fd5b6000614cbd8989614480565b9650506020614cce89828a01614480565b9550506040614cdf89828a01614480565b9450506060614cf089828a01614480565b9350506080614d0189828a01614480565b92505060a0614d1289828a01614480565b9150509295509295509295565b600080600080600080600060e0888a031215614d3a57600080fd5b6000614d468a8a614475565b9750506020614d578a828b01614475565b9650506040614d688a828b01614475565b9550506060614d798a828b01614475565b9450506080614d8a8a828b01614475565b93505060a0614d9b8a828b01614475565b92505060c0614dac8a828b01614475565b91505092959891949750929550565b6000614dc78383614dff565b505060200190565b6000614dc78383614f72565b6000614de783836155fe565b50506101000190565b614df981615c38565b82525050565b614df981615c09565b614df9614e1482615c09565b615c81565b614e2281615bf0565b614e2c8184610e79565b9250614e3782610f86565b8060005b83811015610fec578151614e4f8782614dbb565b9650614e5a83615bea565b925050600101614e3b565b6000614e7082615bf6565b614e7a8185615c00565b9350614e8583615bea565b8060005b83811015614eb3578151614e9d8882614dcf565b9750614ea883615bea565b925050600101614e89565b509495945050505050565b6000614ec982615bf6565b614ed38185615c00565b9350614ede83615bea565b8060005b83811015614eb3578151614ef68882614ddb565b9750614f0183615bea565b925050600101614ee2565b614f1581615bfa565b614f1f8184610e79565b9250614f2a82610f86565b8060005b83811015610fec578151614f428782614dcf565b9650614f4d83615bea565b925050600101614f2e565b614df981615c14565b614df9614f6d82615c14565b615c8c565b614df981610f86565b614df9614f8782610f86565b610f86565b614df9614f8782615c19565b6000614fa382615bf6565b614fad8185615c00565b9350614fbd818560208601615c55565b614fc681615cad565b9093019392505050565b6000614fdb82615bf6565b614fe58185610e79565b9350614ff5818560208601615c55565b9290920192915050565b600061500c600c83615c00565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000615034600283615c00565b61031360f41b815260200192915050565b6000615052600283615c00565b61313560f01b815260200192915050565b6000615070602683615c00565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006150b8601b83615c00565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006150f1602183615c00565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615134600e83615c00565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b600061515e603a83615c00565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b60006151bd600183615c00565b603760f81b815260200192915050565b60006151da601d83615c00565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b6000615213601283615c00565b716e6f7420656e6f7567682062616c616e636560701b815260200192915050565b6000615241600283615c00565b61333760f01b815260200192915050565b600061525f600283615c00565b610c8d60f21b815260200192915050565b600061527d600283615c00565b61313160f01b815260200192915050565b600061529b602183615c00565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006152de601583615c00565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b600061530f600283615c00565b61189960f11b815260200192915050565b600061532d600283615c00565b61323560f01b815260200192915050565b600061534b600f83615c00565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b6000615376600283615c00565b61199960f11b815260200192915050565b6000615394600283615c00565b61313760f01b815260200192915050565b60006153b2602183615c00565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006153f5600c83615c00565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061541d600283615c00565b61313960f01b815260200192915050565b600061543b600283615c00565b61191b60f11b815260200192915050565b6000615459602783615c00565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b60006154a2601d83615c00565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b6000610f6e600083610e79565b60006154e8600a83615c00565b6937b7363ca830bab9b2b960b11b815260200192915050565b600061550e600c83615c00565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b6000615536602483615c00565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b600061557c601883615c00565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b60006155b5600183615c00565b601b60f91b815260200192915050565b60006155d2602083615c00565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b80516101008301906156108482614f72565b5060208201516156236020850182614f58565b5060408201516156366040850182614dff565b5060608201516156496060850182614dff565b50608082015161565c6080850182614dff565b5060a082015161566f60a0850182614f72565b5060c082015161568260c0850182614f72565b5060e082015161375460e0850182614f72565b614df981615c32565b60006156aa8285614e08565b6014820191506156ba8284614f61565b5060010192915050565b60006156d08285614e08565b6014820191506156e08284614f7b565b5060200192915050565b60006156f68285614f8c565b6004820191506156e08284614f7b565b6000610caa8284614fd0565b6000610f6e826154ce565b60208101610f6e8284614dff565b60208101610f6e8284614df0565b604081016157478285614dff565b610caa6020830184614dff565b604081016157628285614dff565b610caa6020830184614df0565b6060810161577d8286614dff565b61578a6020830185614dff565b6111506040830184614f72565b60a081016157a58288614dff565b6157b26020830187614dff565b6157bf6040830186614f72565b6157cc6060830185614f72565b613c216080830184614f58565b60c081016157e78289614dff565b6157f46020830188614dff565b6158016040830187614f72565b61580e6060830186614f72565b61581b6080830185614f72565b61582860a0830184614f72565b979650505050505050565b604081016158418285614dff565b610caa6020830184614f72565b6060810161585c8286614dff565b6158696020830185614f72565b6111506040830184614df0565b60208082528101610caa8184614e65565b60208082528101610caa8184614ebe565b60208101610f6e8284614f58565b60208101610f6e8284614f72565b6101c081016158c3828a614f72565b6158d06020830189614f72565b6158dd6040830188614f58565b6158ea6060830187614f72565b6158f76080830186614e19565b615905610100830185614f0c565b8181036101a08301526159188184614f98565b9998505050505050505050565b60208082528101610caa8184614f98565b60208082528101610f6e81614fff565b60208082528101610f6e81615027565b60208082528101610f6e81615045565b60208082528101610f6e81615063565b60208082528101610f6e816150ab565b60208082528101610f6e816150e4565b60208082528101610f6e81615127565b60208082528101610f6e81615151565b60208082528101610f6e816151b0565b60208082528101610f6e816151cd565b60208082528101610f6e81615206565b60208082528101610f6e81615234565b60208082528101610f6e81615252565b60208082528101610f6e81615270565b60208082528101610f6e8161528e565b60208082528101610f6e816152d1565b60208082528101610f6e81615302565b60208082528101610f6e81615320565b60208082528101610f6e8161533e565b60208082528101610f6e81615369565b60208082528101610f6e81615387565b60208082528101610f6e816153a5565b60208082528101610f6e816153e8565b60208082528101610f6e81615410565b60208082528101610f6e8161542e565b60208082528101610f6e8161544c565b60208082528101610f6e81615495565b60208082528101610f6e816154db565b60208082528101610f6e81615501565b60208082528101610f6e81615529565b60208082528101610f6e8161556f565b60208082528101610f6e816155a8565b60208082528101610f6e816155c5565b604081016158418285614f72565b60608101615b628286614f72565b61578a6020830185614f72565b60208101610f6e8284615695565b6040518181016001600160401b0381118282101715615b9b57600080fd5b604052919050565b60006001600160401b03821115615bb957600080fd5b5060209081020190565b60006001600160401b03821115615bd957600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610f6e82615c26565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610f6e826000610f6e82615c09565b82818337506000910152565b60005b83811015615c70578181015183820152602001615c58565b838111156137545750506000910152565b6000610f6e82615c97565b6000610f6e82615ca2565b6000610f6e82615cbd565b6000610f6e82615cb7565b601f01601f191690565b60f81b90565b60601b90565b615ccc81615c09565b811461250657600080fd5b615ccc81615c14565b615ccc81610f8656fea365627a7a72315820fa60c47178ad0e720462a422164c216505b66504ef874aebac255e9d3cf9c3736c6578706572696d656e74616cf564736f6c63430005110040",
  "deployedBytecode": "0x6080604052600436106103d95760003560e01c80637e37c08c116101fd578063ca37e66611610118578063e41b07e3116100ab578063f2fde38b1161007a578063f2fde38b14610a98578063f6b69f9914610ab8578063f851a44014610acb578063fb5f83df14610ae0578063ffa1ad7414610af3576103d9565b8063e41b07e314610a23578063e697d2ee14610a43578063eebc508114610a63578063ef2b0b3914610a83576103d9565b8063d8f06c83116100e7578063d8f06c83146109a3578063d97206a4146109c3578063dd62ed3e146109e3578063e3cded6114610a03576103d9565b8063ca37e66614610939578063cb926cb31461094e578063d65a50211461096e578063d759dbeb1461098e576103d9565b806395d89b4111610190578063a9059cbb1161015f578063a9059cbb146108c4578063b9fe1a8f146108e4578063ba0e43bf14610904578063be19421714610919576103d9565b806395d89b41146108655780639bda3a981461087a5780639dc29fac1461088f5780639fd0506d146108af576103d9565b80638da5cb5b116101cc5780638da5cb5b146108115780638ee6c4e6146108265780638f32d59b1461083b5780638fb807c514610850576103d9565b80637e37c08c146107b25780637ff9b596146107c7578063829b38f4146107dc5780638325a1c0146107fc576103d9565b80632ea295fa116102f857806356e07d701161028b578063704b6c021161025a578063704b6c021461072857806370a08231146107485780637288b34414610768578063797bf385146107885780637b7933b41461079d576103d9565b806356e07d70146106af578063612ef80b146106c4578063631a3ef8146106d95780636b40cd40146106f9576103d9565b8063330691ac116102c7578063330691ac1461064557806340c10f191461065a57806344a4a0031461067a57806354198ce91461068f576103d9565b80632ea295fa146105db5780632f6b600d146105ee578063313ce567146106035780633291c11a14610625576103d9565b806318160ddd1161037057806320f6d07c1161033f57806320f6d07c1461056557806323b872dd1461057a57806328a02f191461059a5780632d88af4a146105bb576103d9565b806318160ddd1461050457806318498b1d146105195780631d0806ae1461053b5780631f68f20a14610550576103d9565b806306fdde03116103ac57806306fdde0314610480578063095ea7b3146104a257806309ec6b6b146104cf57806312416898146104e4576103d9565b806304797930146103e85780630506af041461041e57806306947a3a1461043e57806306b3efd614610460575b3480156103e557600080fd5b50005b3480156103f457600080fd5b50610408610403366004614b7f565b610b08565b60405161041591906158a6565b60405180910390f35b34801561042a57600080fd5b506104086104393660046146ff565b610cb1565b34801561044a57600080fd5b50610453610d83565b604051610415919061571d565b34801561046c57600080fd5b5061040861047b3660046145dc565b610d92565b34801561048c57600080fd5b50610495610e7e565b6040516104159190615925565b3480156104ae57600080fd5b506104c26104bd3660046146cf565b610f09565b6040516104159190615898565b3480156104db57600080fd5b50610408610f74565b3480156104f057600080fd5b506104086104ff366004614af4565b610f89565b34801561051057600080fd5b50610408610fb4565b34801561052557600080fd5b50610539610534366004614c23565b610fba565b005b34801561054757600080fd5b50610408610ff4565b34801561055c57600080fd5b50610408610ffa565b34801561057157600080fd5b50610408611000565b34801561058657600080fd5b506104c2610595366004614652565b61108f565b6105ad6105a83660046149fc565b611158565b604051610415929190615b46565b3480156105c757600080fd5b506105396105d63660046145dc565b61137d565b6105ad6105e9366004614855565b6113c3565b3480156105fa57600080fd5b506104536116a3565b34801561060f57600080fd5b506106186116b2565b6040516104159190615b6f565b34801561063157600080fd5b50610408610640366004614af4565b6116bb565b34801561065157600080fd5b506104086116cd565b34801561066657600080fd5b506104086106753660046146cf565b6116d3565b34801561068657600080fd5b50610408611714565b34801561069b57600080fd5b506104086106aa3660046145dc565b611726565b3480156106bb57600080fd5b506104086117c7565b3480156106d057600080fd5b506104086117cd565b3480156106e557600080fd5b506104086106f4366004614b7f565b6117fe565b34801561070557600080fd5b50610719610714366004614bc2565b61199e565b60405161041593929190615b54565b34801561073457600080fd5b506105396107433660046145dc565b611aaf565b34801561075457600080fd5b506104086107633660046145dc565b611af5565b34801561077457600080fd5b50610408610783366004614b30565b611b10565b34801561079457600080fd5b50610453611bf3565b3480156107a957600080fd5b50610408611c07565b3480156107be57600080fd5b50610408611c0d565b3480156107d357600080fd5b50610408611c13565b3480156107e857600080fd5b506104086107f7366004614af4565b611c51565b34801561080857600080fd5b50610408611cd1565b34801561081d57600080fd5b50610453611cdd565b34801561083257600080fd5b50610453611cec565b34801561084757600080fd5b506104c2611cfb565b34801561085c57600080fd5b50610408611d21565b34801561087157600080fd5b50610495611d51565b34801561088657600080fd5b50610453611dac565b34801561089b57600080fd5b506104086108aa3660046146cf565b611dbb565b3480156108bb57600080fd5b50610453611e2f565b3480156108d057600080fd5b506104c26108df3660046146cf565b611e3e565b3480156108f057600080fd5b506104086108ff366004614af4565b611e4e565b34801561091057600080fd5b50610408611e59565b34801561092557600080fd5b506104c2610934366004614a8b565b611e5f565b34801561094557600080fd5b50610453611ee1565b34801561095a57600080fd5b506105396109693660046145dc565b611ef0565b34801561097a57600080fd5b50610408610989366004614af4565b611f36565b34801561099a57600080fd5b50610408611f49565b3480156109af57600080fd5b506105396109be3660046147e4565b611f4f565b3480156109cf57600080fd5b506105396109de366004614d1f565b61211e565b3480156109ef57600080fd5b506104086109fe366004614618565b612225565b348015610a0f57600080fd5b50610539610a1e366004614abf565b612250565b348015610a2f57600080fd5b50610408610a3e3660046145dc565b6122f5565b348015610a4f57600080fd5b50610539610a5e366004614742565b612307565b348015610a6f57600080fd5b50610408610a7e3660046145dc565b6124b8565b348015610a8f57600080fd5b506104086124d3565b348015610aa457600080fd5b50610539610ab33660046145dc565b6124d9565b6105ad610ac636600461491c565b612509565b348015610ad757600080fd5b506104536125d9565b610408610aee36600461469f565b6125e8565b348015610aff57600080fd5b50610408612632565b60008315610caa576001600160a01b038216610b2d576017546001600160a01b031691505b600060106000846001604051602001610b4792919061569e565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610bb8918a91016158a6565b60206040518083038186803b158015610bd057600080fd5b505afa158015610be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c089190810190614b12565b60016040518663ffffffff1660e01b8152600401610c2a959493929190615797565b60206040518083038186803b158015610c4257600080fd5b505afa158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7a9190810190614b12565b9150610c8e82610c88611d21565b86612637565b9350610c9c91506126b09050565b821115610ca857600091505b505b9392505050565b6000600160005414610cde5760405162461bcd60e51b8152600401610cd590615af6565b60405180910390fd5b60026000558115610cf957610cf2836126e6565b9050610d05565b610d028361288c565b90505b8015610d7757601754604051632e1a7d4d60e01b81526001600160a01b0390911690632e1a7d4d90610d3b9084906004016158a6565b600060405180830381600087803b158015610d5557600080fd5b505af1158015610d69573d6000803e3d6000fd5b50505050610d778482612a43565b60016000559392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610e2d57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610dda9030908790600401615739565b60206040518083038186803b158015610df257600080fd5b505afa158015610e06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2a9190810190614b12565b90505b610e75670de0b6b3a7640000610e69610e44611c13565b610e5d85610e5189611af5565b9063ffffffff612ae416565b9063ffffffff612b0916565b9063ffffffff612b4316565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610f015780601f10610ed657610100808354040283529160200191610f01565b820191906000526020600020905b815481529060010190602001808311610ee457829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610f629086906158a6565b60405180910390a35060015b92915050565b6000610f836104ff6000612b85565b90505b90565b600080610f94611000565b90508015610fae57610fa68184611b10565b915050610e79565b50919050565b60155490565b6000610fc88686868661199e565b5091505081811015610fec5760405162461bcd60e51b8152600401610cd590615936565b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe9361103f9330936101009092049091169101615739565b60206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f839190810190614b12565b60165460405163115dd4b160e01b8152600091611150918691869186916001600160a01b03169063115dd4b1906110ca90339060040161572b565b60206040518083038186803b1580156110e257600080fd5b505afa1580156110f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061111a9190810190614837565b611147576001600160a01b038816600090815260146020908152604080832033845290915290205461114b565b6000195b612bbf565b949350505050565b60008060016000541461117d5760405162461bcd60e51b8152600401610cd590615af6565b600260005561118a612d92565b6111978989898988610fba565b6001600160a01b0386166111b4576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156111e75760405162461bcd60e51b8152600401610cd590615a06565b8915806111fc5750336001600160a01b038616145b6112185760405162461bcd60e51b8152600401610cd590615b16565b6001600160a01b0386166000908152601260205260409020541561125b576001600160a01b03861660009081526012602052604090205487111561125b57600080fd5b60045461010090046001600160a01b0316600090815260126020526040902054156112ac5760045461010090046001600160a01b03166000908152601260205260409020548811156112ac57600080fd5b60006112b987898b612e12565b9050806112d85760405162461bcd60e51b8152600401610cd590615a36565b6112e06142dc565b6112e86142fa565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a905261132061303f565b6113318c82600160200201516130e5565b825260208201526113526f4b3b4ca85a86c47a098a2240000000008d612b43565b9b506113648d60008e8c86868c613134565b6001600055909e909d509b505050505050505050505050565b611385611cfb565b6113a15760405162461bcd60e51b8152600401610cd590615a96565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806001600054146113e85760405162461bcd60e51b8152600401610cd590615af6565b60026000558861140a5760405162461bcd60e51b8152600401610cd590615b26565b611412612d92565b6001600160a01b03861660009081526012602052604090205415611455576001600160a01b03861660009081526012602052604090205487111561145557600080fd5b34158061146157508634145b801561147557508615158061147557508915155b801561149c57506001600160a01b03861615158061149257503415155b8061149c57508915155b80156114b857508915806114b85750336001600160a01b038616145b6114d45760405162461bcd60e51b8152600401610cd5906159b6565b6001600160a01b0386166114f1576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156115245760405162461bcd60e51b8152600401610cd590615946565b61152c61303f565b6115346142dc565b61153c6142fa565b3082526001600160a01b03878116602080850191909152908716604084015281018b90526115748b61156e6000612b85565b8c612637565b83600060200201846002602002018560016020020192909252919052528881600460200201818152505061168b8c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e60016040516020016115df92919061569e565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b815260040161162391906158a6565b60206040518083038186803b15801561163b57600080fd5b505afa15801561164f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116739190810190614b12565b8b868660405180602001604052806000815250613134565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b60006001600054146116f75760405162461bcd60e51b8152600401610cd590615af6565b60026000556117068383613393565b90505b600160005592915050565b6000610f83611721611000565b61349f565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b60405160200161175f9291906156c4565b604051602081830303815290604052805190602001209050610e758160136000866001600160a01b03166001600160a01b03168152602001908152602001600020546117a9611c13565b6001600160a01b0387166000908152601160205260409020546134d7565b600a5481565b6000806117da6000612b85565b905060006117e6611000565b9050808211156117f95790039050610f86565b505090565b60008315610caa57600061181485610c88611d21565b925050506118206126b0565b8111610ca8576001600160a01b038316611843576017546001600160a01b031692505b60006010600085600160405160200161185d92919061569e565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b815292945061199593600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d9916118d3918c91016158a6565b60206040518083038186803b1580156118eb57600080fd5b505afa1580156118ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119239190810190614b12565b60016040518663ffffffff1660e01b8152600401611945959493929190615797565b60206040518083038186803b15801561195d57600080fd5b505afa158015611971573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e519190810190614b12565b92505050610caa565b600080806001600160a01b0384166119bf576017546001600160a01b031693505b60006119cc858789612e12565b90506119d888826130e5565b90945091506119e56126b0565b8411156119fc575060009250829150819050611aa5565b611a0c878563ffffffff612ae416565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f707793611a519361010090930416918a918d918d918a918d91016157d9565b60206040518083038186803b158015611a6957600080fd5b505afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aa19190810190614b12565b9250505b9450945094915050565b611ab7611cfb565b611ad35760405162461bcd60e51b8152600401610cd590615a96565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611b215750828210155b15610f6e57611bec701d6329f1c35ca4bfabb9f5610000000000610e69611bd668056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9957600080fd5b505afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bd19190810190614b12565b613531565b610e5d611be38888613573565b610e5d8961349f565b9050610f6e565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611c3a57611c366135a5565b9150505b611c4b611c4682612b85565b613671565b91505090565b600080611c7061016d610e69601c600b54612b0990919063ffffffff16565b90506000611c8d68056bc75e2d631000008363ffffffff61353116565b90506000611caa68056bc75e2d63100000610e6984610e5d6117cd565b9050611cc885610e6983670de0b6b3a764000063ffffffff612b0916565b95945050505050565b6000610f8360006136a0565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611d126136f6565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611d4857611d446135a5565b9150505b611c4b81612b85565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610f015780601f10610ed657610100808354040283529160200191610f01565b6018546001600160a01b031681565b6000600160005414611ddf5760405162461bcd60e51b8152600401610cd590615af6565b6002600055611ded8261288c565b9050801561170957611709600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b8152506136fa565b601b546001600160a01b031681565b6000610caa338484600019612bbf565b6000610f6e826136a0565b60095481565b60008082604051602001611e739190615706565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611ec09291906156ea565b60408051808303601f19018152919052805160209091012054949350505050565b601a546001600160a01b031681565b611ef8611cfb565b611f145760405162461bcd60e51b8152600401610cd590615a96565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f6e6104ff83610e516000612b85565b60075481565b611f57611cfb565b80611f6c57506019546001600160a01b031633145b611f885760405162461bcd60e51b8152600401610cd590615a96565b60045460609061010090046001600160a01b031660005b84518110156120125781858281518110611fb557fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505083611fe7576224ea00611fea565b60005b62ffffff16858281518110611ffb57fe5b602090810291909101015160e00152600101611f9f565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e90612043908790600401615887565b600060405180830381600087803b15801561205d57600080fd5b505af1158015612071573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261209991908101906147b0565b915060005b8251811015612117578281815181106120b357fe5b6020026020010151601060008784815181106120cb57fe5b602002602001015160800151876040516020016120e992919061569e565b60408051601f198184030181529181528151602092830120835290820192909252016000205560010161209e565b5050505050565b612126611cfb565b8061213b57506019546001600160a01b031633145b6121575760405162461bcd60e51b8152600401610cd590615a96565b68056bc75e2d63100000612171878963ffffffff612ae416565b111561218f5760405162461bcd60e51b8152600401610cd590615a26565b68056bc75e2d631000006121a9858763ffffffff612ae416565b11156121c75760405162461bcd60e51b8152600401610cd590615a26565b68056bc75e2d6310000083111580156121e9575068056bc75e2d631000008211155b6122055760405162461bcd60e51b8152600401610cd590615a56565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b0316331461227a5760405162461bcd60e51b8152600401610cd590615ae6565b60008260405160200161228d9190615706565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f26040516020016122d59291906156ea565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b61230f611cfb565b8061232457506019546001600160a01b031633145b6123405760405162461bcd60e51b8152600401610cd590615a96565b82811461235f5760405162461bcd60e51b8152600401610cd590615996565b60408051848152602080860282010190915260609084801561238b578160200160208202803883390190505b50905060005b8481101561244e5760008686838181106123a757fe5b90506020020160206123bc91908101906145dc565b8585848181106123c857fe5b90506020020160206123dd9190810190614819565b6040516020016123ee92919061569e565b6040516020818303038152906040528051906020012060001c9050601060008281526020019081526020016000205483838151811061242957fe5b6020908102919091018101919091526000918252601090526040812055600101612391565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a9061247f908490600401615876565b600060405180830381600087803b15801561249957600080fd5b505af11580156124ad573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b6124e1611cfb565b6124fd5760405162461bcd60e51b8152600401610cd590615a96565b6125068161375a565b50565b6000806001600160a01b038516156125805760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf4489061254d908a908990600401615739565b600060405180830381600087803b15801561256757600080fd5b505af115801561257b573d6000803e3d6000fd5b505050505b6125c68c8c8c8c8c8c8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061115892505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600060016000541461260c5760405162461bcd60e51b8152600401610cd590615af6565b600260005581156126285761262183346137dc565b9050611709565b6126218334613393565b600681565b60008060006126468686613865565b925061269361267b670de0b6b3a7640000611bd16b0a3098c68eb9427db8000000610e6983610e5d8a8c63ffffffff612b0916565b610e6988670de0b6b3a764000063ffffffff612b0916565b90506126a5818763ffffffff61353116565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a082319161103f9130910161571d565b601c54604051636822955360e11b815260009182916001600160a01b039091169063d0452aa69061271d9030903390600401615754565b60206040518083038186803b15801561273557600080fd5b505afa158015612749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061276d9190810190614b12565b90508261278961277c33611af5565b839063ffffffff612ae416565b10156127a75760405162461bcd60e51b8152600401610cd5906159d6565b8015612887578281101561282057601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906127e99030908590339060040161584e565b600060405180830381600087803b15801561280357600080fd5b505af1158015612817573d6000803e3d6000fd5b50505050612887565b601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906128549030908790339060040161584e565b600060405180830381600087803b15801561286e57600080fd5b505af1158015612882573d6000803e3d6000fd5b505050505b610e75835b6000816128ab5760405162461bcd60e51b8152600401610cd590615aa6565b6128b433611af5565b8211156128e85760001982146128dc5760405162461bcd60e51b8152600401610cd590615a66565b6128e533611af5565b91505b6128f061303f565b60006128ff611c466000612b85565b9050600061291f670de0b6b3a7640000610e69868563ffffffff612b0916565b9050600061292b6126b0565b9050819350808411156129505760405162461bcd60e51b8152600401610cd5906159e6565b601c546000906001600160a01b0316156129e957601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906129969030903390600401615754565b60206040518083038186803b1580156129ae57600080fd5b505afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e69190810190614b12565b90505b33600090815260136020526040812054612a09908363ffffffff612ae416565b90506000612a1d828963ffffffff61353116565b9050612a2b3389898961397b565b50612a3833838389613ab1565b505050505050919050565b80471015612a635760405162461bcd60e51b8152600401610cd5906159c6565b6000826001600160a01b031682604051612a7c90615712565b60006040518083038185875af1925050503d8060008114612ab9576040519150601f19603f3d011682016040523d82523d6000602084013e612abe565b606091505b5050905080612adf5760405162461bcd60e51b8152600401610cd5906159a6565b505050565b600082820183811015610caa5760405162461bcd60e51b8152600401610cd590615976565b600082612b1857506000610f6e565b82820282848281612b2557fe5b0414610caa5760405162461bcd60e51b8152600401610cd590615a86565b6000610caa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b67565b6000601554600014610e7957600c5480612baf57612bac612ba4611000565b610e516126b0565b90505b610fa6818463ffffffff612ae416565b60006000198214612c1b576040805180820190915260028152610c4d60f21b6020820152612bf6908390859063ffffffff613b9e16565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b038416612c415760405162461bcd60e51b8152600401610cd590615956565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b92820192909252909190612c8c908390879063ffffffff613b9e16565b6001600160a01b03808916600090815260136020526040808220849055918916815290812054919250612cc5828863ffffffff612ae416565b6001600160a01b0389166000908152601360205260408120829055909150612ceb611c13565b601c549091506001600160a01b038b8116911614801590612d1a5750601c546001600160a01b038a8116911614155b15612d3757612d2b8a868684613ab1565b612d3789848484613ab1565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051612d7a91906158a6565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001612dd29291906156ea565b6040516020818303038152906040528051906020012090506000815490508015612e0e5760405162461bcd60e51b8152600401610cd590615a96565b5050565b808215610caa57600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e6a57600080fd5b505afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ea291908101906145fa565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612edb938c936101009091049092169101615739565b604080518083038186803b158015612ef257600080fd5b505afa158015612f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f2a9190810190614b4f565b9150915081600014158015612f3e57508015155b612f5a5760405162461bcd60e51b8152600401610cd590615ad6565b6000612f7082610e69888663ffffffff612b0916565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612fb3936101009004909116918d9188910161576f565b60206040518083038186803b158015612fcb57600080fd5b505afa158015612fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130039190810190614b12565b90508681146130235761302087610e69848463ffffffff612b0916565b91505b613033828663ffffffff612ae416565b98975050505050505050565b600f5442906001600160581b038083169116146125065760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa09361308f936101009004909116910161571d565b600060405180830381600087803b1580156130a957600080fd5b505af11580156130bd573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080613105670de0b6b3a7640000610e69868863ffffffff612b0916565b905061311a816131156000612b85565b613865565b915061312a826224ea0083613bca565b9250509250929050565b60008061313f612d92565b6131476126b0565b602085015111801590613166575060208501516001600160a01b031615155b6131825760405162461bcd60e51b8152600401610cd5906159f6565b60408501516001600160a01b03166131a85760208501516001600160a01b031660408601525b60006131b68787878c613c2b565b602086015160608701519192506131cd9190612ae4565b606086015288156131ed5760608501516131e7908a613531565b60608601525b600089156131f9575060015b6000601060008a8460405160200161321292919061569e565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b815260040161328a97969594939291906158b4565b60408051808303818588803b1580156132a257600080fd5b505af11580156132b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506132db9190810190614b4f565b6080890152602088018190526133035760405162461bcd60e51b8152600401610cd590615a46565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b916133369160040161571d565b600060405180830381600087803b15801561335057600080fd5b505af1158015613364573d6000803e3d6000fd5b505050508660016005811061337557fe5b6020020151608090970151969c969b50959950505050505050505050565b60008061339f83613e85565b601c5491935091506000906001600160a01b03161561343d57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906133ea9030908990600401615739565b60206040518083038186803b15801561340257600080fd5b505afa158015613416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061343a9190810190614b12565b90505b6001600160a01b038516600090815260136020526040812054613466908363ffffffff612ae416565b9050600061347a828663ffffffff612ae416565b905061348887868887613f8f565b5061349587838387613ab1565b5050505092915050565b60008115610e795760006134b16135a5565b509050610fa683610e6961016d610e5d8568056bc75e2d6310000063ffffffff612b0916565b6000816134e657506000611150565b508354611cc881613525670de0b6b3a76400006135198861350d898963ffffffff61409f16565b9063ffffffff6140e516565b9063ffffffff61415016565b9063ffffffff6141b416565b6000610caa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b9e565b6000821580159061358357508115155b15610f6e57611bec82610e698568056bc75e2d6310000063ffffffff612b0916565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb0936135e793309361010090049091169101615739565b60c06040518083038186803b1580156135ff57600080fd5b505afa158015613613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136379190810190614c98565b509196509450925061366a915068056bc75e2d631000009050610e6961365d8285613531565b859063ffffffff612b0916565b9150509091565b6015546000908061368457600e54610e75565b610e7581610e6985670de0b6b3a764000063ffffffff612b0916565b60008082156136e957600f54426001600160581b039081169116146136cb576136c76135a5565b9150505b60006136d982610e516126b0565b9050808411156136e7578093505b505b610e758361311583612b85565b3390565b60405161375490859063a9059cbb60e01b9061371c9087908790602401615833565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152836141fa565b50505050565b6001600160a01b0381166137805760405162461bcd60e51b8152600401610cd590615966565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006137e88383613393565b601c549091506138049084906001600160a01b03168380612bbf565b50601c546040516336305cf160e21b81526001600160a01b039091169063d8c173c4906138379086908590600401615833565b600060405180830381600087803b15801561385157600080fd5b505af1158015613495573d6000803e3d6000fd5b60008061387d61387785610e51611000565b84613573565b600554600654600954600a54600b54949550600094859493929190828810156138a4578297505b8188111561391757968190039668056bc75e2d63100000829003808911156138ca578098505b6138eb68056bc75e2d63100000610e6985610e5d898b63ffffffff612ae416565b965061390f87610e5183610e69613902878d613531565b8e9063ffffffff612b0916565b99505061396d565b61393885610e5168056bc75e2d63100000610e698c8963ffffffff612b0916565b9850939550859361394f848663ffffffff612ae416565b9550868910156139615786985061396d565b8589111561396d578598505b505050505050505092915050565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b038716600090815260139091529182205482916139c39190879063ffffffff613b9e16565b9050600a81116139e4576139dd858263ffffffff612ae416565b9450600090505b6001600160a01b0386166000908152601360205260409020819055601554613a12908663ffffffff61353116565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b464490613a5490889088908890615b54565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613aa091906158a6565b60405180910390a395945050505050565b604051600090613ae79086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb6906020016156c4565b60405160208183030381529060405280519060200120905060008360001415613b135760009250613b44565b8415613b44576001600160a01b038616600090815260116020526040902054613b41908390879086906134d7565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b60008183613b885760405162461bcd60e51b8152600401610cd59190615925565b506000838581613b9457fe5b0495945050505050565b60008184841115613bc25760405162461bcd60e51b8152600401610cd59190615925565b505050900390565b600080613be56301e13380610e69878763ffffffff612b0916565b90506000613c0268056bc75e2d631000008363ffffffff61353116565b9050613c2181610e698668056bc75e2d6310000063ffffffff612b0916565b9695505050505050565b60175460408401516020840151606085015160808601516000946001600160a01b039081169485949093909290918b16851415613c7a5760405162461bcd60e51b8152600401610cd590615ab6565b3496508715613d2557604051632e1a7d4d60e01b81526001600160a01b03871690632e1a7d4d90613caf908b906004016158a6565b600060405180830381600087803b158015613cc957600080fd5b505af1158015613cdd573d6000803e3d6000fd5b50505050613ceb8489612a43565b87831115613d2057601654604080516020810190915260008152613d209187916001600160a01b03909116908b8703906136fa565b613d5a565b601654604080518082019091526002815261323760f01b6020820152613d5a9187916001600160a01b039091169086906136fa565b8015613d9557601654604080518082019091526002815261064760f31b6020820152613d95918d9133916001600160a01b03169085906142b8565b8115613e77578615801590613daa5750818710155b15613e4257856001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613dea57600080fd5b505af1158015613dfe573d6000803e3d6000fd5b5050601654604080518082019091526002815261323960f01b6020820152613e3894508993506001600160a01b03909116915085906136fa565b8187039650613e77565b601654604080518082019091526002815261323960f01b6020820152613e7791879133916001600160a01b03169086906142b8565b505050505050949350505050565b60008082613ea55760405162461bcd60e51b8152600401610cd590615a76565b613ead61303f565b613eba611c466000612b85565b9050613ed881610e6985670de0b6b3a764000063ffffffff612b0916565b915034613f2057613f1b600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b8152506142b8565b613f8a565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613f7057600080fd5b505af1158015613f84573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613fb75760405162461bcd60e51b8152600401610cd590615956565b6001600160a01b038516600090815260136020526040812054613fe0908663ffffffff612ae416565b6001600160a01b0387166000908152601360205260409020819055601554909150614011908663ffffffff612ae416565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb9061405390889088908890615b54565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613aa091906158a6565b60008183038183128015906140b45750838113155b806140c957506000831280156140c957508381135b610caa5760405162461bcd60e51b8152600401610cd590615b06565b6000826140f457506000610f6e565b826000191480156141085750600160ff1b82145b156141255760405162461bcd60e51b8152600401610cd590615ac6565b8282028284828161413257fe5b0514610caa5760405162461bcd60e51b8152600401610cd590615ac6565b60008161416f5760405162461bcd60e51b8152600401610cd590615b36565b816000191480156141835750600160ff1b83145b156141a05760405162461bcd60e51b8152600401610cd590615a16565b60008284816141ab57fe5b05949350505050565b60008282018183128015906141c95750838112155b806141de57506000831280156141de57508381125b610caa5760405162461bcd60e51b8152600401610cd590615986565b60006060846001600160a01b0316846040516142169190615706565b6000604051808303816000865af19150503d8060008114614253576040519150601f19603f3d011682016040523d82523d6000602084013e614258565b606091505b509150915081839061427d5760405162461bcd60e51b8152600401610cd59190615925565b5080511561211757808060200190516142999190810190614837565b8390610fec5760405162461bcd60e51b8152600401610cd59190615925565b6040516121179086906323b872dd60e01b9061371c9088908890889060240161576f565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610f6e81615cc3565b8051610f6e81615cc3565b60008083601f84011261434057600080fd5b5081356001600160401b0381111561435757600080fd5b60208301915083602082028301111561436f57600080fd5b9250929050565b600082601f83011261438757600080fd5b815161439a61439582615ba3565b615b7d565b915081818352602084019350602081019050838560208402820111156143bf57600080fd5b60005b8381101561349557816143d58882614480565b84525060209283019291909101906001016143c2565b600082601f8301126143fc57600080fd5b813561440a61439582615ba3565b915081818352602084019350602081019050838561010084028201111561443057600080fd5b60005b838110156134955781614446888261451b565b8452506020909201916101009190910190600101614433565b8035610f6e81615cd7565b8051610f6e81615cd7565b8035610f6e81615ce0565b8051610f6e81615ce0565b60008083601f84011261449d57600080fd5b5081356001600160401b038111156144b457600080fd5b60208301915083600182028301111561436f57600080fd5b600082601f8301126144dd57600080fd5b81356144eb61439582615bc3565b9150808252602083016020830185838301111561450757600080fd5b614512838284615c49565b50505092915050565b6000610100828403121561452e57600080fd5b614539610100615b7d565b905060006145478484614475565b82525060206145588484830161445f565b602083015250604061456c84828501614318565b604083015250606061458084828501614318565b606083015250608061459484828501614318565b60808301525060a06145a884828501614475565b60a08301525060c06145bc84828501614475565b60c08301525060e06145d084828501614475565b60e08301525092915050565b6000602082840312156145ee57600080fd5b60006111508484614318565b60006020828403121561460c57600080fd5b60006111508484614323565b6000806040838503121561462b57600080fd5b60006146378585614318565b925050602061464885828601614318565b9150509250929050565b60008060006060848603121561466757600080fd5b60006146738686614318565b935050602061468486828701614318565b925050604061469586828701614475565b9150509250925092565b600080604083850312156146b257600080fd5b60006146be8585614318565b92505060206146488582860161445f565b600080604083850312156146e257600080fd5b60006146ee8585614318565b925050602061464885828601614475565b60008060006060848603121561471457600080fd5b60006147208686614318565b935050602061473186828701614475565b92505060406146958682870161445f565b6000806000806040858703121561475857600080fd5b84356001600160401b0381111561476e57600080fd5b61477a8782880161432e565b945094505060208501356001600160401b0381111561479857600080fd5b6147a48782880161432e565b95989497509550505050565b6000602082840312156147c257600080fd5b81516001600160401b038111156147d857600080fd5b61115084828501614376565b600080604083850312156147f757600080fd5b82356001600160401b0381111561480d57600080fd5b6146be858286016143eb565b60006020828403121561482b57600080fd5b6000611150848461445f565b60006020828403121561484957600080fd5b6000611150848461446a565b600080600080600080600080610100898b03121561487257600080fd5b600061487e8b8b614475565b985050602061488f8b828c01614475565b97505060406148a08b828c01614475565b96505060606148b18b828c01614475565b95505060806148c28b828c01614318565b94505060a06148d38b828c01614318565b93505060c06148e48b828c01614318565b92505060e08901356001600160401b0381111561490057600080fd5b61490c8b828c016144cc565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561493c57600080fd5b60006149488d8d614475565b9a505060206149598d828e01614475565b995050604061496a8d828e01614475565b985050606061497b8d828e01614475565b975050608061498c8d828e01614318565b96505060a061499d8d828e01614318565b95505060c06149ae8d828e01614475565b94505060e06149bf8d828e01614318565b9350506101008b01356001600160401b038111156149dc57600080fd5b6149e88d828e0161448b565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b031215614a1957600080fd5b6000614a258b8b614475565b9850506020614a368b828c01614475565b9750506040614a478b828c01614475565b9650506060614a588b828c01614475565b9550506080614a698b828c01614318565b94505060a0614a7a8b828c01614318565b93505060c06148e48b828c01614475565b600060208284031215614a9d57600080fd5b81356001600160401b03811115614ab357600080fd5b611150848285016144cc565b60008060408385031215614ad257600080fd5b82356001600160401b03811115614ae857600080fd5b6146be858286016144cc565b600060208284031215614b0657600080fd5b60006111508484614475565b600060208284031215614b2457600080fd5b60006111508484614480565b60008060408385031215614b4357600080fd5b60006146ee8585614475565b60008060408385031215614b6257600080fd5b6000614b6e8585614480565b925050602061464885828601614480565b600080600060608486031215614b9457600080fd5b6000614ba08686614475565b9350506020614bb186828701614475565b925050604061469586828701614318565b60008060008060808587031215614bd857600080fd5b6000614be48787614475565b9450506020614bf587828801614475565b9350506040614c0687828801614475565b9250506060614c1787828801614318565b91505092959194509250565b600080600080600060a08688031215614c3b57600080fd5b6000614c478888614475565b9550506020614c5888828901614475565b9450506040614c6988828901614475565b9350506060614c7a88828901614318565b9250506080614c8b88828901614475565b9150509295509295909350565b60008060008060008060c08789031215614cb157600080fd5b6000614cbd8989614480565b9650506020614cce89828a01614480565b9550506040614cdf89828a01614480565b9450506060614cf089828a01614480565b9350506080614d0189828a01614480565b92505060a0614d1289828a01614480565b9150509295509295509295565b600080600080600080600060e0888a031215614d3a57600080fd5b6000614d468a8a614475565b9750506020614d578a828b01614475565b9650506040614d688a828b01614475565b9550506060614d798a828b01614475565b9450506080614d8a8a828b01614475565b93505060a0614d9b8a828b01614475565b92505060c0614dac8a828b01614475565b91505092959891949750929550565b6000614dc78383614dff565b505060200190565b6000614dc78383614f72565b6000614de783836155fe565b50506101000190565b614df981615c38565b82525050565b614df981615c09565b614df9614e1482615c09565b615c81565b614e2281615bf0565b614e2c8184610e79565b9250614e3782610f86565b8060005b83811015610fec578151614e4f8782614dbb565b9650614e5a83615bea565b925050600101614e3b565b6000614e7082615bf6565b614e7a8185615c00565b9350614e8583615bea565b8060005b83811015614eb3578151614e9d8882614dcf565b9750614ea883615bea565b925050600101614e89565b509495945050505050565b6000614ec982615bf6565b614ed38185615c00565b9350614ede83615bea565b8060005b83811015614eb3578151614ef68882614ddb565b9750614f0183615bea565b925050600101614ee2565b614f1581615bfa565b614f1f8184610e79565b9250614f2a82610f86565b8060005b83811015610fec578151614f428782614dcf565b9650614f4d83615bea565b925050600101614f2e565b614df981615c14565b614df9614f6d82615c14565b615c8c565b614df981610f86565b614df9614f8782610f86565b610f86565b614df9614f8782615c19565b6000614fa382615bf6565b614fad8185615c00565b9350614fbd818560208601615c55565b614fc681615cad565b9093019392505050565b6000614fdb82615bf6565b614fe58185610e79565b9350614ff5818560208601615c55565b9290920192915050565b600061500c600c83615c00565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000615034600283615c00565b61031360f41b815260200192915050565b6000615052600283615c00565b61313560f01b815260200192915050565b6000615070602683615c00565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006150b8601b83615c00565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006150f1602183615c00565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615134600e83615c00565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b600061515e603a83615c00565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b60006151bd600183615c00565b603760f81b815260200192915050565b60006151da601d83615c00565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b6000615213601283615c00565b716e6f7420656e6f7567682062616c616e636560701b815260200192915050565b6000615241600283615c00565b61333760f01b815260200192915050565b600061525f600283615c00565b610c8d60f21b815260200192915050565b600061527d600283615c00565b61313160f01b815260200192915050565b600061529b602183615c00565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006152de601583615c00565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b600061530f600283615c00565b61189960f11b815260200192915050565b600061532d600283615c00565b61323560f01b815260200192915050565b600061534b600f83615c00565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b6000615376600283615c00565b61199960f11b815260200192915050565b6000615394600283615c00565b61313760f01b815260200192915050565b60006153b2602183615c00565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006153f5600c83615c00565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061541d600283615c00565b61313960f01b815260200192915050565b600061543b600283615c00565b61191b60f11b815260200192915050565b6000615459602783615c00565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b60006154a2601d83615c00565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b6000610f6e600083610e79565b60006154e8600a83615c00565b6937b7363ca830bab9b2b960b11b815260200192915050565b600061550e600c83615c00565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b6000615536602483615c00565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b600061557c601883615c00565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b60006155b5600183615c00565b601b60f91b815260200192915050565b60006155d2602083615c00565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b80516101008301906156108482614f72565b5060208201516156236020850182614f58565b5060408201516156366040850182614dff565b5060608201516156496060850182614dff565b50608082015161565c6080850182614dff565b5060a082015161566f60a0850182614f72565b5060c082015161568260c0850182614f72565b5060e082015161375460e0850182614f72565b614df981615c32565b60006156aa8285614e08565b6014820191506156ba8284614f61565b5060010192915050565b60006156d08285614e08565b6014820191506156e08284614f7b565b5060200192915050565b60006156f68285614f8c565b6004820191506156e08284614f7b565b6000610caa8284614fd0565b6000610f6e826154ce565b60208101610f6e8284614dff565b60208101610f6e8284614df0565b604081016157478285614dff565b610caa6020830184614dff565b604081016157628285614dff565b610caa6020830184614df0565b6060810161577d8286614dff565b61578a6020830185614dff565b6111506040830184614f72565b60a081016157a58288614dff565b6157b26020830187614dff565b6157bf6040830186614f72565b6157cc6060830185614f72565b613c216080830184614f58565b60c081016157e78289614dff565b6157f46020830188614dff565b6158016040830187614f72565b61580e6060830186614f72565b61581b6080830185614f72565b61582860a0830184614f72565b979650505050505050565b604081016158418285614dff565b610caa6020830184614f72565b6060810161585c8286614dff565b6158696020830185614f72565b6111506040830184614df0565b60208082528101610caa8184614e65565b60208082528101610caa8184614ebe565b60208101610f6e8284614f58565b60208101610f6e8284614f72565b6101c081016158c3828a614f72565b6158d06020830189614f72565b6158dd6040830188614f58565b6158ea6060830187614f72565b6158f76080830186614e19565b615905610100830185614f0c565b8181036101a08301526159188184614f98565b9998505050505050505050565b60208082528101610caa8184614f98565b60208082528101610f6e81614fff565b60208082528101610f6e81615027565b60208082528101610f6e81615045565b60208082528101610f6e81615063565b60208082528101610f6e816150ab565b60208082528101610f6e816150e4565b60208082528101610f6e81615127565b60208082528101610f6e81615151565b60208082528101610f6e816151b0565b60208082528101610f6e816151cd565b60208082528101610f6e81615206565b60208082528101610f6e81615234565b60208082528101610f6e81615252565b60208082528101610f6e81615270565b60208082528101610f6e8161528e565b60208082528101610f6e816152d1565b60208082528101610f6e81615302565b60208082528101610f6e81615320565b60208082528101610f6e8161533e565b60208082528101610f6e81615369565b60208082528101610f6e81615387565b60208082528101610f6e816153a5565b60208082528101610f6e816153e8565b60208082528101610f6e81615410565b60208082528101610f6e8161542e565b60208082528101610f6e8161544c565b60208082528101610f6e81615495565b60208082528101610f6e816154db565b60208082528101610f6e81615501565b60208082528101610f6e81615529565b60208082528101610f6e8161556f565b60208082528101610f6e816155a8565b60208082528101610f6e816155c5565b604081016158418285614f72565b60608101615b628286614f72565b61578a6020830185614f72565b60208101610f6e8284615695565b6040518181016001600160401b0381118282101715615b9b57600080fd5b604052919050565b60006001600160401b03821115615bb957600080fd5b5060209081020190565b60006001600160401b03821115615bd957600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610f6e82615c26565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610f6e826000610f6e82615c09565b82818337506000910152565b60005b83811015615c70578181015183820152602001615c58565b838111156137545750506000910152565b6000610f6e82615c97565b6000610f6e82615ca2565b6000610f6e82615cbd565b6000610f6e82615cb7565b601f01601f191690565b60f81b90565b60601b90565b615ccc81615c09565b811461250657600080fd5b615ccc81615c14565b615ccc81610f8656fea365627a7a72315820fa60c47178ad0e720462a422164c216505b66504ef874aebac255e9d3cf9c3736c6578706572696d656e74616cf564736f6c63430005110040",
  "linkReferences": {},
  "deployedLinkReferences": {}
}