ocean-subgraph/abis/ERC721Factory.json

1164 lines
84 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "ERC721Factory",
"sourceName": "contracts/ERC721Factory.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_template721",
"type": "address"
},
{
"internalType": "address",
"name": "_template",
"type": "address"
},
{
"internalType": "address",
"name": "_collector",
"type": "address"
},
{
"internalType": "address",
"name": "_router",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "datatokenAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "maxTokens",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "maxBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "allowedSwapper",
"type": "address"
}
],
"name": "DispenserCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "instance",
"type": "address"
}
],
"name": "InstanceDeployed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newTokenAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "templateAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "string",
"name": "tokenName",
"type": "string"
},
{
"indexed": false,
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"indexed": false,
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "tokenURI",
"type": "string"
}
],
"name": "NFTCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "NewFixedRate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "poolAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "ssContract",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "basetokenAddress",
"type": "address"
}
],
"name": "NewPool",
"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": "_templateAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "nftTemplateCount",
"type": "uint256"
}
],
"name": "Template20Added",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_templateAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "nftTemplateCount",
"type": "uint256"
}
],
"name": "Template721Added",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newTokenAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "templateAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "string",
"name": "name",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "cap",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "creator",
"type": "address"
}
],
"name": "TokenCreated",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_templateAddress",
"type": "address"
}
],
"name": "add721TokenTemplate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_templateAddress",
"type": "address"
}
],
"name": "addTokenTemplate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint256",
"name": "templateIndex",
"type": "uint256"
},
{
"internalType": "string",
"name": "tokenURI",
"type": "string"
}
],
"internalType": "struct ERC721Factory.NftCreateData",
"name": "_NftCreateData",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "templateIndex",
"type": "uint256"
},
{
"internalType": "string[]",
"name": "strings",
"type": "string[]"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "bytess",
"type": "bytes[]"
}
],
"internalType": "struct ERC721Factory.ErcCreateData",
"name": "_ErcCreateData",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "dispenserAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "maxTokens",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxBalance",
"type": "uint256"
},
{
"internalType": "bool",
"name": "withMint",
"type": "bool"
},
{
"internalType": "address",
"name": "allowedSwapper",
"type": "address"
}
],
"internalType": "struct ERC721Factory.DispenserData",
"name": "_DispenserData",
"type": "tuple"
}
],
"name": "createNftErcWithDispenser",
"outputs": [
{
"internalType": "address",
"name": "erc721Address",
"type": "address"
},
{
"internalType": "address",
"name": "erc20Address",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint256",
"name": "templateIndex",
"type": "uint256"
},
{
"internalType": "string",
"name": "tokenURI",
"type": "string"
}
],
"internalType": "struct ERC721Factory.NftCreateData",
"name": "_NftCreateData",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "templateIndex",
"type": "uint256"
},
{
"internalType": "string[]",
"name": "strings",
"type": "string[]"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "bytess",
"type": "bytes[]"
}
],
"internalType": "struct ERC721Factory.ErcCreateData",
"name": "_ErcCreateData",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "fixedPriceAddress",
"type": "address"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints",
"type": "uint256[]"
}
],
"internalType": "struct ERC721Factory.FixedData",
"name": "_FixedData",
"type": "tuple"
}
],
"name": "createNftErcWithFixedRate",
"outputs": [
{
"internalType": "address",
"name": "erc721Address",
"type": "address"
},
{
"internalType": "address",
"name": "erc20Address",
"type": "address"
},
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint256",
"name": "templateIndex",
"type": "uint256"
},
{
"internalType": "string",
"name": "tokenURI",
"type": "string"
}
],
"internalType": "struct ERC721Factory.NftCreateData",
"name": "_NftCreateData",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "templateIndex",
"type": "uint256"
},
{
"internalType": "string[]",
"name": "strings",
"type": "string[]"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "bytess",
"type": "bytes[]"
}
],
"internalType": "struct ERC721Factory.ErcCreateData",
"name": "_ErcCreateData",
"type": "tuple"
},
{
"components": [
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "ssParams",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "swapFees",
"type": "uint256[]"
}
],
"internalType": "struct ERC721Factory.PoolData",
"name": "_PoolData",
"type": "tuple"
}
],
"name": "createNftErcWithPool",
"outputs": [
{
"internalType": "address",
"name": "erc721Address",
"type": "address"
},
{
"internalType": "address",
"name": "erc20Address",
"type": "address"
},
{
"internalType": "address",
"name": "poolAddress",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint256",
"name": "templateIndex",
"type": "uint256"
},
{
"internalType": "string",
"name": "tokenURI",
"type": "string"
}
],
"internalType": "struct ERC721Factory.NftCreateData",
"name": "_NftCreateData",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "templateIndex",
"type": "uint256"
},
{
"internalType": "string[]",
"name": "strings",
"type": "string[]"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "bytess",
"type": "bytes[]"
}
],
"internalType": "struct ERC721Factory.ErcCreateData",
"name": "_ErcCreateData",
"type": "tuple"
}
],
"name": "createNftWithErc",
"outputs": [
{
"internalType": "address",
"name": "erc721Address",
"type": "address"
},
{
"internalType": "address",
"name": "erc20Address",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_templateIndex",
"type": "uint256"
},
{
"internalType": "string[]",
"name": "strings",
"type": "string[]"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "bytess",
"type": "bytes[]"
}
],
"name": "createToken",
"outputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint256",
"name": "_templateIndex",
"type": "uint256"
},
{
"internalType": "address",
"name": "additionalERC20Deployer",
"type": "address"
},
{
"internalType": "string",
"name": "tokenURI",
"type": "string"
}
],
"name": "deployERC721Contract",
"outputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "disable721TokenTemplate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "disableTokenTemplate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "erc20List",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "erc721List",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentNFTCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentNFTTemplateCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentTemplateCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentTokenCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getNFTTemplate",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "templateAddress",
"type": "address"
},
{
"internalType": "bool",
"name": "isActive",
"type": "bool"
}
],
"internalType": "struct ERC721Factory.Template",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getTokenTemplate",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "templateAddress",
"type": "address"
},
{
"internalType": "bool",
"name": "isActive",
"type": "bool"
}
],
"internalType": "struct ERC721Factory.Template",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "nftTemplateList",
"outputs": [
{
"internalType": "address",
"name": "templateAddress",
"type": "address"
},
{
"internalType": "bool",
"name": "isActive",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "reactivate721TokenTemplate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "reactivateTokenTemplate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "router",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "address",
"name": "consumer",
"type": "address"
},
{
"internalType": "uint256",
"name": "serviceIndex",
"type": "uint256"
},
{
"internalType": "address",
"name": "providerFeeAddress",
"type": "address"
},
{
"internalType": "address",
"name": "providerFeeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "providerFeeAmount",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "providerData",
"type": "bytes"
}
],
"internalType": "struct ERC721Factory.tokenOrder[]",
"name": "orders",
"type": "tuple[]"
}
],
"name": "startMultipleTokenOrder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "templateCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "templateList",
"outputs": [
{
"internalType": "address",
"name": "templateAddress",
"type": "address"
},
{
"internalType": "bool",
"name": "isActive",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040526000600a553480156200001657600080fd5b5060405162003cfb38038062003cfb8339810160408190526200003991620005ab565b6200004433620001be565b600180556001600160a01b038316158015906200006957506001600160a01b03821615155b80156200007e57506001600160a01b03841615155b620001065760405162461bcd60e51b815260206004820152604760248201527f4552433732314454466163746f72793a20496e76616c69642074656d706c617460448201527f6520746f6b656e2f636f6d6d756e6974792066656520636f6c6c6563746f72206064820152666164647265737360c81b608482015260a4015b60405180910390fd5b6001600160a01b0381166200016e5760405162461bcd60e51b815260206004820152602760248201527f4552433732314454466163746f72793a20496e76616c696420726f75746572206044820152666164647265737360c81b6064820152608401620000fd565b62000179846200020e565b506200018583620003d1565b50600c80546001600160a01b039283166001600160a01b03199182161790915560028054939092169216919091179055506200062f9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080546001600160a01b031633146200025a5760405162461bcd60e51b8152602060048201819052602482015260008051602062003cdb8339815191526044820152606401620000fd565b6001600160a01b038216620002d85760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f5745440000000000000000006064820152608401620000fd565b813b620003285760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e545241435400000000006044820152606401620000fd565b6001600560008282546200033d919062000608565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a350506005545b919050565b600080546001600160a01b031633146200041d5760405162461bcd60e51b8152602060048201819052602482015260008051602062003cdb8339815191526044820152606401620000fd565b6001600160a01b0382166200049b5760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c61746520616460448201527f6472657373283029204e4f5420414c4c4f5745440000000000000000000000006064820152608401620000fd565b813b620004eb5760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e54524143540000000000006044820152606401620000fd565b6001600b600082825462000500919062000608565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b54919050565b80516001600160a01b0381168114620003cc57600080fd5b60008060008060808587031215620005c257600080fd5b620005cd8562000593565b9350620005dd6020860162000593565b9250620005ed6040860162000593565b9150620005fd6060860162000593565b905092959194509250565b600082198211156200062a57634e487b7160e01b600052601160045260246000fd5b500190565b61369c806200063f6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638da5cb5b116100f9578063c6cf868a11610097578063e5fc01f011610071578063e5fc01f0146104ff578063f2fde38b14610507578063f887ea401461051a578063fd024d6a1461052d57600080fd5b8063c6cf868a14610487578063ca4abc691461048f578063e3491099146104cc57600080fd5b806395c60305116100d357806395c6030514610420578063a33ef2a614610428578063b9cd22641461043b578063bbf8d71f1461047457600080fd5b80638da5cb5b146103c75780638f6051af146103d857806394051699146103eb57600080fd5b80635de329fd116101665780637b20bccf116101405780637b20bccf1461033a578063809d81051461034d57806382c442041461036057806389898869146103b457600080fd5b80635de329fd146102f6578063715018a61461030957806372f670f01461031157600080fd5b806326705c3c116101a257806326705c3c1461024f5780633315efd114610266578063557fcfb0146102c35780635c705982146102ee57600080fd5b8063042ab9b3146101c95780630ffda88714610207578063226e76151461021c575b600080fd5b6101dc6101d736600461267a565b610540565b6040805182516001600160a01b03168152602092830151151592810192909252015b60405180910390f35b61021a61021536600461267a565b6105c7565b005b61023f61022a3660046126b3565b60096020526000908152604090205460ff1681565b60405190151581526020016101fe565b610258600b5481565b6040519081526020016101fe565b6101dc61027436600461267a565b6040805180820190915260008082526020820152506000908152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff1615159082015290565b6102d66102d136600461291f565b61060c565b6040516001600160a01b0390911681526020016101fe565b600354610258565b61021a610304366004612a58565b6106ad565b61021a610b97565b6102d661031f3660046126b3565b6008602052600090815260409020546001600160a01b031681565b6102586103483660046126b3565b610bcd565b61021a61035b36600461267a565b610d60565b61039561036e36600461267a565b6006602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b0390931683529015156020830152016101fe565b6102d66103c2366004612bc8565b610dd2565b6000546001600160a01b03166102d6565b6102586103e63660046126b3565b6110a3565b6103956103f936600461267a565b6007602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b600b54610258565b61021a61043636600461267a565b61123e565b61044e610449366004612c9d565b6112b6565b604080516001600160a01b039485168152939092166020840152908201526060016101fe565b61021a61048236600461267a565b611567565b600a54610258565b6104a261049d366004612c9d565b611623565b604080516001600160a01b03948516815292841660208401529216918101919091526060016101fe565b6104df6104da366004612d24565b61188b565b604080516001600160a01b039384168152929091166020830152016101fe565b600554610258565b61021a6105153660046126b3565b611a63565b600c546102d6906001600160a01b031681565b6104df61053b366004612d87565b611afe565b60408051808201909152600080825260208201526000828152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff16151590820152600b54831180159061059c57508215155b6105c15760405162461bcd60e51b81526004016105b890612dfb565b60405180910390fd5b92915050565b6000546001600160a01b031633146105f15760405162461bcd60e51b81526004016105b890612e44565b6000908152600760205260409020805460ff60a01b19169055565b3360008181526008602052604081205490916001600160a01b03909116146106955760405162461bcd60e51b815260206004820152603660248201527f455243373231466163746f72793a204f4e4c592045524337323120494e5354416044820152754e43452046524f4d20455243373231464143544f525960501b60648201526084016105b8565b6106a3868686868633611d94565b9695505050505050565b600260015414156106d05760405162461bcd60e51b81526004016105b890612e79565b60026001558051603210156107275760405162461bcd60e51b815260206004820152601e60248201527f455243373231466163746f72793a20546f6f204d616e79204f7264657273000060448201526064016105b8565b60005b8151811015610b8f57600080600084848151811061074a5761074a612eb0565b6020026020010151600001516001600160a01b031663397b37436040518163ffffffff1660e01b8152600401606060405180830381865afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b79190612ec6565b9250925092506000811180156107d557506001600160a01b03821615155b80156107e957506001600160a01b03831615155b15610835576108036001600160a01b038316333084612079565b61083585858151811061081857610818612eb0565b6020908102919091010151516001600160a01b03841690836120ea565b600085858151811061084957610849612eb0565b602002602001015160a00151118015610892575060006001600160a01b031685858151811061087a5761087a612eb0565b6020026020010151608001516001600160a01b031614155b80156108ce575060006001600160a01b03168585815181106108b6576108b6612eb0565b6020026020010151606001516001600160a01b031614155b156109a25761092d33308787815181106108ea576108ea612eb0565b602002602001015160a0015188888151811061090857610908612eb0565b6020026020010151608001516001600160a01b0316612079909392919063ffffffff16565b6109a285858151811061094257610942612eb0565b60200260200101516000015186868151811061096057610960612eb0565b602002602001015160a0015187878151811061097e5761097e612eb0565b6020026020010151608001516001600160a01b03166120ea9092919063ffffffff16565b6109e73330670de0b6b3a76400008888815181106109c2576109c2612eb0565b6020026020010151600001516001600160a01b0316612079909392919063ffffffff16565b8484815181106109f9576109f9612eb0565b6020026020010151600001516001600160a01b0316639b4f44b6868681518110610a2557610a25612eb0565b602002602001015160200151878781518110610a4357610a43612eb0565b602002602001015160400151888881518110610a6157610a61612eb0565b602002602001015160600151898981518110610a7f57610a7f612eb0565b6020026020010151608001518a8a81518110610a9d57610a9d612eb0565b602002602001015160a001518b8b81518110610abb57610abb612eb0565b602002602001015160c001518c8c81518110610ad957610ad9612eb0565b602002602001015160e001518d8d81518110610af757610af7612eb0565b602002602001015161010001518e8e81518110610b1657610b16612eb0565b602002602001015161012001516040518a63ffffffff1660e01b8152600401610b4799989796959493929190612f61565b600060405180830381600087803b158015610b6157600080fd5b505af1158015610b75573d6000803e3d6000fd5b505050505050508080610b8790612fdd565b91505061072a565b505060018055565b6000546001600160a01b03163314610bc15760405162461bcd60e51b81526004016105b890612e44565b610bcb600061219c565b565b600080546001600160a01b03163314610bf85760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b038216610c6b5760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c617465206164604482015273191c995cdcca0c0a481393d50810531313d5d15160621b60648201526084016105b8565b813b610cb95760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e545241435400000000000060448201526064016105b8565b6001600b6000828254610ccc9190612ff8565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b545b919050565b6000546001600160a01b03163314610d8a5760405162461bcd60e51b81526004016105b890612e44565b6005548111158015610d9b57508015155b610db75760405162461bcd60e51b81526004016105b890613010565b6000908152600660205260409020805460ff60a01b19169055565b60006005548411158015610de557508315155b610e015760405162461bcd60e51b81526004016105b890613010565b6000848152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052610e9d5760405162461bcd60e51b815260206004820152602e60248201527f4552433732314454466163746f72793a20455243373231546f6b656e2054656d60448201526d1c1b185d1948191a5cd8589b195960921b60648201526084016105b8565b8051610ea8906121ec565b91506001600160a01b038216610f28576040805162461bcd60e51b81526020600482015260248101919091527f4552433732314454466163746f72793a204661696c656420746f20706572666f60448201527f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656e60648201526084016105b8565b6001600160a01b0382166000818152600860205260409081902080546001600160a01b03191683179055516370c166d760e01b81528391906370c166d790610f7e9033908c908c9030908c908c9060040161305c565b6020604051808303816000875af1158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906130d0565b61102a5760405162461bcd60e51b815260206004820152603460248201527f4552433732314454466163746f72793a20556e61626c6520746f20696e697469604482015273616c697a6520746f6b656e20696e7374616e636560601b60648201526084016105b8565b81600001516001600160a01b0316836001600160a01b03167f46f5e3cee761854fc3892024ae7aa2c832007dff583603ce093f177ebd9c4c968a338b8960405161107794939291906130ed565b60405180910390a36001600360008282546110929190612ff8565b909155509298975050505050505050565b600080546001600160a01b031633146110ce5760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b03821661114a5760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f57454400000000000000000060648201526084016105b8565b813b6111985760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e5452414354000000000060448201526064016105b8565b6001600560008282546111ab9190612ff8565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a35050600554919050565b6000546001600160a01b031633146112685760405162461bcd60e51b81526004016105b890612e44565b600554811115801561127957508015155b6112955760405162461bcd60e51b81526004016105b890613010565b6000908152600660205260409020805460ff60a01b1916600160a01b179055565b6000806000600260015414156112de5760405162461bcd60e51b81526004016105b890612e79565b60026001556113b36112f08780613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611332925050506020890189613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408901353061137960608c018c613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610dd292505050565b92506001600160a01b03831663e38d7cad86356113d36020890189613182565b6113e060408b018b613182565b6113ed60608d018d613182565b6113fa60808f018f613182565b6040518a63ffffffff1660e01b815260040161141e99989796959493929190613315565b6020604051808303816000875af115801561143d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146191906133b6565b91506001600160a01b038216638b96412b61147f60208701876126b3565b61148c6020880188613182565b61149960408a018a613182565b6040518663ffffffff1660e01b81526004016114b99594939291906133d3565b6020604051808303816000875af11580156114d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc9190613417565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0384169063fe1ec88090602401600060405180830381600087803b15801561154057600080fd5b505af1158015611554573d6000803e3d6000fd5b5050600180555092969195509350915050565b6000546001600160a01b031633146115915760405162461bcd60e51b81526004016105b890612e44565b600b5481111580156115a257508015155b6116025760405162461bcd60e51b815260206004820152602b60248201527f45524332304454466163746f72793a2054656d706c61746520696e646578206460448201526a1bd95cdb9d08195e1a5cdd60aa1b60648201526084016105b8565b6000908152600760205260409020805460ff60a01b1916600160a01b179055565b60008060006002600154141561164b5760405162461bcd60e51b81526004016105b890612e79565b60026001556116be33306116626020880188613182565b600481811061167357611673612eb0565b602002919091013590506116878880613182565b600181811061169857611698612eb0565b90506020020160208101906116ad91906126b3565b6001600160a01b0316929190612079565b6116cb6112f08780613135565b92506001600160a01b03831663e38d7cad86356116eb6020890189613182565b6116f860408b018b613182565b61170560608d018d613182565b61171260808f018f613182565b6040518a63ffffffff1660e01b815260040161173699989796959493929190613315565b6020604051808303816000875af1158015611755573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177991906133b6565b600c549092506117f4906001600160a01b03166117996020870187613182565b60048181106117aa576117aa612eb0565b602002919091013590506117be8780613182565b60018181106117cf576117cf612eb0565b90506020020160208101906117e491906126b3565b6001600160a01b031691906120ea565b6001600160a01b038216635bfe4da06118106020870187613182565b61181d6040890189613182565b6118278a80613182565b6040518763ffffffff1660e01b815260040161184896959493929190613430565b6020604051808303816000875af1158015611867573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc91906133b6565b600080600260015414156118b15760405162461bcd60e51b81526004016105b890612e79565b600260015561194c6118c38580613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611905925050506020870187613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408701353061137960608a018a613135565b91506001600160a01b03821663e38d7cad843561196c6020870187613182565b6119796040890189613182565b61198660608b018b613182565b61199360808d018d613182565b6040518a63ffffffff1660e01b81526004016119b799989796959493929190613315565b6020604051808303816000875af11580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa91906133b6565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0383169063fe1ec88090602401600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505060018055509194909350915050565b6000546001600160a01b03163314611a8d5760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b038116611af25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b8565b611afb8161219c565b50565b60008060026001541415611b245760405162461bcd60e51b81526004016105b890612e79565b6002600155611bbf611b368680613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b78925050506020880188613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408801353061137960608b018b613135565b91506001600160a01b03821663e38d7cad8535611bdf6020880188613182565b611bec60408a018a613182565b611bf960608c018c613182565b611c0660808e018e613182565b6040518a63ffffffff1660e01b8152600401611c2a99989796959493929190613315565b6020604051808303816000875af1158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6d91906133b6565b90506001600160a01b03811663191c918a611c8b60208601866126b3565b60208601356040870135611ca56080890160608a01613479565b611cb560a08a0160808b016126b3565b60405160e087901b6001600160e01b03191681526001600160a01b0395861660048201526024810194909452604484019290925215156064830152909116608482015260a401600060405180830381600087803b158015611d1557600080fd5b505af1158015611d29573d6000803e3d6000fd5b50506040516301fc3d9160e71b81523060048201526001600160a01b038516925063fe1ec8809150602401600060405180830381600087803b158015611d6e57600080fd5b505af1158015611d82573d6000803e3d6000fd5b50506001805550919590945092505050565b600083600081518110611da957611da9612eb0565b602002602001015160001415611e0f5760405162461bcd60e51b815260206004820152602560248201527f4552433230466163746f72793a207a65726f20636170206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016105b8565b600b548711158015611e2057508615155b611e3c5760405162461bcd60e51b81526004016105b890612dfb565b6000878152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052611ed55760405162461bcd60e51b815260206004820152602b60248201527f4552433230466163746f72793a20455243373231546f6b656e2054656d706c6160448201526a1d1948191a5cd8589b195960aa1b60648201526084016105b8565b8051611ee0906121ec565b6001600160a01b0381166000818152600960205260409020805460ff19166001179055909250611f785760405162461bcd60e51b815260206004820152603e60248201527f455243373231466163746f72793a204661696c656420746f20706572666f726d60448201527f206d696e696d616c206465706c6f79206f662061206e657720746f6b656e000060648201526084016105b8565b80600001516001600160a01b0316826001600160a01b03167f567699dbf7c5f63a51a42fd451f5e065bca0dfc723adf2cc498bbb7cfb780b9089600081518110611fc457611fc4612eb0565b60200260200101518a600181518110611fdf57611fdf612eb0565b602002602001015189600081518110611ffa57611ffa612eb0565b6020026020010151886040516120139493929190613496565b60405180910390a36001600a600082825461202e9190612ff8565b90915550506040805160a081018252888152602081018890529081018690526001600160a01b03841660808201526060810185905261206d838261227c565b50509695505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526120e49085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612429565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215f9190613417565b6121699190612ff8565b6040516001600160a01b0385166024820152604481018290529091506120e490859063095ea7b360e01b906064016120ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b60408051600380825260808201909252839160009190602082016060803683370190505090508260800151816000815181106122ba576122ba612eb0565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106122eb576122eb612eb0565b6001600160a01b039283166020918202929092010152600c5482519116908290600290811061231c5761231c612eb0565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663b3998be08460000151856020015184876040015188606001516040518663ffffffff1660e01b815260040161238095949392919061358e565b6020604051808303816000875af115801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c391906130d0565b6120e45760405162461bcd60e51b815260206004820152603160248201527f4552433230466163746f72793a20556e61626c6520746f20696e697469616c696044820152707a6520746f6b656e20696e7374616e636560781b60648201526084016105b8565b600061247e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125009092919063ffffffff16565b8051909150156124fb578080602001905181019061249c91906130d0565b6124fb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105b8565b505050565b606061250f8484600085612519565b90505b9392505050565b60608247101561257a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105b8565b843b6125c85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105b8565b600080866001600160a01b031685876040516125e49190613637565b60006040518083038185875af1925050503d8060008114612621576040519150601f19603f3d011682016040523d82523d6000602084013e612626565b606091505b5091509150612636828286612641565b979650505050505050565b60608315612650575081612512565b8251156126605782518084602001fd5b8160405162461bcd60e51b81526004016105b89190613653565b60006020828403121561268c57600080fd5b5035919050565b6001600160a01b0381168114611afb57600080fd5b8035610d5b81612693565b6000602082840312156126c557600080fd5b813561251281612693565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715612709576127096126d0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612737576127376126d0565b604052919050565b60006001600160401b03821115612758576127586126d0565b5060051b60200190565b600082601f83011261277357600080fd5b81356001600160401b0381111561278c5761278c6126d0565b61279f601f8201601f191660200161270f565b8181528460208386010111156127b457600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126127e257600080fd5b813560206127f76127f28361273f565b61270f565b82815260059290921b8401810191818101908684111561281657600080fd5b8286015b8481101561283a57803561282d81612693565b835291830191830161281a565b509695505050505050565b600082601f83011261285657600080fd5b813560206128666127f28361273f565b82815260059290921b8401810191818101908684111561288557600080fd5b8286015b8481101561283a5780358352918301918301612889565b600082601f8301126128b157600080fd5b813560206128c16127f28361273f565b82815260059290921b840181019181810190868411156128e057600080fd5b8286015b8481101561283a5780356001600160401b038111156129035760008081fd5b6129118986838b0101612762565b8452509183019183016128e4565b600080600080600060a0868803121561293757600080fd5b853594506020808701356001600160401b038082111561295657600080fd5b818901915089601f83011261296a57600080fd5b81356129786127f28261273f565b81815260059190911b8301840190848101908c83111561299757600080fd5b8585015b838110156129cf578035858111156129b35760008081fd5b6129c18f89838a0101612762565b84525091860191860161299b565b509850505060408901359250808311156129e857600080fd5b6129f48a848b016127d1565b95506060890135925080831115612a0a57600080fd5b612a168a848b01612845565b94506080890135925080831115612a2c57600080fd5b5050612a3a888289016128a0565b9150509295509295909350565b803560ff81168114610d5b57600080fd5b60006020808385031215612a6b57600080fd5b82356001600160401b0380821115612a8257600080fd5b818501915085601f830112612a9657600080fd5b8135612aa46127f28261273f565b81815260059190911b83018401908481019088831115612ac357600080fd5b8585015b83811015612bbb57803585811115612adf5760008081fd5b8601610140818c03601f1901811315612af85760008081fd5b612b006126e6565b612b0b8a84016126a8565b81526040612b1a8185016126a8565b8b8301526060808501358284015260809150612b378286016126a8565b9083015260a0612b488582016126a8565b8284015260c0915081850135818401525060e0612b66818601612a47565b828401526101009150818501358184015250610120808501358284015283850135935089841115612b9957600091508182fd5b612ba78f8d86880101612762565b908301525085525050918601918601612ac7565b5098975050505050505050565b600080600080600060a08688031215612be057600080fd5b85356001600160401b0380821115612bf757600080fd5b612c0389838a01612762565b96506020880135915080821115612c1957600080fd5b612c2589838a01612762565b95506040880135945060608801359150612c3e82612693565b90925060808701359080821115612c5457600080fd5b50612a3a88828901612762565b600060808284031215612c7357600080fd5b50919050565b600060a08284031215612c7357600080fd5b600060608284031215612c7357600080fd5b600080600060608486031215612cb257600080fd5b83356001600160401b0380821115612cc957600080fd5b612cd587838801612c61565b94506020860135915080821115612ceb57600080fd5b612cf787838801612c79565b93506040860135915080821115612d0d57600080fd5b50612d1a86828701612c8b565b9150509250925092565b60008060408385031215612d3757600080fd5b82356001600160401b0380821115612d4e57600080fd5b612d5a86838701612c61565b93506020850135915080821115612d7057600080fd5b50612d7d85828601612c79565b9150509250929050565b600080600060e08486031215612d9c57600080fd5b83356001600160401b0380821115612db357600080fd5b612dbf87838801612c61565b94506020860135915080821115612dd557600080fd5b50612de286828701612c79565b925050612df28560408601612c79565b90509250925092565b60208082526029908201527f4552433230466163746f72793a2054656d706c61746520696e64657820646f656040820152681cdb9d08195e1a5cdd60ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215612edb57600080fd5b8351612ee681612693565b6020850151909350612ef781612693565b80925050604084015190509250925092565b60005b83811015612f24578181015183820152602001612f0c565b838111156120e45750506000910152565b60008151808452612f4d816020860160208601612f09565b601f01601f19169290920160200192915050565b600061012060018060a01b03808d1684528b6020850152808b166040850152808a1660608501525087608084015260ff871660a08401528560c08401528460e084015280610100840152612fb781840185612f35565b9c9b505050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415612ff157612ff1612fc7565b5060010190565b6000821982111561300b5761300b612fc7565b500190565b6020808252602c908201527f4552433732314454466163746f72793a2054656d706c61746520696e6465782060408201526b191bd95cdb9d08195e1a5cdd60a21b606082015260800190565b600060018060a01b03808916835260c0602084015261307e60c0840189612f35565b83810360408501526130908189612f35565b90508187166060850152818616608085015283810360a08501526130b48186612f35565b9a9950505050505050505050565b8015158114611afb57600080fd5b6000602082840312156130e257600080fd5b8151612512816130c2565b6080815260006131006080830187612f35565b6001600160a01b038616602084015282810360408401526131218186612f35565b905082810360608401526126368185612f35565b6000808335601e1984360301811261314c57600080fd5b8301803591506001600160401b0382111561316657600080fd5b60200191503681900382131561317b57600080fd5b9250929050565b6000808335601e1984360301811261319957600080fd5b8301803591506001600160401b038211156131b357600080fd5b6020019150600581901b360382131561317b57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261320b57600080fd5b83016020810192503590506001600160401b0381111561322a57600080fd5b80360383131561317b57600080fd5b8183526000602080850194508260005b8581101561327757813561325c81612693565b6001600160a01b031687529582019590820190600101613249565b509495945050505050565b81835260006001600160fb1b0383111561329b57600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835260006020808501808196508560051b810191508460005b878110156133085782840389526132e982886131f4565b6132f48682846131cb565b9a87019a95505050908401906001016132d2565b5091979650505050505050565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c8110156133765785840360bf19018352613354828f6131f4565b61335f8682846131cb565b955050506020928301929190910190600101613339565b505050828103604084015261338c81898b613239565b905082810360608401526133a1818789613282565b90508281036080840152612fb78185876132b8565b6000602082840312156133c857600080fd5b815161251281612693565b6001600160a01b03861681526060602082018190526000906133f89083018688613239565b828103604084015261340b818587613282565b98975050505050505050565b60006020828403121561342957600080fd5b5051919050565b60608152600061344460608301888a613282565b8281036020840152613457818789613282565b9050828103604084015261346c818587613239565b9998505050505050505050565b60006020828403121561348b57600080fd5b8135612512816130c2565b6080815260006134a96080830187612f35565b82810360208401526134bb8187612f35565b604084019590955250506001600160a01b039190911660609091015292915050565b600081518084526020808501945080840160005b838110156132775781516001600160a01b0316875295820195908201906001016134f1565b600081518084526020808501945080840160005b838110156132775781518752958201959082019060010161352a565b600081518084526020808501808196508360051b8101915082860160005b8581101561330857828403895261357c848351612f35565b98850198935090840190600101613564565b600060a0820160a0835280885180835260c08501915060c08160051b86010192506020808b0160005b838110156135e55760bf198887030185526135d3868351612f35565b955093820193908201906001016135b7565b5050858403818701525050506135fb81886134dd565b9050828103604084015261360f81876134dd565b905082810360608401526136238186613516565b9050828103608084015261340b8185613546565b60008251613649818460208701612f09565b9190910192915050565b6020815260006125126020830184612f3556fea2646970667358221220f4abf2a09272c4e73999373d321776187583bec5d10085cc5b62620c7317b4f964736f6c634300080a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80638da5cb5b116100f9578063c6cf868a11610097578063e5fc01f011610071578063e5fc01f0146104ff578063f2fde38b14610507578063f887ea401461051a578063fd024d6a1461052d57600080fd5b8063c6cf868a14610487578063ca4abc691461048f578063e3491099146104cc57600080fd5b806395c60305116100d357806395c6030514610420578063a33ef2a614610428578063b9cd22641461043b578063bbf8d71f1461047457600080fd5b80638da5cb5b146103c75780638f6051af146103d857806394051699146103eb57600080fd5b80635de329fd116101665780637b20bccf116101405780637b20bccf1461033a578063809d81051461034d57806382c442041461036057806389898869146103b457600080fd5b80635de329fd146102f6578063715018a61461030957806372f670f01461031157600080fd5b806326705c3c116101a257806326705c3c1461024f5780633315efd114610266578063557fcfb0146102c35780635c705982146102ee57600080fd5b8063042ab9b3146101c95780630ffda88714610207578063226e76151461021c575b600080fd5b6101dc6101d736600461267a565b610540565b6040805182516001600160a01b03168152602092830151151592810192909252015b60405180910390f35b61021a61021536600461267a565b6105c7565b005b61023f61022a3660046126b3565b60096020526000908152604090205460ff1681565b60405190151581526020016101fe565b610258600b5481565b6040519081526020016101fe565b6101dc61027436600461267a565b6040805180820190915260008082526020820152506000908152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff1615159082015290565b6102d66102d136600461291f565b61060c565b6040516001600160a01b0390911681526020016101fe565b600354610258565b61021a610304366004612a58565b6106ad565b61021a610b97565b6102d661031f3660046126b3565b6008602052600090815260409020546001600160a01b031681565b6102586103483660046126b3565b610bcd565b61021a61035b36600461267a565b610d60565b61039561036e36600461267a565b6006602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b0390931683529015156020830152016101fe565b6102d66103c2366004612bc8565b610dd2565b6000546001600160a01b03166102d6565b6102586103e63660046126b3565b6110a3565b6103956103f936600461267a565b6007602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b600b54610258565b61021a61043636600461267a565b61123e565b61044e610449366004612c9d565b6112b6565b604080516001600160a01b039485168152939092166020840152908201526060016101fe565b61021a61048236600461267a565b611567565b600a54610258565b6104a261049d366004612c9d565b611623565b604080516001600160a01b03948516815292841660208401529216918101919091526060016101fe565b6104df6104da366004612d24565b61188b565b604080516001600160a01b039384168152929091166020830152016101fe565b600554610258565b61021a6105153660046126b3565b611a63565b600c546102d6906001600160a01b031681565b6104df61053b366004612d87565b611afe565b60408051808201909152600080825260208201526000828152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff16151590820152600b54831180159061059c57508215155b6105c15760405162461bcd60e51b81526004016105b890612dfb565b60405180910390fd5b92915050565b6000546001600160a01b031633146105f15760405162461bcd60e51b81526004016105b890612e44565b6000908152600760205260409020805460ff60a01b19169055565b3360008181526008602052604081205490916001600160a01b03909116146106955760405162461bcd60e51b815260206004820152603660248201527f455243373231466163746f72793a204f4e4c592045524337323120494e5354416044820152754e43452046524f4d20455243373231464143544f525960501b60648201526084016105b8565b6106a3868686868633611d94565b9695505050505050565b600260015414156106d05760405162461bcd60e51b81526004016105b890612e79565b60026001558051603210156107275760405162461bcd60e51b815260206004820152601e60248201527f455243373231466163746f72793a20546f6f204d616e79204f7264657273000060448201526064016105b8565b60005b8151811015610b8f57600080600084848151811061074a5761074a612eb0565b6020026020010151600001516001600160a01b031663397b37436040518163ffffffff1660e01b8152600401606060405180830381865afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b79190612ec6565b9250925092506000811180156107d557506001600160a01b03821615155b80156107e957506001600160a01b03831615155b15610835576108036001600160a01b038316333084612079565b61083585858151811061081857610818612eb0565b6020908102919091010151516001600160a01b03841690836120ea565b600085858151811061084957610849612eb0565b602002602001015160a00151118015610892575060006001600160a01b031685858151811061087a5761087a612eb0565b6020026020010151608001516001600160a01b031614155b80156108ce575060006001600160a01b03168585815181106108b6576108b6612eb0565b6020026020010151606001516001600160a01b031614155b156109a25761092d33308787815181106108ea576108ea612eb0565b602002602001015160a0015188888151811061090857610908612eb0565b6020026020010151608001516001600160a01b0316612079909392919063ffffffff16565b6109a285858151811061094257610942612eb0565b60200260200101516000015186868151811061096057610960612eb0565b602002602001015160a0015187878151811061097e5761097e612eb0565b6020026020010151608001516001600160a01b03166120ea9092919063ffffffff16565b6109e73330670de0b6b3a76400008888815181106109c2576109c2612eb0565b6020026020010151600001516001600160a01b0316612079909392919063ffffffff16565b8484815181106109f9576109f9612eb0565b6020026020010151600001516001600160a01b0316639b4f44b6868681518110610a2557610a25612eb0565b602002602001015160200151878781518110610a4357610a43612eb0565b602002602001015160400151888881518110610a6157610a61612eb0565b602002602001015160600151898981518110610a7f57610a7f612eb0565b6020026020010151608001518a8a81518110610a9d57610a9d612eb0565b602002602001015160a001518b8b81518110610abb57610abb612eb0565b602002602001015160c001518c8c81518110610ad957610ad9612eb0565b602002602001015160e001518d8d81518110610af757610af7612eb0565b602002602001015161010001518e8e81518110610b1657610b16612eb0565b602002602001015161012001516040518a63ffffffff1660e01b8152600401610b4799989796959493929190612f61565b600060405180830381600087803b158015610b6157600080fd5b505af1158015610b75573d6000803e3d6000fd5b505050505050508080610b8790612fdd565b91505061072a565b505060018055565b6000546001600160a01b03163314610bc15760405162461bcd60e51b81526004016105b890612e44565b610bcb600061219c565b565b600080546001600160a01b03163314610bf85760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b038216610c6b5760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c617465206164604482015273191c995cdcca0c0a481393d50810531313d5d15160621b60648201526084016105b8565b813b610cb95760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e545241435400000000000060448201526064016105b8565b6001600b6000828254610ccc9190612ff8565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b545b919050565b6000546001600160a01b03163314610d8a5760405162461bcd60e51b81526004016105b890612e44565b6005548111158015610d9b57508015155b610db75760405162461bcd60e51b81526004016105b890613010565b6000908152600660205260409020805460ff60a01b19169055565b60006005548411158015610de557508315155b610e015760405162461bcd60e51b81526004016105b890613010565b6000848152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052610e9d5760405162461bcd60e51b815260206004820152602e60248201527f4552433732314454466163746f72793a20455243373231546f6b656e2054656d60448201526d1c1b185d1948191a5cd8589b195960921b60648201526084016105b8565b8051610ea8906121ec565b91506001600160a01b038216610f28576040805162461bcd60e51b81526020600482015260248101919091527f4552433732314454466163746f72793a204661696c656420746f20706572666f60448201527f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656e60648201526084016105b8565b6001600160a01b0382166000818152600860205260409081902080546001600160a01b03191683179055516370c166d760e01b81528391906370c166d790610f7e9033908c908c9030908c908c9060040161305c565b6020604051808303816000875af1158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906130d0565b61102a5760405162461bcd60e51b815260206004820152603460248201527f4552433732314454466163746f72793a20556e61626c6520746f20696e697469604482015273616c697a6520746f6b656e20696e7374616e636560601b60648201526084016105b8565b81600001516001600160a01b0316836001600160a01b03167f46f5e3cee761854fc3892024ae7aa2c832007dff583603ce093f177ebd9c4c968a338b8960405161107794939291906130ed565b60405180910390a36001600360008282546110929190612ff8565b909155509298975050505050505050565b600080546001600160a01b031633146110ce5760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b03821661114a5760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f57454400000000000000000060648201526084016105b8565b813b6111985760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e5452414354000000000060448201526064016105b8565b6001600560008282546111ab9190612ff8565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a35050600554919050565b6000546001600160a01b031633146112685760405162461bcd60e51b81526004016105b890612e44565b600554811115801561127957508015155b6112955760405162461bcd60e51b81526004016105b890613010565b6000908152600660205260409020805460ff60a01b1916600160a01b179055565b6000806000600260015414156112de5760405162461bcd60e51b81526004016105b890612e79565b60026001556113b36112f08780613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611332925050506020890189613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408901353061137960608c018c613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610dd292505050565b92506001600160a01b03831663e38d7cad86356113d36020890189613182565b6113e060408b018b613182565b6113ed60608d018d613182565b6113fa60808f018f613182565b6040518a63ffffffff1660e01b815260040161141e99989796959493929190613315565b6020604051808303816000875af115801561143d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146191906133b6565b91506001600160a01b038216638b96412b61147f60208701876126b3565b61148c6020880188613182565b61149960408a018a613182565b6040518663ffffffff1660e01b81526004016114b99594939291906133d3565b6020604051808303816000875af11580156114d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc9190613417565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0384169063fe1ec88090602401600060405180830381600087803b15801561154057600080fd5b505af1158015611554573d6000803e3d6000fd5b5050600180555092969195509350915050565b6000546001600160a01b031633146115915760405162461bcd60e51b81526004016105b890612e44565b600b5481111580156115a257508015155b6116025760405162461bcd60e51b815260206004820152602b60248201527f45524332304454466163746f72793a2054656d706c61746520696e646578206460448201526a1bd95cdb9d08195e1a5cdd60aa1b60648201526084016105b8565b6000908152600760205260409020805460ff60a01b1916600160a01b179055565b60008060006002600154141561164b5760405162461bcd60e51b81526004016105b890612e79565b60026001556116be33306116626020880188613182565b600481811061167357611673612eb0565b602002919091013590506116878880613182565b600181811061169857611698612eb0565b90506020020160208101906116ad91906126b3565b6001600160a01b0316929190612079565b6116cb6112f08780613135565b92506001600160a01b03831663e38d7cad86356116eb6020890189613182565b6116f860408b018b613182565b61170560608d018d613182565b61171260808f018f613182565b6040518a63ffffffff1660e01b815260040161173699989796959493929190613315565b6020604051808303816000875af1158015611755573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177991906133b6565b600c549092506117f4906001600160a01b03166117996020870187613182565b60048181106117aa576117aa612eb0565b602002919091013590506117be8780613182565b60018181106117cf576117cf612eb0565b90506020020160208101906117e491906126b3565b6001600160a01b031691906120ea565b6001600160a01b038216635bfe4da06118106020870187613182565b61181d6040890189613182565b6118278a80613182565b6040518763ffffffff1660e01b815260040161184896959493929190613430565b6020604051808303816000875af1158015611867573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc91906133b6565b600080600260015414156118b15760405162461bcd60e51b81526004016105b890612e79565b600260015561194c6118c38580613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611905925050506020870187613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408701353061137960608a018a613135565b91506001600160a01b03821663e38d7cad843561196c6020870187613182565b6119796040890189613182565b61198660608b018b613182565b61199360808d018d613182565b6040518a63ffffffff1660e01b81526004016119b799989796959493929190613315565b6020604051808303816000875af11580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa91906133b6565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0383169063fe1ec88090602401600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505060018055509194909350915050565b6000546001600160a01b03163314611a8d5760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b038116611af25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b8565b611afb8161219c565b50565b60008060026001541415611b245760405162461bcd60e51b81526004016105b890612e79565b6002600155611bbf611b368680613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b78925050506020880188613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408801353061137960608b018b613135565b91506001600160a01b03821663e38d7cad8535611bdf6020880188613182565b611bec60408a018a613182565b611bf960608c018c613182565b611c0660808e018e613182565b6040518a63ffffffff1660e01b8152600401611c2a99989796959493929190613315565b6020604051808303816000875af1158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6d91906133b6565b90506001600160a01b03811663191c918a611c8b60208601866126b3565b60208601356040870135611ca56080890160608a01613479565b611cb560a08a0160808b016126b3565b60405160e087901b6001600160e01b03191681526001600160a01b0395861660048201526024810194909452604484019290925215156064830152909116608482015260a401600060405180830381600087803b158015611d1557600080fd5b505af1158015611d29573d6000803e3d6000fd5b50506040516301fc3d9160e71b81523060048201526001600160a01b038516925063fe1ec8809150602401600060405180830381600087803b158015611d6e57600080fd5b505af1158015611d82573d6000803e3d6000fd5b50506001805550919590945092505050565b600083600081518110611da957611da9612eb0565b602002602001015160001415611e0f5760405162461bcd60e51b815260206004820152602560248201527f4552433230466163746f72793a207a65726f20636170206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016105b8565b600b548711158015611e2057508615155b611e3c5760405162461bcd60e51b81526004016105b890612dfb565b6000878152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052611ed55760405162461bcd60e51b815260206004820152602b60248201527f4552433230466163746f72793a20455243373231546f6b656e2054656d706c6160448201526a1d1948191a5cd8589b195960aa1b60648201526084016105b8565b8051611ee0906121ec565b6001600160a01b0381166000818152600960205260409020805460ff19166001179055909250611f785760405162461bcd60e51b815260206004820152603e60248201527f455243373231466163746f72793a204661696c656420746f20706572666f726d60448201527f206d696e696d616c206465706c6f79206f662061206e657720746f6b656e000060648201526084016105b8565b80600001516001600160a01b0316826001600160a01b03167f567699dbf7c5f63a51a42fd451f5e065bca0dfc723adf2cc498bbb7cfb780b9089600081518110611fc457611fc4612eb0565b60200260200101518a600181518110611fdf57611fdf612eb0565b602002602001015189600081518110611ffa57611ffa612eb0565b6020026020010151886040516120139493929190613496565b60405180910390a36001600a600082825461202e9190612ff8565b90915550506040805160a081018252888152602081018890529081018690526001600160a01b03841660808201526060810185905261206d838261227c565b50509695505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526120e49085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612429565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215f9190613417565b6121699190612ff8565b6040516001600160a01b0385166024820152604481018290529091506120e490859063095ea7b360e01b906064016120ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b60408051600380825260808201909252839160009190602082016060803683370190505090508260800151816000815181106122ba576122ba612eb0565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106122eb576122eb612eb0565b6001600160a01b039283166020918202929092010152600c5482519116908290600290811061231c5761231c612eb0565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663b3998be08460000151856020015184876040015188606001516040518663ffffffff1660e01b815260040161238095949392919061358e565b6020604051808303816000875af115801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c391906130d0565b6120e45760405162461bcd60e51b815260206004820152603160248201527f4552433230466163746f72793a20556e61626c6520746f20696e697469616c696044820152707a6520746f6b656e20696e7374616e636560781b60648201526084016105b8565b600061247e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125009092919063ffffffff16565b8051909150156124fb578080602001905181019061249c91906130d0565b6124fb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105b8565b505050565b606061250f8484600085612519565b90505b9392505050565b60608247101561257a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105b8565b843b6125c85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105b8565b600080866001600160a01b031685876040516125e49190613637565b60006040518083038185875af1925050503d8060008114612621576040519150601f19603f3d011682016040523d82523d6000602084013e612626565b606091505b5091509150612636828286612641565b979650505050505050565b60608315612650575081612512565b8251156126605782518084602001fd5b8160405162461bcd60e51b81526004016105b89190613653565b60006020828403121561268c57600080fd5b5035919050565b6001600160a01b0381168114611afb57600080fd5b8035610d5b81612693565b6000602082840312156126c557600080fd5b813561251281612693565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715612709576127096126d0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612737576127376126d0565b604052919050565b60006001600160401b03821115612758576127586126d0565b5060051b60200190565b600082601f83011261277357600080fd5b81356001600160401b0381111561278c5761278c6126d0565b61279f601f8201601f191660200161270f565b8181528460208386010111156127b457600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126127e257600080fd5b813560206127f76127f28361273f565b61270f565b82815260059290921b8401810191818101908684111561281657600080fd5b8286015b8481101561283a57803561282d81612693565b835291830191830161281a565b509695505050505050565b600082601f83011261285657600080fd5b813560206128666127f28361273f565b82815260059290921b8401810191818101908684111561288557600080fd5b8286015b8481101561283a5780358352918301918301612889565b600082601f8301126128b157600080fd5b813560206128c16127f28361273f565b82815260059290921b840181019181810190868411156128e057600080fd5b8286015b8481101561283a5780356001600160401b038111156129035760008081fd5b6129118986838b0101612762565b8452509183019183016128e4565b600080600080600060a0868803121561293757600080fd5b853594506020808701356001600160401b038082111561295657600080fd5b818901915089601f83011261296a57600080fd5b81356129786127f28261273f565b81815260059190911b8301840190848101908c83111561299757600080fd5b8585015b838110156129cf578035858111156129b35760008081fd5b6129c18f89838a0101612762565b84525091860191860161299b565b509850505060408901359250808311156129e857600080fd5b6129f48a848b016127d1565b95506060890135925080831115612a0a57600080fd5b612a168a848b01612845565b94506080890135925080831115612a2c57600080fd5b5050612a3a888289016128a0565b9150509295509295909350565b803560ff81168114610d5b57600080fd5b60006020808385031215612a6b57600080fd5b82356001600160401b0380821115612a8257600080fd5b818501915085601f830112612a9657600080fd5b8135612aa46127f28261273f565b81815260059190911b83018401908481019088831115612ac357600080fd5b8585015b83811015612bbb57803585811115612adf5760008081fd5b8601610140818c03601f1901811315612af85760008081fd5b612b006126e6565b612b0b8a84016126a8565b81526040612b1a8185016126a8565b8b8301526060808501358284015260809150612b378286016126a8565b9083015260a0612b488582016126a8565b8284015260c0915081850135818401525060e0612b66818601612a47565b828401526101009150818501358184015250610120808501358284015283850135935089841115612b9957600091508182fd5b612ba78f8d86880101612762565b908301525085525050918601918601612ac7565b5098975050505050505050565b600080600080600060a08688031215612be057600080fd5b85356001600160401b0380821115612bf757600080fd5b612c0389838a01612762565b96506020880135915080821115612c1957600080fd5b612c2589838a01612762565b95506040880135945060608801359150612c3e82612693565b90925060808701359080821115612c5457600080fd5b50612a3a88828901612762565b600060808284031215612c7357600080fd5b50919050565b600060a08284031215612c7357600080fd5b600060608284031215612c7357600080fd5b600080600060608486031215612cb257600080fd5b83356001600160401b0380821115612cc957600080fd5b612cd587838801612c61565b94506020860135915080821115612ceb57600080fd5b612cf787838801612c79565b93506040860135915080821115612d0d57600080fd5b50612d1a86828701612c8b565b9150509250925092565b60008060408385031215612d3757600080fd5b82356001600160401b0380821115612d4e57600080fd5b612d5a86838701612c61565b93506020850135915080821115612d7057600080fd5b50612d7d85828601612c79565b9150509250929050565b600080600060e08486031215612d9c57600080fd5b83356001600160401b0380821115612db357600080fd5b612dbf87838801612c61565b94506020860135915080821115612dd557600080fd5b50612de286828701612c79565b925050612df28560408601612c79565b90509250925092565b60208082526029908201527f4552433230466163746f72793a2054656d706c61746520696e64657820646f656040820152681cdb9d08195e1a5cdd60ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215612edb57600080fd5b8351612ee681612693565b6020850151909350612ef781612693565b80925050604084015190509250925092565b60005b83811015612f24578181015183820152602001612f0c565b838111156120e45750506000910152565b60008151808452612f4d816020860160208601612f09565b601f01601f19169290920160200192915050565b600061012060018060a01b03808d1684528b6020850152808b166040850152808a1660608501525087608084015260ff871660a08401528560c08401528460e084015280610100840152612fb781840185612f35565b9c9b505050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415612ff157612ff1612fc7565b5060010190565b6000821982111561300b5761300b612fc7565b500190565b6020808252602c908201527f4552433732314454466163746f72793a2054656d706c61746520696e6465782060408201526b191bd95cdb9d08195e1a5cdd60a21b606082015260800190565b600060018060a01b03808916835260c0602084015261307e60c0840189612f35565b83810360408501526130908189612f35565b90508187166060850152818616608085015283810360a08501526130b48186612f35565b9a9950505050505050505050565b8015158114611afb57600080fd5b6000602082840312156130e257600080fd5b8151612512816130c2565b6080815260006131006080830187612f35565b6001600160a01b038616602084015282810360408401526131218186612f35565b905082810360608401526126368185612f35565b6000808335601e1984360301811261314c57600080fd5b8301803591506001600160401b0382111561316657600080fd5b60200191503681900382131561317b57600080fd5b9250929050565b6000808335601e1984360301811261319957600080fd5b8301803591506001600160401b038211156131b357600080fd5b6020019150600581901b360382131561317b57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261320b57600080fd5b83016020810192503590506001600160401b0381111561322a57600080fd5b80360383131561317b57600080fd5b8183526000602080850194508260005b8581101561327757813561325c81612693565b6001600160a01b031687529582019590820190600101613249565b509495945050505050565b81835260006001600160fb1b0383111561329b57600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835260006020808501808196508560051b810191508460005b878110156133085782840389526132e982886131f4565b6132f48682846131cb565b9a87019a95505050908401906001016132d2565b5091979650505050505050565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c8110156133765785840360bf19018352613354828f6131f4565b61335f8682846131cb565b955050506020928301929190910190600101613339565b505050828103604084015261338c81898b613239565b905082810360608401526133a1818789613282565b90508281036080840152612fb78185876132b8565b6000602082840312156133c857600080fd5b815161251281612693565b6001600160a01b03861681526060602082018190526000906133f89083018688613239565b828103604084015261340b818587613282565b98975050505050505050565b60006020828403121561342957600080fd5b5051919050565b60608152600061344460608301888a613282565b8281036020840152613457818789613282565b9050828103604084015261346c818587613239565b9998505050505050505050565b60006020828403121561348b57600080fd5b8135612512816130c2565b6080815260006134a96080830187612f35565b82810360208401526134bb8187612f35565b604084019590955250506001600160a01b039190911660609091015292915050565b600081518084526020808501945080840160005b838110156132775781516001600160a01b0316875295820195908201906001016134f1565b600081518084526020808501945080840160005b838110156132775781518752958201959082019060010161352a565b600081518084526020808501808196508360051b8101915082860160005b8581101561330857828403895261357c848351612f35565b98850198935090840190600101613564565b600060a0820160a0835280885180835260c08501915060c08160051b86010192506020808b0160005b838110156135e55760bf198887030185526135d3868351612f35565b955093820193908201906001016135b7565b5050858403818701525050506135fb81886134dd565b9050828103604084015261360f81876134dd565b905082810360608401526136238186613516565b9050828103608084015261340b8185613546565b60008251613649818460208701612f09565b9190910192915050565b6020815260006125126020830184612f3556fea2646970667358221220f4abf2a09272c4e73999373d321776187583bec5d10085cc5b62620c7317b4f964736f6c634300080a0033",
"linkReferences": {},
"deployedLinkReferences": {}
}