[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "InvestmentNft__AlreadyMinter", "type": "error" }, { "inputs": [], "name": "InvestmentNft__InvalidMarketplaceAddress", "type": "error" }, { "inputs": [], "name": "InvestmentNft__InvalidTokenValue", "type": "error" }, { "inputs": [], "name": "InvestmentNft__InvestmentTooLow", "type": "error" }, { "inputs": [], "name": "InvestmentNft__NotMinter", "type": "error" }, { "inputs": [], "name": "InvestmentNft__NotTokenOwner", "type": "error" }, { "inputs": [], "name": "InvestmentNft__SplitLimitExceeded", "type": "error" }, { "inputs": [], "name": "InvestmentNft__TokenListed", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "InvestmentNft__TokenNotExists", "type": "error" }, { "inputs": [], "name": "InvestmentNft__TokenValuesBeforeAfterSplitMismatch", "type": "error" }, { "inputs": [], "name": "OwnablePausable__OwnerAccountZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "marketplaceAddress", "type": "address" } ], "name": "MarketplaceAddressChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "name", "type": "string" }, { "indexed": true, "internalType": "string", "name": "description", "type": "string" }, { "indexed": true, "internalType": "string", "name": "image", "type": "string" }, { "indexed": false, "internalType": "string", "name": "externalUrl", "type": "string" } ], "name": "MetadataChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "description", "type": "string" } ], "name": "MetadataDescriptionChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "externalUrl", "type": "string" } ], "name": "MetadataExternalUrlChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "image", "type": "string" } ], "name": "MetadataImageChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "name", "type": "string" } ], "name": "MetadataNameChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "MinimumValueChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "MinterAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "MinterRemoved", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenSplitted", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getInvestmentValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getInvestors", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getParticipation", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastInvestmentValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastParticipation", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastTotalInvestmentValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getSharePercentage", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTotalInvestmentValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "royaltyAccount", "type": "address" }, { "internalType": "uint96", "name": "royaltyValue", "type": "uint96" }, { "internalType": "uint256", "name": "_minimumValue", "type": "uint256" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "externalUrl", "type": "string" } ], "internalType": "struct IInvestmentNFT.Metadata", "name": "_metadata", "type": "tuple" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "metadata", "outputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "externalUrl", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minimumValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "externalUrl", "type": "string" } ], "internalType": "struct IInvestmentNFT.Metadata", "name": "_metadata", "type": "tuple" } ], "name": "setAllMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "setMarketplaceAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_description", "type": "string" } ], "name": "setMetadataDescription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extenralUrl", "type": "string" } ], "name": "setMetadataExternalUrl", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_image", "type": "string" } ], "name": "setMetadataImage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" } ], "name": "setMetadataName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_minimumValue", "type": "uint256" } ], "name": "setMinimumValue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "split", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61481f80620000f46000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c8063708cda1811610167578063a22cb465116100ce578063c87b56dd11610087578063c87b56dd146105e1578063cad925ef146105f4578063cb91449114610607578063de0b339b14610628578063e985e9c51461063b578063f2fde38b1461067757600080fd5b8063a22cb46514610553578063aa271e1a14610566578063b2f5a54c14610593578063b47cc556146105a8578063b88d4fde146105bb578063bf76c95a146105ce57600080fd5b806385b3cbd61161012057806385b3cbd6146104ee5780638af4b835146105015780638da5cb5b1461051457806395d89b4114610525578063983b2d561461052d5780639ba954951461054057600080fd5b8063708cda181461049b57806370a08231146104ae578063715018a6146104c15780637bda7d5a146104c95780638456cb59146104dc578063849aaf8e146104e457600080fd5b80633057e8281161020b578063468de88e116101c4578063468de88e1461043b5780634f6ccce714610443578063599487c3146104565780635c975abb146104695780636352211e1461047557806369c672471461048857600080fd5b80633057e828146103cf5780633092afd5146103e2578063392f37e9146103f55780633f4ba83a1461040d57806340c10f191461041557806342842e0e1461042857600080fd5b80631b129ca41161025d5780631b129ca41461032957806323b872dd1461033c578063273771671461034f5780632a55205a146103625780632e034166146103945780632f745c59146103bc57600080fd5b806301ffc9a71461029a57806306fdde03146102c2578063081812fc146102d7578063095ea7b31461030257806318160ddd14610317575b600080fd5b6102ad6102a8366004613a55565b61068a565b60405190151581526020015b60405180910390f35b6102ca6106c4565b6040516102b99190613ac2565b6102ea6102e5366004613ad5565b610756565b6040516001600160a01b0390911681526020016102b9565b610315610310366004613b03565b61077d565b005b6099545b6040519081526020016102b9565b61031b610337366004613ad5565b61087d565b61031561034a366004613b2f565b61088b565b61031561035d366004613c45565b6108ca565b610375610370366004613c7a565b610921565b604080516001600160a01b0390931683526020830191909152016102b9565b6103a76103a2366004613b03565b6109cf565b604080519283526020830191909152016102b9565b61031b6103ca366004613b03565b6109f0565b6103156103dd366004613d55565b610a86565b6103156103f0366004613d8a565b610b64565b6103fd610bf1565b6040516102b99493929190613da7565b610315610e2e565b610315610423366004613b03565b610e40565b610315610436366004613b2f565b610ea7565b61031b610ec2565b61031b610451366004613ad5565b610edd565b610315610464366004613c45565b610f70565b61012d5460ff166102ad565b6102ea610483366004613ad5565b610fc7565b610315610496366004613dff565b611027565b6103156104a9366004613c45565b611150565b61031b6104bc366004613d8a565b6111a7565b61031561122d565b6103156104d7366004613e9a565b611268565b61031561146b565b61031b6101fc5481565b6103156104fc366004613c45565b61147b565b6102ca61050f366004613ad5565b6114d2565b60fb546001600160a01b03166102ea565b6102ca611635565b61031561053b366004613d8a565b611644565b61031561054e366004613ad5565b6116ea565b610315610561366004613f75565b611726565b6102ad610574366004613d8a565b6001600160a01b031660009081526101f7602052604090205460ff1690565b61059b611843565b6040516102b99190613fae565b6103156105b6366004613d8a565b611855565b6103156105c9366004613ffb565b6118d8565b61031b6105dc366004613d8a565b61190a565b6102ca6105ef366004613ad5565b61193b565b6103a7610602366004613d8a565b6119a9565b61031b610615366004613ad5565b6101f56020526000908152604090205481565b61031b610636366004613b03565b6119c6565b6102ad61064936600461407b565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b610315610685366004613d8a565b6119f0565b60006001600160e01b031982166396b1505560e01b14806106af57506106af82611a69565b806106be57506106be82611a69565b92915050565b6060606580546106d3906140a9565b80601f01602080910402602001604051908101604052809291908181526020018280546106ff906140a9565b801561074c5780601f106107215761010080835404028352916020019161074c565b820191906000526020600020905b81548152906001019060200180831161072f57829003601f168201915b5050505050905090565b600061076182611a8e565b506000908152606960205260409020546001600160a01b031690565b6107878282611aed565b6102015460405162307ccf60e81b8152306004820152602481018390526001600160a01b039091169063307ccf009060440160c060405180830381865afa1580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa91906140e3565b51801561080e57506001600160a01b038216155b15610879576102015460405163596ef70360e11b8152306004820152602481018390526001600160a01b039091169063b2ddee0690604401600060405180830381600087803b15801561086057600080fd5b505af1158015610874573d6000803e3d6000fd5b505050505b5050565b60006106be6101fb83611bfd565b6108953382611d19565b6108ba5760405162461bcd60e51b81526004016108b19061417e565b60405180910390fd5b6108c5838383611d98565b505050565b6108d2611f11565b6101ff6108df8282614211565b50806040516108ee91906142d1565b604051908190038120907f14943c2cfa9e728b3d39af559609b4a712ad073cbedf52902435e7ba8038472c90600090a250565b6000828152610192602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610998575060408051808201909152610191546001600160a01b0381168252600160a01b90046001600160601b031660208201525b6020810151600090612710906109b7906001600160601b031687614303565b6109c19190614330565b915196919550909350505050565b6000806109dc84846119c6565b6109e58461087d565b915091509250929050565b60006109fb836111a7565b8210610a5d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016108b1565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b610a8e611f11565b80516101fd90610a9e9082614211565b5060208101516101fe90610ab29082614211565b5060408101516101ff90610ac69082614211565b50606081015161020090610ada9082614211565b508060400151604051610aed91906142d1565b60405180910390208160200151604051610b0791906142d1565b60405190819003812083519091610b1e91906142d1565b60405180910390207f291ae74c7533db739130c6791815858c63b858e5f07ead9bbda4b1e49ac808038460600151604051610b599190613ac2565b60405180910390a450565b610b6c611f11565b6001600160a01b03811660009081526101f7602052604090205460ff16610ba657604051631f62b94760e11b815260040160405180910390fd5b6001600160a01b03811660008181526101f76020526040808220805460ff191690555133917f4b5ef9a786cf64a7d82ebcf2d5132667edc9faef4ac36260d9a9e52c526b623291a350565b6101fd80548190610c01906140a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2d906140a9565b8015610c7a5780601f10610c4f57610100808354040283529160200191610c7a565b820191906000526020600020905b815481529060010190602001808311610c5d57829003601f168201915b505050505090806001018054610c8f906140a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbb906140a9565b8015610d085780601f10610cdd57610100808354040283529160200191610d08565b820191906000526020600020905b815481529060010190602001808311610ceb57829003601f168201915b505050505090806002018054610d1d906140a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610d49906140a9565b8015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b505050505090806003018054610dab906140a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd7906140a9565b8015610e245780601f10610df957610100808354040283529160200191610e24565b820191906000526020600020905b815481529060010190602001808311610e0757829003601f168201915b5050505050905084565b610e36611f11565b610e3e611f6b565b565b610e48611fbe565b3360009081526101f7602052604090205460ff16610e7957604051631f62b94760e11b815260040160405180910390fd5b6101fc54811015610e9d57604051637ed8b27360e01b815260040160405180910390fd5b6108798282612005565b6108c5838383604051806020016040528060008152506118d8565b6000610ecf6101fb61205f565b6001600160e01b0316905090565b6000610ee860995490565b8210610f4b5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016108b1565b60998281548110610f5e57610f5e614344565b90600052602060002001549050919050565b610f78611f11565b6101fe610f858282614211565b5080604051610f9491906142d1565b604051908190038120907f8e653cc339e951ba640619f984fa29e7f495c7450588d5aef372c3e78a44029590600090a250565b6000818152606760205260408120546001600160a01b0316806106be5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108b1565b61102f611fbe565b6102015460405162307ccf60e81b8152306004820152602481018590526001600160a01b039091169063307ccf009060440160c060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a291906140e3565b51156110c15760405163273a583d60e11b815260040160405180910390fd5b6110cc838383612099565b6110d5836121a4565b60008381526101926020526040812081905533905b8281101561111c576111148285858481811061110857611108614344565b90506020020135612005565b6001016110ea565b50604051849033907f787faf7534acb0b3087bace95330bb8845584763bbca32e5708726f24bb55b1290600090a350505050565b611158611f11565b6102006111658282614211565b508060405161117491906142d1565b604051908190038120907f44b1fc4ac630b61fd3eb486168276c325e06e02b4272267828fb3fc4814fd5a190600090a250565b60006001600160a01b0382166112115760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108b1565b506001600160a01b031660009081526068602052604090205490565b611235611f11565b60405162461bcd60e51b8152602060048201526008602482015267191a5cd8589b195960c21b60448201526064016108b1565b600054610100900460ff16158080156112885750600054600160ff909116105b806112a25750303b1580156112a2575060005460ff166001145b6113055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108b1565b6000805460ff191660011790558015611328576000805461ff0019166101001790555b6113306121d3565b6113386121d3565b61134288886121fa565b61134a6121d3565b6113526121d3565b61135a61222b565b6113638661225a565b61136d858561228a565b6001600160a01b03861660009081526101f76020908152604091829020805460ff191660011790556101fc8590558151608081018352845180825285830151928201929092528483015192810192909252606080850151908301526101fd9081906113d89082614211565b50602082015160018201906113ed9082614211565b50604082015160028201906114029082614211565b50606082015160038201906114179082614211565b509050508015611461576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b611473611f11565b610e3e612388565b611483611f11565b6101fd6114908282614211565b508060405161149f91906142d1565b604051908190038120907f2a4d6e7cda53f02e2fb452305073d6de1d1a54b0c486102404802441097701e090600090a250565b6000818152606760205260409020546060906001600160a01b031661150d5760405163199d8fa960e01b8152600481018390526024016108b1565b60008281526101f5602052604081205490611526610ec2565b9050600081611538620f424085614303565b6115429190614330565b9050600061155a61155561271084614330565b6123c6565b9050600061156a6127108461435a565b90506000600a82106115db57606482106115c2576103e8821061159557611590826123c6565b611604565b61159e826123c6565b6040516020016115ae919061436e565b604051602081830303815290604052611604565b6115cb826123c6565b6040516020016115ae9190614397565b6115e4826123c6565b6040516020016115f491906143c1565b6040516020818303038152906040525b905082816040516020016116199291906143ec565b60408051601f1981840301815291905298975050505050505050565b6060606680546106d3906140a9565b61164c611f11565b6001600160a01b03811660009081526101f7602052604090205460ff161561168757604051630a8c96fd60e41b815260040160405180910390fd5b6001600160a01b03811660008181526101f760205260409020805460ff191660011790556116b23390565b6001600160a01b03167f3c091dafb1d99e4a4c333024492eac3b2cd8bf921a3dd547c937db33be307bb860405160405180910390a350565b6116f2611f11565b6101fc81905560405181907ffca399a1d46b939eb17174f32ff8b85f2a4030615d225ca55f8947805cb1131a90600090a250565b61173082826124c7565b600061173b336111a7565b905060005b8181101561183d57600061175433836109f0565b6102015460405162307ccf60e81b8152306004820152602481018390529192506001600160a01b03169063307ccf009060440160c060405180830381865afa1580156117a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c891906140e3565b5115611834576102015460405163596ef70360e11b8152306004820152602481018390526001600160a01b039091169063b2ddee0690604401600060405180830381600087803b15801561181b57600080fd5b505af115801561182f573d6000803e3d6000fd5b505050505b50600101611740565b50505050565b60606118506101f86124d2565b905090565b61185d611f11565b6001600160a01b0381166118835760405162ad23eb60e41b815260040160405180910390fd5b61020180546001600160a01b0319166001600160a01b0383169081179091556040519081527fcd18a0aa840156825b8db756ea0f9aa1bedc5a771ea33c3a63efbf321a91d9859060200160405180910390a150565b6118e23383611d19565b6118fe5760405162461bcd60e51b81526004016108b19061417e565b61183d848484846124df565b6001600160a01b03811660009081526101fa6020526040812061192c9061205f565b6001600160e01b031692915050565b6060600061197f6101fd6101fe6101ff610200611957886114d2565b60405160200161196b9594939291906144a9565b604051602081830303815290604052612512565b90508060405160200161199291906145d3565b604051602081830303815290604052915050919050565b6000806119b58361190a565b6119bd610ec2565b91509150915091565b6001600160a01b03821660009081526101fa602052604081206119e99083611bfd565b9392505050565b6119f8611f11565b6001600160a01b038116611a5d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b1565b611a6681612665565b50565b60006001600160e01b0319821663152a902d60e11b14806106be57506106be826126b7565b6000818152606760205260409020546001600160a01b0316611a665760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108b1565b6000611af882610fc7565b9050806001600160a01b0316836001600160a01b031603611b655760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108b1565b336001600160a01b0382161480611b815750611b818133610649565b611bf35760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016108b1565b6108c583836126dc565b6000438210611c4e5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108b1565b6000611c598361274a565b84549091506000816005811115611cb7576000611c75846127b3565b611c7f9085614618565b60008981526020902090915081015463ffffffff9081169086161015611ca757809150611cb5565b611cb281600161462b565b92505b505b6000611cc58886858561289b565b90508015611d0157611cea88611cdc600184614618565b600091825260209091200190565b5464010000000090046001600160e01b0316611d04565b60005b6001600160e01b031698975050505050505050565b600080611d2583610fc7565b9050806001600160a01b0316846001600160a01b03161480611d6c57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d905750836001600160a01b0316611d8584610756565b6001600160a01b0316145b949350505050565b826001600160a01b0316611dab82610fc7565b6001600160a01b031614611dd15760405162461bcd60e51b81526004016108b19061463e565b6001600160a01b038216611e335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108b1565b611e4083838360016128f9565b826001600160a01b0316611e5382610fc7565b6001600160a01b031614611e795760405162461bcd60e51b81526004016108b19061463e565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a46108c5838383600161290d565b60fb546001600160a01b03163314610e3e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b1565b611f73612966565b61012d805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61012d5460ff1615610e3e5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016108b1565b600081116120265760405163aeef32ad60e01b815260040160405180910390fd5b60006120326101f65490565b90506120436101f680546001019055565b60008181526101f5602052604090208290556108c583826129b0565b805460009080156120905761207983611cdc600184614618565b5464010000000090046001600160e01b03166119e9565b60009392505050565b6120a283610fc7565b6001600160a01b0316336001600160a01b0316146120d357604051630ec593f560e31b815260040160405180910390fd5b600a8111156120f55760405163c653a11760e01b815260040160405180910390fd5b6101fc54600090815b8381101561216d578185858381811061211957612119614344565b90506020020135101561213f57604051637ed8b27360e01b815260040160405180910390fd5b84848281811061215157612151614344565b9050602002013583612163919061462b565b92506001016120fe565b5060008581526101f56020526040902054821461219d57604051636ab10bbd60e11b815260040160405180910390fd5b5050505050565b6121ad816129ca565b60008181526101f56020526040812055611a668160009081526101926020526040812055565b600054610100900460ff16610e3e5760405162461bcd60e51b81526004016108b190614683565b600054610100900460ff166122215760405162461bcd60e51b81526004016108b190614683565b6108798282612a0a565b600054610100900460ff166122525760405162461bcd60e51b81526004016108b190614683565b610e3e612a4a565b600054610100900460ff166122815760405162461bcd60e51b81526004016108b190614683565b611a6681612a7e565b6127106001600160601b03821611156122f85760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016108b1565b6001600160a01b03821661234e5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016108b1565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b9091021761019155565b612390611fbe565b61012d805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611fa13390565b6060816000036123ed5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156124175780612401816146ce565b91506124109050600a83614330565b91506123f1565b60008167ffffffffffffffff81111561243257612432613b70565b6040519080825280601f01601f19166020018201604052801561245c576020820181803683370190505b5090505b8415611d9057612471600183614618565b915061247e600a8661435a565b61248990603061462b565b60f81b81838151811061249e5761249e614344565b60200101906001600160f81b031916908160001a9053506124c0600a86614330565b9450612460565b610879338383612adc565b606060006119e983612baa565b6124ea848484611d98565b6124f684848484612c06565b61183d5760405162461bcd60e51b81526004016108b1906146e7565b6060815160000361253157505060408051602081019091526000815290565b60006040518060600160405280604081526020016147aa6040913990506000600384516002612560919061462b565b61256a9190614330565b612575906004614303565b67ffffffffffffffff81111561258d5761258d613b70565b6040519080825280601f01601f1916602001820160405280156125b7576020820181803683370190505b509050600182016020820185865187015b80821015612623576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453506001830192506125c8565b505060038651066001811461263f57600281146126525761265a565b603d6001830353603d600283035361265a565b603d60018303535b509195945050505050565b60fb80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160e01b0319821663780e9d6360e01b14806106be57506106be82612d04565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061271182610fc7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600063ffffffff8211156127af5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108b1565b5090565b6000816000036127c557506000919050565b600060016127d284612d54565b901c6001901b905060018184816127eb576127eb61431a565b048201901c905060018184816128035761280361431a565b048201901c9050600181848161281b5761281b61431a565b048201901c905060018184816128335761283361431a565b048201901c9050600181848161284b5761284b61431a565b048201901c905060018184816128635761286361431a565b048201901c9050600181848161287b5761287b61431a565b048201901c90506119e9818285816128955761289561431a565b04612de8565b60005b818310156128f15760006128b28484612dfe565b60008781526020902090915063ffffffff86169082015463ffffffff1611156128dd578092506128eb565b6128e881600161462b565b93505b5061289e565b509392505050565b612901611fbe565b61183d84848484612e19565b826001600160a01b0316846001600160a01b03161461183d576001600160a01b0384166129435761293e8383612e8d565b61183d565b6001600160a01b03831661295b5761293e8483612eb8565b61183d848484612ee3565b61012d5460ff16610e3e5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108b1565b610879828260405180602001604052806000815250612fe1565b6129d381613014565b600081815260c96020526040902080546129ec906140a9565b159050611a6657600081815260c960205260408120611a66916139f5565b600054610100900460ff16612a315760405162461bcd60e51b81526004016108b190614683565b6065612a3d8382614211565b5060666108c58282614211565b600054610100900460ff16612a715760405162461bcd60e51b81526004016108b190614683565b61012d805460ff19169055565b600054610100900460ff16612aa55760405162461bcd60e51b81526004016108b190614683565b6001600160a01b038116612acc57604051635bb92f3d60e01b815260040160405180910390fd5b612ad46130c1565b611a5d61222b565b816001600160a01b0316836001600160a01b031603612b3d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108b1565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606081600001805480602002602001604051908101604052809291908181526020018280548015612bfa57602002820191906000526020600020905b815481526020019060010190808311612be6575b50505050509050919050565b60006001600160a01b0384163b15612cfc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612c4a903390899088908890600401614739565b6020604051808303816000875af1925050508015612c85575060408051601f3d908101601f19168201909252612c8291810190614776565b60015b612ce2573d808015612cb3576040519150601f19603f3d011682016040523d82523d6000602084013e612cb8565b606091505b508051600003612cda5760405162461bcd60e51b81526004016108b1906146e7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d90565b506001611d90565b60006001600160e01b031982166380ac58cd60e01b1480612d3557506001600160e01b03198216635b5e139f60e01b145b806106be57506301ffc9a760e01b6001600160e01b03198316146106be565b600080608083901c15612d6957608092831c92015b604083901c15612d7b57604092831c92015b602083901c15612d8d57602092831c92015b601083901c15612d9f57601092831c92015b600883901c15612db157600892831c92015b600483901c15612dc357600492831c92015b600283901c15612dd557600292831c92015b600183901c156106be5760010192915050565b6000818310612df757816119e9565b5090919050565b6000612e0d6002848418614330565b6119e99084841661462b565b612e25848484846130f0565b61012d5460ff161561183d5760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016108b1565b60008181526101f56020526040902054612eac6101fb61321d83613229565b50506108c58382613261565b60008181526101f56020526040902054612ed76101fb61329683613229565b50506108c583826132a2565b60008181526101f56020526040902054612efd84826132a2565b612f078382613261565b6102015460405162307ccf60e81b8152306004820152602481018490526001600160a01b039091169063307ccf009060440160c060405180830381865afa158015612f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7a91906140e3565b511561183d576102015460405163596ef70360e11b8152306004820152602481018490526001600160a01b039091169063b2ddee0690604401600060405180830381600087803b158015612fcd57600080fd5b505af1158015611461573d6000803e3d6000fd5b612feb83836132e6565b612ff86000848484612c06565b6108c55760405162461bcd60e51b81526004016108b1906146e7565b600061301f82610fc7565b905061302f8160008460016128f9565b61303882610fc7565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a461087981600084600161290d565b600054610100900460ff166130e85760405162461bcd60e51b81526004016108b190614683565b610e3e613489565b600181111561315f5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b60648201526084016108b1565b816001600160a01b0385166131bb576131b681609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b6131de565b836001600160a01b0316856001600160a01b0316146131de576131de85826134b9565b6001600160a01b0384166131fa576131f581613556565b61219d565b846001600160a01b0316846001600160a01b03161461219d5761219d8482613605565b60006119e9828461462b565b6000806132548561324f61323c8861205f565b6001600160e01b0316868863ffffffff16565b613649565b915091505b935093915050565b6001600160a01b03821660009081526101fa602052604090206132879061321d83613229565b506108c590506101f88361367d565b60006119e98284614618565b6001600160a01b03821660009081526101fa602052604090206132c89061329683613229565b50506132d3826111a7565b600003610879576108c56101f883613692565b6001600160a01b03821661333c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108b1565b6000818152606760205260409020546001600160a01b0316156133a15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108b1565b6133af6000838360016128f9565b6000818152606760205260409020546001600160a01b0316156134145760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108b1565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461087960008383600161290d565b600054610100900460ff166134b05760405162461bcd60e51b81526004016108b190614683565b610e3e33612665565b600060016134c6846111a7565b6134d09190614618565b600083815260986020526040902054909150808214613523576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b60995460009061356890600190614618565b6000838152609a60205260408120546099805493945090928490811061359057613590614344565b9060005260206000200154905080609983815481106135b1576135b1614344565b6000918252602080832090910192909255828152609a909152604080822084905585825281205560998054806135e9576135e9614793565b6001900381819060005260206000200160009055905550505050565b6000613610836111a7565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b600080613667846136594361274a565b613662866136a7565b613710565b6001600160e01b03918216969116945092505050565b60006119e9836001600160a01b0384166138b3565b60006119e9836001600160a01b038416613902565b60006001600160e01b038211156127af5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108b1565b82546000908190801561385957600061372e87611cdc600185614618565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090871610156137b05760405162461bcd60e51b815260206004820152601760248201527f436865636b706f696e743a20696e76616c6964206b657900000000000000000060448201526064016108b1565b805163ffffffff8088169116036137f957846137d188611cdc600186614618565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055613849565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b6020015192508391506132599050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316640100000000029190931617920191909155905081613259565b60008181526001830160205260408120546138fa575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106be565b5060006106be565b600081815260018301602052604081205480156139eb576000613926600183614618565b855490915060009061393a90600190614618565b905081811461399f57600086600001828154811061395a5761395a614344565b906000526020600020015490508087600001848154811061397d5761397d614344565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806139b0576139b0614793565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106be565b60009150506106be565b508054613a01906140a9565b6000825580601f10613a11575050565b601f016020900490600052602060002090810190611a6691905b808211156127af5760008155600101613a2b565b6001600160e01b031981168114611a6657600080fd5b600060208284031215613a6757600080fd5b81356119e981613a3f565b60005b83811015613a8d578181015183820152602001613a75565b50506000910152565b60008151808452613aae816020860160208601613a72565b601f01601f19169290920160200192915050565b6020815260006119e96020830184613a96565b600060208284031215613ae757600080fd5b5035919050565b6001600160a01b0381168114611a6657600080fd5b60008060408385031215613b1657600080fd5b8235613b2181613aee565b946020939093013593505050565b600080600060608486031215613b4457600080fd5b8335613b4f81613aee565b92506020840135613b5f81613aee565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ba957613ba9613b70565b60405290565b600067ffffffffffffffff80841115613bca57613bca613b70565b604051601f8501601f19908116603f01168101908282118183101715613bf257613bf2613b70565b81604052809350858152868686011115613c0b57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112613c3657600080fd5b6119e983833560208501613baf565b600060208284031215613c5757600080fd5b813567ffffffffffffffff811115613c6e57600080fd5b611d9084828501613c25565b60008060408385031215613c8d57600080fd5b50508035926020909101359150565b600060808284031215613cae57600080fd5b613cb6613b86565b9050813567ffffffffffffffff80821115613cd057600080fd5b613cdc85838601613c25565b83526020840135915080821115613cf257600080fd5b613cfe85838601613c25565b60208401526040840135915080821115613d1757600080fd5b613d2385838601613c25565b60408401526060840135915080821115613d3c57600080fd5b50613d4984828501613c25565b60608301525092915050565b600060208284031215613d6757600080fd5b813567ffffffffffffffff811115613d7e57600080fd5b611d9084828501613c9c565b600060208284031215613d9c57600080fd5b81356119e981613aee565b608081526000613dba6080830187613a96565b8281036020840152613dcc8187613a96565b90508281036040840152613de08186613a96565b90508281036060840152613df48185613a96565b979650505050505050565b600080600060408486031215613e1457600080fd5b83359250602084013567ffffffffffffffff80821115613e3357600080fd5b818601915086601f830112613e4757600080fd5b813581811115613e5657600080fd5b8760208260051b8501011115613e6b57600080fd5b6020830194508093505050509250925092565b80356001600160601b0381168114613e9557600080fd5b919050565b600080600080600080600060e0888a031215613eb557600080fd5b873567ffffffffffffffff80821115613ecd57600080fd5b613ed98b838c01613c25565b985060208a0135915080821115613eef57600080fd5b613efb8b838c01613c25565b975060408a01359150613f0d82613aee565b909550606089013590613f1f82613aee565b819550613f2e60808b01613e7e565b945060a08a0135935060c08a0135915080821115613f4b57600080fd5b50613f588a828b01613c9c565b91505092959891949750929550565b8015158114611a6657600080fd5b60008060408385031215613f8857600080fd5b8235613f9381613aee565b91506020830135613fa381613f67565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613fef5783516001600160a01b031683529284019291840191600101613fca565b50909695505050505050565b6000806000806080858703121561401157600080fd5b843561401c81613aee565b9350602085013561402c81613aee565b925060408501359150606085013567ffffffffffffffff81111561404f57600080fd5b8501601f8101871361406057600080fd5b61406f87823560208401613baf565b91505092959194509250565b6000806040838503121561408e57600080fd5b823561409981613aee565b91506020830135613fa381613aee565b600181811c908216806140bd57607f821691505b6020821081036140dd57634e487b7160e01b600052602260045260246000fd5b50919050565b600060c082840312156140f557600080fd5b60405160c0810181811067ffffffffffffffff8211171561411857614118613b70565b604052825161412681613f67565b8152602083015161413681613f67565b6020820152604083015161414981613aee565b6040820152606083015161415c81613aee565b60608201526080838101519082015260a0928301519281019290925250919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b601f8211156108c557600081815260208120601f850160051c810160208610156141f25750805b601f850160051c820191505b81811015610874578281556001016141fe565b815167ffffffffffffffff81111561422b5761422b613b70565b61423f8161423984546140a9565b846141cb565b602080601f831160018114614274576000841561425c5750858301515b600019600386901b1c1916600185901b178555610874565b600085815260208120601f198616915b828110156142a357888601518255948401946001909101908401614284565b50858210156142c15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082516142e3818460208701613a72565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106be576106be6142ed565b634e487b7160e01b600052601260045260246000fd5b60008261433f5761433f61431a565b500490565b634e487b7160e01b600052603260045260246000fd5b6000826143695761436961431a565b500690565b600360fc1b81526000825161438a816001850160208701613a72565b9190910160010192915050565b61030360f41b8152600082516143b4816002850160208701613a72565b9190910160020192915050565b6203030360ec1b8152600082516143df816003850160208701613a72565b9190910160030192915050565b600083516143fe818460208801613a72565b601760f91b908301908152835161441c816001840160208801613a72565b602560f81b60019290910191820152600201949350505050565b60008154614443816140a9565b6001828116801561445b57600181146144705761449f565b60ff198416875282151583028701945061449f565b8560005260208060002060005b858110156144965781548a82015290840190820161447d565b50505082870194505b5050505092915050565b693d913730b6b2911d101160b11b815260006144c8600a830188614436565b61088b60f21b8082526f113232b9b1b934b83a34b7b7111d101160811b60028301526144f76012830189614436565b818152691134b6b0b3b2911d101160b11b6002820152915061451c600c830188614436565b818152701132bc3a32b93730b62fbab936111d101160791b600282015291506145486013830187614436565b9081527f2261747472696275746573223a205b7b2274726169745f74797065223a22766160028201526d363ab29116113b30b63ab2911d1160911b6022820152845190915061459e816030840160208801613a72565b6145c66145b960308385010162227d5d60e81b815260030190565b607d60f81b815260010190565b9998505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161460b81601d850160208701613a72565b91909101601d0192915050565b818103818111156106be576106be6142ed565b808201808211156106be576106be6142ed565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000600182016146e0576146e06142ed565b5060010190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061476c90830184613a96565b9695505050505050565b60006020828403121561478857600080fd5b81516119e981613a3f565b634e487b7160e01b600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212206a6c4864b40f8e52d69f3d45112759f18cf9e904891f7b9810d85f14f225082f64736f6c63430008120033