@soma-finance/core-contracts
Version:
SOMA Finance core contracts
1,714 lines • 85.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SecurityToken__factory = void 0;
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
const ethers_1 = require("ethers");
const _erc165InterfaceId = "0xda2fe628";
const _erc1820InterfaceId = "0x690b4d69e28e3e5719a6672c5fd98805f950646dc691febc77c448a54512b2ee";
const _abi = [
{
inputs: [],
stateMutability: "nonpayable",
type: "constructor",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "spender",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
],
name: "Approval",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "spender",
type: "address",
},
{
indexed: true,
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
{
indexed: false,
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "ApprovalPartition",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "account",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "previousBalance",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "newBalance",
type: "uint256",
},
],
name: "BalanceChanged",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "operator",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "from",
type: "address",
},
{
indexed: false,
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
{
indexed: false,
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "Burned",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
indexed: false,
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "DeprecatePartition",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint8",
name: "version",
type: "uint8",
},
],
name: "Initialized",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "operator",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
{
indexed: false,
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "Minted",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "account",
type: "address",
},
{
indexed: false,
internalType: "bytes32",
name: "fromId",
type: "bytes32",
},
{
indexed: false,
internalType: "bytes32",
name: "toId",
type: "bytes32",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
{
indexed: false,
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "MovedPartition",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "account",
type: "address",
},
],
name: "Paused",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
indexed: false,
internalType: "bytes32",
name: "prevPrivileges",
type: "bytes32",
},
{
indexed: false,
internalType: "bytes32",
name: "newPrivileges",
type: "bytes32",
},
{
indexed: true,
internalType: "address",
name: "sender",
type: "address",
},
],
name: "RequiredPrivilegesUpdated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "operator",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "from",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "bytes32",
name: "fromId",
type: "bytes32",
},
{
indexed: false,
internalType: "bytes32",
name: "toId",
type: "bytes32",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
{
indexed: false,
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "Seized",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "token",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
indexed: true,
internalType: "address",
name: "sender",
type: "address",
},
],
name: "TokensRecovered",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "from",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
],
name: "Transfer",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "from",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: true,
internalType: "bytes32",
name: "fromId",
type: "bytes32",
},
{
indexed: false,
internalType: "bytes32",
name: "toId",
type: "bytes32",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
{
indexed: false,
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "TransferPartition",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "account",
type: "address",
},
],
name: "Unpaused",
type: "event",
},
{
inputs: [],
name: "DEFAULT_ID",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "DEFAULT_PARTITION",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "DEFAULT_PRIVILEGES",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "DOMAIN_SEPARATOR",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "GLOBAL_DEPRECATE_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "GLOBAL_MANAGE_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "GLOBAL_MINT_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "GLOBAL_SEIZE_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "GLOBAL_UPDATE_PRIVILEGES_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "LOCAL_DEPRECATE_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "LOCAL_MANAGE_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "LOCAL_MINT_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "LOCAL_SEIZE_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "LOCAL_UPDATE_PRIVILEGES_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "SOMA",
outputs: [
{
internalType: "contract ISOMA",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "TOKEN_RECOVERY_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "owner",
type: "address",
},
{
internalType: "address",
name: "spender",
type: "address",
},
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
],
name: "allowance",
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: "spender",
type: "address",
},
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "approve",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
],
name: "balanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "balanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "burn",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "_from",
type: "address",
},
{
internalType: "address",
name: "_to",
type: "address",
},
{
internalType: "bytes32",
name: "fromId",
type: "bytes32",
},
{
internalType: "bytes32",
name: "toId",
type: "bytes32",
},
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
name: "canTransferFrom",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "_from",
type: "address",
},
{
internalType: "address",
name: "_to",
type: "address",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
],
name: "canTransferFrom",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
{
internalType: "uint32",
name: "pos",
type: "uint32",
},
],
name: "checkpoints",
outputs: [
{
components: [
{
internalType: "uint32",
name: "fromBlock",
type: "uint32",
},
{
internalType: "uint224",
name: "balance",
type: "uint224",
},
],
internalType: "struct ERC20HistoryUpgradeable.Checkpoint",
name: "",
type: "tuple",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "decimals",
outputs: [
{
internalType: "uint8",
name: "",
type: "uint8",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address",
},
{
internalType: "uint256",
name: "subtractedValue",
type: "uint256",
},
],
name: "decreaseAllowance",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "deprecatePartition",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
],
name: "deprecated",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
{
internalType: "uint256",
name: "blockNumber",
type: "uint256",
},
],
name: "getPastBalance",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "blockNumber",
type: "uint256",
},
],
name: "getPastTotalSupply",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "role",
type: "bytes32",
},
],
name: "getRoleAdmin",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "hasPrivileges",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "hasPrivileges",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "role",
type: "bytes32",
},
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "hasRole",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address",
},
{
internalType: "uint256",
name: "addedValue",
type: "uint256",
},
],
name: "increaseAllowance",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "domain",
type: "string",
},
{
internalType: "string",
name: "name",
type: "string",
},
{
internalType: "string",
name: "symbol",
type: "string",
},
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "mint",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes[]",
name: "data",
type: "bytes[]",
},
],
name: "multicall",
outputs: [
{
internalType: "bytes[]",
name: "results",
type: "bytes[]",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "name",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "owner",
type: "address",
},
],
name: "nonces",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "numCheckpoints",
outputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "pause",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "paused",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "owner",
type: "address",
},
{
internalType: "address",
name: "spender",
type: "address",
},
{
internalType: "uint256",
name: "value",
type: "uint256",
},
{
internalType: "uint256",
name: "deadline",
type: "uint256",
},
{
internalType: "uint8",
name: "v",
type: "uint8",
},
{
internalType: "bytes32",
name: "r",
type: "bytes32",
},
{
internalType: "bytes32",
name: "s",
type: "bytes32",
},
],
name: "permit",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "token",
type: "address",
},
{
internalType: "address",
name: "to",
type: "address",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
],
name: "recoverTokens",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "requiredPrivileges",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
],
name: "requiredPrivileges",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "tokenHolder",
type: "address",
},
{
internalType: "bytes32",
name: "fromId",
type: "bytes32",
},
{
internalType: "bytes32",
name: "toId",
type: "bytes32",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "seize",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes4",
name: "interfaceId",
type: "bytes4",
},
],
name: "supportsInterface",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
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: "bytes32",
name: "id",
type: "bytes32",
},
],
name: "totalSupply",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "to",
type: "address",
},
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "transfer",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "to",
type: "address",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
],
name: "transfer",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "from",
type: "address",
},
{
internalType: "address",
name: "to",
type: "address",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
],
name: "transferFrom",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "from",
type: "address",
},
{
internalType: "address",
name: "to",
type: "address",
},
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "transferFrom",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
{
internalType: "bytes32",
name: "fromId",
type: "bytes32",
},
{
internalType: "bytes32",
name: "toId",
type: "bytes32",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "transferPartition",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "unpause",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "newRequiredPrivileges",
type: "bytes32",
},
],
name: "updateRequiredPrivileges",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "id",
type: "bytes32",
},
{
internalType: "bytes32",
name: "newRequiredPrivileges",
type: "bytes32",
},
],
name: "updateRequiredPrivileges",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
];
const _bytecode = "0x60e0604052730f3dc00189dbcd1d0c574e48031270cae04c4adf6080526001600160401b0360a052600060c0523480156200003957600080fd5b50620000446200004a565b6200010c565b600054610100900460ff1615620000b75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805160a05160c05161545d620001ac60003960008181610504015281816107c601528181610c230152818161116701526136e5015260006105b00152600081816106e201528181610b2e01528181610cf101528181610de401528181610fe20152818161107e0152818161122501528181611739015281816117d5015281816118e501528181611c4e015281816120600152613352015261545d6000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c80635f3e849f116101f4578063a6487c531161011a578063d505accf116100ad578063ef63d57c1161007c578063ef63d57c14610938578063f1127ed814610959578063f25e311f14610996578063f37d11cc146109a957600080fd5b8063d505accf146108e1578063d8697598146108f4578063dd62ed3e1461091b578063eec47d601461092e57600080fd5b8063b524abcf116100e9578063b524abcf1461088c578063ba497d08146108ac578063c3f9213c146108cf578063c72460ee146108d757600080fd5b8063a6487c5314610833578063a9059cbb14610846578063aacbbf5814610859578063ac9650d81461086c57600080fd5b80637ecebe00116101925780638e539e8c116101615780638e539e8c146107f257806391d148541461080557806395d89b4114610818578063a457c2d71461082057600080fd5b80637ecebe00146107a65780638456cb59146107b957806387f67d8f146107c1578063895324b2146107e857600080fd5b806370a08231116101ce57806370a082311461074457806372cee8d51461076d578063754e940b146107805780637dfe53591461079357600080fd5b80635f3e849f146106ca57806363727fc2146106dd5780636fcfff451461071c57600080fd5b8063248a9ca3116102e457806338cd427c116102775780634d30b6be116102465780634d30b6be1461066657806357cb16731461069c5780635c975abb146106af5780635d549d5c146106b757600080fd5b806338cd427c1461062557806339509351146106385780633f4ba83a1461064b5780634b63885a1461065357600080fd5b806330139280116102b357806330139280146105d2578063313ce567146105f9578063330dfd1f146106085780633644e5151461061d57600080fd5b8063248a9ca3146105725780632772ce9d1461058557806328972b15146105985780632a7a0c68146105ab57600080fd5b806310fe82941161035c5780631c8d5d381161032b5780631c8d5d38146104c25780631e26571f14610502578063227102a61461053857806323b872dd1461055f57600080fd5b806310fe829414610476578063161bc4201461048957806318160ddd146104b057806318cb0a40146104b857600080fd5b8063095ea7b311610398578063095ea7b31461041f5780630df86999146104325780630f58f5101461044557806310b74b281461044f57600080fd5b806301ffc9a7146103bf57806306fdde03146103e7578063089566a5146103fc575b600080fd5b6103d26103cd366004614925565b6109bc565b60405190151581526020015b60405180910390f35b6103ef6109e7565b6040516103de919061499f565b61041160008051602061540a83398151915281565b6040519081526020016103de565b6103d261042d3660046149c7565b610a79565b6104116104403660046149c7565b610a91565b6104116102945481565b6104117f0101361cc05e6b89a8f9397a4abf06a8f976d3838579a2733d74c335d8f7804d81565b6103d2610484366004614a96565b610ae5565b6104117fca229e2c24b1e5f3121c063a03d242a28455702c403d7f0a8d2dcc0644576a5b81565b603554610411565b6104116103935481565b6104116104d0366004614af9565b6001600160a01b0392831660009081526069602090815260408083209490951682529283528381209181529152205490565b7f000000000000000000000000000000000000000000000000000000000000000060009081526102fb6020526040902054610411565b6104117ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb181565b6103d261056d366004614af9565b610b06565b610411610580366004614b3a565b610b2a565b6103d2610593366004614b3a565b610c1c565b6103d26105a6366004614b53565b610c48565b6104117f000000000000000000000000000000000000000000000000000000000000000081565b6104117fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef981565b604051601281526020016103de565b61061b610616366004614bc9565b610c73565b005b610411610dd5565b6103d2610633366004614c19565b610ddf565b6103d26106463660046149c7565b610faf565b61061b610fd1565b6103d2610661366004614c6a565b611160565b6104116106743660046149c7565b6001600160a01b03919091166000908152606860209081526040808320938352929052205490565b6103d26106aa366004614a96565b61118c565b6103d261119d565b61061b6106c5366004614bc9565b6111a7565b61061b6106d8366004614af9565b6112fa565b6107047f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103de565b61072f61072a366004614c6a565b61146b565b60405163ffffffff90911681526020016103de565b610411610752366004614c6a565b6001600160a01b031660009081526033602052604090205490565b6103d261077b366004614c87565b61148e565b6103d261078e366004614cdb565b61159e565b61061b6107a1366004614cfd565b611663565b6104116107b4366004614c6a565b611709565b61061b611728565b6104117f000000000000000000000000000000000000000000000000000000000000000081565b6104116102c75481565b610411610800366004614b3a565b6118b4565b6103d2610813366004614d44565b6118e1565b6103ef6119d9565b6103d261082e3660046149c7565b6119e8565b61061b610841366004614d74565b611a63565b6103d26108543660046149c7565b611b9a565b61061b610867366004614c87565b611ba8565b61087f61087a366004614df2565b611d53565b6040516103de9190614e67565b61041161089a366004614b3a565b60009081526066602052604090205490565b6103d26108ba366004614b3a565b60009081526067602052604090205460ff1690565b610411600081565b6104116102605481565b61061b6108ef366004614ec9565b611e48565b6104117f0b8459b722d944f0580da74c767d2dcae280ce16527c19c825b302a24e208dfd81565b610411610929366004614f40565b611fac565b6104116102fa5481565b610411610946366004614b3a565b60009081526102fb602052604090205490565b61096c610967366004614f6e565b611fd7565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016103de565b6103d26109a4366004614d44565b61205c565b6103d26109b7366004614af9565b612137565b60006001600160e01b0319821663a6487c5360e01b14806109e157506109e18261214e565b92915050565b6060603680546109f690614fa5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2290614fa5565b8015610a6f5780601f10610a4457610100808354040283529160200191610a6f565b820191906000526020600020905b815481529060010190602001808311610a5257829003601f168201915b5050505050905090565b600033610a87818585612173565b5060019392505050565b6000438210610abb5760405162461bcd60e51b8152600401610ab290614fd9565b60405180910390fd5b6001600160a01b038316600090815261010060205260409020610ade9083612297565b9392505050565b600033610af58187878787612354565b50600195945050505050565b905090565b600033610b148582856124a2565b610b1f858585612516565b506001949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bae919061501a565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b8152600401610bdb91815260200190565b602060405180830381865afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e19190615037565b60006109e17f00000000000000000000000000000000000000000000000000000000000000008361159e565b600033610c588782878787612521565b610c668787878888886125a2565b5060019695505050505050565b610393543390610c8390826118e1565b80610ca15750610ca160008051602061540a833981519152826118e1565b610ced5760405162461bcd60e51b815260206004820152601e60248201527f4d696e7461626c6553656375726974793a20554e415554484f52495a454400006044820152606401610ab2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663921234706040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d71919061501a565b9050610d7f81868686612630565b6001600160a01b038116336001600160a01b03167fd0f462e38655140024816d081b599b90e6e95e69b564ac32b0c2c0244393ca84878787604051610dc693929190615050565b60405180910390a35050505050565b6000610b0161263c565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e64919061501a565b60008681526102fb6020526040812054919250858714610e935760008681526102fb6020526040902054610e95565b815b90506001600160a01b0389161580610f19575060405163253bd7b760e01b81526001600160a01b038a811660048301526024820184905284169063253bd7b790604401602060405180830381865afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061506f565b8015610fa257506001600160a01b0388161580610fa2575060405163253bd7b760e01b81526001600160a01b0389811660048301526024820183905284169063253bd7b790604401602060405180830381865afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa2919061506f565b9998505050505050505050565b600033610a87818585610fc28383611fac565b610fcc91906150a7565b612173565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561103e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110629190