{
  "_format": "hh-sol-artifact-1",
  "contractName": "StaticATokenLM",
  "sourceName": "contracts/protocol/tokenization/StaticATokenLM.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": "pool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "aToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "staticATokenName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "staticATokenSymbol",
          "type": "string"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ASSET",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ATOKEN",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EIP712_REVISION",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "INCENTIVES_CONTROLLER",
      "outputs": [
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LENDING_POOL",
      "outputs": [
        {
          "internalType": "contract ILendingPool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "METADEPOSIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "METAWITHDRAWAL_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REWARD_TOKEN",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "STATIC_ATOKEN_LM_REVISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNDERLYING_ASSET_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "_nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "claimRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "claimRewardsOnBehalf",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimRewardsToSelf",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "collectAndUpdateRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        },
        {
          "internalType": "bool",
          "name": "fromUnderlying",
          "type": "bool"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "dynamicBalanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "dynamicToStaticAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getClaimableRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentRewardsIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDomainSeparator",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIncentivesController",
      "outputs": [
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTotalClaimableRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getUnclaimedRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ILendingPool",
          "name": "pool",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "aToken",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "staticATokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "staticATokenSymbol",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "l1TokenBridge",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        },
        {
          "internalType": "bool",
          "name": "fromUnderlying",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IStaticATokenLM.SignatureParams",
          "name": "sigParams",
          "type": "tuple"
        }
      ],
      "name": "metaDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "staticAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "dynamicAmount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "toUnderlying",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IStaticATokenLM.SignatureParams",
          "name": "sigParams",
          "type": "tuple"
        }
      ],
      "name": "metaWithdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "staticToDynamicAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "toUnderlying",
          "type": "bool"
        }
      ],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "toUnderlying",
          "type": "bool"
        }
      ],
      "name": "withdrawDynamicAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052600080553480156200001557600080fd5b5060408051808201825260128082527114d510551250d7d05513d2d15397d253541360721b60208084018281528551808701909652928552840152815191929162000063916037916200008f565b508051620000799060389060208401906200008f565b50506039805460ff19166012179055506200012b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d257805160ff191683800117855562000102565b8280016001018555821562000102579182015b8281111562000102578251825591602001919060010190620000e5565b506200011092915062000114565b5090565b5b8082111562000110576000815560010162000115565b6136fa806200013b6000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c806369a69e2911610151578063a9059cbb116100c3578063d505accf11610087578063d505accf146104be578063dd62ed3e146104d1578063ead5d359146104e4578063ed24911d146104f7578063ef5cfb8c146104ff578063f57d0b401461051257610274565b8063a9059cbb14610475578063b16a19de14610488578063b4dcfc7714610490578063b9844d8d14610498578063c485852b146104ab57610274565b80638ba2855d116101155780638ba2855d1461042f5780638d9484151461044257806395d89b411461044a57806399248ea714610452578063a457c2d71461045a578063a868dd5d1461046d57610274565b806369a69e29146103f157806370a082311461040457806375d2641314610417578063781603761461041f5780637f372cff1461042757610274565b8063313ce567116101ea57806344b68c3f116101ae57806344b68c3f146103ab5780634800d97f146103be57806351c0e061146103c657806360266557146103ce57806361d0494d146103e157806363210537146103e957610274565b8063313ce56714610353578063362925c21461036857806336a5a6d61461037d57806339509351146103905780633eb2eba6146103a357610274565b806323b872dd1161023c57806323b872dd146102e9578063288587ce146102fc5780632c4e722e1461031d5780632f2cab8714610325578063308e401e1461033857806330adf81f1461034b57610274565b806306fdde0314610279578063095ea7b31461029757806310d0ab22146102b757806318160ddd146102cc578063189956a2146102e1575b600080fd5b610281610525565b60405161028e9190613225565b60405180910390f35b6102aa6102a5366004612cb1565b6105bc565b60405161028e9190613107565b6102bf6105da565b60405161028e9190612fab565b6102d46105e9565b60405161028e9190613112565b6102d46105ef565b6102aa6102f7366004612b2c565b610838565b61030f61030a366004612cdc565b6108c0565b60405161028e929190613590565b6102d46108dd565b6102d4610333366004612d1d565b61096f565b6102d4610346366004612abc565b610987565b6102d46109a3565b61035b6109c7565b60405161028e919061359e565b61037b610376366004612d8b565b6109d0565b005b6102d461038b366004612e73565b610d59565b6102aa61039e366004612cb1565b610d6c565b6102d4610dba565b6102d46103b9366004612abc565b610eac565b6102bf610ec7565b6102bf610ed6565b61030f6103dc366004612bed565b610ee5565b6102d46110fd565b6102d4611102565b6102d46103ff366004612abc565b611126565b6102d4610412366004612abc565b611148565b6102bf611163565b610281611172565b6102d461118f565b61037b61043d366004612af4565b611308565b6102d461140b565b61028161142f565b6102bf611490565b6102aa610468366004612cb1565b61149f565b61037b611507565b6102aa610483366004612cb1565b611528565b6102bf61153c565b6102bf61154b565b6102d46104a6366004612abc565b61155f565b6102d46104b9366004612b6c565b611571565b61037b6104cc366004612c41565b611783565b6102d46104df366004612af4565b611967565b61030f6104f2366004612cdc565b611992565b6102d46119a3565b61037b61050d366004612abc565b611a3b565b6102d4610520366004612e73565b611a5d565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105b15780601f10610586576101008083540402835291602001916105b1565b820191906000526020600020905b81548152906001019060200180831161059457829003601f168201915b505050505090505b90565b60006105d06105c9611a6b565b8484611a6f565b5060015b92915050565b603a546001600160a01b031681565b60365490565b603a54603b54604051631652e7b760e01b81526000928392839283926001600160a01b0390811692631652e7b79261062d9290911690600401612fab565b60606040518083038186803b15801561064557600080fd5b505afa158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190612e31565b92506001600160801b031692506001600160801b031692506000603a60009054906101000a90046001600160a01b03166001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071d9190612e8b565b90506000603b60009054906101000a90046001600160a01b03166001600160a01b031663b1bf962d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561076f57600080fd5b505afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190612e8b565b90508315806107b4575080155b806107be57504283145b806107c95750818310155b156107db5784955050505050506105b9565b60008242116107ea57426107ec565b825b905060006107fa8286611b23565b905061082c8761082685610820670de0b6b3a764000061081a8c88611b65565b90611b65565b90611b9f565b90611be1565b97505050505050505090565b6000610845848484611c06565b6108b584610851611a6b565b6108b085604051806060016040528060288152602001613678602891396001600160a01b038a1660009081526035602052604081209061088f611a6b565b6001600160a01b031681526020810191909152604001600020549190611d1b565b611a6f565b5060015b9392505050565b6000806108d1338660008787611d47565b91509150935093915050565b603954603c5460405163d15e005360e01b815260009261010090046001600160a01b039081169263d15e00539261091a9290911690600401612fab565b60206040518083038186803b15801561093257600080fd5b505afa158015610946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190612e8b565b905090565b600061097e3386868686611f0c565b95945050505050565b60006105d48261099684611148565b61099e6105ef565b61201f565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b60006109da61204f565b60015490915060ff16806109f157506109f1612054565b806109fd575060005481115b610a225760405162461bcd60e51b8152600401610a199061336a565b60405180910390fd5b60015460ff16158015610a41576001805460ff19168117905560008290555b604180546001600160a01b038086166001600160a01b031992831617909255603980548c841661010002610100600160a81b0319909116179055603b8054928b1692909116919091179055610a98603788886129cb565b50610aa5603886866129cb565b50610b1f886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1a9190612ebf565b61205a565b876001600160a01b031663b16a19de6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5857600080fd5b505afa158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190612ad8565b603c80546001600160a01b0319166001600160a01b039283161790819055610bbc91168a600019612070565b876001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015610bf557600080fd5b505afa925050508015610c25575060408051601f3d908101601f19168201909252610c2291810190612ad8565b60015b610c2e57610cf4565b6001600160a01b03811615610cf257603a80546001600160a01b0319166001600160a01b038381169190911791829055604080516399248ea760e01b8152905192909116916399248ea791600480820192602092909190829003018186803b158015610c9957600080fd5b505afa158015610cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd19190612ad8565b603d80546001600160a01b0319166001600160a01b03929092169190911790555b505b886001600160a01b03167f45705fbd98b82017a03e6b75118b5900c6a3e840d26142e2d30214c0dd7a92df8989898989604051610d35959493929190612ffd565b60405180910390a28015610d4e576001805460ff191690555b505050505050505050565b60006105d482610d676108dd565b61216f565b60006105d0610d79611a6b565b846108b08560356000610d8a611a6b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611be1565b603a546000906001600160a01b0316610dd5575060006105b9565b604080516001808252818301909252606091602080830190803683375050603b5482519293506001600160a01b031691839150600090610e1157fe5b6001600160a01b039283166020918202929092010152603a54604051633111e7b360e01b8152911690633111e7b390610e549084906000199030906004016130d4565b602060405180830381600087803b158015610e6e57600080fd5b505af1158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612e8b565b91505090565b60006105d4610eba83611148565b610ec26108dd565b61217b565b603c546001600160a01b031681565b603b546001600160a01b031681565b6040805180820190915260018152603160f81b602082015260009081906001600160a01b038a16610f295760405162461bcd60e51b8152600401610a199190613225565b5083421115604051806040016040528060018152602001601960f91b81525090610f665760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0389166000908152603e602052604081205490610f896119a3565b7fce21806401473655533a882461ca5036529d194f238d3c1793817a552bd133a58c8c8c8c8c888d604051602001610fc8989796959493929190613163565b60405160208183030381529060405280519060200120604051602001610fef929190612f90565b60408051601f1981840301815291905280516020918201209150600190829061101a90880188612ea3565b87602001358860400135604051600081526020016040526040516110419493929190613207565b6020604051602081039080840390855afa158015611063573d6000803e3d6000fd5b505050602060405103516001600160a01b03168b6001600160a01b031614604051806040016040528060018152602001603360f81b815250906110b95760405162461bcd60e51b8152600401610a199190613225565b506110c5826001611be1565b6001600160a01b038c166000908152603e60205260409020556110eb8b8b8b8b8b611d47565b93509350505097509795505050505050565b600181565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c74381565b6001600160a01b0381166000908152604060208190528120546105d490612187565b6001600160a01b031660009081526034602052604090205490565b603a546001600160a01b031690565b604051806040016040528060018152602001603160f81b81525081565b603a546000906001600160a01b03166111aa575060006105b9565b604080516001808252818301909252606091602080830190803683375050603b5482519293506001600160a01b0316918391506000906111e657fe5b6001600160a01b039283166020918202929092010152603a546040516345accf9360e11b81526000929190911690638b599f269061122a90859030906004016130aa565b60206040518083038186803b15801561124257600080fd5b505afa158015611256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127a9190612e8b565b603d546040516370a0823160e01b81529192506113019183916001600160a01b0316906370a08231906112b1903090600401612fab565b60206040518083038186803b1580156112c957600080fd5b505afa1580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108269190612e8b565b9250505090565b603a546001600160a01b031661131d57611407565b336001600160a01b03831614806113c45750603a54604051631d36517b60e21b81526001600160a01b03909116906374d945ec9061135f908590600401612fab565b60206040518083038186803b15801561137757600080fd5b505afa15801561138b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113af9190612ad8565b6001600160a01b0316336001600160a01b0316145b604051806040016040528060018152602001601b60f91b815250906113fc5760405162461bcd60e51b8152600401610a199190613225565b506114078282612191565b5050565b7fce21806401473655533a882461ca5036529d194f238d3c1793817a552bd133a581565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105b15780601f10610586576101008083540402835291602001916105b1565b603d546001600160a01b031681565b60006105d06114ac611a6b565b846108b0856040518060600160405280602581526020016136a060259139603560006114d6611a6b565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d1b565b603a546001600160a01b031661151c57611526565b6115263333612191565b565b60006105d0611535611a6b565b8484611c06565b603c546001600160a01b031690565b60395461010090046001600160a01b031681565b603e6020526000908152604090205481565b6040805180820190915260018152600d60fa1b60208201526000906001600160a01b0389166115b35760405162461bcd60e51b8152600401610a199190613225565b5082421115604051806040016040528060018152602001601960f91b815250906115f05760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0388166000908152603e6020526040812054906116136119a3565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c7438b8b8b8b8b888c60405160200161165298979695949392919061311b565b60405160208183030381529060405280519060200120604051602001611679929190612f90565b60408051601f198184030181529190528051602091820120915060019082906116a490870187612ea3565b86602001358760400135604051600081526020016040526040516116cb9493929190613207565b6020604051602081039080840390855afa1580156116ed573d6000803e3d6000fd5b505050602060405103516001600160a01b03168a6001600160a01b031614604051806040016040528060018152602001603360f81b815250906117435760405162461bcd60e51b8152600401610a199190613225565b5061174f826001611be1565b6001600160a01b038b166000908152603e60205260409020556117758a8a8a8a8a611f0c565b9a9950505050505050505050565b6040805180820190915260018152603160f81b60208201526001600160a01b0388166117c25760405162461bcd60e51b8152600401610a199190613225565b5083421115604051806040016040528060018152602001601960f91b815250906117ff5760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0387166000908152603e6020526040812054906118226119a3565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a868b60405160200161185d969594939291906131a7565b60405160208183030381529060405280519060200120604051602001611884929190612f90565b604051602081830303815290604052805190602001209050600181868686604051600081526020016040526040516118bf9493929190613207565b6020604051602081039080840390855afa1580156118e1573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614604051806040016040528060018152602001603360f81b815250906119375760405162461bcd60e51b8152600401610a199190613225565b50611943826001611be1565b6001600160a01b038a166000908152603e6020526040902055610d4e898989611a6f565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b6000806108d1338686600087611d47565b6000467f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6119cf610525565b805160209182012060408051808201825260018152603160f81b9084015251611a1f93927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016131db565b6040516020818303038152906040528051906020012091505090565b603a546001600160a01b0316611a5057611a5a565b611a5a3382612191565b50565b60006105d482610ec26108dd565b3390565b6001600160a01b038316611a955760405162461bcd60e51b8152600401610a199061343e565b6001600160a01b038216611abb5760405162461bcd60e51b8152600401610a199061327b565b6001600160a01b0380841660008181526035602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611b16908590613112565b60405180910390a3505050565b60006108b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d1b565b600082611b74575060006105d4565b82820282848281611b8157fe5b04146108b95760405162461bcd60e51b8152600401610a1990613329565b60006108b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122b1565b6000828201838110156108b95760405162461bcd60e51b8152600401610a19906132bd565b6001600160a01b038316611c2c5760405162461bcd60e51b8152600401610a19906133f9565b6001600160a01b038216611c525760405162461bcd60e51b8152600401610a1990613238565b611c5d8383836122e8565b611c9a81604051806060016040528060268152602001613652602691396001600160a01b0386166000908152603460205260409020549190611d1b565b6001600160a01b038085166000908152603460205260408082209390935590841681522054611cc99082611be1565b6001600160a01b0380841660008181526034602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b16908590613112565b60008184841115611d3f5760405162461bcd60e51b8152600401610a199190613225565b505050900390565b6040805180820190915260018152603560f81b602082015260009081906001600160a01b038716611d8b5760405162461bcd60e51b8152600401610a199190613225565b50841580611d97575083155b604051806040016040528060018152602001603760f81b81525090611dcf5760405162461bcd60e51b8152600401610a199190613225565b506000611ddb88611148565b90506000806000611dea6108dd565b90508815611e1457838911611dff5788611e01565b835b9150611e0d828261217b565b9250611e41565b6000611e20858361217b565b9050808911611e2f5788611e31565b805b9350611e3d848361216f565b9250505b611e4b8b8361237b565b8615611ee657603954603c54604051631a4ca37b60e21b81526001600160a01b036101009093048316926369328dec92611e8e9291169087908f9060040161305a565b602060405180830381600087803b158015611ea857600080fd5b505af1158015611ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee09190612e8b565b50611efd565b603b54611efd906001600160a01b03168b8561245d565b50999098509650505050505050565b6040805180820190915260018152603560f81b60208201526000906001600160a01b038616611f4e5760405162461bcd60e51b8152600401610a199190613225565b508115611fe357603c54611f6d906001600160a01b031687308761247c565b603954603c5460405163e8eda9df60e01b81526001600160a01b0361010090930483169263e8eda9df92611fac9291169088903090899060040161307d565b600060405180830381600087803b158015611fc657600080fd5b505af1158015611fda573d6000803e3d6000fd5b50505050611ffb565b603b54611ffb906001600160a01b031687308761247c565b600061200985610d676108dd565b9050612015868261249d565b9695505050505050565b60008061097e612030868686612551565b6001600160a01b03871660009081526040602081905290205490611be1565b600190565b303b1590565b6039805460ff191660ff92909216919091179055565b8015806120f85750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906120a69030908690600401612fbf565b60206040518083038186803b1580156120be57600080fd5b505afa1580156120d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f69190612e8b565b155b6121145760405162461bcd60e51b8152600401610a19906134cc565b61216a8363095ea7b360e01b8484604051602401612133929190613041565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125b6565b505050565b60006108b9838361269b565b60006108b98383612746565b633b9aca00900490565b600061219b6105ef565b905060006121a884611148565b905060006121b785838561201f565b603d546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906121ed903090600401612fab565b60206040518083038186803b15801561220557600080fd5b505afa158015612219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223d9190612e8b565b905060008183111561225657612251610dba565b820191505b8183111561226657509081908190035b82156122a8576001600160a01b038716600090815260406020819052902081905561229187866127db565b603d546122a8906001600160a01b0316878561245d565b50505050505050565b600081836122d25760405162461bcd60e51b8152600401610a199190613225565b5060008385816122de57fe5b0495945050505050565b603a546001600160a01b03166122fd5761216a565b60006123076105ef565b90506001600160a01b038416156123225761232284826127f7565b6001600160a01b0383161580159061234c5750826001600160a01b0316846001600160a01b031614155b1561235b5761235b83826127f7565b6041546001600160a01b0316156123755761237581612862565b50505050565b6001600160a01b0382166123a15760405162461bcd60e51b8152600401610a19906133b8565b6123ad826000836122e8565b6123ea81604051806060016040528060228152602001613630602291396001600160a01b0385166000908152603460205260409020549190611d1b565b6001600160a01b0383166000908152603460205260409020556036546124109082611b23565b6036556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612451908590613112565b60405180910390a35050565b61216a8363a9059cbb60e01b8484604051602401612133929190613041565b612375846323b872dd60e01b85858560405160240161213393929190612fd9565b6001600160a01b0382166124c35760405162461bcd60e51b8152600401610a1990613559565b6124cf600083836122e8565b6036546124dc9082611be1565b6036556001600160a01b0382166000908152603460205260409020546125029082611be1565b6001600160a01b0383166000818152603460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612451908590613112565b603a546000906001600160a01b031661256c575060006108b9565b82612579575060006108b9565b6000612584846128c7565b6001600160a01b0386166000908152603f602052604090205490915061097e906125af908590611b23565b8290612917565b6125c8826001600160a01b031661298f565b6125e45760405162461bcd60e51b8152600401610a1990613522565b60006060836001600160a01b0316836040516126009190612f74565b6000604051808303816000865af19150503d806000811461263d576040519150601f19603f3d011682016040523d82523d6000602084013e612642565b606091505b5091509150816126645760405162461bcd60e51b8152600401610a19906132f4565b805115612375578080602001905181019061267f9190612d6f565b6123755760405162461bcd60e51b8152600401610a1990613482565b604080518082019091526002815261035360f41b6020820152600090826126d55760405162461bcd60e51b8152600401610a199190613225565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156127235760405162461bcd60e51b8152600401610a199190613225565b5082816b033b2e3c9fd0803ce80000008602018161273d57fe5b04949350505050565b6000821580612753575081155b15612760575060006105d4565b816b019d971e4fe8401e74000000198161277657fe5b0483111560405180604001604052806002815260200161068760f31b815250906127b35760405162461bcd60e51b8152600401610a199190613225565b506b033b2e3c9fd0803ce80000008383026b019d971e4fe8401e74000000015b049392505050565b6001600160a01b039091166000908152603f6020526040902055565b600061280283611148565b90508015612858576000612817848385612551565b6001600160a01b03851660009081526040602081905290205490915061283d9082611be1565b6001600160a01b038516600090815260406020819052902055505b61216a83836127db565b6041546040516306e0ad4560e01b81526001600160a01b03909116906306e0ad4590612892908490600401613112565b600060405180830381600087803b1580156128ac57600080fd5b505af11580156128c0573d6000803e3d6000fd5b5050505050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906129105760405162461bcd60e51b8152600401610a199190613225565b5092915050565b6000821580612924575081155b15612931575060006105d4565b816000198161293c57fe5b0483111560405180604001604052806002815260200161068760f31b815250906129795760405162461bcd60e51b8152600401610a199190613225565b506b033b2e3c9fd0803ce80000008383026127d3565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906129c357508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612a0c5782800160ff19823516178555612a39565b82800160010185558215612a39579182015b82811115612a39578235825591602001919060010190612a1e565b50612a45929150612a49565b5090565b5b80821115612a455760008155600101612a4a565b60008083601f840112612a6f578182fd5b50813567ffffffffffffffff811115612a86578182fd5b602083019150836020828501011115612a9e57600080fd5b9250929050565b600060608284031215612ab6578081fd5b50919050565b600060208284031215612acd578081fd5b81356108b9816135d8565b600060208284031215612ae9578081fd5b81516108b9816135d8565b60008060408385031215612b06578081fd5b8235612b11816135d8565b91506020830135612b21816135d8565b809150509250929050565b600080600060608486031215612b40578081fd5b8335612b4b816135d8565b92506020840135612b5b816135d8565b929592945050506040919091013590565b6000806000806000806000610120888a031215612b87578283fd5b8735612b92816135d8565b96506020880135612ba2816135d8565b9550604088013594506060880135612bb981613610565b93506080880135612bc9816135ed565b925060a08801359150612bdf8960c08a01612aa5565b905092959891949750929550565b6000806000806000806000610120888a031215612c08578283fd5b8735612c13816135d8565b96506020880135612c23816135d8565b955060408801359450606088013593506080880135612bc9816135ed565b600080600080600080600060e0888a031215612c5b578283fd5b8735612c66816135d8565b96506020880135612c76816135d8565b955060408801359450606088013593506080880135612c9481613620565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612cc3578182fd5b8235612cce816135d8565b946020939093013593505050565b600080600060608486031215612cf0578081fd5b8335612cfb816135d8565b9250602084013591506040840135612d12816135ed565b809150509250925092565b60008060008060808587031215612d32578182fd5b8435612d3d816135d8565b9350602085013592506040850135612d5481613610565b91506060850135612d64816135ed565b939692955090935050565b600060208284031215612d80578081fd5b81516108b9816135ed565b600080600080600080600060a0888a031215612da5578081fd5b8735612db0816135d8565b96506020880135612dc0816135d8565b9550604088013567ffffffffffffffff80821115612ddc578283fd5b612de88b838c01612a5e565b909750955060608a0135915080821115612e00578283fd5b50612e0d8a828b01612a5e565b9094509250506080880135612e21816135d8565b8091505092959891949750929550565b600080600060608486031215612e45578081fd5b8351612e50816135fb565b6020850151909350612e61816135fb565b80925050604084015190509250925092565b600060208284031215612e84578081fd5b5035919050565b600060208284031215612e9c578081fd5b5051919050565b600060208284031215612eb4578081fd5b81356108b981613620565b600060208284031215612ed0578081fd5b81516108b981613620565b6000815180845260208085019450808401835b83811015612f135781516001600160a01b031687529582019590820190600101612eee565b509495945050505050565b60008151808452612f368160208601602086016135ac565b601f01601f19169290920160200192915050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008251612f868184602087016135ac565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03861681526060602082018190526000906130229083018688612f4a565b8281036040840152613035818587612f4a565b98975050505050505050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b6000604082526130bd6040830185612edb565b905060018060a01b03831660208301529392505050565b6000606082526130e76060830186612edb565b6020830194909452506001600160a01b0391909116604090910152919050565b901515815260200190565b90815260200190565b9788526001600160a01b039687166020890152949095166040870152606086019290925261ffff166080850152151560a084015260c083019190915260e08201526101000190565b9788526001600160a01b03968716602089015294909516604087015260608601929092526080850152151560a084015260c083019190915260e08201526101000190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082526108b96020830184612f1e565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b918252602082015260400190565b60ff91909116815260200190565b60005b838110156135c75781810151838201526020016135af565b838111156123755750506000910152565b6001600160a01b0381168114611a5a57600080fd5b8015158114611a5a57600080fd5b6001600160801b0381168114611a5a57600080fd5b61ffff81168114611a5a57600080fd5b60ff81168114611a5a57600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074b2639f812deb674bc52f31d13ed6053a9af8a1bb4af0a3efc7cd49c89db5d564736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102745760003560e01c806369a69e2911610151578063a9059cbb116100c3578063d505accf11610087578063d505accf146104be578063dd62ed3e146104d1578063ead5d359146104e4578063ed24911d146104f7578063ef5cfb8c146104ff578063f57d0b401461051257610274565b8063a9059cbb14610475578063b16a19de14610488578063b4dcfc7714610490578063b9844d8d14610498578063c485852b146104ab57610274565b80638ba2855d116101155780638ba2855d1461042f5780638d9484151461044257806395d89b411461044a57806399248ea714610452578063a457c2d71461045a578063a868dd5d1461046d57610274565b806369a69e29146103f157806370a082311461040457806375d2641314610417578063781603761461041f5780637f372cff1461042757610274565b8063313ce567116101ea57806344b68c3f116101ae57806344b68c3f146103ab5780634800d97f146103be57806351c0e061146103c657806360266557146103ce57806361d0494d146103e157806363210537146103e957610274565b8063313ce56714610353578063362925c21461036857806336a5a6d61461037d57806339509351146103905780633eb2eba6146103a357610274565b806323b872dd1161023c57806323b872dd146102e9578063288587ce146102fc5780632c4e722e1461031d5780632f2cab8714610325578063308e401e1461033857806330adf81f1461034b57610274565b806306fdde0314610279578063095ea7b31461029757806310d0ab22146102b757806318160ddd146102cc578063189956a2146102e1575b600080fd5b610281610525565b60405161028e9190613225565b60405180910390f35b6102aa6102a5366004612cb1565b6105bc565b60405161028e9190613107565b6102bf6105da565b60405161028e9190612fab565b6102d46105e9565b60405161028e9190613112565b6102d46105ef565b6102aa6102f7366004612b2c565b610838565b61030f61030a366004612cdc565b6108c0565b60405161028e929190613590565b6102d46108dd565b6102d4610333366004612d1d565b61096f565b6102d4610346366004612abc565b610987565b6102d46109a3565b61035b6109c7565b60405161028e919061359e565b61037b610376366004612d8b565b6109d0565b005b6102d461038b366004612e73565b610d59565b6102aa61039e366004612cb1565b610d6c565b6102d4610dba565b6102d46103b9366004612abc565b610eac565b6102bf610ec7565b6102bf610ed6565b61030f6103dc366004612bed565b610ee5565b6102d46110fd565b6102d4611102565b6102d46103ff366004612abc565b611126565b6102d4610412366004612abc565b611148565b6102bf611163565b610281611172565b6102d461118f565b61037b61043d366004612af4565b611308565b6102d461140b565b61028161142f565b6102bf611490565b6102aa610468366004612cb1565b61149f565b61037b611507565b6102aa610483366004612cb1565b611528565b6102bf61153c565b6102bf61154b565b6102d46104a6366004612abc565b61155f565b6102d46104b9366004612b6c565b611571565b61037b6104cc366004612c41565b611783565b6102d46104df366004612af4565b611967565b61030f6104f2366004612cdc565b611992565b6102d46119a3565b61037b61050d366004612abc565b611a3b565b6102d4610520366004612e73565b611a5d565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105b15780601f10610586576101008083540402835291602001916105b1565b820191906000526020600020905b81548152906001019060200180831161059457829003601f168201915b505050505090505b90565b60006105d06105c9611a6b565b8484611a6f565b5060015b92915050565b603a546001600160a01b031681565b60365490565b603a54603b54604051631652e7b760e01b81526000928392839283926001600160a01b0390811692631652e7b79261062d9290911690600401612fab565b60606040518083038186803b15801561064557600080fd5b505afa158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190612e31565b92506001600160801b031692506001600160801b031692506000603a60009054906101000a90046001600160a01b03166001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071d9190612e8b565b90506000603b60009054906101000a90046001600160a01b03166001600160a01b031663b1bf962d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561076f57600080fd5b505afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190612e8b565b90508315806107b4575080155b806107be57504283145b806107c95750818310155b156107db5784955050505050506105b9565b60008242116107ea57426107ec565b825b905060006107fa8286611b23565b905061082c8761082685610820670de0b6b3a764000061081a8c88611b65565b90611b65565b90611b9f565b90611be1565b97505050505050505090565b6000610845848484611c06565b6108b584610851611a6b565b6108b085604051806060016040528060288152602001613678602891396001600160a01b038a1660009081526035602052604081209061088f611a6b565b6001600160a01b031681526020810191909152604001600020549190611d1b565b611a6f565b5060015b9392505050565b6000806108d1338660008787611d47565b91509150935093915050565b603954603c5460405163d15e005360e01b815260009261010090046001600160a01b039081169263d15e00539261091a9290911690600401612fab565b60206040518083038186803b15801561093257600080fd5b505afa158015610946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190612e8b565b905090565b600061097e3386868686611f0c565b95945050505050565b60006105d48261099684611148565b61099e6105ef565b61201f565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b60006109da61204f565b60015490915060ff16806109f157506109f1612054565b806109fd575060005481115b610a225760405162461bcd60e51b8152600401610a199061336a565b60405180910390fd5b60015460ff16158015610a41576001805460ff19168117905560008290555b604180546001600160a01b038086166001600160a01b031992831617909255603980548c841661010002610100600160a81b0319909116179055603b8054928b1692909116919091179055610a98603788886129cb565b50610aa5603886866129cb565b50610b1f886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1a9190612ebf565b61205a565b876001600160a01b031663b16a19de6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5857600080fd5b505afa158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190612ad8565b603c80546001600160a01b0319166001600160a01b039283161790819055610bbc91168a600019612070565b876001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015610bf557600080fd5b505afa925050508015610c25575060408051601f3d908101601f19168201909252610c2291810190612ad8565b60015b610c2e57610cf4565b6001600160a01b03811615610cf257603a80546001600160a01b0319166001600160a01b038381169190911791829055604080516399248ea760e01b8152905192909116916399248ea791600480820192602092909190829003018186803b158015610c9957600080fd5b505afa158015610cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd19190612ad8565b603d80546001600160a01b0319166001600160a01b03929092169190911790555b505b886001600160a01b03167f45705fbd98b82017a03e6b75118b5900c6a3e840d26142e2d30214c0dd7a92df8989898989604051610d35959493929190612ffd565b60405180910390a28015610d4e576001805460ff191690555b505050505050505050565b60006105d482610d676108dd565b61216f565b60006105d0610d79611a6b565b846108b08560356000610d8a611a6b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611be1565b603a546000906001600160a01b0316610dd5575060006105b9565b604080516001808252818301909252606091602080830190803683375050603b5482519293506001600160a01b031691839150600090610e1157fe5b6001600160a01b039283166020918202929092010152603a54604051633111e7b360e01b8152911690633111e7b390610e549084906000199030906004016130d4565b602060405180830381600087803b158015610e6e57600080fd5b505af1158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612e8b565b91505090565b60006105d4610eba83611148565b610ec26108dd565b61217b565b603c546001600160a01b031681565b603b546001600160a01b031681565b6040805180820190915260018152603160f81b602082015260009081906001600160a01b038a16610f295760405162461bcd60e51b8152600401610a199190613225565b5083421115604051806040016040528060018152602001601960f91b81525090610f665760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0389166000908152603e602052604081205490610f896119a3565b7fce21806401473655533a882461ca5036529d194f238d3c1793817a552bd133a58c8c8c8c8c888d604051602001610fc8989796959493929190613163565b60405160208183030381529060405280519060200120604051602001610fef929190612f90565b60408051601f1981840301815291905280516020918201209150600190829061101a90880188612ea3565b87602001358860400135604051600081526020016040526040516110419493929190613207565b6020604051602081039080840390855afa158015611063573d6000803e3d6000fd5b505050602060405103516001600160a01b03168b6001600160a01b031614604051806040016040528060018152602001603360f81b815250906110b95760405162461bcd60e51b8152600401610a199190613225565b506110c5826001611be1565b6001600160a01b038c166000908152603e60205260409020556110eb8b8b8b8b8b611d47565b93509350505097509795505050505050565b600181565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c74381565b6001600160a01b0381166000908152604060208190528120546105d490612187565b6001600160a01b031660009081526034602052604090205490565b603a546001600160a01b031690565b604051806040016040528060018152602001603160f81b81525081565b603a546000906001600160a01b03166111aa575060006105b9565b604080516001808252818301909252606091602080830190803683375050603b5482519293506001600160a01b0316918391506000906111e657fe5b6001600160a01b039283166020918202929092010152603a546040516345accf9360e11b81526000929190911690638b599f269061122a90859030906004016130aa565b60206040518083038186803b15801561124257600080fd5b505afa158015611256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127a9190612e8b565b603d546040516370a0823160e01b81529192506113019183916001600160a01b0316906370a08231906112b1903090600401612fab565b60206040518083038186803b1580156112c957600080fd5b505afa1580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108269190612e8b565b9250505090565b603a546001600160a01b031661131d57611407565b336001600160a01b03831614806113c45750603a54604051631d36517b60e21b81526001600160a01b03909116906374d945ec9061135f908590600401612fab565b60206040518083038186803b15801561137757600080fd5b505afa15801561138b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113af9190612ad8565b6001600160a01b0316336001600160a01b0316145b604051806040016040528060018152602001601b60f91b815250906113fc5760405162461bcd60e51b8152600401610a199190613225565b506114078282612191565b5050565b7fce21806401473655533a882461ca5036529d194f238d3c1793817a552bd133a581565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105b15780601f10610586576101008083540402835291602001916105b1565b603d546001600160a01b031681565b60006105d06114ac611a6b565b846108b0856040518060600160405280602581526020016136a060259139603560006114d6611a6b565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d1b565b603a546001600160a01b031661151c57611526565b6115263333612191565b565b60006105d0611535611a6b565b8484611c06565b603c546001600160a01b031690565b60395461010090046001600160a01b031681565b603e6020526000908152604090205481565b6040805180820190915260018152600d60fa1b60208201526000906001600160a01b0389166115b35760405162461bcd60e51b8152600401610a199190613225565b5082421115604051806040016040528060018152602001601960f91b815250906115f05760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0388166000908152603e6020526040812054906116136119a3565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c7438b8b8b8b8b888c60405160200161165298979695949392919061311b565b60405160208183030381529060405280519060200120604051602001611679929190612f90565b60408051601f198184030181529190528051602091820120915060019082906116a490870187612ea3565b86602001358760400135604051600081526020016040526040516116cb9493929190613207565b6020604051602081039080840390855afa1580156116ed573d6000803e3d6000fd5b505050602060405103516001600160a01b03168a6001600160a01b031614604051806040016040528060018152602001603360f81b815250906117435760405162461bcd60e51b8152600401610a199190613225565b5061174f826001611be1565b6001600160a01b038b166000908152603e60205260409020556117758a8a8a8a8a611f0c565b9a9950505050505050505050565b6040805180820190915260018152603160f81b60208201526001600160a01b0388166117c25760405162461bcd60e51b8152600401610a199190613225565b5083421115604051806040016040528060018152602001601960f91b815250906117ff5760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0387166000908152603e6020526040812054906118226119a3565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a868b60405160200161185d969594939291906131a7565b60405160208183030381529060405280519060200120604051602001611884929190612f90565b604051602081830303815290604052805190602001209050600181868686604051600081526020016040526040516118bf9493929190613207565b6020604051602081039080840390855afa1580156118e1573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614604051806040016040528060018152602001603360f81b815250906119375760405162461bcd60e51b8152600401610a199190613225565b50611943826001611be1565b6001600160a01b038a166000908152603e6020526040902055610d4e898989611a6f565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b6000806108d1338686600087611d47565b6000467f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6119cf610525565b805160209182012060408051808201825260018152603160f81b9084015251611a1f93927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016131db565b6040516020818303038152906040528051906020012091505090565b603a546001600160a01b0316611a5057611a5a565b611a5a3382612191565b50565b60006105d482610ec26108dd565b3390565b6001600160a01b038316611a955760405162461bcd60e51b8152600401610a199061343e565b6001600160a01b038216611abb5760405162461bcd60e51b8152600401610a199061327b565b6001600160a01b0380841660008181526035602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611b16908590613112565b60405180910390a3505050565b60006108b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d1b565b600082611b74575060006105d4565b82820282848281611b8157fe5b04146108b95760405162461bcd60e51b8152600401610a1990613329565b60006108b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122b1565b6000828201838110156108b95760405162461bcd60e51b8152600401610a19906132bd565b6001600160a01b038316611c2c5760405162461bcd60e51b8152600401610a19906133f9565b6001600160a01b038216611c525760405162461bcd60e51b8152600401610a1990613238565b611c5d8383836122e8565b611c9a81604051806060016040528060268152602001613652602691396001600160a01b0386166000908152603460205260409020549190611d1b565b6001600160a01b038085166000908152603460205260408082209390935590841681522054611cc99082611be1565b6001600160a01b0380841660008181526034602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b16908590613112565b60008184841115611d3f5760405162461bcd60e51b8152600401610a199190613225565b505050900390565b6040805180820190915260018152603560f81b602082015260009081906001600160a01b038716611d8b5760405162461bcd60e51b8152600401610a199190613225565b50841580611d97575083155b604051806040016040528060018152602001603760f81b81525090611dcf5760405162461bcd60e51b8152600401610a199190613225565b506000611ddb88611148565b90506000806000611dea6108dd565b90508815611e1457838911611dff5788611e01565b835b9150611e0d828261217b565b9250611e41565b6000611e20858361217b565b9050808911611e2f5788611e31565b805b9350611e3d848361216f565b9250505b611e4b8b8361237b565b8615611ee657603954603c54604051631a4ca37b60e21b81526001600160a01b036101009093048316926369328dec92611e8e9291169087908f9060040161305a565b602060405180830381600087803b158015611ea857600080fd5b505af1158015611ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee09190612e8b565b50611efd565b603b54611efd906001600160a01b03168b8561245d565b50999098509650505050505050565b6040805180820190915260018152603560f81b60208201526000906001600160a01b038616611f4e5760405162461bcd60e51b8152600401610a199190613225565b508115611fe357603c54611f6d906001600160a01b031687308761247c565b603954603c5460405163e8eda9df60e01b81526001600160a01b0361010090930483169263e8eda9df92611fac9291169088903090899060040161307d565b600060405180830381600087803b158015611fc657600080fd5b505af1158015611fda573d6000803e3d6000fd5b50505050611ffb565b603b54611ffb906001600160a01b031687308761247c565b600061200985610d676108dd565b9050612015868261249d565b9695505050505050565b60008061097e612030868686612551565b6001600160a01b03871660009081526040602081905290205490611be1565b600190565b303b1590565b6039805460ff191660ff92909216919091179055565b8015806120f85750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906120a69030908690600401612fbf565b60206040518083038186803b1580156120be57600080fd5b505afa1580156120d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f69190612e8b565b155b6121145760405162461bcd60e51b8152600401610a19906134cc565b61216a8363095ea7b360e01b8484604051602401612133929190613041565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125b6565b505050565b60006108b9838361269b565b60006108b98383612746565b633b9aca00900490565b600061219b6105ef565b905060006121a884611148565b905060006121b785838561201f565b603d546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906121ed903090600401612fab565b60206040518083038186803b15801561220557600080fd5b505afa158015612219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223d9190612e8b565b905060008183111561225657612251610dba565b820191505b8183111561226657509081908190035b82156122a8576001600160a01b038716600090815260406020819052902081905561229187866127db565b603d546122a8906001600160a01b0316878561245d565b50505050505050565b600081836122d25760405162461bcd60e51b8152600401610a199190613225565b5060008385816122de57fe5b0495945050505050565b603a546001600160a01b03166122fd5761216a565b60006123076105ef565b90506001600160a01b038416156123225761232284826127f7565b6001600160a01b0383161580159061234c5750826001600160a01b0316846001600160a01b031614155b1561235b5761235b83826127f7565b6041546001600160a01b0316156123755761237581612862565b50505050565b6001600160a01b0382166123a15760405162461bcd60e51b8152600401610a19906133b8565b6123ad826000836122e8565b6123ea81604051806060016040528060228152602001613630602291396001600160a01b0385166000908152603460205260409020549190611d1b565b6001600160a01b0383166000908152603460205260409020556036546124109082611b23565b6036556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612451908590613112565b60405180910390a35050565b61216a8363a9059cbb60e01b8484604051602401612133929190613041565b612375846323b872dd60e01b85858560405160240161213393929190612fd9565b6001600160a01b0382166124c35760405162461bcd60e51b8152600401610a1990613559565b6124cf600083836122e8565b6036546124dc9082611be1565b6036556001600160a01b0382166000908152603460205260409020546125029082611be1565b6001600160a01b0383166000818152603460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612451908590613112565b603a546000906001600160a01b031661256c575060006108b9565b82612579575060006108b9565b6000612584846128c7565b6001600160a01b0386166000908152603f602052604090205490915061097e906125af908590611b23565b8290612917565b6125c8826001600160a01b031661298f565b6125e45760405162461bcd60e51b8152600401610a1990613522565b60006060836001600160a01b0316836040516126009190612f74565b6000604051808303816000865af19150503d806000811461263d576040519150601f19603f3d011682016040523d82523d6000602084013e612642565b606091505b5091509150816126645760405162461bcd60e51b8152600401610a19906132f4565b805115612375578080602001905181019061267f9190612d6f565b6123755760405162461bcd60e51b8152600401610a1990613482565b604080518082019091526002815261035360f41b6020820152600090826126d55760405162461bcd60e51b8152600401610a199190613225565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156127235760405162461bcd60e51b8152600401610a199190613225565b5082816b033b2e3c9fd0803ce80000008602018161273d57fe5b04949350505050565b6000821580612753575081155b15612760575060006105d4565b816b019d971e4fe8401e74000000198161277657fe5b0483111560405180604001604052806002815260200161068760f31b815250906127b35760405162461bcd60e51b8152600401610a199190613225565b506b033b2e3c9fd0803ce80000008383026b019d971e4fe8401e74000000015b049392505050565b6001600160a01b039091166000908152603f6020526040902055565b600061280283611148565b90508015612858576000612817848385612551565b6001600160a01b03851660009081526040602081905290205490915061283d9082611be1565b6001600160a01b038516600090815260406020819052902055505b61216a83836127db565b6041546040516306e0ad4560e01b81526001600160a01b03909116906306e0ad4590612892908490600401613112565b600060405180830381600087803b1580156128ac57600080fd5b505af11580156128c0573d6000803e3d6000fd5b5050505050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906129105760405162461bcd60e51b8152600401610a199190613225565b5092915050565b6000821580612924575081155b15612931575060006105d4565b816000198161293c57fe5b0483111560405180604001604052806002815260200161068760f31b815250906129795760405162461bcd60e51b8152600401610a199190613225565b506b033b2e3c9fd0803ce80000008383026127d3565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906129c357508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612a0c5782800160ff19823516178555612a39565b82800160010185558215612a39579182015b82811115612a39578235825591602001919060010190612a1e565b50612a45929150612a49565b5090565b5b80821115612a455760008155600101612a4a565b60008083601f840112612a6f578182fd5b50813567ffffffffffffffff811115612a86578182fd5b602083019150836020828501011115612a9e57600080fd5b9250929050565b600060608284031215612ab6578081fd5b50919050565b600060208284031215612acd578081fd5b81356108b9816135d8565b600060208284031215612ae9578081fd5b81516108b9816135d8565b60008060408385031215612b06578081fd5b8235612b11816135d8565b91506020830135612b21816135d8565b809150509250929050565b600080600060608486031215612b40578081fd5b8335612b4b816135d8565b92506020840135612b5b816135d8565b929592945050506040919091013590565b6000806000806000806000610120888a031215612b87578283fd5b8735612b92816135d8565b96506020880135612ba2816135d8565b9550604088013594506060880135612bb981613610565b93506080880135612bc9816135ed565b925060a08801359150612bdf8960c08a01612aa5565b905092959891949750929550565b6000806000806000806000610120888a031215612c08578283fd5b8735612c13816135d8565b96506020880135612c23816135d8565b955060408801359450606088013593506080880135612bc9816135ed565b600080600080600080600060e0888a031215612c5b578283fd5b8735612c66816135d8565b96506020880135612c76816135d8565b955060408801359450606088013593506080880135612c9481613620565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612cc3578182fd5b8235612cce816135d8565b946020939093013593505050565b600080600060608486031215612cf0578081fd5b8335612cfb816135d8565b9250602084013591506040840135612d12816135ed565b809150509250925092565b60008060008060808587031215612d32578182fd5b8435612d3d816135d8565b9350602085013592506040850135612d5481613610565b91506060850135612d64816135ed565b939692955090935050565b600060208284031215612d80578081fd5b81516108b9816135ed565b600080600080600080600060a0888a031215612da5578081fd5b8735612db0816135d8565b96506020880135612dc0816135d8565b9550604088013567ffffffffffffffff80821115612ddc578283fd5b612de88b838c01612a5e565b909750955060608a0135915080821115612e00578283fd5b50612e0d8a828b01612a5e565b9094509250506080880135612e21816135d8565b8091505092959891949750929550565b600080600060608486031215612e45578081fd5b8351612e50816135fb565b6020850151909350612e61816135fb565b80925050604084015190509250925092565b600060208284031215612e84578081fd5b5035919050565b600060208284031215612e9c578081fd5b5051919050565b600060208284031215612eb4578081fd5b81356108b981613620565b600060208284031215612ed0578081fd5b81516108b981613620565b6000815180845260208085019450808401835b83811015612f135781516001600160a01b031687529582019590820190600101612eee565b509495945050505050565b60008151808452612f368160208601602086016135ac565b601f01601f19169290920160200192915050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008251612f868184602087016135ac565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03861681526060602082018190526000906130229083018688612f4a565b8281036040840152613035818587612f4a565b98975050505050505050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b6000604082526130bd6040830185612edb565b905060018060a01b03831660208301529392505050565b6000606082526130e76060830186612edb565b6020830194909452506001600160a01b0391909116604090910152919050565b901515815260200190565b90815260200190565b9788526001600160a01b039687166020890152949095166040870152606086019290925261ffff166080850152151560a084015260c083019190915260e08201526101000190565b9788526001600160a01b03968716602089015294909516604087015260608601929092526080850152151560a084015260c083019190915260e08201526101000190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082526108b96020830184612f1e565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b918252602082015260400190565b60ff91909116815260200190565b60005b838110156135c75781810151838201526020016135af565b838111156123755750506000910152565b6001600160a01b0381168114611a5a57600080fd5b8015158114611a5a57600080fd5b6001600160801b0381168114611a5a57600080fd5b61ffff81168114611a5a57600080fd5b60ff81168114611a5a57600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074b2639f812deb674bc52f31d13ed6053a9af8a1bb4af0a3efc7cd49c89db5d564736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
