{
  "_format": "hh-sol-artifact-1",
  "contractName": "NFTGenesis",
  "sourceName": "contracts/NFTGenesis.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_fromTokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_toTokenId",
          "type": "uint256"
        }
      ],
      "name": "BatchMetadataUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "_tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "BuyMultipleNFT",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ClaimReward",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "DistributeRewards",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "MetadataUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_percentage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxMinted",
          "type": "uint256"
        }
      ],
      "name": "addNft",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "amountNftTypes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cardId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "buyMultipleNFT",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "cardMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "genesisPercentage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalMinted",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxMinted",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cardId",
          "type": "uint256"
        }
      ],
      "name": "claimRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "typePool",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "distributeGenesisRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gnetERC20",
      "outputs": [
        {
          "internalType": "contract GNET",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract GNET",
          "name": "_gnetERC20",
          "type": "address"
        },
        {
          "internalType": "contract USDT",
          "name": "_usdtERC20",
          "type": "address"
        },
        {
          "internalType": "contract NFT",
          "name": "_valhallaNFT",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cardId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_address",
          "type": "address"
        }
      ],
      "name": "myNftRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "nftGenesis",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "ownedNfts",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "currentRewards",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nftGenesisPool",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "nftGenesisPoolMarker",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nftType",
          "type": "uint256"
        }
      ],
      "name": "percentageByNftType",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "receiverAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "safeMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "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": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "tokenIdToCardId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "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": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "usdtERC20",
      "outputs": [
        {
          "internalType": "contract USDT",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516135d26200011f60003960008181610c9f01528181610cdf01528181610db501528181610df50152610f0001526135d26000f3fe6080604052600436106101c05760003560e01c806301ffc9a7146101c557806306fdde03146101fa578063081812fc1461021c578063095ea7b3146102545780630962ef791461027657806316fed3e21461029657806318160ddd146102b75780631d06c3b2146102d657806323b872dd146103075780632f745c59146103275780633659cfe61461034757806340d097c31461036757806342842e0e146103875780634f1ef286146103a75780634f6ccce7146103ba57806352d1902d146103da5780636352211e146103ef57806370a082311461040f578063715018a61461042f5780638da5cb5b1461044457806395d89b41146104595780639f7761a91461046e578063a22cb4651461049c578063b6593c8e146104bc578063b696741f146104dc578063b71bc8bc14610531578063b88d4fde14610551578063bb71246014610571578063c78e5b371461059f578063c87b56dd146105b6578063dc3676b7146105d6578063e4305a29146105eb578063e7cb1f3e1461064e578063e961e1ff1461066e578063e985e9c51461068f578063ed65af74146106af578063f2fde38b146106d0578063f8c8765e146106f0578063fadca71214610710575b600080fd5b3480156101d157600080fd5b506101e56101e0366004612abd565b610730565b60405190151581526020015b60405180910390f35b34801561020657600080fd5b5061020f610741565b6040516101f19190612b2a565b34801561022857600080fd5b5061023c610237366004612b3d565b6107d3565b6040516001600160a01b0390911681526020016101f1565b34801561026057600080fd5b5061027461026f366004612b6b565b6107fa565b005b34801561028257600080fd5b50610274610291366004612b3d565b610914565b3480156102a257600080fd5b5061019a5461023c906001600160a01b031681565b3480156102c357600080fd5b5060cb545b6040519081526020016101f1565b3480156102e257600080fd5b506102c86102f1366004612b3d565b6000908152610197602052604090206001015490565b34801561031357600080fd5b50610274610322366004612b97565b610a56565b34801561033357600080fd5b506102c8610342366004612b6b565b610bff565b34801561035357600080fd5b50610274610362366004612bd8565b610c95565b34801561037357600080fd5b50610274610382366004612bd8565b610d5d565b34801561039357600080fd5b506102746103a2366004612b97565b610d90565b6102746103b5366004612c97565b610dab565b3480156103c657600080fd5b506102c86103d5366004612b3d565b610e60565b3480156103e657600080fd5b506102c8610ef3565b3480156103fb57600080fd5b5061023c61040a366004612b3d565b610fa1565b34801561041b57600080fd5b506102c861042a366004612bd8565b610fd5565b34801561043b57600080fd5b5061027461105b565b34801561045057600080fd5b5061023c61106f565b34801561046557600080fd5b5061020f61107e565b34801561047a57600080fd5b506102c8610489366004612b3d565b6101966020526000908152604090205481565b3480156104a857600080fd5b506102746104b7366004612cf4565b61108d565b3480156104c857600080fd5b506102746104d7366004612d2d565b611098565b3480156104e857600080fd5b5061051c6104f7366004612b6b565b6101986020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101f1565b34801561053d57600080fd5b506102c861054c366004612d4f565b611152565b34801561055d57600080fd5b5061027461056c366004612d74565b6111d4565b34801561057d57600080fd5b506102c861058c366004612b3d565b6101996020526000908152604090205481565b3480156105ab57600080fd5b506102c861019b5481565b3480156105c257600080fd5b5061020f6105d1366004612b3d565b61120c565b3480156105e257600080fd5b506102c8611217565b3480156105f757600080fd5b5061062e610606366004612b3d565b6101976020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016101f1565b34801561065a57600080fd5b50610274610669366004612ddf565b611228565b34801561067a57600080fd5b506101935461023c906001600160a01b031681565b34801561069b57600080fd5b506101e56106aa366004612e0b565b6112ff565b3480156106bb57600080fd5b506101945461023c906001600160a01b031681565b3480156106dc57600080fd5b506102746106eb366004612bd8565b61132d565b3480156106fc57600080fd5b5061027461070b366004612e39565b6113a3565b34801561071c57600080fd5b5061027461072b366004612d2d565b61156c565b600061073b8261180b565b92915050565b60606065805461075090612e95565b80601f016020809104026020016040519081016040528092919081815260200182805461077c90612e95565b80156107c95780601f1061079e576101008083540402835291602001916107c9565b820191906000526020600020905b8154815290600101906020018083116107ac57829003601f168201915b5050505050905090565b60006107de82611830565b506000908152606960205260409020546001600160a01b031690565b600061080582610fa1565b9050806001600160a01b0316836001600160a01b0316036108775760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610893575061089381336112ff565b6109055760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161086e565b61090f8383611855565b505050565b60006109208233611152565b9050600081116109635760405162461bcd60e51b815260206004820152600e60248201526d139bc81c995dd85c991cc81e595d60921b604482015260640161086e565b336000908152610198602090815260408083208584528252808320610199909252822054600182015561019b8054919284926109a0908490612ee5565b90915550506101935460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906109d89033908690600401612ef8565b6020604051808303816000875af11580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612f11565b5060405182815233907fba8de60c3403ec381d1d484652ea1980e3c3e56359195c92525bff4ce47ad98e9060200160405180910390a2505050565b610a618383836118c3565b600081815261019660209081526040808320546001600160a01b0387168452610198835281842081855290925282209091610a9c8387611152565b90508015610b495760008381526101996020526040812054600184015561019b8054839290610acc908490612ee5565b90915550506101935460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610b049033908590600401612ef8565b6020604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190612f11565b505b8154610b865760405162461bcd60e51b815260206004820152600c60248201526b1b9bc818d85c99081b19599d60a21b604482015260640161086e565b6001826000016000828254610b9b9190612ee5565b90915550506001600160a01b038516600090815261019860209081526040808320868452909152812080549091600191839190610bd9908490612f2e565b909155505060009384526101996020526040909320546001909301929092555050505050565b6000610c0a83610fd5565b8210610c6c5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161086e565b506001600160a01b0391909116600090815260c960209081526040808320938352929052205490565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610cdd5760405162461bcd60e51b815260040161086e90612f41565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d0f6118f4565b6001600160a01b031614610d355760405162461bcd60e51b815260040161086e90612f7b565b610d3e81611910565b60408051600080825260208201909252610d5a91839190611918565b50565b610d65611a83565b6000610d716101915490565b9050610d8261019180546001019055565b610d8c8282611ae2565b5050565b61090f838383604051806020016040528060008152506111d4565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610df35760405162461bcd60e51b815260040161086e90612f41565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e256118f4565b6001600160a01b031614610e4b5760405162461bcd60e51b815260040161086e90612f7b565b610e5482611910565b610d8c82826001611918565b6000610e6b60cb5490565b8210610ece5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161086e565b60cb8281548110610ee157610ee1612fb5565b90600052602060002001549050919050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161086e565b5060008051602061353683398151915290565b600080610fad83611afc565b90506001600160a01b03811661073b5760405162461bcd60e51b815260040161086e90612fcb565b60006001600160a01b03821661103f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161086e565b506001600160a01b031660009081526068602052604090205490565b611063611a83565b61106d6000611b17565b565b6097546001600160a01b031690565b60606066805461075090612e95565b610d8c338383611b69565b610195546001600160a01b031633146110f35760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792041646d696e2063616e20706572666f726d20616374696f6e000000604482015260640161086e565b600082815261019760205260409020600201546111109082612ffd565b600083815261019960205260408120805490919061112f908490612f2e565b925050819055508061019b60008282546111499190612f2e565b90915550505050565b6001600160a01b0381166000908152610198602090815260408083208584528252808320815180830183528154815260019091015481840190815286855261019990935290832054915190919081116111b05760009250505061073b565b815160208301516111c19083612ee5565b6111cb919061301f565b95945050505050565b6111de3383611c33565b6111fa5760405162461bcd60e51b815260040161086e90613036565b61120684848484611c92565b50505050565b606061073b82611cc5565b60006112236101925490565b905090565b611230611a83565b600061123c6101925490565b6000818152610197602090815260409182902061019454835163313ce56760e01b8152935194955090936001600160a01b039091169263313ce5679260048083019391928290030181865afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190613083565b6112c890600a61318a565b6112d2908661301f565b81556001810184905560006002820155600381018390556112f861019280546001019055565b5050505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b611335611a83565b6001600160a01b03811661139a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161086e565b610d5a81611b17565b600054610100900460ff16158080156113c35750600054600160ff909116105b806113e457506113d230611dc0565b1580156113e4575060005460ff166001145b6114475760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161086e565b6000805460ff19166001179055801561146a576000805461ff0019166101001790555b6114b26040518060400160405280600a8152602001694e465447656e6573697360b01b815250604051806040016040528060048152602001634e46544760e01b815250611dcf565b6114ba611e00565b6114c2611e00565b6114ca611e27565b6114d2611e00565b61019380546001600160a01b038088166001600160a01b031992831617909255610195805486841690831617905561019a805485841690831617905561019480549287169290911691909117905580156112f8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6000816001600160401b0381111561158657611586612bf5565b6040519080825280602002602001820160405280156115af578160200160208202803683370190505b506000848152610197602052604090206101945461019a54825493945091926001600160a01b03918216926323b872dd9233929116906115f090889061301f565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611644573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116689190612f11565b508281600201546116799190612f2e565b8160030154116116c05760405162461bcd60e51b815260206004820152601260248201527113585e081b5a5b9d1959081c995858da195960721b604482015260640161086e565b60005b838110156117475760006116d76101915490565b9050808483815181106116ec576116ec612fb5565b60200260200101818152505061170761019180546001019055565b6117113382611ae2565b6117238161171e88611e56565b611ee8565b6000908152610196602052604090208590558061173f81613199565b9150506116c3565b5060006117548533611152565b905080156117655761176585610914565b336000908152610198602090815260408083208884529091528120805490918691839190611794908490612f2e565b92505081905550848360020160008282546117af9190612f2e565b909155505060008681526101996020526040908190205460018301555133907fb2f20abb34405506b7fc439c3ea3526bf9c45147381635896d278204620f542a906117fb9087906131b2565b60405180910390a2505050505050565b60006001600160e01b03198216632483248360e11b148061073b575061073b82611fa4565b61183981611fc9565b610d5a5760405162461bcd60e51b815260040161086e90612fcb565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061188a82610fa1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6118cd3382611c33565b6118e95760405162461bcd60e51b815260040161086e90613036565b61090f838383611fe6565b600080516020613536833981519152546001600160a01b031690565b610d5a611a83565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561194b5761090f83612145565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119a5575060408051601f3d908101601f191682019092526119a2918101906131f6565b60015b611a085760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161086e565b6000805160206135368339815191528114611a775760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161086e565b5061090f8383836121df565b33611a8c61106f565b6001600160a01b03161461106d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161086e565b610d8c828260405180602001604052806000815250612204565b6000908152606760205260409020546001600160a01b031690565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611bc65760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161086e565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600080611c3f83610fa1565b9050806001600160a01b0316846001600160a01b03161480611c665750611c6681856112ff565b80611c8a5750836001600160a01b0316611c7f846107d3565b6001600160a01b0316145b949350505050565b611c9d848484611fe6565b611ca984848484612237565b6112065760405162461bcd60e51b815260040161086e9061320f565b6060611cd082611830565b600082815260fb602052604081208054611ce990612e95565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1590612e95565b8015611d625780601f10611d3757610100808354040283529160200191611d62565b820191906000526020600020905b815481529060010190602001808311611d4557829003601f168201915b505050505090506000611d7361233f565b90508051600003611d85575092915050565b815115611db7578082604051602001611d9f929190613261565b60405160208183030381529060405292505050919050565b611c8a8461235f565b6001600160a01b03163b151590565b600054610100900460ff16611df65760405162461bcd60e51b815260040161086e90613290565b610d8c82826123c6565b600054610100900460ff1661106d5760405162461bcd60e51b815260040161086e90613290565b600054610100900460ff16611e4e5760405162461bcd60e51b815260040161086e90613290565b61106d612406565b60606000611e6383612436565b60010190506000816001600160401b03811115611e8257611e82612bf5565b6040519080825280601f01601f191660200182016040528015611eac576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611eb657509392505050565b611ef182611fc9565b611f545760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161086e565b600082815260fb60205260409020611f6c8282613329565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60006001600160e01b0319821663780e9d6360e01b148061073b575061073b8261250c565b600080611fd583611afc565b6001600160a01b0316141592915050565b826001600160a01b0316611ff982610fa1565b6001600160a01b03161461201f5760405162461bcd60e51b815260040161086e906133e8565b6001600160a01b0382166120815760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161086e565b61208e838383600161255c565b826001600160a01b03166120a182610fa1565b6001600160a01b0316146120c75760405162461bcd60e51b815260040161086e906133e8565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652606885528386208054600019019055908716808652838620805460010190558686526067909452828520805490921684179091559051849360008051602061357d83398151915291a4505050565b61214e81611dc0565b6121b05760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161086e565b60008051602061353683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6121e883612568565b6000825111806121f55750805b1561090f5761120683836125a8565b61220e83836125cd565b61221b6000848484612237565b61090f5760405162461bcd60e51b815260040161086e9061320f565b600061224b846001600160a01b0316611dc0565b1561233457604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061228290339089908890889060040161342d565b6020604051808303816000875af19250505080156122bd575060408051601f3d908101601f191682019092526122ba91810190613460565b60015b61231a573d8080156122eb576040519150601f19603f3d011682016040523d82523d6000602084013e6122f0565b606091505b5080516000036123125760405162461bcd60e51b815260040161086e9061320f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c8a565b506001949350505050565b60606040518060600160405280603081526020016134e660309139905090565b606061236a82611830565b600061237461233f565b9050600081511161239457604051806020016040528060008152506123bf565b8061239e84611e56565b6040516020016123af929190613261565b6040516020818303038152906040525b9392505050565b600054610100900460ff166123ed5760405162461bcd60e51b815260040161086e90613290565b60656123f98382613329565b50606661090f8282613329565b600054610100900460ff1661242d5760405162461bcd60e51b815260040161086e90613290565b61106d33611b17565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124755772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b831061249f576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106124bd57662386f26fc10000830492506010015b6305f5e10083106124d5576305f5e100830492506008015b61271083106124e957612710830492506004015b606483106124fb576064830492506002015b600a831061073b5760010192915050565b60006001600160e01b031982166380ac58cd60e01b148061253d57506001600160e01b03198216635b5e139f60e01b145b8061073b57506301ffc9a760e01b6001600160e01b031983161461073b565b611206848484846126d6565b61257181612145565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606123bf838360405180606001604052806027815260200161355660279139612803565b6001600160a01b0382166126235760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161086e565b61262c81611fc9565b156126495760405162461bcd60e51b815260040161086e9061347d565b61265760008383600161255c565b61266081611fc9565b1561267d5760405162461bcd60e51b815260040161086e9061347d565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b03191684179055518392919060008051602061357d833981519152908290a45050565b60018111156127455760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b606482015260840161086e565b816001600160a01b0385166127a15761279c8160cb8054600083815260cc60205260408120829055600182018355919091527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb0155565b6127c4565b836001600160a01b0316856001600160a01b0316146127c4576127c4858261287b565b6001600160a01b0384166127e0576127db81612918565b6112f8565b846001600160a01b0316846001600160a01b0316146112f8576112f884826129c7565b6060600080856001600160a01b03168560405161282091906134b3565b600060405180830381855af49150503d806000811461285b576040519150601f19603f3d011682016040523d82523d6000602084013e612860565b606091505b509150915061287186838387612a0b565b9695505050505050565b6000600161288884610fd5565b6128929190612ee5565b600083815260ca60205260409020549091508082146128e5576001600160a01b038416600090815260c960209081526040808320858452825280832054848452818420819055835260ca90915290208190555b50600091825260ca602090815260408084208490556001600160a01b03909416835260c981528383209183525290812055565b60cb5460009061292a90600190612ee5565b600083815260cc602052604081205460cb805493945090928490811061295257612952612fb5565b906000526020600020015490508060cb838154811061297357612973612fb5565b600091825260208083209091019290925582815260cc909152604080822084905585825281205560cb8054806129ab576129ab6134cf565b6001900381819060005260206000200160009055905550505050565b60006129d283610fd5565b6001600160a01b03909316600090815260c960209081526040808320868452825280832085905593825260ca9052919091209190915550565b60608315612a78578251600003612a7157612a2585611dc0565b612a715760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161086e565b5081611c8a565b611c8a8383815115612a8d5781518083602001fd5b8060405162461bcd60e51b815260040161086e9190612b2a565b6001600160e01b031981168114610d5a57600080fd5b600060208284031215612acf57600080fd5b81356123bf81612aa7565b60005b83811015612af5578181015183820152602001612add565b50506000910152565b60008151808452612b16816020860160208601612ada565b601f01601f19169290920160200192915050565b6020815260006123bf6020830184612afe565b600060208284031215612b4f57600080fd5b5035919050565b6001600160a01b0381168114610d5a57600080fd5b60008060408385031215612b7e57600080fd5b8235612b8981612b56565b946020939093013593505050565b600080600060608486031215612bac57600080fd5b8335612bb781612b56565b92506020840135612bc781612b56565b929592945050506040919091013590565b600060208284031215612bea57600080fd5b81356123bf81612b56565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612c1c57600080fd5b81356001600160401b0380821115612c3657612c36612bf5565b604051601f8301601f19908116603f01168101908282118183101715612c5e57612c5e612bf5565b81604052838152866020858801011115612c7757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215612caa57600080fd5b8235612cb581612b56565b915060208301356001600160401b03811115612cd057600080fd5b612cdc85828601612c0b565b9150509250929050565b8015158114610d5a57600080fd5b60008060408385031215612d0757600080fd5b8235612d1281612b56565b91506020830135612d2281612ce6565b809150509250929050565b60008060408385031215612d4057600080fd5b50508035926020909101359150565b60008060408385031215612d6257600080fd5b823591506020830135612d2281612b56565b60008060008060808587031215612d8a57600080fd5b8435612d9581612b56565b93506020850135612da581612b56565b92506040850135915060608501356001600160401b03811115612dc757600080fd5b612dd387828801612c0b565b91505092959194509250565b600080600060608486031215612df457600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612e1e57600080fd5b8235612e2981612b56565b91506020830135612d2281612b56565b60008060008060808587031215612e4f57600080fd5b8435612e5a81612b56565b93506020850135612e6a81612b56565b92506040850135612e7a81612b56565b91506060850135612e8a81612b56565b939692955090935050565b600181811c90821680612ea957607f821691505b602082108103612ec957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073b5761073b612ecf565b6001600160a01b03929092168252602082015260400190565b600060208284031215612f2357600080fd5b81516123bf81612ce6565b8082018082111561073b5761073b612ecf565b6020808252602c9082015260008051602061351683398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061351683398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60008261301a57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761073b5761073b612ecf565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60006020828403121561309557600080fd5b815160ff811681146123bf57600080fd5b600181815b808511156130e15781600019048211156130c7576130c7612ecf565b808516156130d457918102915b93841c93908002906130ab565b509250929050565b6000826130f85750600161073b565b816131055750600061073b565b816001811461311b576002811461312557613141565b600191505061073b565b60ff84111561313657613136612ecf565b50506001821b61073b565b5060208310610133831016604e8410600b8410161715613164575081810a61073b565b61316e83836130a6565b806000190482111561318257613182612ecf565b029392505050565b60006123bf60ff8416836130e9565b6000600182016131ab576131ab612ecf565b5060010190565b6020808252825182820181905260009190848201906040850190845b818110156131ea578351835292840192918401916001016131ce565b50909695505050505050565b60006020828403121561320857600080fd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351613273818460208801612ada565b835190830190613287818360208801612ada565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561090f57600081815260208120601f850160051c810160208610156133025750805b601f850160051c820191505b818110156133215782815560010161330e565b505050505050565b81516001600160401b0381111561334257613342612bf5565b613356816133508454612e95565b846132db565b602080601f83116001811461338b57600084156133735750858301515b600019600386901b1c1916600185901b178555613321565b600085815260208120601f198616915b828110156133ba5788860151825594840194600190910190840161339b565b50858210156133d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061287190830184612afe565b60006020828403121561347257600080fd5b81516123bf81612aa7565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b600082516134c5818460208701612ada565b9190910192915050565b634e487b7160e01b600052603160045260246000fdfe68747470733a2f2f676c6f62616c6e6574776f726b2e66696e616e63652f6170692f696d6167652f67656e657369732f46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122011101e91c5113fe06d22d90c480b606a2c40cb0c4fefb43c4abb9d953c00289864736f6c63430008110033",
  "deployedBytecode": "0x6080604052600436106101c05760003560e01c806301ffc9a7146101c557806306fdde03146101fa578063081812fc1461021c578063095ea7b3146102545780630962ef791461027657806316fed3e21461029657806318160ddd146102b75780631d06c3b2146102d657806323b872dd146103075780632f745c59146103275780633659cfe61461034757806340d097c31461036757806342842e0e146103875780634f1ef286146103a75780634f6ccce7146103ba57806352d1902d146103da5780636352211e146103ef57806370a082311461040f578063715018a61461042f5780638da5cb5b1461044457806395d89b41146104595780639f7761a91461046e578063a22cb4651461049c578063b6593c8e146104bc578063b696741f146104dc578063b71bc8bc14610531578063b88d4fde14610551578063bb71246014610571578063c78e5b371461059f578063c87b56dd146105b6578063dc3676b7146105d6578063e4305a29146105eb578063e7cb1f3e1461064e578063e961e1ff1461066e578063e985e9c51461068f578063ed65af74146106af578063f2fde38b146106d0578063f8c8765e146106f0578063fadca71214610710575b600080fd5b3480156101d157600080fd5b506101e56101e0366004612abd565b610730565b60405190151581526020015b60405180910390f35b34801561020657600080fd5b5061020f610741565b6040516101f19190612b2a565b34801561022857600080fd5b5061023c610237366004612b3d565b6107d3565b6040516001600160a01b0390911681526020016101f1565b34801561026057600080fd5b5061027461026f366004612b6b565b6107fa565b005b34801561028257600080fd5b50610274610291366004612b3d565b610914565b3480156102a257600080fd5b5061019a5461023c906001600160a01b031681565b3480156102c357600080fd5b5060cb545b6040519081526020016101f1565b3480156102e257600080fd5b506102c86102f1366004612b3d565b6000908152610197602052604090206001015490565b34801561031357600080fd5b50610274610322366004612b97565b610a56565b34801561033357600080fd5b506102c8610342366004612b6b565b610bff565b34801561035357600080fd5b50610274610362366004612bd8565b610c95565b34801561037357600080fd5b50610274610382366004612bd8565b610d5d565b34801561039357600080fd5b506102746103a2366004612b97565b610d90565b6102746103b5366004612c97565b610dab565b3480156103c657600080fd5b506102c86103d5366004612b3d565b610e60565b3480156103e657600080fd5b506102c8610ef3565b3480156103fb57600080fd5b5061023c61040a366004612b3d565b610fa1565b34801561041b57600080fd5b506102c861042a366004612bd8565b610fd5565b34801561043b57600080fd5b5061027461105b565b34801561045057600080fd5b5061023c61106f565b34801561046557600080fd5b5061020f61107e565b34801561047a57600080fd5b506102c8610489366004612b3d565b6101966020526000908152604090205481565b3480156104a857600080fd5b506102746104b7366004612cf4565b61108d565b3480156104c857600080fd5b506102746104d7366004612d2d565b611098565b3480156104e857600080fd5b5061051c6104f7366004612b6b565b6101986020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101f1565b34801561053d57600080fd5b506102c861054c366004612d4f565b611152565b34801561055d57600080fd5b5061027461056c366004612d74565b6111d4565b34801561057d57600080fd5b506102c861058c366004612b3d565b6101996020526000908152604090205481565b3480156105ab57600080fd5b506102c861019b5481565b3480156105c257600080fd5b5061020f6105d1366004612b3d565b61120c565b3480156105e257600080fd5b506102c8611217565b3480156105f757600080fd5b5061062e610606366004612b3d565b6101976020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016101f1565b34801561065a57600080fd5b50610274610669366004612ddf565b611228565b34801561067a57600080fd5b506101935461023c906001600160a01b031681565b34801561069b57600080fd5b506101e56106aa366004612e0b565b6112ff565b3480156106bb57600080fd5b506101945461023c906001600160a01b031681565b3480156106dc57600080fd5b506102746106eb366004612bd8565b61132d565b3480156106fc57600080fd5b5061027461070b366004612e39565b6113a3565b34801561071c57600080fd5b5061027461072b366004612d2d565b61156c565b600061073b8261180b565b92915050565b60606065805461075090612e95565b80601f016020809104026020016040519081016040528092919081815260200182805461077c90612e95565b80156107c95780601f1061079e576101008083540402835291602001916107c9565b820191906000526020600020905b8154815290600101906020018083116107ac57829003601f168201915b5050505050905090565b60006107de82611830565b506000908152606960205260409020546001600160a01b031690565b600061080582610fa1565b9050806001600160a01b0316836001600160a01b0316036108775760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610893575061089381336112ff565b6109055760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161086e565b61090f8383611855565b505050565b60006109208233611152565b9050600081116109635760405162461bcd60e51b815260206004820152600e60248201526d139bc81c995dd85c991cc81e595d60921b604482015260640161086e565b336000908152610198602090815260408083208584528252808320610199909252822054600182015561019b8054919284926109a0908490612ee5565b90915550506101935460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906109d89033908690600401612ef8565b6020604051808303816000875af11580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612f11565b5060405182815233907fba8de60c3403ec381d1d484652ea1980e3c3e56359195c92525bff4ce47ad98e9060200160405180910390a2505050565b610a618383836118c3565b600081815261019660209081526040808320546001600160a01b0387168452610198835281842081855290925282209091610a9c8387611152565b90508015610b495760008381526101996020526040812054600184015561019b8054839290610acc908490612ee5565b90915550506101935460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610b049033908590600401612ef8565b6020604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190612f11565b505b8154610b865760405162461bcd60e51b815260206004820152600c60248201526b1b9bc818d85c99081b19599d60a21b604482015260640161086e565b6001826000016000828254610b9b9190612ee5565b90915550506001600160a01b038516600090815261019860209081526040808320868452909152812080549091600191839190610bd9908490612f2e565b909155505060009384526101996020526040909320546001909301929092555050505050565b6000610c0a83610fd5565b8210610c6c5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161086e565b506001600160a01b0391909116600090815260c960209081526040808320938352929052205490565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610cdd5760405162461bcd60e51b815260040161086e90612f41565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d0f6118f4565b6001600160a01b031614610d355760405162461bcd60e51b815260040161086e90612f7b565b610d3e81611910565b60408051600080825260208201909252610d5a91839190611918565b50565b610d65611a83565b6000610d716101915490565b9050610d8261019180546001019055565b610d8c8282611ae2565b5050565b61090f838383604051806020016040528060008152506111d4565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610df35760405162461bcd60e51b815260040161086e90612f41565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e256118f4565b6001600160a01b031614610e4b5760405162461bcd60e51b815260040161086e90612f7b565b610e5482611910565b610d8c82826001611918565b6000610e6b60cb5490565b8210610ece5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161086e565b60cb8281548110610ee157610ee1612fb5565b90600052602060002001549050919050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161086e565b5060008051602061353683398151915290565b600080610fad83611afc565b90506001600160a01b03811661073b5760405162461bcd60e51b815260040161086e90612fcb565b60006001600160a01b03821661103f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161086e565b506001600160a01b031660009081526068602052604090205490565b611063611a83565b61106d6000611b17565b565b6097546001600160a01b031690565b60606066805461075090612e95565b610d8c338383611b69565b610195546001600160a01b031633146110f35760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792041646d696e2063616e20706572666f726d20616374696f6e000000604482015260640161086e565b600082815261019760205260409020600201546111109082612ffd565b600083815261019960205260408120805490919061112f908490612f2e565b925050819055508061019b60008282546111499190612f2e565b90915550505050565b6001600160a01b0381166000908152610198602090815260408083208584528252808320815180830183528154815260019091015481840190815286855261019990935290832054915190919081116111b05760009250505061073b565b815160208301516111c19083612ee5565b6111cb919061301f565b95945050505050565b6111de3383611c33565b6111fa5760405162461bcd60e51b815260040161086e90613036565b61120684848484611c92565b50505050565b606061073b82611cc5565b60006112236101925490565b905090565b611230611a83565b600061123c6101925490565b6000818152610197602090815260409182902061019454835163313ce56760e01b8152935194955090936001600160a01b039091169263313ce5679260048083019391928290030181865afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190613083565b6112c890600a61318a565b6112d2908661301f565b81556001810184905560006002820155600381018390556112f861019280546001019055565b5050505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b611335611a83565b6001600160a01b03811661139a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161086e565b610d5a81611b17565b600054610100900460ff16158080156113c35750600054600160ff909116105b806113e457506113d230611dc0565b1580156113e4575060005460ff166001145b6114475760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161086e565b6000805460ff19166001179055801561146a576000805461ff0019166101001790555b6114b26040518060400160405280600a8152602001694e465447656e6573697360b01b815250604051806040016040528060048152602001634e46544760e01b815250611dcf565b6114ba611e00565b6114c2611e00565b6114ca611e27565b6114d2611e00565b61019380546001600160a01b038088166001600160a01b031992831617909255610195805486841690831617905561019a805485841690831617905561019480549287169290911691909117905580156112f8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6000816001600160401b0381111561158657611586612bf5565b6040519080825280602002602001820160405280156115af578160200160208202803683370190505b506000848152610197602052604090206101945461019a54825493945091926001600160a01b03918216926323b872dd9233929116906115f090889061301f565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611644573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116689190612f11565b508281600201546116799190612f2e565b8160030154116116c05760405162461bcd60e51b815260206004820152601260248201527113585e081b5a5b9d1959081c995858da195960721b604482015260640161086e565b60005b838110156117475760006116d76101915490565b9050808483815181106116ec576116ec612fb5565b60200260200101818152505061170761019180546001019055565b6117113382611ae2565b6117238161171e88611e56565b611ee8565b6000908152610196602052604090208590558061173f81613199565b9150506116c3565b5060006117548533611152565b905080156117655761176585610914565b336000908152610198602090815260408083208884529091528120805490918691839190611794908490612f2e565b92505081905550848360020160008282546117af9190612f2e565b909155505060008681526101996020526040908190205460018301555133907fb2f20abb34405506b7fc439c3ea3526bf9c45147381635896d278204620f542a906117fb9087906131b2565b60405180910390a2505050505050565b60006001600160e01b03198216632483248360e11b148061073b575061073b82611fa4565b61183981611fc9565b610d5a5760405162461bcd60e51b815260040161086e90612fcb565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061188a82610fa1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6118cd3382611c33565b6118e95760405162461bcd60e51b815260040161086e90613036565b61090f838383611fe6565b600080516020613536833981519152546001600160a01b031690565b610d5a611a83565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561194b5761090f83612145565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119a5575060408051601f3d908101601f191682019092526119a2918101906131f6565b60015b611a085760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161086e565b6000805160206135368339815191528114611a775760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161086e565b5061090f8383836121df565b33611a8c61106f565b6001600160a01b03161461106d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161086e565b610d8c828260405180602001604052806000815250612204565b6000908152606760205260409020546001600160a01b031690565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611bc65760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161086e565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600080611c3f83610fa1565b9050806001600160a01b0316846001600160a01b03161480611c665750611c6681856112ff565b80611c8a5750836001600160a01b0316611c7f846107d3565b6001600160a01b0316145b949350505050565b611c9d848484611fe6565b611ca984848484612237565b6112065760405162461bcd60e51b815260040161086e9061320f565b6060611cd082611830565b600082815260fb602052604081208054611ce990612e95565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1590612e95565b8015611d625780601f10611d3757610100808354040283529160200191611d62565b820191906000526020600020905b815481529060010190602001808311611d4557829003601f168201915b505050505090506000611d7361233f565b90508051600003611d85575092915050565b815115611db7578082604051602001611d9f929190613261565b60405160208183030381529060405292505050919050565b611c8a8461235f565b6001600160a01b03163b151590565b600054610100900460ff16611df65760405162461bcd60e51b815260040161086e90613290565b610d8c82826123c6565b600054610100900460ff1661106d5760405162461bcd60e51b815260040161086e90613290565b600054610100900460ff16611e4e5760405162461bcd60e51b815260040161086e90613290565b61106d612406565b60606000611e6383612436565b60010190506000816001600160401b03811115611e8257611e82612bf5565b6040519080825280601f01601f191660200182016040528015611eac576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611eb657509392505050565b611ef182611fc9565b611f545760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161086e565b600082815260fb60205260409020611f6c8282613329565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60006001600160e01b0319821663780e9d6360e01b148061073b575061073b8261250c565b600080611fd583611afc565b6001600160a01b0316141592915050565b826001600160a01b0316611ff982610fa1565b6001600160a01b03161461201f5760405162461bcd60e51b815260040161086e906133e8565b6001600160a01b0382166120815760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161086e565b61208e838383600161255c565b826001600160a01b03166120a182610fa1565b6001600160a01b0316146120c75760405162461bcd60e51b815260040161086e906133e8565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652606885528386208054600019019055908716808652838620805460010190558686526067909452828520805490921684179091559051849360008051602061357d83398151915291a4505050565b61214e81611dc0565b6121b05760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161086e565b60008051602061353683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6121e883612568565b6000825111806121f55750805b1561090f5761120683836125a8565b61220e83836125cd565b61221b6000848484612237565b61090f5760405162461bcd60e51b815260040161086e9061320f565b600061224b846001600160a01b0316611dc0565b1561233457604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061228290339089908890889060040161342d565b6020604051808303816000875af19250505080156122bd575060408051601f3d908101601f191682019092526122ba91810190613460565b60015b61231a573d8080156122eb576040519150601f19603f3d011682016040523d82523d6000602084013e6122f0565b606091505b5080516000036123125760405162461bcd60e51b815260040161086e9061320f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c8a565b506001949350505050565b60606040518060600160405280603081526020016134e660309139905090565b606061236a82611830565b600061237461233f565b9050600081511161239457604051806020016040528060008152506123bf565b8061239e84611e56565b6040516020016123af929190613261565b6040516020818303038152906040525b9392505050565b600054610100900460ff166123ed5760405162461bcd60e51b815260040161086e90613290565b60656123f98382613329565b50606661090f8282613329565b600054610100900460ff1661242d5760405162461bcd60e51b815260040161086e90613290565b61106d33611b17565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124755772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b831061249f576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106124bd57662386f26fc10000830492506010015b6305f5e10083106124d5576305f5e100830492506008015b61271083106124e957612710830492506004015b606483106124fb576064830492506002015b600a831061073b5760010192915050565b60006001600160e01b031982166380ac58cd60e01b148061253d57506001600160e01b03198216635b5e139f60e01b145b8061073b57506301ffc9a760e01b6001600160e01b031983161461073b565b611206848484846126d6565b61257181612145565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606123bf838360405180606001604052806027815260200161355660279139612803565b6001600160a01b0382166126235760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161086e565b61262c81611fc9565b156126495760405162461bcd60e51b815260040161086e9061347d565b61265760008383600161255c565b61266081611fc9565b1561267d5760405162461bcd60e51b815260040161086e9061347d565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b03191684179055518392919060008051602061357d833981519152908290a45050565b60018111156127455760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b606482015260840161086e565b816001600160a01b0385166127a15761279c8160cb8054600083815260cc60205260408120829055600182018355919091527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb0155565b6127c4565b836001600160a01b0316856001600160a01b0316146127c4576127c4858261287b565b6001600160a01b0384166127e0576127db81612918565b6112f8565b846001600160a01b0316846001600160a01b0316146112f8576112f884826129c7565b6060600080856001600160a01b03168560405161282091906134b3565b600060405180830381855af49150503d806000811461285b576040519150601f19603f3d011682016040523d82523d6000602084013e612860565b606091505b509150915061287186838387612a0b565b9695505050505050565b6000600161288884610fd5565b6128929190612ee5565b600083815260ca60205260409020549091508082146128e5576001600160a01b038416600090815260c960209081526040808320858452825280832054848452818420819055835260ca90915290208190555b50600091825260ca602090815260408084208490556001600160a01b03909416835260c981528383209183525290812055565b60cb5460009061292a90600190612ee5565b600083815260cc602052604081205460cb805493945090928490811061295257612952612fb5565b906000526020600020015490508060cb838154811061297357612973612fb5565b600091825260208083209091019290925582815260cc909152604080822084905585825281205560cb8054806129ab576129ab6134cf565b6001900381819060005260206000200160009055905550505050565b60006129d283610fd5565b6001600160a01b03909316600090815260c960209081526040808320868452825280832085905593825260ca9052919091209190915550565b60608315612a78578251600003612a7157612a2585611dc0565b612a715760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161086e565b5081611c8a565b611c8a8383815115612a8d5781518083602001fd5b8060405162461bcd60e51b815260040161086e9190612b2a565b6001600160e01b031981168114610d5a57600080fd5b600060208284031215612acf57600080fd5b81356123bf81612aa7565b60005b83811015612af5578181015183820152602001612add565b50506000910152565b60008151808452612b16816020860160208601612ada565b601f01601f19169290920160200192915050565b6020815260006123bf6020830184612afe565b600060208284031215612b4f57600080fd5b5035919050565b6001600160a01b0381168114610d5a57600080fd5b60008060408385031215612b7e57600080fd5b8235612b8981612b56565b946020939093013593505050565b600080600060608486031215612bac57600080fd5b8335612bb781612b56565b92506020840135612bc781612b56565b929592945050506040919091013590565b600060208284031215612bea57600080fd5b81356123bf81612b56565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612c1c57600080fd5b81356001600160401b0380821115612c3657612c36612bf5565b604051601f8301601f19908116603f01168101908282118183101715612c5e57612c5e612bf5565b81604052838152866020858801011115612c7757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215612caa57600080fd5b8235612cb581612b56565b915060208301356001600160401b03811115612cd057600080fd5b612cdc85828601612c0b565b9150509250929050565b8015158114610d5a57600080fd5b60008060408385031215612d0757600080fd5b8235612d1281612b56565b91506020830135612d2281612ce6565b809150509250929050565b60008060408385031215612d4057600080fd5b50508035926020909101359150565b60008060408385031215612d6257600080fd5b823591506020830135612d2281612b56565b60008060008060808587031215612d8a57600080fd5b8435612d9581612b56565b93506020850135612da581612b56565b92506040850135915060608501356001600160401b03811115612dc757600080fd5b612dd387828801612c0b565b91505092959194509250565b600080600060608486031215612df457600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612e1e57600080fd5b8235612e2981612b56565b91506020830135612d2281612b56565b60008060008060808587031215612e4f57600080fd5b8435612e5a81612b56565b93506020850135612e6a81612b56565b92506040850135612e7a81612b56565b91506060850135612e8a81612b56565b939692955090935050565b600181811c90821680612ea957607f821691505b602082108103612ec957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073b5761073b612ecf565b6001600160a01b03929092168252602082015260400190565b600060208284031215612f2357600080fd5b81516123bf81612ce6565b8082018082111561073b5761073b612ecf565b6020808252602c9082015260008051602061351683398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061351683398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60008261301a57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761073b5761073b612ecf565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60006020828403121561309557600080fd5b815160ff811681146123bf57600080fd5b600181815b808511156130e15781600019048211156130c7576130c7612ecf565b808516156130d457918102915b93841c93908002906130ab565b509250929050565b6000826130f85750600161073b565b816131055750600061073b565b816001811461311b576002811461312557613141565b600191505061073b565b60ff84111561313657613136612ecf565b50506001821b61073b565b5060208310610133831016604e8410600b8410161715613164575081810a61073b565b61316e83836130a6565b806000190482111561318257613182612ecf565b029392505050565b60006123bf60ff8416836130e9565b6000600182016131ab576131ab612ecf565b5060010190565b6020808252825182820181905260009190848201906040850190845b818110156131ea578351835292840192918401916001016131ce565b50909695505050505050565b60006020828403121561320857600080fd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351613273818460208801612ada565b835190830190613287818360208801612ada565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561090f57600081815260208120601f850160051c810160208610156133025750805b601f850160051c820191505b818110156133215782815560010161330e565b505050505050565b81516001600160401b0381111561334257613342612bf5565b613356816133508454612e95565b846132db565b602080601f83116001811461338b57600084156133735750858301515b600019600386901b1c1916600185901b178555613321565b600085815260208120601f198616915b828110156133ba5788860151825594840194600190910190840161339b565b50858210156133d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061287190830184612afe565b60006020828403121561347257600080fd5b81516123bf81612aa7565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b600082516134c5818460208701612ada565b9190910192915050565b634e487b7160e01b600052603160045260246000fdfe68747470733a2f2f676c6f62616c6e6574776f726b2e66696e616e63652f6170692f696d6167652f67656e657369732f46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122011101e91c5113fe06d22d90c480b606a2c40cb0c4fefb43c4abb9d953c00289864736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
