diff --git a/test/integration/Accounts.test.ts b/test/integration/Accounts.test.ts index 4773fac..c7761a2 100644 --- a/test/integration/Accounts.test.ts +++ b/test/integration/Accounts.test.ts @@ -6,7 +6,7 @@ import { import execCommand from '../helpers/ExecCommand' describe('Assets e2e Testing', () => { - const abiPath = 'test/resources/nfts/TestNFT721.json' + const abiPath = 'test/resources/nfts/NFT721SubscriptionUpgradeable.json' test('List all the accounts ', async () => { const listCommand = `${baseCommands.accounts.list} ` diff --git a/test/resources/nfts/TestNFT721.json b/test/resources/nfts/TestNFT721.json deleted file mode 100644 index 55be324..0000000 --- a/test/resources/nfts/TestNFT721.json +++ /dev/null @@ -1,1098 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "NFT721Upgradeable", - "sourceName": "contracts/token/erc721/NFT721Upgradeable.sol", - "abi": [ - { - "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": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_fromAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_ercType", - "type": "uint256" - } - ], - "name": "NFTCloned", - "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": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "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" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "NVM_OPERATOR_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_addr", - "type": "address" - } - ], - "name": "addressToBytes32", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "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": "tokenId", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_b32", - "type": "bytes32" - } - ], - "name": "bytes32ToAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_amounts", - "type": "uint256[]" - } - ], - "name": "calculateTotalAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "contractURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "string", - "name": "uri", - "type": "string" - }, - { - "internalType": "uint256", - "name": "cap", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "_operators", - "type": "address[]" - } - ], - "name": "createClone", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "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": "getCurrentBlockNumber", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getHowManyMinted", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getNFTAttributes", - "outputs": [ - { - "internalType": "bool", - "name": "nftInitialized", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "nftSupply", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "mintCap", - "type": "uint256" - }, - { - "internalType": "string", - "name": "nftURI", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getNvmConfigAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getTrustedForwarder", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantOperatorRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "didRegistryAddress", - "type": "address" - }, - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "string", - "name": "uri", - "type": "string" - }, - { - "internalType": "uint256", - "name": "cap", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "name": "isContract", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isOperator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "forwarder", - "type": "address" - } - ], - "name": "isTrustedForwarder", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nvmConfig", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "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": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeOperatorRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "royaltyInfo", - "outputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "internalType": "uint256", - "name": "royaltyAmount", - "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": "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": "string", - "name": "_uri", - "type": "string" - } - ], - "name": "setContractMetadataUri", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "string", - "name": "nftURI", - "type": "string" - } - ], - "name": "setNFTMetadata", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_addr", - "type": "address" - } - ], - "name": "setNvmConfigAddress", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "internalType": "uint256", - "name": "royaltyAmount", - "type": "uint256" - } - ], - "name": "setTokenRoyalty", - "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": "tokenId", - "type": "uint256" - } - ], - "name": "tokenURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "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" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5061339a806100206000396000f3fe608060405234801561001057600080fd5b50600436106102305760003560e01c806301ffc9a71461023557806302acb9a61461025d57806305a148721461027257806306fdde0314610292578063081812fc146102a7578063095ea7b3146102ba57806316279055146102cd57806322e8e1e0146102e1578063237c4919146102f757806323b872dd1461030a578063248a9ca31461031d57806327ac0c58146103305780632a55205a146103435780632f2ff15d1461037557806336568abe1461038857806340c10f191461039b57806342842e0e146103ae57806342966c68146103c157806347c4ef25146103d4578063572b6c05146103f75780635ced058e1461040a5780635ea3ab851461041b5780636352211e1461042e5780636d70f7ae146104415780636fd902e11461045457806370a082311461045a578063715018a61461046d57806382c947b71461047557806385be57241461048f5780638da5cb5b146104a457806391d14854146104ac57806395d89b41146104bf5780639713c807146104c7578063a0712d68146104da578063a217fddf146104ed578063a22cb465146104f5578063ab9de23014610508578063b219f7d714610510578063b88d4fde14610523578063c87b56dd14610536578063ce1b815f14610549578063d242310514610551578063d547741f14610564578063ded96d4814610577578063e8a3d4851461058a578063e985e9c514610592578063e9c1e045146105a5578063f2fde38b146105b8575b600080fd5b6102486102433660046125e9565b6105cb565b60405190151581526020015b60405180910390f35b61027061026b36600461261b565b610606565b005b610285610280366004612718565b610630565b6040516102549190612831565b61029a6107e6565b6040516102549190612895565b6102856102b53660046128a8565b610878565b6102706102c83660046128c1565b61089f565b6102486102db36600461261b565b3b151590565b6102e96109cb565b604051908152602001610254565b6102706103053660046128ed565b6109dc565b610270610318366004612929565b610a11565b6102e961032b3660046128a8565b610a49565b61027061033e36600461261b565b610a5e565b61035661035136600461296a565b610ac9565b604080516001600160a01b039093168352602083019190915201610254565b61027061038336600461298c565b610b1f565b61027061039636600461298c565b610b3b565b6102706103a93660046128c1565b610bc5565b6102706103bc366004612929565b610dc0565b6102706103cf3660046128a8565b610ddb565b6103e76103e23660046128a8565b610f6b565b60405161025494939291906129bc565b61024861040536600461261b565b611068565b6102856104183660046128a8565b90565b6102e96104293660046129ed565b61108d565b61028561043c3660046128a8565b6110dc565b61024861044f36600461261b565b611110565b436102e9565b6102e961046836600461261b565b61112a565b6102706111b0565b6102e961048336600461261b565b6001600160a01b031690565b6102e960008051602061332583398151915281565b6102856111c4565b6102486104ba36600461298c565b6111d3565b61029a6111fe565b6102706104d5366004612a7d565b61120d565b6102706104e83660046128a8565b61123f565b6102e9600081565b610270610503366004612ab2565b611250565b610285611262565b61027061051e36600461261b565b611271565b610270610531366004612ae0565b6112d9565b61029a6105443660046128a8565b611318565b6102856113b9565b61027061055f366004612b5f565b611444565b61027061057236600461298c565b6114a0565b610270610585366004612b93565b6114bc565b61029a6116be565b6102486105a0366004612c48565b6116cd565b60ff54610285906001600160a01b031681565b6102706105c636600461261b565b611707565b60006105d68261177d565b806105e557506105e58261179e565b8061060057506001600160e01b0319821663152a902d60e11b145b92915050565b61060e6117ee565b60ff80546001600160a01b0319166001600160a01b0392909216919091179055565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000906001600160a01b0316806106665750305b60006106718261185d565b9050806001600160a01b03811663ded96d4861068b6118f7565b610101546040516001600160e01b031960e085901b1681526106c292916001600160a01b0316908e908e908e908e90600401612c76565b600060405180830381600087803b1580156106dc57600080fd5b505af11580156106f0573d6000803e3d6000fd5b5050505060005b855181101561078a57816001600160a01b03166327ac0c5887838151811061072157610721612cdc565b60200260200101516040518263ffffffff1660e01b81526004016107459190612831565b600060405180830381600087803b15801561075f57600080fd5b505af1158015610773573d6000803e3d6000fd5b50505050808061078290612d08565b9150506106f7565b50826001600160a01b0316826001600160a01b03167f60b02f0439b830955522ba890ebaeed1012ac175aba5742b6032a7b79d0cd7346102d16040516107d291815260200190565b60405180910390a350979650505050505050565b6060609780546107f590612d21565b80601f016020809104026020016040519081016040528092919081815260200182805461082190612d21565b801561086e5780601f106108435761010080835404028352916020019161086e565b820191906000526020600020905b81548152906001019060200180831161085157829003601f168201915b5050505050905090565b600061088382611901565b506000908152609b60205260409020546001600160a01b031690565b60006108aa826110dc565b9050806001600160a01b0316836001600160a01b03160361091c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661092e6118f7565b6001600160a01b0316148061094a575061094a816105a06118f7565b6109bc5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610913565b6109c68383611926565b505050565b60006109d76101025490565b905090565b6109e761044f6118f7565b610a035760405162461bcd60e51b815260040161091390612d55565b610a0d8282611994565b5050565b610a22610a1c6118f7565b826119ba565b610a3e5760405162461bcd60e51b815260040161091390612d80565b6109c6838383611a19565b600090815260c9602052604090206001015490565b610a666118f7565b6001600160a01b0316610a776111c4565b6001600160a01b03161480610a925750610a9261044f6118f7565b610aae5760405162461bcd60e51b815260040161091390612dcd565b610ac660008051602061332583398151915282611b78565b50565b600082815260fb60209081526040808320815180830190925280546001600160a01b03168083526001909101549282018390529291606490610b0b9086612dfd565b610b159190612e14565b9150509250929050565b610b2882610a49565b610b3181611b82565b6109c68383611b93565b610b436118f7565b6001600160a01b0316816001600160a01b031614610bbb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610913565b610a0d8282611c1a565b610bd061044f6118f7565b80610bf35750610bde6111c4565b6001600160a01b0316826001600160a01b0316145b610c3c5760405162461bcd60e51b815260206004820152601a6024820152791bdb9b1e481b999d081bdc195c985d1bdc8818d85b881b5a5b9d60321b6044820152606401610913565b610100541580610c5157506101005461010254105b610c925760405162461bcd60e51b8152602060048201526012602482015271115490cdcc8c4e8810d85c08195e18d9595960721b6044820152606401610913565b610ca161010280546001019055565b61010254600082815260fc60208181526040808420600181019590955580518083019091528381529285905252600390910190610cde9082612e84565b50610101546001600160a01b031663bb794d9282610cfa6118f7565b600143604051602001610d109493929190612f5a565b604051602081830303815290604052805190602001208360001b610d326118f7565b7fdaf0b3c5710379609eb5495f1ecd348cb28167711b73609fe565a727345503546040518563ffffffff1660e01b8152600401610d729493929190612f99565b6020604051808303816000875af1158015610d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db59190612fd9565b50610a0d8282611c9f565b6109c6838383604051806020016040528060008152506112d9565b610de661044f6118f7565b80610dfb57506000610df96104686118f7565b115b610e5f5760405162461bcd60e51b815260206004820152602f60248201527f4552433732313a2063616c6c6572206973206e6f74206f776e6572206f72206e60448201526e6f7420686176652062616c616e636560881b6064820152608401610913565b600160fc60008381526020019081526020016000206001016000828254610e869190612ff6565b9091555050610101546001600160a01b031663bb794d9282610ea66118f7565b600143604051602001610ebc9493929190613020565b604051602081830303815290604052805190602001208360001b610ede6118f7565b7ff43e8cfd4725c1e28fa4a6e3e468b4fcf75367166b850ac5f04e33ec843e82c16040518563ffffffff1660e01b8152600401610f1e9493929190613049565b6020604051808303816000875af1158015610f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f619190612fd9565b50610ac681611da8565b600081815260fc602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301919091526003810180548493849360609385938386019190610fc290612d21565b80601f0160208091040260200160405190810160405280929190818152602001828054610fee90612d21565b801561103b5780601f106110105761010080835404028352916020019161103b565b820191906000526020600020905b81548152906001019060200180831161101e57829003601f168201915b505050919092525050815160208301516040840151606090940151919a9099509297509550909350505050565b60006110726113b9565b6001600160a01b0316826001600160a01b0316149050919050565b60008060005b83518110156110d5578381815181106110ae576110ae612cdc565b6020026020010151826110c19190613089565b9150806110cd81612d08565b915050611093565b5092915050565b6000806110e883611e39565b90506001600160a01b0381166106005760405162461bcd60e51b81526004016109139061309c565b6000610600600080516020613325833981519152836111d3565b60006001600160a01b0382166111945760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610913565b506001600160a01b03166000908152609a602052604090205490565b6111b86117ee565b6111c26000611e54565b565b6033546001600160a01b031690565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060609880546107f590612d21565b61121861044f6118f7565b6112345760405162461bcd60e51b815260040161091390612d55565b6109c6838383611ea6565b610ac661124a6118f7565b82610bc5565b610a0d61125b6118f7565b8383611f3e565b60ff546001600160a01b031690565b6112796118f7565b6001600160a01b031661128a6111c4565b6001600160a01b031614806112a557506112a561044f6118f7565b6112c15760405162461bcd60e51b815260040161091390612dcd565b610ac660008051602061332583398151915282611c1a565b6112ea6112e46118f7565b836119ba565b6113065760405162461bcd60e51b815260040161091390612d80565b61131284848484612008565b50505050565b6060600061132461203b565b905061132f83612045565b15611384576000815111611352576040518060200160405280600081525061137d565b8061135c84612062565b60405160200161136d9291906130ce565b6040516020818303038152906040525b9392505050565b60008151116113a2576040518060200160405280600081525061137d565b8060405160200161136d91906130fd565b50919050565b6000806113c4611262565b90506001600160a01b0381166113dc57600091505090565b806001600160a01b031663ce1b815f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e9190613119565b91505090565b61144c6118f7565b6001600160a01b031661145d6111c4565b6001600160a01b03161480611478575061147861044f6118f7565b6114945760405162461bcd60e51b815260040161091390612dcd565b60fe610a0d8282612e84565b6114a982610a49565b6114b281611b82565b6109c68383611c1a565b600054610100900460ff16158080156114dc5750600054600160ff909116105b806114fd57506114eb30612079565b1580156114fd575060005460ff166001145b6115605760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610913565b6000805460ff191660011790558015611583576000805461ff0019166101001790555b61158b612088565b611593612088565b61159d85856120af565b6115a56120ef565b6115ad612088565b6115cc6000805160206133258339815191526115c76118f7565b611b78565b6115e460008051602061332583398151915287611b78565b6115fc60008051602061332583398151915288611b78565b61160583611444565b61010082905561010180546001600160a01b0319166001600160a01b03881617905561162f6118f7565b6001600160a01b0316876001600160a01b03161461166f5761165087611707565b61166f60008051602061332583398151915261166a6118f7565b611c1a565b80156116b5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b606060fe80546107f590612d21565b6001600160a01b038083166000908152609c6020908152604080832093851683529290529081205460ff168061137d575061137d82611110565b61170f6117ee565b6001600160a01b0381166117745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610913565b610ac681611e54565b60006001600160e01b03198216637965db0b60e01b14806106005750610600825b60006001600160e01b031982166380ac58cd60e01b14806117cf57506001600160e01b03198216635b5e139f60e01b145b8061060057506301ffc9a760e01b6001600160e01b0319831614610600565b6117f66118f7565b6001600160a01b03166118076111c4565b6001600160a01b0316146111c25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610913565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166118f25760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610913565b919050565b60006109d7612126565b61190a81612045565b610ac65760405162461bcd60e51b81526004016109139061309c565b6000818152609b6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061195b826110dc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600082815260fc60205260409020805460ff191660011781556003016109c68282612e84565b6000806119c6836110dc565b9050806001600160a01b0316846001600160a01b031614806119ed57506119ed81856116cd565b80611a115750836001600160a01b0316611a0684610878565b6001600160a01b0316145b949350505050565b826001600160a01b0316611a2c826110dc565b6001600160a01b031614611a525760405162461bcd60e51b815260040161091390613136565b6001600160a01b038216611ab45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610913565b611ac18383836001612154565b826001600160a01b0316611ad4826110dc565b6001600160a01b031614611afa5760405162461bcd60e51b815260040161091390613136565b6000818152609b6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652609a85528386208054600019019055908716808652838620805460010190558686526099909452828520805490921684179091559051849360008051602061334583398151915291a4505050565b610a0d8282611b93565b610ac681611b8e6118f7565b6121c8565b611b9d82826111d3565b610a0d57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611bd66118f7565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c2482826111d3565b15610a0d57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19169055611c5b6118f7565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6001600160a01b038216611cf55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610913565b611cfe81612045565b15611d1b5760405162461bcd60e51b81526004016109139061317b565b611d29600083836001612154565b611d3281612045565b15611d4f5760405162461bcd60e51b81526004016109139061317b565b6001600160a01b0382166000818152609a6020908152604080832080546001019055848352609990915280822080546001600160a01b031916841790555183929190600080516020613345833981519152908290a45050565b6000611db3826110dc565b9050611dc3816000846001612154565b611dcc826110dc565b6000838152609b6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552609a84528285208054600019019055878552609990935281842080549091169055519293508492600080516020613345833981519152908390a45050565b6000908152609960205260409020546001600160a01b031690565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620f4240811115611ef65760405162461bcd60e51b815260206004820152601a60248201527908aa48664727062a4def2c2d8e8d2cae67440a8dede40d0d2ced60331b6044820152606401610913565b6040805180820182526001600160a01b0393841681526020808201938452600095865260fb90529320925183546001600160a01b031916921691909117825551600190910155565b816001600160a01b0316836001600160a01b031603611f9b5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610913565b6001600160a01b038381166000818152609c6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612013848484611a19565b61201f84848484612221565b6113125760405162461bcd60e51b8152600401610913906131b1565b60606109d76116be565b60008061205183611e39565b6001600160a01b0316141592915050565b60606106008261207184612330565b60010161239a565b6001600160a01b03163b151590565b600054610100900460ff166111c25760405162461bcd60e51b815260040161091390613203565b600054610100900460ff166120d65760405162461bcd60e51b815260040161091390613203565b60976120e28382612e84565b5060986109c68282612e84565b600054610100900460ff166121165760405162461bcd60e51b815260040161091390613203565b6111c26121216118f7565b611e54565b60006014361080159061213d575061213d33611068565b1561214f575060131936013560601c90565b503390565b6001600160a01b038416158061217157506001600160a01b038316155b80612182575061218261044f6118f7565b6121bb5760405162461bcd60e51b815260206004820152600a6024820152696f6e6c792070726f787960b01b6044820152606401610913565b6113128484600084612535565b6121d282826111d3565b610a0d576121df816125bd565b6121ea83602061239a565b6040516020016121fb92919061324e565b60408051601f198184030181529082905262461bcd60e51b825261091391600401612895565b6000612235846001600160a01b0316612079565b1561232557836001600160a01b031663150b7a026122516118f7565b8786866040518563ffffffff1660e01b815260040161227394939291906132bd565b6020604051808303816000875af19250505080156122ae575060408051601f3d908101601f191682019092526122ab918101906132f0565b60015b61230b573d8080156122dc576040519150601f19603f3d011682016040523d82523d6000602084013e6122e1565b606091505b5080516000036123035760405162461bcd60e51b8152600401610913906131b1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611a11565b506001949350505050565b600080608083901c156123485760809290921c916010015b604083901c1561235d5760409290921c916008015b602083901c156123725760209290921c916004015b601083901c156123875760109290921c916002015b600883901c156106005760010192915050565b606060006123a9836002612dfd565b6123b4906002613089565b6001600160401b038111156123cb576123cb612638565b6040519080825280601f01601f1916602001820160405280156123f5576020820181803683370190505b509050600360fc1b8160008151811061241057612410612cdc565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061243f5761243f612cdc565b60200101906001600160f81b031916908160001a9053506000612463846002612dfd565b61246e906001613089565b90505b60018111156124e6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106124a2576124a2612cdc565b1a60f81b8282815181106124b8576124b8612cdc565b60200101906001600160f81b031916908160001a90535060049490941c936124df8161330d565b9050612471565b50831561137d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610913565b6001811115611312576001600160a01b0384161561257b576001600160a01b0384166000908152609a602052604081208054839290612575908490612ff6565b90915550505b6001600160a01b03831615611312576001600160a01b0383166000908152609a6020526040812080548392906125b2908490613089565b909155505050505050565b60606106006001600160a01b038316601461239a565b6001600160e01b031981168114610ac657600080fd5b6000602082840312156125fb57600080fd5b813561137d816125d3565b6001600160a01b0381168114610ac657600080fd5b60006020828403121561262d57600080fd5b813561137d81612606565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561267657612676612638565b604052919050565b60006001600160401b0383111561269757612697612638565b6126aa601f8401601f191660200161264e565b90508281528383830111156126be57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126126e657600080fd5b61137d8383356020850161267e565b60006001600160401b0382111561270e5761270e612638565b5060051b60200190565b600080600080600060a0868803121561273057600080fd5b85356001600160401b038082111561274757600080fd5b61275389838a016126d5565b965060209150818801358181111561276a57600080fd5b6127768a828b016126d5565b96505060408801358181111561278b57600080fd5b6127978a828b016126d5565b955050606088013593506080880135818111156127b357600080fd5b88019050601f810189136127c657600080fd5b80356127d96127d4826126f5565b61264e565b81815260059190911b8201830190838101908b8311156127f857600080fd5b928401925b8284101561281f57833561281081612606565b825292840192908401906127fd565b80955050505050509295509295909350565b6001600160a01b0391909116815260200190565b60005b83811015612860578181015183820152602001612848565b50506000910152565b60008151808452612881816020860160208601612845565b601f01601f19169290920160200192915050565b60208152600061137d6020830184612869565b6000602082840312156128ba57600080fd5b5035919050565b600080604083850312156128d457600080fd5b82356128df81612606565b946020939093013593505050565b6000806040838503121561290057600080fd5b8235915060208301356001600160401b0381111561291d57600080fd5b610b15858286016126d5565b60008060006060848603121561293e57600080fd5b833561294981612606565b9250602084013561295981612606565b929592945050506040919091013590565b6000806040838503121561297d57600080fd5b50508035926020909101359150565b6000806040838503121561299f57600080fd5b8235915060208301356129b181612606565b809150509250929050565b84151581528360208201528260408201526080606082015260006129e36080830184612869565b9695505050505050565b60006020808385031215612a0057600080fd5b82356001600160401b03811115612a1657600080fd5b8301601f81018513612a2757600080fd5b8035612a356127d4826126f5565b81815260059190911b82018301908381019087831115612a5457600080fd5b928401925b82841015612a7257833582529284019290840190612a59565b979650505050505050565b600080600060608486031215612a9257600080fd5b83359250602084013561295981612606565b8015158114610ac657600080fd5b60008060408385031215612ac557600080fd5b8235612ad081612606565b915060208301356129b181612aa4565b60008060008060808587031215612af657600080fd5b8435612b0181612606565b93506020850135612b1181612606565b92506040850135915060608501356001600160401b03811115612b3357600080fd5b8501601f81018713612b4457600080fd5b612b538782356020840161267e565b91505092959194509250565b600060208284031215612b7157600080fd5b81356001600160401b03811115612b8757600080fd5b611a11848285016126d5565b60008060008060008060c08789031215612bac57600080fd5b8635612bb781612606565b95506020870135612bc781612606565b945060408701356001600160401b0380821115612be357600080fd5b612bef8a838b016126d5565b95506060890135915080821115612c0557600080fd5b612c118a838b016126d5565b94506080890135915080821115612c2757600080fd5b50612c3489828a016126d5565b92505060a087013590509295509295509295565b60008060408385031215612c5b57600080fd5b8235612c6681612606565b915060208301356129b181612606565b6001600160a01b0387811682528616602082015260c060408201819052600090612ca290830187612869565b8281036060840152612cb48187612869565b90508281036080840152612cc88186612869565b9150508260a0830152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612d1a57612d1a612cf2565b5060010190565b600181811c90821680612d3557607f821691505b6020821081036113b357634e487b7160e01b600052602260045260246000fd5b60208082526011908201527037b7363c9037333a1037b832b930ba37b960791b604082015260600190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526016908201527527b7363c9037b832b930ba37b91037b91037bbb732b960511b604082015260600190565b808202811582820484141761060057610600612cf2565b600082612e3157634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156109c657600081815260208120601f850160051c81016020861015612e5d5750805b601f850160051c820191505b81811015612e7c57828155600101612e69565b505050505050565b81516001600160401b03811115612e9d57612e9d612638565b612eb181612eab8454612d21565b84612e36565b602080601f831160018114612ee65760008415612ece5750858301515b600019600386901b1c1916600185901b178555612e7c565b600085815260208120601f198616915b82811015612f1557888601518255948401946001909101908401612ef6565b5085821015612f335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60048152631b5a5b9d60e21b602082015260400190565b8481526001600160a01b038416602082015260a060408201819052600090612f83908301612f43565b60ff949094166060830152506080015292915050565b84815283602082015260018060a01b038316604082015281606082015260c06080820152600060c082015260e060a082015260006129e360e08301612f43565b600060208284031215612feb57600080fd5b815161137d81612aa4565b8181038181111561060057610600612cf2565b6004815263313ab93760e11b602082015260400190565b8481526001600160a01b038416602082015260a060408201819052600090612f83908301613009565b84815283602082015260018060a01b038316604082015281606082015260c06080820152600060c082015260e060a082015260006129e360e08301613009565b8082018082111561060057610600612cf2565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b600083516130e0818460208801612845565b8351908301906130f4818360208801612845565b01949350505050565b6000825161310f818460208701612845565b9190910192915050565b60006020828403121561312b57600080fd5b815161137d81612606565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613280816017850160208801612845565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516132b1816028840160208801612845565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906129e390830184612869565b60006020828403121561330257600080fd5b815161137d816125d3565b60008161331c5761331c612cf2565b50600019019056fef7a17991623d7e30ebf9bd089b2f4dcf33b0aa34727454bfa3dbc351ed7d6835ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203305895fc1fbb0c3b42327ee957cbf788b10d310d0d84956f54b4f8ca4709da364736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102305760003560e01c806301ffc9a71461023557806302acb9a61461025d57806305a148721461027257806306fdde0314610292578063081812fc146102a7578063095ea7b3146102ba57806316279055146102cd57806322e8e1e0146102e1578063237c4919146102f757806323b872dd1461030a578063248a9ca31461031d57806327ac0c58146103305780632a55205a146103435780632f2ff15d1461037557806336568abe1461038857806340c10f191461039b57806342842e0e146103ae57806342966c68146103c157806347c4ef25146103d4578063572b6c05146103f75780635ced058e1461040a5780635ea3ab851461041b5780636352211e1461042e5780636d70f7ae146104415780636fd902e11461045457806370a082311461045a578063715018a61461046d57806382c947b71461047557806385be57241461048f5780638da5cb5b146104a457806391d14854146104ac57806395d89b41146104bf5780639713c807146104c7578063a0712d68146104da578063a217fddf146104ed578063a22cb465146104f5578063ab9de23014610508578063b219f7d714610510578063b88d4fde14610523578063c87b56dd14610536578063ce1b815f14610549578063d242310514610551578063d547741f14610564578063ded96d4814610577578063e8a3d4851461058a578063e985e9c514610592578063e9c1e045146105a5578063f2fde38b146105b8575b600080fd5b6102486102433660046125e9565b6105cb565b60405190151581526020015b60405180910390f35b61027061026b36600461261b565b610606565b005b610285610280366004612718565b610630565b6040516102549190612831565b61029a6107e6565b6040516102549190612895565b6102856102b53660046128a8565b610878565b6102706102c83660046128c1565b61089f565b6102486102db36600461261b565b3b151590565b6102e96109cb565b604051908152602001610254565b6102706103053660046128ed565b6109dc565b610270610318366004612929565b610a11565b6102e961032b3660046128a8565b610a49565b61027061033e36600461261b565b610a5e565b61035661035136600461296a565b610ac9565b604080516001600160a01b039093168352602083019190915201610254565b61027061038336600461298c565b610b1f565b61027061039636600461298c565b610b3b565b6102706103a93660046128c1565b610bc5565b6102706103bc366004612929565b610dc0565b6102706103cf3660046128a8565b610ddb565b6103e76103e23660046128a8565b610f6b565b60405161025494939291906129bc565b61024861040536600461261b565b611068565b6102856104183660046128a8565b90565b6102e96104293660046129ed565b61108d565b61028561043c3660046128a8565b6110dc565b61024861044f36600461261b565b611110565b436102e9565b6102e961046836600461261b565b61112a565b6102706111b0565b6102e961048336600461261b565b6001600160a01b031690565b6102e960008051602061332583398151915281565b6102856111c4565b6102486104ba36600461298c565b6111d3565b61029a6111fe565b6102706104d5366004612a7d565b61120d565b6102706104e83660046128a8565b61123f565b6102e9600081565b610270610503366004612ab2565b611250565b610285611262565b61027061051e36600461261b565b611271565b610270610531366004612ae0565b6112d9565b61029a6105443660046128a8565b611318565b6102856113b9565b61027061055f366004612b5f565b611444565b61027061057236600461298c565b6114a0565b610270610585366004612b93565b6114bc565b61029a6116be565b6102486105a0366004612c48565b6116cd565b60ff54610285906001600160a01b031681565b6102706105c636600461261b565b611707565b60006105d68261177d565b806105e557506105e58261179e565b8061060057506001600160e01b0319821663152a902d60e11b145b92915050565b61060e6117ee565b60ff80546001600160a01b0319166001600160a01b0392909216919091179055565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000906001600160a01b0316806106665750305b60006106718261185d565b9050806001600160a01b03811663ded96d4861068b6118f7565b610101546040516001600160e01b031960e085901b1681526106c292916001600160a01b0316908e908e908e908e90600401612c76565b600060405180830381600087803b1580156106dc57600080fd5b505af11580156106f0573d6000803e3d6000fd5b5050505060005b855181101561078a57816001600160a01b03166327ac0c5887838151811061072157610721612cdc565b60200260200101516040518263ffffffff1660e01b81526004016107459190612831565b600060405180830381600087803b15801561075f57600080fd5b505af1158015610773573d6000803e3d6000fd5b50505050808061078290612d08565b9150506106f7565b50826001600160a01b0316826001600160a01b03167f60b02f0439b830955522ba890ebaeed1012ac175aba5742b6032a7b79d0cd7346102d16040516107d291815260200190565b60405180910390a350979650505050505050565b6060609780546107f590612d21565b80601f016020809104026020016040519081016040528092919081815260200182805461082190612d21565b801561086e5780601f106108435761010080835404028352916020019161086e565b820191906000526020600020905b81548152906001019060200180831161085157829003601f168201915b5050505050905090565b600061088382611901565b506000908152609b60205260409020546001600160a01b031690565b60006108aa826110dc565b9050806001600160a01b0316836001600160a01b03160361091c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661092e6118f7565b6001600160a01b0316148061094a575061094a816105a06118f7565b6109bc5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610913565b6109c68383611926565b505050565b60006109d76101025490565b905090565b6109e761044f6118f7565b610a035760405162461bcd60e51b815260040161091390612d55565b610a0d8282611994565b5050565b610a22610a1c6118f7565b826119ba565b610a3e5760405162461bcd60e51b815260040161091390612d80565b6109c6838383611a19565b600090815260c9602052604090206001015490565b610a666118f7565b6001600160a01b0316610a776111c4565b6001600160a01b03161480610a925750610a9261044f6118f7565b610aae5760405162461bcd60e51b815260040161091390612dcd565b610ac660008051602061332583398151915282611b78565b50565b600082815260fb60209081526040808320815180830190925280546001600160a01b03168083526001909101549282018390529291606490610b0b9086612dfd565b610b159190612e14565b9150509250929050565b610b2882610a49565b610b3181611b82565b6109c68383611b93565b610b436118f7565b6001600160a01b0316816001600160a01b031614610bbb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610913565b610a0d8282611c1a565b610bd061044f6118f7565b80610bf35750610bde6111c4565b6001600160a01b0316826001600160a01b0316145b610c3c5760405162461bcd60e51b815260206004820152601a6024820152791bdb9b1e481b999d081bdc195c985d1bdc8818d85b881b5a5b9d60321b6044820152606401610913565b610100541580610c5157506101005461010254105b610c925760405162461bcd60e51b8152602060048201526012602482015271115490cdcc8c4e8810d85c08195e18d9595960721b6044820152606401610913565b610ca161010280546001019055565b61010254600082815260fc60208181526040808420600181019590955580518083019091528381529285905252600390910190610cde9082612e84565b50610101546001600160a01b031663bb794d9282610cfa6118f7565b600143604051602001610d109493929190612f5a565b604051602081830303815290604052805190602001208360001b610d326118f7565b7fdaf0b3c5710379609eb5495f1ecd348cb28167711b73609fe565a727345503546040518563ffffffff1660e01b8152600401610d729493929190612f99565b6020604051808303816000875af1158015610d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db59190612fd9565b50610a0d8282611c9f565b6109c6838383604051806020016040528060008152506112d9565b610de661044f6118f7565b80610dfb57506000610df96104686118f7565b115b610e5f5760405162461bcd60e51b815260206004820152602f60248201527f4552433732313a2063616c6c6572206973206e6f74206f776e6572206f72206e60448201526e6f7420686176652062616c616e636560881b6064820152608401610913565b600160fc60008381526020019081526020016000206001016000828254610e869190612ff6565b9091555050610101546001600160a01b031663bb794d9282610ea66118f7565b600143604051602001610ebc9493929190613020565b604051602081830303815290604052805190602001208360001b610ede6118f7565b7ff43e8cfd4725c1e28fa4a6e3e468b4fcf75367166b850ac5f04e33ec843e82c16040518563ffffffff1660e01b8152600401610f1e9493929190613049565b6020604051808303816000875af1158015610f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f619190612fd9565b50610ac681611da8565b600081815260fc602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301919091526003810180548493849360609385938386019190610fc290612d21565b80601f0160208091040260200160405190810160405280929190818152602001828054610fee90612d21565b801561103b5780601f106110105761010080835404028352916020019161103b565b820191906000526020600020905b81548152906001019060200180831161101e57829003601f168201915b505050919092525050815160208301516040840151606090940151919a9099509297509550909350505050565b60006110726113b9565b6001600160a01b0316826001600160a01b0316149050919050565b60008060005b83518110156110d5578381815181106110ae576110ae612cdc565b6020026020010151826110c19190613089565b9150806110cd81612d08565b915050611093565b5092915050565b6000806110e883611e39565b90506001600160a01b0381166106005760405162461bcd60e51b81526004016109139061309c565b6000610600600080516020613325833981519152836111d3565b60006001600160a01b0382166111945760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610913565b506001600160a01b03166000908152609a602052604090205490565b6111b86117ee565b6111c26000611e54565b565b6033546001600160a01b031690565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060609880546107f590612d21565b61121861044f6118f7565b6112345760405162461bcd60e51b815260040161091390612d55565b6109c6838383611ea6565b610ac661124a6118f7565b82610bc5565b610a0d61125b6118f7565b8383611f3e565b60ff546001600160a01b031690565b6112796118f7565b6001600160a01b031661128a6111c4565b6001600160a01b031614806112a557506112a561044f6118f7565b6112c15760405162461bcd60e51b815260040161091390612dcd565b610ac660008051602061332583398151915282611c1a565b6112ea6112e46118f7565b836119ba565b6113065760405162461bcd60e51b815260040161091390612d80565b61131284848484612008565b50505050565b6060600061132461203b565b905061132f83612045565b15611384576000815111611352576040518060200160405280600081525061137d565b8061135c84612062565b60405160200161136d9291906130ce565b6040516020818303038152906040525b9392505050565b60008151116113a2576040518060200160405280600081525061137d565b8060405160200161136d91906130fd565b50919050565b6000806113c4611262565b90506001600160a01b0381166113dc57600091505090565b806001600160a01b031663ce1b815f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e9190613119565b91505090565b61144c6118f7565b6001600160a01b031661145d6111c4565b6001600160a01b03161480611478575061147861044f6118f7565b6114945760405162461bcd60e51b815260040161091390612dcd565b60fe610a0d8282612e84565b6114a982610a49565b6114b281611b82565b6109c68383611c1a565b600054610100900460ff16158080156114dc5750600054600160ff909116105b806114fd57506114eb30612079565b1580156114fd575060005460ff166001145b6115605760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610913565b6000805460ff191660011790558015611583576000805461ff0019166101001790555b61158b612088565b611593612088565b61159d85856120af565b6115a56120ef565b6115ad612088565b6115cc6000805160206133258339815191526115c76118f7565b611b78565b6115e460008051602061332583398151915287611b78565b6115fc60008051602061332583398151915288611b78565b61160583611444565b61010082905561010180546001600160a01b0319166001600160a01b03881617905561162f6118f7565b6001600160a01b0316876001600160a01b03161461166f5761165087611707565b61166f60008051602061332583398151915261166a6118f7565b611c1a565b80156116b5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b606060fe80546107f590612d21565b6001600160a01b038083166000908152609c6020908152604080832093851683529290529081205460ff168061137d575061137d82611110565b61170f6117ee565b6001600160a01b0381166117745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610913565b610ac681611e54565b60006001600160e01b03198216637965db0b60e01b14806106005750610600825b60006001600160e01b031982166380ac58cd60e01b14806117cf57506001600160e01b03198216635b5e139f60e01b145b8061060057506301ffc9a760e01b6001600160e01b0319831614610600565b6117f66118f7565b6001600160a01b03166118076111c4565b6001600160a01b0316146111c25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610913565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166118f25760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610913565b919050565b60006109d7612126565b61190a81612045565b610ac65760405162461bcd60e51b81526004016109139061309c565b6000818152609b6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061195b826110dc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600082815260fc60205260409020805460ff191660011781556003016109c68282612e84565b6000806119c6836110dc565b9050806001600160a01b0316846001600160a01b031614806119ed57506119ed81856116cd565b80611a115750836001600160a01b0316611a0684610878565b6001600160a01b0316145b949350505050565b826001600160a01b0316611a2c826110dc565b6001600160a01b031614611a525760405162461bcd60e51b815260040161091390613136565b6001600160a01b038216611ab45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610913565b611ac18383836001612154565b826001600160a01b0316611ad4826110dc565b6001600160a01b031614611afa5760405162461bcd60e51b815260040161091390613136565b6000818152609b6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652609a85528386208054600019019055908716808652838620805460010190558686526099909452828520805490921684179091559051849360008051602061334583398151915291a4505050565b610a0d8282611b93565b610ac681611b8e6118f7565b6121c8565b611b9d82826111d3565b610a0d57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611bd66118f7565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611c2482826111d3565b15610a0d57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19169055611c5b6118f7565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6001600160a01b038216611cf55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610913565b611cfe81612045565b15611d1b5760405162461bcd60e51b81526004016109139061317b565b611d29600083836001612154565b611d3281612045565b15611d4f5760405162461bcd60e51b81526004016109139061317b565b6001600160a01b0382166000818152609a6020908152604080832080546001019055848352609990915280822080546001600160a01b031916841790555183929190600080516020613345833981519152908290a45050565b6000611db3826110dc565b9050611dc3816000846001612154565b611dcc826110dc565b6000838152609b6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552609a84528285208054600019019055878552609990935281842080549091169055519293508492600080516020613345833981519152908390a45050565b6000908152609960205260409020546001600160a01b031690565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620f4240811115611ef65760405162461bcd60e51b815260206004820152601a60248201527908aa48664727062a4def2c2d8e8d2cae67440a8dede40d0d2ced60331b6044820152606401610913565b6040805180820182526001600160a01b0393841681526020808201938452600095865260fb90529320925183546001600160a01b031916921691909117825551600190910155565b816001600160a01b0316836001600160a01b031603611f9b5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610913565b6001600160a01b038381166000818152609c6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612013848484611a19565b61201f84848484612221565b6113125760405162461bcd60e51b8152600401610913906131b1565b60606109d76116be565b60008061205183611e39565b6001600160a01b0316141592915050565b60606106008261207184612330565b60010161239a565b6001600160a01b03163b151590565b600054610100900460ff166111c25760405162461bcd60e51b815260040161091390613203565b600054610100900460ff166120d65760405162461bcd60e51b815260040161091390613203565b60976120e28382612e84565b5060986109c68282612e84565b600054610100900460ff166121165760405162461bcd60e51b815260040161091390613203565b6111c26121216118f7565b611e54565b60006014361080159061213d575061213d33611068565b1561214f575060131936013560601c90565b503390565b6001600160a01b038416158061217157506001600160a01b038316155b80612182575061218261044f6118f7565b6121bb5760405162461bcd60e51b815260206004820152600a6024820152696f6e6c792070726f787960b01b6044820152606401610913565b6113128484600084612535565b6121d282826111d3565b610a0d576121df816125bd565b6121ea83602061239a565b6040516020016121fb92919061324e565b60408051601f198184030181529082905262461bcd60e51b825261091391600401612895565b6000612235846001600160a01b0316612079565b1561232557836001600160a01b031663150b7a026122516118f7565b8786866040518563ffffffff1660e01b815260040161227394939291906132bd565b6020604051808303816000875af19250505080156122ae575060408051601f3d908101601f191682019092526122ab918101906132f0565b60015b61230b573d8080156122dc576040519150601f19603f3d011682016040523d82523d6000602084013e6122e1565b606091505b5080516000036123035760405162461bcd60e51b8152600401610913906131b1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611a11565b506001949350505050565b600080608083901c156123485760809290921c916010015b604083901c1561235d5760409290921c916008015b602083901c156123725760209290921c916004015b601083901c156123875760109290921c916002015b600883901c156106005760010192915050565b606060006123a9836002612dfd565b6123b4906002613089565b6001600160401b038111156123cb576123cb612638565b6040519080825280601f01601f1916602001820160405280156123f5576020820181803683370190505b509050600360fc1b8160008151811061241057612410612cdc565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061243f5761243f612cdc565b60200101906001600160f81b031916908160001a9053506000612463846002612dfd565b61246e906001613089565b90505b60018111156124e6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106124a2576124a2612cdc565b1a60f81b8282815181106124b8576124b8612cdc565b60200101906001600160f81b031916908160001a90535060049490941c936124df8161330d565b9050612471565b50831561137d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610913565b6001811115611312576001600160a01b0384161561257b576001600160a01b0384166000908152609a602052604081208054839290612575908490612ff6565b90915550505b6001600160a01b03831615611312576001600160a01b0383166000908152609a6020526040812080548392906125b2908490613089565b909155505050505050565b60606106006001600160a01b038316601461239a565b6001600160e01b031981168114610ac657600080fd5b6000602082840312156125fb57600080fd5b813561137d816125d3565b6001600160a01b0381168114610ac657600080fd5b60006020828403121561262d57600080fd5b813561137d81612606565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561267657612676612638565b604052919050565b60006001600160401b0383111561269757612697612638565b6126aa601f8401601f191660200161264e565b90508281528383830111156126be57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126126e657600080fd5b61137d8383356020850161267e565b60006001600160401b0382111561270e5761270e612638565b5060051b60200190565b600080600080600060a0868803121561273057600080fd5b85356001600160401b038082111561274757600080fd5b61275389838a016126d5565b965060209150818801358181111561276a57600080fd5b6127768a828b016126d5565b96505060408801358181111561278b57600080fd5b6127978a828b016126d5565b955050606088013593506080880135818111156127b357600080fd5b88019050601f810189136127c657600080fd5b80356127d96127d4826126f5565b61264e565b81815260059190911b8201830190838101908b8311156127f857600080fd5b928401925b8284101561281f57833561281081612606565b825292840192908401906127fd565b80955050505050509295509295909350565b6001600160a01b0391909116815260200190565b60005b83811015612860578181015183820152602001612848565b50506000910152565b60008151808452612881816020860160208601612845565b601f01601f19169290920160200192915050565b60208152600061137d6020830184612869565b6000602082840312156128ba57600080fd5b5035919050565b600080604083850312156128d457600080fd5b82356128df81612606565b946020939093013593505050565b6000806040838503121561290057600080fd5b8235915060208301356001600160401b0381111561291d57600080fd5b610b15858286016126d5565b60008060006060848603121561293e57600080fd5b833561294981612606565b9250602084013561295981612606565b929592945050506040919091013590565b6000806040838503121561297d57600080fd5b50508035926020909101359150565b6000806040838503121561299f57600080fd5b8235915060208301356129b181612606565b809150509250929050565b84151581528360208201528260408201526080606082015260006129e36080830184612869565b9695505050505050565b60006020808385031215612a0057600080fd5b82356001600160401b03811115612a1657600080fd5b8301601f81018513612a2757600080fd5b8035612a356127d4826126f5565b81815260059190911b82018301908381019087831115612a5457600080fd5b928401925b82841015612a7257833582529284019290840190612a59565b979650505050505050565b600080600060608486031215612a9257600080fd5b83359250602084013561295981612606565b8015158114610ac657600080fd5b60008060408385031215612ac557600080fd5b8235612ad081612606565b915060208301356129b181612aa4565b60008060008060808587031215612af657600080fd5b8435612b0181612606565b93506020850135612b1181612606565b92506040850135915060608501356001600160401b03811115612b3357600080fd5b8501601f81018713612b4457600080fd5b612b538782356020840161267e565b91505092959194509250565b600060208284031215612b7157600080fd5b81356001600160401b03811115612b8757600080fd5b611a11848285016126d5565b60008060008060008060c08789031215612bac57600080fd5b8635612bb781612606565b95506020870135612bc781612606565b945060408701356001600160401b0380821115612be357600080fd5b612bef8a838b016126d5565b95506060890135915080821115612c0557600080fd5b612c118a838b016126d5565b94506080890135915080821115612c2757600080fd5b50612c3489828a016126d5565b92505060a087013590509295509295509295565b60008060408385031215612c5b57600080fd5b8235612c6681612606565b915060208301356129b181612606565b6001600160a01b0387811682528616602082015260c060408201819052600090612ca290830187612869565b8281036060840152612cb48187612869565b90508281036080840152612cc88186612869565b9150508260a0830152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612d1a57612d1a612cf2565b5060010190565b600181811c90821680612d3557607f821691505b6020821081036113b357634e487b7160e01b600052602260045260246000fd5b60208082526011908201527037b7363c9037333a1037b832b930ba37b960791b604082015260600190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526016908201527527b7363c9037b832b930ba37b91037b91037bbb732b960511b604082015260600190565b808202811582820484141761060057610600612cf2565b600082612e3157634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156109c657600081815260208120601f850160051c81016020861015612e5d5750805b601f850160051c820191505b81811015612e7c57828155600101612e69565b505050505050565b81516001600160401b03811115612e9d57612e9d612638565b612eb181612eab8454612d21565b84612e36565b602080601f831160018114612ee65760008415612ece5750858301515b600019600386901b1c1916600185901b178555612e7c565b600085815260208120601f198616915b82811015612f1557888601518255948401946001909101908401612ef6565b5085821015612f335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60048152631b5a5b9d60e21b602082015260400190565b8481526001600160a01b038416602082015260a060408201819052600090612f83908301612f43565b60ff949094166060830152506080015292915050565b84815283602082015260018060a01b038316604082015281606082015260c06080820152600060c082015260e060a082015260006129e360e08301612f43565b600060208284031215612feb57600080fd5b815161137d81612aa4565b8181038181111561060057610600612cf2565b6004815263313ab93760e11b602082015260400190565b8481526001600160a01b038416602082015260a060408201819052600090612f83908301613009565b84815283602082015260018060a01b038316604082015281606082015260c06080820152600060c082015260e060a082015260006129e360e08301613009565b8082018082111561060057610600612cf2565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b600083516130e0818460208801612845565b8351908301906130f4818360208801612845565b01949350505050565b6000825161310f818460208701612845565b9190910192915050565b60006020828403121561312b57600080fd5b815161137d81612606565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613280816017850160208801612845565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516132b1816028840160208801612845565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906129e390830184612869565b60006020828403121561330257600080fd5b815161137d816125d3565b60008161331c5761331c612cf2565b50600019019056fef7a17991623d7e30ebf9bd089b2f4dcf33b0aa34727454bfa3dbc351ed7d6835ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203305895fc1fbb0c3b42327ee957cbf788b10d310d0d84956f54b4f8ca4709da364736f6c63430008110033", - "linkReferences": {}, - "deployedLinkReferences": {} -}