{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC3525SlotApprovable",
  "sourceName": "contracts/ERC3525SlotApprovable.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "decimals_",
          "type": "uint8"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_slot",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForSlot",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "ApprovalValue",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "metadataDescriptor",
          "type": "address"
        }
      ],
      "name": "SetMetadataDescriptor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_oldSlot",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_newSlot",
          "type": "uint256"
        }
      ],
      "name": "SlotChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_fromTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_toTokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "TransferValue",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "contractURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        }
      ],
      "name": "isApprovedForSlot",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "metadataDescriptor",
      "outputs": [
        {
          "internalType": "contract IERC3525MetadataDescriptor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        }
      ],
      "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": "payable",
      "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": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved_",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved_",
          "type": "bool"
        }
      ],
      "name": "setApprovalForSlot",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index_",
          "type": "uint256"
        }
      ],
      "name": "slotByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "slotCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "slotOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        }
      ],
      "name": "slotURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index_",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index_",
          "type": "uint256"
        }
      ],
      "name": "tokenInSlotByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index_",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        }
      ],
      "name": "tokenSupplyInSlot",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "fromTokenId_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "newTokenId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "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": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "fromTokenId_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "toTokenId_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "valueDecimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200398f3803806200398f83398101604081905262000034916200014d565b600160035582828282828260006200004d848262000261565b5060016200005c838262000261565b506002805460ff191660ff92909216919091179055506200032d9650505050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000a857600080fd5b81516001600160401b0380821115620000c557620000c562000080565b604051601f8301601f19908116603f01168101908282118183101715620000f057620000f062000080565b816040528381526020925086838588010111156200010d57600080fd5b600091505b8382101562000131578582018301518183018401529082019062000112565b83821115620001435760008385830101525b9695505050505050565b6000806000606084860312156200016357600080fd5b83516001600160401b03808211156200017b57600080fd5b620001898783880162000096565b94506020860151915080821115620001a057600080fd5b50620001af8682870162000096565b925050604084015160ff81168114620001c757600080fd5b809150509250925092565b600181811c90821680620001e757607f821691505b6020821081036200020857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200025c57600081815260208120601f850160051c81016020861015620002375750805b601f850160051c820191505b81811015620002585782815560010162000243565b5050505b505050565b81516001600160401b038111156200027d576200027d62000080565b62000295816200028e8454620001d2565b846200020e565b602080601f831160018114620002cd5760008415620002b45750858301515b600019600386901b1c1916600185901b17855562000258565b600085815260208120601f198616915b82811015620002fe57888601518255948401946001909101908401620002dd565b50858210156200031d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613652806200033d6000396000f3fe6080604052600436106101e25760003560e01c806355cd4e0611610102578063a22cb46511610095578063e345f05e11610064578063e345f05e1461052a578063e8a3d4851461057b578063e985e9c514610590578063ed08fa80146105dd57600080fd5b8063a22cb465146104b7578063b88d4fde146104d7578063c87b56dd146104ea578063e345e0bc1461050a57600080fd5b80638cb0a511116100d15780638cb0a5111461044f57806395d89b4114610462578063993bef8d146104775780639cc7f7081461049757600080fd5b806355cd4e06146103dc5780636352211e146103ef57806370a082311461040f578063840f71131461042f57600080fd5b806323b872dd1161017a5780633e7e8669116101495780633e7e86691461036757806342842e0e146103895780634f6ccce71461039c5780634f8a0f83146103bc57600080fd5b806323b872dd14610301578063263f3e7e146103145780632f745c5914610334578063310ed7f01461035457600080fd5b8063095ea7b3116101b6578063095ea7b3146102a457806309c3dd87146102b95780630f485c02146102d957806318160ddd146102ec57600080fd5b8062cd0110146101e757806301ffc9a71461021a57806306fdde031461024a578063081812fc1461026c575b600080fd5b3480156101f357600080fd5b50610207610202366004612e78565b6105f2565b6040519081526020015b60405180910390f35b34801561022657600080fd5b5061023a610235366004612eb0565b6106c8565b6040519015158152602001610211565b34801561025657600080fd5b5061025f6106ed565b6040516102119190612f25565b34801561027857600080fd5b5061028c610287366004612f38565b61077f565b6040516001600160a01b039091168152602001610211565b6102b76102b2366004612f68565b6107d1565b005b3480156102c557600080fd5b5061025f6102d4366004612f38565b6108cb565b6102076102e7366004612f92565b6109bd565b3480156102f857600080fd5b50600554610207565b6102b761030f366004612fc7565b6109f5565b34801561032057600080fd5b5061020761032f366004612f38565b610a2b565b34801561034057600080fd5b5061020761034f366004612f68565b610a73565b6102b7610362366004612ff3565b610b01565b34801561037357600080fd5b5060025460405160ff9091168152602001610211565b6102b7610397366004612fc7565b610b17565b3480156103a857600080fd5b506102076103b7366004612f38565b610b32565b3480156103c857600080fd5b506102076103d7366004612f38565b610bc3565b6102b76103ea36600461302d565b610c18565b3480156103fb57600080fd5b5061028c61040a366004612f38565b610cb2565b34801561041b57600080fd5b5061020761042a36600461307c565b610d4e565b34801561043b57600080fd5b5060085461028c906001600160a01b031681565b6102b761045d366004612f92565b610dd6565b34801561046e57600080fd5b5061025f610e8f565b34801561048357600080fd5b50610207610492366004612f38565b610e9e565b3480156104a357600080fd5b506102076104b2366004612f38565b610f3b565b3480156104c357600080fd5b506102b76104d2366004613097565b610f83565b6102b76104e536600461313d565b610f92565b3480156104f657600080fd5b5061025f610505366004612f38565b610fc4565b34801561051657600080fd5b506102076105253660046131e8565b611063565b34801561053657600080fd5b5061023a610545366004613214565b6001600160a01b039283166000908152600c60209081526040808320948352938152838220929094168152925290205460ff1690565b34801561058757600080fd5b5061025f611097565b34801561059c57600080fd5b5061023a6105ab366004613250565b6001600160a01b0391821660009081526007602090815260408083209390941682526002909201909152205460ff1690565b3480156105e957600080fd5b50600a54610207565b60006105fd83610bc3565b821061066e5760405162461bcd60e51b815260206004820152603560248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420746f6b656044820152746e20696e646578206f7574206f6620626f756e647360581b60648201526084015b60405180910390fd5b6000838152600b6020526040902054600a805490919081106106925761069261327a565b906000526020600020906002020160010182815481106106b4576106b461327a565b906000526020600020015490505b92915050565b60006001600160e01b031982166316d117cb60e31b14806106c257506106c282611191565b6060600080546106fc90613290565b80601f016020809104026020016040519081016040528092919081815260200182805461072890613290565b80156107755780601f1061074a57610100808354040283529160200191610775565b820191906000526020600020905b81548152906001019060200180831161075857829003601f168201915b5050505050905090565b600061078a826111b6565b6000828152600660205260409020546005805490919081106107ae576107ae61327a565b60009182526020909120600460069092020101546001600160a01b031692915050565b60006107dc82610cb2565b905060006107e983610a2b565b9050816001600160a01b0316846001600160a01b03160361081c5760405162461bcd60e51b8152600401610665906132ca565b336001600160a01b0383161480610838575061083882336105ab565b806108495750610849828233610545565b6108bb5760405162461bcd60e51b815260206004820152603e60248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c2f736c6f7400006064820152608401610665565b6108c5848461120a565b50505050565b606060006108e460408051602081019091526000815290565b6008549091506001600160a01b031661094457600081511161091557604051806020016040528060008152506109b6565b8061091f846112a1565b60405160200161093092919061330c565b6040516020818303038152906040526109b6565b600854604051633601bfc560e11b8152600481018590526001600160a01b0390911690636c037f8a906024015b600060405180830381865afa15801561098e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109b6919081019061334c565b9392505050565b60006109ca3385846113aa565b6109d38461143a565b90506109ea83826109e387610a2b565b6000611444565b6109b6848284611589565b6109ff33826118d7565b610a1b5760405162461bcd60e51b8152600401610665906133ba565b610a26838383611986565b505050565b6000610a36826111b6565b600082815260066020526040902054600580549091908110610a5a57610a5a61327a565b9060005260206000209060060201600101549050919050565b6000610a7e83610d4e565b8210610ad75760405162461bcd60e51b815260206004820152602260248201527f455243333532353a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610665565b6001600160a01b03831660009081526007602052604090208054839081106106b4576106b461327a565b610b0c3384836113aa565b610a26838383611589565b610a2683838360405180602001604052806000815250610f92565b6000610b3d60055490565b8210610b975760405162461bcd60e51b815260206004820152602360248201527f455243333532353a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610665565b60058281548110610baa57610baa61327a565b9060005260206000209060060201600001549050919050565b6000610bce82611afe565b610bda57506000919050565b6000828152600b6020526040902054600a80549091908110610bfe57610bfe61327a565b600091825260209091206001600290920201015492915050565b336001600160a01b0385161480610c345750610c3484336105ab565b610ca65760405162461bcd60e51b815260206004820152603f60248201527f45524333353235536c6f74417070726f7661626c653a2063616c6c657220697360448201527f206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c006064820152608401610665565b6108c584848484611b4a565b6000610cbd826111b6565b600082815260066020526040902054600580549091908110610ce157610ce161327a565b60009182526020909120600360069092020101546001600160a01b0316905080610d495760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b6044820152606401610665565b919050565b60006001600160a01b038216610dba5760405162461bcd60e51b815260206004820152602b60248201527f455243333532353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610665565b506001600160a01b031660009081526007602052604090205490565b6000610de184610cb2565b9050806001600160a01b0316836001600160a01b031603610e145760405162461bcd60e51b8152600401610665906132ca565b610e1e33856118d7565b610e845760405162461bcd60e51b815260206004820152603160248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b6064820152608401610665565b6108c5848484611c34565b6060600180546106fc90613290565b6000610ea9600a5490565b8210610f0f5760405162461bcd60e51b815260206004820152602f60248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420696e646560448201526e78206f7574206f6620626f756e647360881b6064820152608401610665565b600a8281548110610f2257610f2261327a565b9060005260206000209060020201600001549050919050565b6000610f46826111b6565b600082815260066020526040902054600580549091908110610f6a57610f6a61327a565b9060005260206000209060060201600201549050919050565b610f8e338383611d6c565b5050565b610f9c33836118d7565b610fb85760405162461bcd60e51b8152600401610665906133ba565b6108c584848484611e36565b6060610fcf826111b6565b6000610fe660408051602081019091526000815290565b6008549091506001600160a01b031661103257600081511161101757604051806020016040528060008152506109b6565b80611021846112a1565b60405160200161093092919061340c565b6008546040516344a5a61760e11b8152600481018590526001600160a01b039091169063894b4c2e90602401610971565b600061106e836111b6565b5060009182526004602090815260408084206001600160a01b0393909316845291905290205490565b606060006110b060408051602081019091526000815290565b6008549091506001600160a01b03166111105760008151116110e1576040518060200160405280600081525061118b565b806110eb30611ea9565b6040516020016110fc92919061343b565b60405160208183030381529060405261118b565b600860009054906101000a90046001600160a01b03166001600160a01b031663725fa09c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611163573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261118b919081019061334c565b91505090565b60006001600160e01b03198216631dba0dcf60e11b14806106c257506106c282611ebf565b6111bf81611f61565b6112075760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b6044820152606401610665565b50565b60008181526006602052604090205460058054849290811061122e5761122e61327a565b6000918252602090912060069091020160040180546001600160a01b0319166001600160a01b039283161790558190831661126882610cb2565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6060816000036112c85750506040805180820190915260018152600360fc1b602082015290565b8160005b81156112f257806112dc81613495565b91506112eb9050600a836134c4565b91506112cc565b60008167ffffffffffffffff81111561130d5761130d6130ce565b6040519080825280601f01601f191660200182016040528015611337576020820181803683370190505b5090505b84156113a25761134c6001836134d8565b9150611359600a866134ef565b611364906030613503565b60f81b8183815181106113795761137961327a565b60200101906001600160f81b031916908160001a90535061139b600a866134c4565b945061133b565b949350505050565b60006113b68385611063565b90506113c284846118d7565b1580156113d157506000198114155b156108c557818110156114265760405162461bcd60e51b815260206004820152601f60248201527f455243333532353a20696e73756666696369656e7420616c6c6f77616e6365006044820152606401610665565b6108c5838561143585856134d8565b611c34565b60006106c2611fad565b6001600160a01b0384166114a45760405162461bcd60e51b815260206004820152602160248201527f455243333532353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610665565b826000036114fe5760405162461bcd60e51b815260206004820152602160248201527f455243333532353a2063616e6e6f74206d696e74207a65726f20746f6b656e496044820152601960fa1b6064820152608401610665565b61150783611f61565b156115545760405162461bcd60e51b815260206004820152601d60248201527f455243333532353a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610665565b6115646000856000868686611fc7565b61156f848484612004565b61157983826120ca565b6108c5600085600086868661214f565b61159283611f61565b6115ee5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e736665722066726f6d20696e76616c696420746044820152661bdad95b88125160ca1b6064820152608401610665565b6115f782611f61565b6116515760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20696e76616c696420746f6b604482015264195b88125160da1b6064820152608401610665565b6000838152600660205260408120546005805490919081106116755761167561327a565b90600052602060002090600602019050600060056006600086815260200190815260200160002054815481106116ad576116ad61327a565b9060005260206000209060060201905082826002015410156117245760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610665565b80600101548260010154146117925760405162461bcd60e51b815260206004820152602e60248201527f455243333532353a207472616e7366657220746f20746f6b656e20776974682060448201526d191a5999995c995b9d081cdb1bdd60921b6064820152608401610665565b6003808301549082015460018401546117bd926001600160a01b039081169216908890889088611fc7565b828260020160008282546117d191906134d8565b92505081905550828160020160008282546117ec9190613503565b9091555050604051838152849086907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a3600380830154908201546001840154611853926001600160a01b03908116921690889088908861214f565b61186e858585604051806020016040528060008152506121c0565b6118d05760405162461bcd60e51b815260206004820152602d60248201527f455243333532353a207472616e736665722072656a656374656420627920455260448201526c21999a991aa932b1b2b4bb32b960991b6064820152608401610665565b5050505050565b60006118e2826111b6565b60006118ed83610cb2565b905060006118fa84610a2b565b9050816001600160a01b0316856001600160a01b031614806119355750846001600160a01b031661192a8561077f565b6001600160a01b0316145b80611945575061194582866105ab565b8061197d57506001600160a01b038083166000908152600c6020908152604080832085845282528083209389168352929052205460ff165b95945050505050565b826001600160a01b031661199982610cb2565b6001600160a01b0316146119fb5760405162461bcd60e51b8152602060048201526024808201527f455243333532353a207472616e736665722066726f6d20696e76616c6964206f6044820152633bb732b960e11b6064820152608401610665565b6001600160a01b038216611a5f5760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610665565b6000611a6a82610a2b565b90506000611a7783610f3b565b9050611a87858585868686611fc7565b611a9260008461120a565b611a9b83612330565b611aa585846123db565b611aaf84846124fc565b82846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46118d085858586868661214f565b600a54600090158015906106c257506000828152600b6020526040902054600a80548492908110611b3157611b3161327a565b9060005260206000209060020201600001541492915050565b816001600160a01b0316846001600160a01b031603611bbb5760405162461bcd60e51b815260206004820152602760248201527f45524333353235536c6f74417070726f7661626c653a20617070726f76652074604482015266379037bbb732b960c91b6064820152608401610665565b6001600160a01b038481166000818152600c60209081526040808320888452825280832094871680845294825291829020805460ff191686151590811790915591519182528692917f7bdf71e6625aa496095bf08b60c677cf81c963f402cf258981e3bd7507d3480c910160405180910390a450505050565b6001600160a01b038216611c9d5760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20617070726f76652076616c756520746f20746865207a65604482015269726f206164647265737360b01b6064820152608401610665565b611ca78284612585565b611d0d57600083815260066020526040902054600580549091908110611ccf57611ccf61327a565b60009182526020808320600692909202909101600501805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b60008381526004602090815260408083206001600160a01b038616808552908352928190208490555183815285917f621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1b91015b60405180910390a3505050565b816001600160a01b0316836001600160a01b031603611dcd5760405162461bcd60e51b815260206004820152601a60248201527f455243333532353a20617070726f766520746f2063616c6c65720000000000006044820152606401610665565b6001600160a01b0383811660008181526007602090815260408083209487168084526002909501825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101611d5f565b611e41848484611986565b611e4d84848484612658565b6108c55760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e7366657220746f206e6f6e204552433732315260448201526632b1b2b4bb32b960c91b6064820152608401610665565b60606106c26001600160a01b038316601461279e565b60006001600160e01b031982166301ffc9a760e01b1480611ef057506001600160e01b03198216630354d60560e61b145b80611f0b57506001600160e01b031982166380ac58cd60e01b145b80611f2657506001600160e01b031982166370b0048160e11b145b80611f4157506001600160e01b0319821663780e9d6360e01b145b806106c257506001600160e01b03198216635b5e139f60e01b1492915050565b600554600090158015906106c25750600082815260066020526040902054600580548492908110611f9457611f9461327a565b9060005260206000209060060201600001541492915050565b6003805460009182611fbe83613495565b91905055905090565b6001600160a01b038616158015611fdc575083155b8015611fee5750611fec82611afe565b155b15611ffc57611ffc8261293a565b505050505050565b6040805160c081018252838152602080820184905260008284018190526001600160a01b038716606084015260808301819052835181815291820190935260a0820152905061205281612a01565b61205c84846124fc565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4816000847fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a450505050565b6000828152600660205260409020546005805483929081106120ee576120ee61327a565b9060005260206000209060060201600201600082825461210e9190613503565b909155505060405181815282906000907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a35050565b6001600160a01b038616158015612164575083155b801561217757506121758284612b50565b155b1561218b576121868284612bdb565b611ffc565b6001600160a01b0385161580156121a0575082155b80156121b157506121b18285612b50565b15612186576121868285612c3c565b6000806121cc85610cb2565b9050803b63ffffffff1615612326576040516301ffc9a760e01b8152629ce20b60e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa925050508015612241575060408051601f3d908101601f1916820190925261223e9181019061351b565b60015b612280573d80801561226f576040519150601f19603f3d011682016040523d82523d6000602084013e612274565b606091505b506001925050506113a2565b801561231b57604051629ce20b60e01b81526000906001600160a01b03841690629ce20b906122bb9033908c908c908c908c90600401613538565b6020604051808303816000875af11580156122da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fe9190613576565b6001600160e01b031916629ce20b60e01b1493506113a292505050565b6001925050506113a2565b60019150506113a2565b6000818152600660205260408120546005805490919081106123545761235461327a565b600091825260208220600560069092020190810154909250905b818110156123cc57600083600501828154811061238d5761238d61327a565b60009182526020808320909101548783526004825260408084206001600160a01b039092168452915281205550806123c481613495565b91505061236e565b50610a26600583016000612da5565b6000818152600660205260408120546005805490919081106123ff576123ff61327a565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b039485161790559184168152600790915260408120805490919061244e906001906134d8565b905060008260000182815481106124675761246761327a565b906000526020600020015490506000836001016000868152602001908152602001600020549050818460000182815481106124a4576124a461327a565b600091825260208083209091019290925583815260018601909152604080822083905586825281205583548490806124de576124de613593565b60019003818190600052602060002001600090559055505050505050565b6000818152600660205260409020546005805484929081106125205761252061327a565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b03948516179055939091168152600780845260408083208054858552600182810188529285208190559286529082018155825292902090910155565b6000818152600660205260408120546005805483929081106125a9576125a961327a565b6000918252602082206005600690920201015491505b8181101561264d57600084815260066020526040902054600580546001600160a01b038816929081106125f4576125f461327a565b906000526020600020906006020160050182815481106126165761261661327a565b6000918252602090912001546001600160a01b03160361263b576001925050506106c2565b8061264581613495565b9150506125bf565b506000949350505050565b6000833b63ffffffff161561279657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906126999033908990889088906004016135a9565b6020604051808303816000875af19250505080156126d4575060408051601f3d908101601f191682019092526126d191810190613576565b60015b61277c573d808015612702576040519150601f19603f3d011682016040523d82523d6000602084013e612707565b606091505b5080516000036127745760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610665565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506113a2565b5060016113a2565b606060006127ad8360026135e6565b6127b8906002613503565b67ffffffffffffffff8111156127d0576127d06130ce565b6040519080825280601f01601f1916602001820160405280156127fa576020820181803683370190505b509050600360fc1b816000815181106128155761281561327a565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106128445761284461327a565b60200101906001600160f81b031916908160001a90535060006128688460026135e6565b612873906001613503565b90505b60018111156128eb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128a7576128a761327a565b1a60f81b8282815181106128bd576128bd61327a565b60200101906001600160f81b031916908160001a90535060049490941c936128e481613605565b9050612876565b5083156109b65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610665565b61294381611afe565b156129a35760405162461bcd60e51b815260206004820152602a60248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420616c72656044820152696164792065786973747360b01b6064820152608401610665565b6040805180820182528281528151600080825260208281019094529282015290506129cd81612d20565b816000807fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a45050565b600580548251600090815260066020818152604080842085905560018501865594909252845192027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101928355818501517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db1820155928401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db284015560608401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db3840180546001600160a01b039283166001600160a01b03199182161790915560808601517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db48601805491909316911617905560a0840151805185946108c5937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db5909101920190612dc3565b6000828152600b6020526040812054600a80548392908110612b7457612b7461327a565b90600052602060002090600202019050600081600101805490501180156113a2575060008481526009602090815260408083208684529091529020546001820180548592908110612bc757612bc761327a565b906000526020600020015414949350505050565b6000828152600b6020526040812054600a80549091908110612bff57612bff61327a565b6000918252602080832060016002909302018201805496845260098252604080852087865283528420879055918601825590825290209092015550565b6000828152600b6020526040812054600a80549091908110612c6057612c6061327a565b600091825260208220600160029092020181810154909350612c8291906134d8565b90506000826001018281548110612c9b57612c9b61327a565b6000918252602080832090910154878352600982526040808420888552909252912054600185018054929350909183919083908110612cdc57612cdc61327a565b60009182526020808320919091019290925587815260098252604080822085835290925281812083905586815290812055600184018054806124de576124de613593565b600a805482516000908152600b602090815260408220839055600183018455929052825160029091027fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8810191825582840151805185946108c5937fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a901920190612e28565b50805460008255906000526020600020908101906112079190612e63565b828054828255906000526020600020908101928215612e18579160200282015b82811115612e1857825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612de3565b50612e24929150612e63565b5090565b828054828255906000526020600020908101928215612e18579160200282015b82811115612e18578251825591602001919060010190612e48565b5b80821115612e245760008155600101612e64565b60008060408385031215612e8b57600080fd5b50508035926020909101359150565b6001600160e01b03198116811461120757600080fd5b600060208284031215612ec257600080fd5b81356109b681612e9a565b60005b83811015612ee8578181015183820152602001612ed0565b838111156108c55750506000910152565b60008151808452612f11816020860160208601612ecd565b601f01601f19169290920160200192915050565b6020815260006109b66020830184612ef9565b600060208284031215612f4a57600080fd5b5035919050565b80356001600160a01b0381168114610d4957600080fd5b60008060408385031215612f7b57600080fd5b612f8483612f51565b946020939093013593505050565b600080600060608486031215612fa757600080fd5b83359250612fb760208501612f51565b9150604084013590509250925092565b600080600060608486031215612fdc57600080fd5b612fe584612f51565b9250612fb760208501612f51565b60008060006060848603121561300857600080fd5b505081359360208301359350604090920135919050565b801515811461120757600080fd5b6000806000806080858703121561304357600080fd5b61304c85612f51565b93506020850135925061306160408601612f51565b915060608501356130718161301f565b939692955090935050565b60006020828403121561308e57600080fd5b6109b682612f51565b600080604083850312156130aa57600080fd5b6130b383612f51565b915060208301356130c38161301f565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561310d5761310d6130ce565b604052919050565b600067ffffffffffffffff82111561312f5761312f6130ce565b50601f01601f191660200190565b6000806000806080858703121561315357600080fd5b61315c85612f51565b935061316a60208601612f51565b925060408501359150606085013567ffffffffffffffff81111561318d57600080fd5b8501601f8101871361319e57600080fd5b80356131b16131ac82613115565b6130e4565b8181528860208385010111156131c657600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b600080604083850312156131fb57600080fd5b8235915061320b60208401612f51565b90509250929050565b60008060006060848603121561322957600080fd5b61323284612f51565b92506020840135915061324760408501612f51565b90509250925092565b6000806040838503121561326357600080fd5b61326c83612f51565b915061320b60208401612f51565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806132a457607f821691505b6020821081036132c457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f455243333532353a20617070726f76616c20746f2063757272656e74206f776e60408201526132b960f11b606082015260800190565b6000835161331e818460208801612ecd565b64736c6f742f60d81b9083019081528351613340816005840160208801612ecd565b01600501949350505050565b60006020828403121561335e57600080fd5b815167ffffffffffffffff81111561337557600080fd5b8201601f8101841361338657600080fd5b80516133946131ac82613115565b8181528560208385010111156133a957600080fd5b61197d826020830160208601612ecd565b60208082526032908201527f455243333532353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b6000835161341e818460208801612ecd565b835190830190613432818360208801612ecd565b01949350505050565b6000835161344d818460208801612ecd565b68636f6e74726163742f60b81b9083019081528351613473816009840160208801612ecd565b01600901949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016134a7576134a761347f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826134d3576134d36134ae565b500490565b6000828210156134ea576134ea61347f565b500390565b6000826134fe576134fe6134ae565b500690565b600082198211156135165761351661347f565b500190565b60006020828403121561352d57600080fd5b81516109b68161301f565b60018060a01b038616815284602082015283604082015282606082015260a06080820152600061356b60a0830184612ef9565b979650505050505050565b60006020828403121561358857600080fd5b81516109b681612e9a565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906135dc90830184612ef9565b9695505050505050565b60008160001904831182151516156136005761360061347f565b500290565b6000816136145761361461347f565b50600019019056fea26469706673582212206eb8cd64f9eb9098a5a70093052226d8fe931d43128d89b54d6a0780b809ec2464736f6c634300080f0033",
  "deployedBytecode": "0x6080604052600436106101e25760003560e01c806355cd4e0611610102578063a22cb46511610095578063e345f05e11610064578063e345f05e1461052a578063e8a3d4851461057b578063e985e9c514610590578063ed08fa80146105dd57600080fd5b8063a22cb465146104b7578063b88d4fde146104d7578063c87b56dd146104ea578063e345e0bc1461050a57600080fd5b80638cb0a511116100d15780638cb0a5111461044f57806395d89b4114610462578063993bef8d146104775780639cc7f7081461049757600080fd5b806355cd4e06146103dc5780636352211e146103ef57806370a082311461040f578063840f71131461042f57600080fd5b806323b872dd1161017a5780633e7e8669116101495780633e7e86691461036757806342842e0e146103895780634f6ccce71461039c5780634f8a0f83146103bc57600080fd5b806323b872dd14610301578063263f3e7e146103145780632f745c5914610334578063310ed7f01461035457600080fd5b8063095ea7b3116101b6578063095ea7b3146102a457806309c3dd87146102b95780630f485c02146102d957806318160ddd146102ec57600080fd5b8062cd0110146101e757806301ffc9a71461021a57806306fdde031461024a578063081812fc1461026c575b600080fd5b3480156101f357600080fd5b50610207610202366004612e78565b6105f2565b6040519081526020015b60405180910390f35b34801561022657600080fd5b5061023a610235366004612eb0565b6106c8565b6040519015158152602001610211565b34801561025657600080fd5b5061025f6106ed565b6040516102119190612f25565b34801561027857600080fd5b5061028c610287366004612f38565b61077f565b6040516001600160a01b039091168152602001610211565b6102b76102b2366004612f68565b6107d1565b005b3480156102c557600080fd5b5061025f6102d4366004612f38565b6108cb565b6102076102e7366004612f92565b6109bd565b3480156102f857600080fd5b50600554610207565b6102b761030f366004612fc7565b6109f5565b34801561032057600080fd5b5061020761032f366004612f38565b610a2b565b34801561034057600080fd5b5061020761034f366004612f68565b610a73565b6102b7610362366004612ff3565b610b01565b34801561037357600080fd5b5060025460405160ff9091168152602001610211565b6102b7610397366004612fc7565b610b17565b3480156103a857600080fd5b506102076103b7366004612f38565b610b32565b3480156103c857600080fd5b506102076103d7366004612f38565b610bc3565b6102b76103ea36600461302d565b610c18565b3480156103fb57600080fd5b5061028c61040a366004612f38565b610cb2565b34801561041b57600080fd5b5061020761042a36600461307c565b610d4e565b34801561043b57600080fd5b5060085461028c906001600160a01b031681565b6102b761045d366004612f92565b610dd6565b34801561046e57600080fd5b5061025f610e8f565b34801561048357600080fd5b50610207610492366004612f38565b610e9e565b3480156104a357600080fd5b506102076104b2366004612f38565b610f3b565b3480156104c357600080fd5b506102b76104d2366004613097565b610f83565b6102b76104e536600461313d565b610f92565b3480156104f657600080fd5b5061025f610505366004612f38565b610fc4565b34801561051657600080fd5b506102076105253660046131e8565b611063565b34801561053657600080fd5b5061023a610545366004613214565b6001600160a01b039283166000908152600c60209081526040808320948352938152838220929094168152925290205460ff1690565b34801561058757600080fd5b5061025f611097565b34801561059c57600080fd5b5061023a6105ab366004613250565b6001600160a01b0391821660009081526007602090815260408083209390941682526002909201909152205460ff1690565b3480156105e957600080fd5b50600a54610207565b60006105fd83610bc3565b821061066e5760405162461bcd60e51b815260206004820152603560248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420746f6b656044820152746e20696e646578206f7574206f6620626f756e647360581b60648201526084015b60405180910390fd5b6000838152600b6020526040902054600a805490919081106106925761069261327a565b906000526020600020906002020160010182815481106106b4576106b461327a565b906000526020600020015490505b92915050565b60006001600160e01b031982166316d117cb60e31b14806106c257506106c282611191565b6060600080546106fc90613290565b80601f016020809104026020016040519081016040528092919081815260200182805461072890613290565b80156107755780601f1061074a57610100808354040283529160200191610775565b820191906000526020600020905b81548152906001019060200180831161075857829003601f168201915b5050505050905090565b600061078a826111b6565b6000828152600660205260409020546005805490919081106107ae576107ae61327a565b60009182526020909120600460069092020101546001600160a01b031692915050565b60006107dc82610cb2565b905060006107e983610a2b565b9050816001600160a01b0316846001600160a01b03160361081c5760405162461bcd60e51b8152600401610665906132ca565b336001600160a01b0383161480610838575061083882336105ab565b806108495750610849828233610545565b6108bb5760405162461bcd60e51b815260206004820152603e60248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c2f736c6f7400006064820152608401610665565b6108c5848461120a565b50505050565b606060006108e460408051602081019091526000815290565b6008549091506001600160a01b031661094457600081511161091557604051806020016040528060008152506109b6565b8061091f846112a1565b60405160200161093092919061330c565b6040516020818303038152906040526109b6565b600854604051633601bfc560e11b8152600481018590526001600160a01b0390911690636c037f8a906024015b600060405180830381865afa15801561098e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109b6919081019061334c565b9392505050565b60006109ca3385846113aa565b6109d38461143a565b90506109ea83826109e387610a2b565b6000611444565b6109b6848284611589565b6109ff33826118d7565b610a1b5760405162461bcd60e51b8152600401610665906133ba565b610a26838383611986565b505050565b6000610a36826111b6565b600082815260066020526040902054600580549091908110610a5a57610a5a61327a565b9060005260206000209060060201600101549050919050565b6000610a7e83610d4e565b8210610ad75760405162461bcd60e51b815260206004820152602260248201527f455243333532353a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610665565b6001600160a01b03831660009081526007602052604090208054839081106106b4576106b461327a565b610b0c3384836113aa565b610a26838383611589565b610a2683838360405180602001604052806000815250610f92565b6000610b3d60055490565b8210610b975760405162461bcd60e51b815260206004820152602360248201527f455243333532353a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610665565b60058281548110610baa57610baa61327a565b9060005260206000209060060201600001549050919050565b6000610bce82611afe565b610bda57506000919050565b6000828152600b6020526040902054600a80549091908110610bfe57610bfe61327a565b600091825260209091206001600290920201015492915050565b336001600160a01b0385161480610c345750610c3484336105ab565b610ca65760405162461bcd60e51b815260206004820152603f60248201527f45524333353235536c6f74417070726f7661626c653a2063616c6c657220697360448201527f206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c006064820152608401610665565b6108c584848484611b4a565b6000610cbd826111b6565b600082815260066020526040902054600580549091908110610ce157610ce161327a565b60009182526020909120600360069092020101546001600160a01b0316905080610d495760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b6044820152606401610665565b919050565b60006001600160a01b038216610dba5760405162461bcd60e51b815260206004820152602b60248201527f455243333532353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610665565b506001600160a01b031660009081526007602052604090205490565b6000610de184610cb2565b9050806001600160a01b0316836001600160a01b031603610e145760405162461bcd60e51b8152600401610665906132ca565b610e1e33856118d7565b610e845760405162461bcd60e51b815260206004820152603160248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b6064820152608401610665565b6108c5848484611c34565b6060600180546106fc90613290565b6000610ea9600a5490565b8210610f0f5760405162461bcd60e51b815260206004820152602f60248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420696e646560448201526e78206f7574206f6620626f756e647360881b6064820152608401610665565b600a8281548110610f2257610f2261327a565b9060005260206000209060020201600001549050919050565b6000610f46826111b6565b600082815260066020526040902054600580549091908110610f6a57610f6a61327a565b9060005260206000209060060201600201549050919050565b610f8e338383611d6c565b5050565b610f9c33836118d7565b610fb85760405162461bcd60e51b8152600401610665906133ba565b6108c584848484611e36565b6060610fcf826111b6565b6000610fe660408051602081019091526000815290565b6008549091506001600160a01b031661103257600081511161101757604051806020016040528060008152506109b6565b80611021846112a1565b60405160200161093092919061340c565b6008546040516344a5a61760e11b8152600481018590526001600160a01b039091169063894b4c2e90602401610971565b600061106e836111b6565b5060009182526004602090815260408084206001600160a01b0393909316845291905290205490565b606060006110b060408051602081019091526000815290565b6008549091506001600160a01b03166111105760008151116110e1576040518060200160405280600081525061118b565b806110eb30611ea9565b6040516020016110fc92919061343b565b60405160208183030381529060405261118b565b600860009054906101000a90046001600160a01b03166001600160a01b031663725fa09c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611163573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261118b919081019061334c565b91505090565b60006001600160e01b03198216631dba0dcf60e11b14806106c257506106c282611ebf565b6111bf81611f61565b6112075760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b6044820152606401610665565b50565b60008181526006602052604090205460058054849290811061122e5761122e61327a565b6000918252602090912060069091020160040180546001600160a01b0319166001600160a01b039283161790558190831661126882610cb2565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6060816000036112c85750506040805180820190915260018152600360fc1b602082015290565b8160005b81156112f257806112dc81613495565b91506112eb9050600a836134c4565b91506112cc565b60008167ffffffffffffffff81111561130d5761130d6130ce565b6040519080825280601f01601f191660200182016040528015611337576020820181803683370190505b5090505b84156113a25761134c6001836134d8565b9150611359600a866134ef565b611364906030613503565b60f81b8183815181106113795761137961327a565b60200101906001600160f81b031916908160001a90535061139b600a866134c4565b945061133b565b949350505050565b60006113b68385611063565b90506113c284846118d7565b1580156113d157506000198114155b156108c557818110156114265760405162461bcd60e51b815260206004820152601f60248201527f455243333532353a20696e73756666696369656e7420616c6c6f77616e6365006044820152606401610665565b6108c5838561143585856134d8565b611c34565b60006106c2611fad565b6001600160a01b0384166114a45760405162461bcd60e51b815260206004820152602160248201527f455243333532353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610665565b826000036114fe5760405162461bcd60e51b815260206004820152602160248201527f455243333532353a2063616e6e6f74206d696e74207a65726f20746f6b656e496044820152601960fa1b6064820152608401610665565b61150783611f61565b156115545760405162461bcd60e51b815260206004820152601d60248201527f455243333532353a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610665565b6115646000856000868686611fc7565b61156f848484612004565b61157983826120ca565b6108c5600085600086868661214f565b61159283611f61565b6115ee5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e736665722066726f6d20696e76616c696420746044820152661bdad95b88125160ca1b6064820152608401610665565b6115f782611f61565b6116515760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20696e76616c696420746f6b604482015264195b88125160da1b6064820152608401610665565b6000838152600660205260408120546005805490919081106116755761167561327a565b90600052602060002090600602019050600060056006600086815260200190815260200160002054815481106116ad576116ad61327a565b9060005260206000209060060201905082826002015410156117245760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610665565b80600101548260010154146117925760405162461bcd60e51b815260206004820152602e60248201527f455243333532353a207472616e7366657220746f20746f6b656e20776974682060448201526d191a5999995c995b9d081cdb1bdd60921b6064820152608401610665565b6003808301549082015460018401546117bd926001600160a01b039081169216908890889088611fc7565b828260020160008282546117d191906134d8565b92505081905550828160020160008282546117ec9190613503565b9091555050604051838152849086907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a3600380830154908201546001840154611853926001600160a01b03908116921690889088908861214f565b61186e858585604051806020016040528060008152506121c0565b6118d05760405162461bcd60e51b815260206004820152602d60248201527f455243333532353a207472616e736665722072656a656374656420627920455260448201526c21999a991aa932b1b2b4bb32b960991b6064820152608401610665565b5050505050565b60006118e2826111b6565b60006118ed83610cb2565b905060006118fa84610a2b565b9050816001600160a01b0316856001600160a01b031614806119355750846001600160a01b031661192a8561077f565b6001600160a01b0316145b80611945575061194582866105ab565b8061197d57506001600160a01b038083166000908152600c6020908152604080832085845282528083209389168352929052205460ff165b95945050505050565b826001600160a01b031661199982610cb2565b6001600160a01b0316146119fb5760405162461bcd60e51b8152602060048201526024808201527f455243333532353a207472616e736665722066726f6d20696e76616c6964206f6044820152633bb732b960e11b6064820152608401610665565b6001600160a01b038216611a5f5760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610665565b6000611a6a82610a2b565b90506000611a7783610f3b565b9050611a87858585868686611fc7565b611a9260008461120a565b611a9b83612330565b611aa585846123db565b611aaf84846124fc565b82846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46118d085858586868661214f565b600a54600090158015906106c257506000828152600b6020526040902054600a80548492908110611b3157611b3161327a565b9060005260206000209060020201600001541492915050565b816001600160a01b0316846001600160a01b031603611bbb5760405162461bcd60e51b815260206004820152602760248201527f45524333353235536c6f74417070726f7661626c653a20617070726f76652074604482015266379037bbb732b960c91b6064820152608401610665565b6001600160a01b038481166000818152600c60209081526040808320888452825280832094871680845294825291829020805460ff191686151590811790915591519182528692917f7bdf71e6625aa496095bf08b60c677cf81c963f402cf258981e3bd7507d3480c910160405180910390a450505050565b6001600160a01b038216611c9d5760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20617070726f76652076616c756520746f20746865207a65604482015269726f206164647265737360b01b6064820152608401610665565b611ca78284612585565b611d0d57600083815260066020526040902054600580549091908110611ccf57611ccf61327a565b60009182526020808320600692909202909101600501805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b60008381526004602090815260408083206001600160a01b038616808552908352928190208490555183815285917f621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1b91015b60405180910390a3505050565b816001600160a01b0316836001600160a01b031603611dcd5760405162461bcd60e51b815260206004820152601a60248201527f455243333532353a20617070726f766520746f2063616c6c65720000000000006044820152606401610665565b6001600160a01b0383811660008181526007602090815260408083209487168084526002909501825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101611d5f565b611e41848484611986565b611e4d84848484612658565b6108c55760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e7366657220746f206e6f6e204552433732315260448201526632b1b2b4bb32b960c91b6064820152608401610665565b60606106c26001600160a01b038316601461279e565b60006001600160e01b031982166301ffc9a760e01b1480611ef057506001600160e01b03198216630354d60560e61b145b80611f0b57506001600160e01b031982166380ac58cd60e01b145b80611f2657506001600160e01b031982166370b0048160e11b145b80611f4157506001600160e01b0319821663780e9d6360e01b145b806106c257506001600160e01b03198216635b5e139f60e01b1492915050565b600554600090158015906106c25750600082815260066020526040902054600580548492908110611f9457611f9461327a565b9060005260206000209060060201600001541492915050565b6003805460009182611fbe83613495565b91905055905090565b6001600160a01b038616158015611fdc575083155b8015611fee5750611fec82611afe565b155b15611ffc57611ffc8261293a565b505050505050565b6040805160c081018252838152602080820184905260008284018190526001600160a01b038716606084015260808301819052835181815291820190935260a0820152905061205281612a01565b61205c84846124fc565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4816000847fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a450505050565b6000828152600660205260409020546005805483929081106120ee576120ee61327a565b9060005260206000209060060201600201600082825461210e9190613503565b909155505060405181815282906000907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a35050565b6001600160a01b038616158015612164575083155b801561217757506121758284612b50565b155b1561218b576121868284612bdb565b611ffc565b6001600160a01b0385161580156121a0575082155b80156121b157506121b18285612b50565b15612186576121868285612c3c565b6000806121cc85610cb2565b9050803b63ffffffff1615612326576040516301ffc9a760e01b8152629ce20b60e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa925050508015612241575060408051601f3d908101601f1916820190925261223e9181019061351b565b60015b612280573d80801561226f576040519150601f19603f3d011682016040523d82523d6000602084013e612274565b606091505b506001925050506113a2565b801561231b57604051629ce20b60e01b81526000906001600160a01b03841690629ce20b906122bb9033908c908c908c908c90600401613538565b6020604051808303816000875af11580156122da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fe9190613576565b6001600160e01b031916629ce20b60e01b1493506113a292505050565b6001925050506113a2565b60019150506113a2565b6000818152600660205260408120546005805490919081106123545761235461327a565b600091825260208220600560069092020190810154909250905b818110156123cc57600083600501828154811061238d5761238d61327a565b60009182526020808320909101548783526004825260408084206001600160a01b039092168452915281205550806123c481613495565b91505061236e565b50610a26600583016000612da5565b6000818152600660205260408120546005805490919081106123ff576123ff61327a565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b039485161790559184168152600790915260408120805490919061244e906001906134d8565b905060008260000182815481106124675761246761327a565b906000526020600020015490506000836001016000868152602001908152602001600020549050818460000182815481106124a4576124a461327a565b600091825260208083209091019290925583815260018601909152604080822083905586825281205583548490806124de576124de613593565b60019003818190600052602060002001600090559055505050505050565b6000818152600660205260409020546005805484929081106125205761252061327a565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b03948516179055939091168152600780845260408083208054858552600182810188529285208190559286529082018155825292902090910155565b6000818152600660205260408120546005805483929081106125a9576125a961327a565b6000918252602082206005600690920201015491505b8181101561264d57600084815260066020526040902054600580546001600160a01b038816929081106125f4576125f461327a565b906000526020600020906006020160050182815481106126165761261661327a565b6000918252602090912001546001600160a01b03160361263b576001925050506106c2565b8061264581613495565b9150506125bf565b506000949350505050565b6000833b63ffffffff161561279657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906126999033908990889088906004016135a9565b6020604051808303816000875af19250505080156126d4575060408051601f3d908101601f191682019092526126d191810190613576565b60015b61277c573d808015612702576040519150601f19603f3d011682016040523d82523d6000602084013e612707565b606091505b5080516000036127745760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610665565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506113a2565b5060016113a2565b606060006127ad8360026135e6565b6127b8906002613503565b67ffffffffffffffff8111156127d0576127d06130ce565b6040519080825280601f01601f1916602001820160405280156127fa576020820181803683370190505b509050600360fc1b816000815181106128155761281561327a565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106128445761284461327a565b60200101906001600160f81b031916908160001a90535060006128688460026135e6565b612873906001613503565b90505b60018111156128eb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128a7576128a761327a565b1a60f81b8282815181106128bd576128bd61327a565b60200101906001600160f81b031916908160001a90535060049490941c936128e481613605565b9050612876565b5083156109b65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610665565b61294381611afe565b156129a35760405162461bcd60e51b815260206004820152602a60248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420616c72656044820152696164792065786973747360b01b6064820152608401610665565b6040805180820182528281528151600080825260208281019094529282015290506129cd81612d20565b816000807fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a45050565b600580548251600090815260066020818152604080842085905560018501865594909252845192027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101928355818501517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db1820155928401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db284015560608401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db3840180546001600160a01b039283166001600160a01b03199182161790915560808601517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db48601805491909316911617905560a0840151805185946108c5937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db5909101920190612dc3565b6000828152600b6020526040812054600a80548392908110612b7457612b7461327a565b90600052602060002090600202019050600081600101805490501180156113a2575060008481526009602090815260408083208684529091529020546001820180548592908110612bc757612bc761327a565b906000526020600020015414949350505050565b6000828152600b6020526040812054600a80549091908110612bff57612bff61327a565b6000918252602080832060016002909302018201805496845260098252604080852087865283528420879055918601825590825290209092015550565b6000828152600b6020526040812054600a80549091908110612c6057612c6061327a565b600091825260208220600160029092020181810154909350612c8291906134d8565b90506000826001018281548110612c9b57612c9b61327a565b6000918252602080832090910154878352600982526040808420888552909252912054600185018054929350909183919083908110612cdc57612cdc61327a565b60009182526020808320919091019290925587815260098252604080822085835290925281812083905586815290812055600184018054806124de576124de613593565b600a805482516000908152600b602090815260408220839055600183018455929052825160029091027fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8810191825582840151805185946108c5937fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a901920190612e28565b50805460008255906000526020600020908101906112079190612e63565b828054828255906000526020600020908101928215612e18579160200282015b82811115612e1857825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612de3565b50612e24929150612e63565b5090565b828054828255906000526020600020908101928215612e18579160200282015b82811115612e18578251825591602001919060010190612e48565b5b80821115612e245760008155600101612e64565b60008060408385031215612e8b57600080fd5b50508035926020909101359150565b6001600160e01b03198116811461120757600080fd5b600060208284031215612ec257600080fd5b81356109b681612e9a565b60005b83811015612ee8578181015183820152602001612ed0565b838111156108c55750506000910152565b60008151808452612f11816020860160208601612ecd565b601f01601f19169290920160200192915050565b6020815260006109b66020830184612ef9565b600060208284031215612f4a57600080fd5b5035919050565b80356001600160a01b0381168114610d4957600080fd5b60008060408385031215612f7b57600080fd5b612f8483612f51565b946020939093013593505050565b600080600060608486031215612fa757600080fd5b83359250612fb760208501612f51565b9150604084013590509250925092565b600080600060608486031215612fdc57600080fd5b612fe584612f51565b9250612fb760208501612f51565b60008060006060848603121561300857600080fd5b505081359360208301359350604090920135919050565b801515811461120757600080fd5b6000806000806080858703121561304357600080fd5b61304c85612f51565b93506020850135925061306160408601612f51565b915060608501356130718161301f565b939692955090935050565b60006020828403121561308e57600080fd5b6109b682612f51565b600080604083850312156130aa57600080fd5b6130b383612f51565b915060208301356130c38161301f565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561310d5761310d6130ce565b604052919050565b600067ffffffffffffffff82111561312f5761312f6130ce565b50601f01601f191660200190565b6000806000806080858703121561315357600080fd5b61315c85612f51565b935061316a60208601612f51565b925060408501359150606085013567ffffffffffffffff81111561318d57600080fd5b8501601f8101871361319e57600080fd5b80356131b16131ac82613115565b6130e4565b8181528860208385010111156131c657600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b600080604083850312156131fb57600080fd5b8235915061320b60208401612f51565b90509250929050565b60008060006060848603121561322957600080fd5b61323284612f51565b92506020840135915061324760408501612f51565b90509250925092565b6000806040838503121561326357600080fd5b61326c83612f51565b915061320b60208401612f51565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806132a457607f821691505b6020821081036132c457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f455243333532353a20617070726f76616c20746f2063757272656e74206f776e60408201526132b960f11b606082015260800190565b6000835161331e818460208801612ecd565b64736c6f742f60d81b9083019081528351613340816005840160208801612ecd565b01600501949350505050565b60006020828403121561335e57600080fd5b815167ffffffffffffffff81111561337557600080fd5b8201601f8101841361338657600080fd5b80516133946131ac82613115565b8181528560208385010111156133a957600080fd5b61197d826020830160208601612ecd565b60208082526032908201527f455243333532353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b6000835161341e818460208801612ecd565b835190830190613432818360208801612ecd565b01949350505050565b6000835161344d818460208801612ecd565b68636f6e74726163742f60b81b9083019081528351613473816009840160208801612ecd565b01600901949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016134a7576134a761347f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826134d3576134d36134ae565b500490565b6000828210156134ea576134ea61347f565b500390565b6000826134fe576134fe6134ae565b500690565b600082198211156135165761351661347f565b500190565b60006020828403121561352d57600080fd5b81516109b68161301f565b60018060a01b038616815284602082015283604082015282606082015260a06080820152600061356b60a0830184612ef9565b979650505050505050565b60006020828403121561358857600080fd5b81516109b681612e9a565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906135dc90830184612ef9565b9695505050505050565b60008160001904831182151516156136005761360061347f565b500290565b6000816136145761361461347f565b50600019019056fea26469706673582212206eb8cd64f9eb9098a5a70093052226d8fe931d43128d89b54d6a0780b809ec2464736f6c634300080f0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
