[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "HandleContainsInvalidCharacters", "type": "error" }, { "inputs": [], "name": "HandleFirstCharInvalid", "type": "error" }, { "inputs": [], "name": "HandleLengthInvalid", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "platformId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "arbitrationFeeTimeout", "type": "uint256" } ], "name": "ArbitrationFeeTimeoutUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "platformId", "type": "uint256" }, { "indexed": false, "internalType": "contract Arbitrator", "name": "arbitrator", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "extraData", "type": "bytes" } ], "name": "ArbitratorUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "platformId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "newCid", "type": "string" } ], "name": "CidUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "minArbitrationFeeTimeout", "type": "uint256" } ], "name": "MinArbitrationFeeTimeoutUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "platformOwnerAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "platformId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "platformName", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "arbitrationFeeTimeout", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "mintFee", "type": "uint256" } ], "name": "MintFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "enum TalentLayerPlatformID.MintStatus", "name": "mintStatus", "type": "uint8" } ], "name": "MintStatusUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "platformId", "type": "uint256" }, { "indexed": false, "internalType": "uint16", "name": "originServiceFeeRate", "type": "uint16" } ], "name": "OriginServiceFeeRateUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "platformId", "type": "uint256" }, { "indexed": false, "internalType": "uint16", "name": "originValidatedProposalFeeRate", "type": "uint16" } ], "name": "OriginValidatedProposalFeeRateUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "platformId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "proposalPostingFee", "type": "uint256" } ], "name": "ProposalPostingFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "platformId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "servicePostingFee", "type": "uint256" } ], "name": "ServicePostingFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "platformId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "signer", "type": "address" } ], "name": "SignerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" } ], "name": "UserWhitelisted", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINT_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_arbitrator", "type": "address" }, { "internalType": "bool", "name": "_isInternal", "type": "bool" } ], "name": "addArbitrator", "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": "uint256", "name": "_platformId", "type": "uint256" } ], "name": "getOriginServiceFeeRate", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" } ], "name": "getOriginValidatedProposalFeeRate", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" } ], "name": "getPlatform", "outputs": [ { "components": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "dataUri", "type": "string" }, { "internalType": "uint16", "name": "originServiceFeeRate", "type": "uint16" }, { "internalType": "uint16", "name": "originValidatedProposalFeeRate", "type": "uint16" }, { "internalType": "uint256", "name": "servicePostingFee", "type": "uint256" }, { "internalType": "uint256", "name": "proposalPostingFee", "type": "uint256" }, { "internalType": "contract Arbitrator", "name": "arbitrator", "type": "address" }, { "internalType": "bytes", "name": "arbitratorExtraData", "type": "bytes" }, { "internalType": "uint256", "name": "arbitrationFeeTimeout", "type": "uint256" }, { "internalType": "address", "name": "signer", "type": "address" } ], "internalType": "struct TalentLayerPlatformID.Platform", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" } ], "name": "getProposalPostingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" } ], "name": "getServicePostingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" } ], "name": "getSigner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "ids", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "internalArbitrators", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "uint256", "name": "_platformId", "type": "uint256" } ], "name": "isValid", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minArbitrationFeeTimeout", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_platformName", "type": "string" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_platformName", "type": "string" }, { "internalType": "address", "name": "_platformAddress", "type": "address" } ], "name": "mintForAddress", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintStatus", "outputs": [ { "internalType": "enum TalentLayerPlatformID.MintStatus", "name": "", "type": "uint8" } ], "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": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "platforms", "outputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "dataUri", "type": "string" }, { "internalType": "uint16", "name": "originServiceFeeRate", "type": "uint16" }, { "internalType": "uint16", "name": "originValidatedProposalFeeRate", "type": "uint16" }, { "internalType": "uint256", "name": "servicePostingFee", "type": "uint256" }, { "internalType": "uint256", "name": "proposalPostingFee", "type": "uint256" }, { "internalType": "contract Arbitrator", "name": "arbitrator", "type": "address" }, { "internalType": "bytes", "name": "arbitratorExtraData", "type": "bytes" }, { "internalType": "uint256", "name": "arbitrationFeeTimeout", "type": "uint256" }, { "internalType": "address", "name": "signer", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_arbitrator", "type": "address" } ], "name": "removeArbitrator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "", "type": "string" } ], "name": "takenNames", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" }, { "internalType": "uint256", "name": "_arbitrationFeeTimeout", "type": "uint256" } ], "name": "updateArbitrationFeeTimeout", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" }, { "internalType": "contract Arbitrator", "name": "_arbitrator", "type": "address" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "name": "updateArbitrator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_minArbitrationFeeTimeout", "type": "uint256" } ], "name": "updateMinArbitrationFeeTimeout", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintFee", "type": "uint256" } ], "name": "updateMintFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum TalentLayerPlatformID.MintStatus", "name": "_mintStatus", "type": "uint8" } ], "name": "updateMintStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" }, { "internalType": "uint16", "name": "_originServiceFeeRate", "type": "uint16" } ], "name": "updateOriginServiceFeeRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" }, { "internalType": "uint16", "name": "_originValidatedProposalFeeRate", "type": "uint16" } ], "name": "updateOriginValidatedProposalFeeRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" }, { "internalType": "string", "name": "_newCid", "type": "string" } ], "name": "updateProfileData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" }, { "internalType": "uint256", "name": "_proposalPostingFee", "type": "uint256" } ], "name": "updateProposalPostingFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" }, { "internalType": "uint256", "name": "_servicePostingFee", "type": "uint256" } ], "name": "updateServicePostingFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_platformId", "type": "uint256" }, { "internalType": "address", "name": "_signer", "type": "address" } ], "name": "updateSigner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "validArbitrators", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "whitelistUser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051614cc26200011f60003960008181610ed001528181610f10015281816112e00152818161132001526113af0152614cc26000f3fe6080604052600436106103815760003560e01c80638a986363116101d1578063b88d4fde11610102578063dce22638116100a0578063f577a5001161006f578063f577a50014610ae5578063f6f3784414610b05578063f905f15414610b1c578063faa992d314610b3c57600080fd5b8063dce2263814610a28578063e985e9c514610a48578063e9a9c85014610a91578063f160068f14610ac557600080fd5b8063c87b56dd116100dc578063c87b56dd146109b5578063cb8faafa146109d5578063d547741f146109f5578063d85d3d2714610a1557600080fd5b8063b88d4fde14610962578063c37e154e14610982578063c6bf01ce1461099557600080fd5b80639b19251a1161016f578063a22cb46511610149578063a22cb465146108b5578063a383c692146108d5578063a4f524a914610911578063acd63f1b1461093157600080fd5b80639b19251a146108475780639da3f8fd14610878578063a217fddf146108a057600080fd5b806391d14854116101ab57806391d14854146107d257806395d89b41146107f2578063973ad2701461080757806399ded4441461082757600080fd5b80638a986363146107725780638e6e5397146107925780638f283a86146107b257600080fd5b80633ccfd60b116102b65780634a7ab1d5116102545780636352211e116102235780636352211e146106fd57806370a082311461071d5780638129fc1c1461073d57806384017e521461075257600080fd5b80634a7ab1d5146106885780634f1ef286146106a857806352d1902d146106bb5780635bd22c98146106d057600080fd5b80633ffefe4e116102905780633ffefe4e146105f757806342842e0e1461061757806348203b30146106375780634a4c560d1461066857600080fd5b80633ccfd60b146105a25780633d459389146105b75780633e6acfe0146105d757600080fd5b806318160ddd11610323578063248a9ca3116102fd578063248a9ca3146105125780632f2ff15d1461054257806336568abe146105625780633659cfe61461058257600080fd5b806318160ddd146104af5780631847c06b146104c457806323b872dd146104f257600080fd5b8063081812fc1161035f578063081812fc146103ff578063095ea7b31461043757806311f821921461045757806313966db51461048a57600080fd5b806301c32c851461038657806301ffc9a7146103a857806306fdde03146103dd575b600080fd5b34801561039257600080fd5b506103a66103a13660046139ae565b610b73565b005b3480156103b457600080fd5b506103c86103c33660046139dd565b610bbc565b60405190151581526020015b60405180910390f35b3480156103e957600080fd5b506103f2610bdc565b6040516103d49190613a4a565b34801561040b57600080fd5b5061041f61041a3660046139ae565b610c6e565b6040516001600160a01b0390911681526020016103d4565b34801561044357600080fd5b506103a6610452366004613a72565b610c95565b34801561046357600080fd5b506104776104723660046139ae565b610daf565b60405161ffff90911681526020016103d4565b34801561049657600080fd5b506104a16101335481565b6040519081526020016103d4565b3480156104bb57600080fd5b506104a1610dd5565b3480156104d057600080fd5b506104a16104df366004613a9e565b6101326020526000908152604090205481565b3480156104fe57600080fd5b506103a661050d366004613abb565b610df2565b34801561051e57600080fd5b506104a161052d3660046139ae565b60009081526097602052604090206001015490565b34801561054e57600080fd5b506103a661055d366004613afc565b610e23565b34801561056e57600080fd5b506103a661057d366004613afc565b610e48565b34801561058e57600080fd5b506103a661059d366004613a9e565b610ec6565b3480156105ae57600080fd5b506103a6610fa5565b3480156105c357600080fd5b506104776105d23660046139ae565b611048565b3480156105e357600080fd5b506103a66105f2366004613bcf565b611074565b34801561060357600080fd5b5061041f6106123660046139ae565b611215565b34801561062357600080fd5b506103a6610632366004613abb565b611240565b34801561064357600080fd5b506103c8610652366004613a9e565b61012f6020526000908152604090205460ff1681565b34801561067457600080fd5b506103a6610683366004613a9e565b61125b565b34801561069457600080fd5b506104a16106a33660046139ae565b6112b4565b6103a66106b6366004613c28565b6112d6565b3480156106c757600080fd5b506104a16113a2565b3480156106dc57600080fd5b506106f06106eb3660046139ae565b611455565b6040516103d49190613c78565b34801561070957600080fd5b5061041f6107183660046139ae565b611721565b34801561072957600080fd5b506104a1610738366004613a9e565b611781565b34801561074957600080fd5b506103a6611807565b34801561075e57600080fd5b506103a661076d3660046139ae565b611a0d565b34801561077e57600080fd5b506104a161078d3660046139ae565b611a4e565b34801561079e57600080fd5b506103a66107ad366004613d6d565b611a70565b3480156107be57600080fd5b506103a66107cd366004613afc565b611b03565b3480156107de57600080fd5b506103c86107ed366004613afc565b611b97565b3480156107fe57600080fd5b506103f2611bc2565b34801561081357600080fd5b506103a6610822366004613a9e565b611bd1565b34801561083357600080fd5b506103a6610842366004613d6d565b611c15565b34801561085357600080fd5b506103c8610862366004613a9e565b6101306020526000908152604090205460ff1681565b34801561088457600080fd5b50610136546108939060ff1681565b6040516103d49190613daf565b3480156108ac57600080fd5b506104a1600081565b3480156108c157600080fd5b506103a66108d0366004613dd7565b611ca9565b3480156108e157600080fd5b506103c86108f0366004613e0a565b805160208183018101805161012d8252928201919093012091525460ff1681565b34801561091d57600080fd5b506103a661092c366004613e3f565b611cb4565b34801561093d57600080fd5b506103c861094c366004613a9e565b6101316020526000908152604090205460ff1681565b34801561096e57600080fd5b506103a661097d366004613e61565b611da1565b6104a1610990366004613f16565b611dd9565b3480156109a157600080fd5b506103a66109b0366004613e3f565b61201f565b3480156109c157600080fd5b506103f26109d03660046139ae565b61209c565b3480156109e157600080fd5b506103a66109f0366004613dd7565b6120a7565b348015610a0157600080fd5b506103a6610a10366004613afc565b6120f8565b6104a1610a23366004613f6d565b61211d565b348015610a3457600080fd5b506103a6610a43366004613e3f565b612332565b348015610a5457600080fd5b506103c8610a63366004613faf565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b348015610a9d57600080fd5b506104a17f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c368681565b348015610ad157600080fd5b506103a6610ae0366004613fdd565b6123af565b348015610af157600080fd5b506103a6610b003660046139ae565b612479565b348015610b1157600080fd5b506104a16101345481565b348015610b2857600080fd5b506103a6610b3736600461400e565b6124cd565b348015610b4857600080fd5b50610b5c610b573660046139ae565b61252c565b6040516103d49b9a9998979695949392919061402f565b6000610b7e81612739565b6101348290556040518281527fa39eb462f98ec2e2a17ca5c7f2a0a247d212213bf0c78a6e2a3df704911ef601906020015b60405180910390a15050565b6000610bc782612743565b80610bd65750610bd682612793565b92915050565b606060658054610beb906140c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c17906140c7565b8015610c645780601f10610c3957610100808354040283529160200191610c64565b820191906000526020600020905b815481529060010190602001808311610c4757829003601f168201915b5050505050905090565b6000610c79826127b8565b506000908152606960205260409020546001600160a01b031690565b6000610ca082611721565b9050806001600160a01b0316836001600160a01b031603610d125760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610d2e5750610d2e8133610a63565b610da05760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610d09565b610daa8383612817565b505050565b6000610dba82612479565b50600090815261012e602052604090206003015461ffff1690565b60006001610de36101355490565b610ded9190614117565b905090565b610dfc3382612885565b610e185760405162461bcd60e51b8152600401610d099061412a565b610daa838383612904565b600082815260976020526040902060010154610e3e81612739565b610daa838361294c565b6001600160a01b0381163314610eb85760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610d09565b610ec282826129d2565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f0e5760405162461bcd60e51b8152600401610d0990614177565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f57600080516020614c06833981519152546001600160a01b031690565b6001600160a01b031614610f7d5760405162461bcd60e51b8152600401610d09906141c3565b610f8681612a39565b60408051600080825260208201909252610fa291839190612a44565b50565b6000610fb081612739565b604051600090339047908381818185875af1925050503d8060008114610ff2576040519150601f19603f3d011682016040523d82523d6000602084013e610ff7565b606091505b5050905080610ec25760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f20776974686472617720457468657200000000000000006044820152606401610d09565b600061105382612479565b50600090815261012e602052604090206003015462010000900461ffff1690565b823361107f82611721565b6001600160a01b0316146110a55760405162461bcd60e51b8152600401610d099061420f565b6001600160a01b038316600090815261012f602052604090205460ff166111205760405162461bcd60e51b815260206004820152602960248201527f5468652061646472657373206d757374206265206f6620612076616c69642061604482015268393134ba3930ba37b960b91b6064820152608401610d09565b600084815261012e6020908152604080832060060180546001600160a01b0319166001600160a01b038816908117909155835261013190915290205460ff16156111a05760408051602081018690520160408051601f19818403018152918152600086815261012e602052206007019061119a908261427c565b506111be565b600084815261012e602052604090206007016111bc838261427c565b505b7f4f1d179d53629f07a3ca3cde19840349df6dadc8fc11ac201c272ec77b8673d2848461012e60008881526020019081526020016000206007016040516112079392919061433c565b60405180910390a150505050565b600061122082612479565b50600090815261012e60205260409020600901546001600160a01b031690565b610daa83838360405180602001604052806000815250611da1565b600061126681612739565b6001600160a01b03821660008181526101306020526040808220805460ff19166001179055517f7409cb8e690bcd1487fd4fd27dad3fa92388d201ba6f953631d6d6b26299f8499190a25050565b60006112bf82612479565b50600090815261012e602052604090206005015490565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361131e5760405162461bcd60e51b8152600401610d0990614177565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611367600080516020614c06833981519152546001600160a01b031690565b6001600160a01b03161461138d5760405162461bcd60e51b8152600401610d09906141c3565b61139682612a39565b610ec282826001612a44565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114425760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610d09565b50600080516020614c0683398151915290565b6114cc604051806101600160405280600081526020016060815260200160608152602001600061ffff168152602001600061ffff168152602001600081526020016000815260200160006001600160a01b03168152602001606081526020016000815260200160006001600160a01b031681525090565b6114d582612479565b61012e6000838152602001908152602001600020604051806101600160405290816000820154815260200160018201805461150f906140c7565b80601f016020809104026020016040519081016040528092919081815260200182805461153b906140c7565b80156115885780601f1061155d57610100808354040283529160200191611588565b820191906000526020600020905b81548152906001019060200180831161156b57829003601f168201915b505050505081526020016002820180546115a1906140c7565b80601f01602080910402602001604051908101604052809291908181526020018280546115cd906140c7565b801561161a5780601f106115ef5761010080835404028352916020019161161a565b820191906000526020600020905b8154815290600101906020018083116115fd57829003601f168201915b5050509183525050600382015461ffff808216602084015262010000909104166040820152600482015460608201526005820154608082015260068201546001600160a01b031660a082015260078201805460c09092019161167b906140c7565b80601f01602080910402602001604051908101604052809291908181526020018280546116a7906140c7565b80156116f45780601f106116c9576101008083540402835291602001916116f4565b820191906000526020600020905b8154815290600101906020018083116116d757829003601f168201915b5050509183525050600882015460208201526009909101546001600160a01b031660409091015292915050565b6000818152606760205260408120546001600160a01b031680610bd65760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610d09565b60006001600160a01b0382166117eb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610d09565b506001600160a01b031660009081526068602052604090205490565b600054610100900460ff16158080156118275750600054600160ff909116105b806118415750303b158015611841575060005460ff166001145b6118a45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d09565b6000805460ff1916600117905580156118c7576000805461ff0019166101001790555b61191b6040518060400160405280601581526020017415185b195b9d13185e595c941b185d199bdc9b5251605a1b81525060405180604001604052806005815260200164151314125160da1b815250612baf565b611923612be0565b61192b612be0565b611936600033612c09565b6119607f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c368633612c09565b6000610133819055805261012f6020527fe9104285c6851efcbc5e0e70440200efbdcab556a1c8784776780f8bb44f2931805460ff191660011790556119a8620d2f00610b73565b6119b761013580546001019055565b610136805460ff191660011790558015610fa2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000611a1881612739565b6101338290556040518281527f38fbb1c8b109c430f0c030e7ed076cf5611a307773a4e8e365601e8f8bceaec690602001610bb0565b6000611a5982612479565b50600090815261012e602052604090206004015490565b8133611a7b82611721565b6001600160a01b031614611aa15760405162461bcd60e51b8152600401610d099061420f565b600083815261012e6020908152604091829020600301805461ffff191661ffff86169081179091558251868152918201527f03c3aa7c7830e29d1571bfe33dc72a8b8e0297dd6fdf26ef720dee976e21125a91015b60405180910390a1505050565b8133611b0e82611721565b6001600160a01b031614611b345760405162461bcd60e51b8152600401610d099061420f565b600083815261012e602090815260409182902060090180546001600160a01b0319166001600160a01b0386169081179091558251868152918201527f793c7e64f530286f5392e4266e68cf1d6d1f08a9c5494c8b916d4b86f546cb3e9101611af6565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060668054610beb906140c7565b6000611bdc81612739565b506001600160a01b0316600090815261012f60209081526040808320805460ff1990811690915561013190925290912080549091169055565b8133611c2082611721565b6001600160a01b031614611c465760405162461bcd60e51b8152600401610d099061420f565b600083815261012e6020908152604091829020600301805463ffff000019166201000061ffff8716908102919091179091558251868152918201527fffeae29561efc186d4d5241d242f7e2b4a76f114ea5de0db37fbd19c3b1913a59101611af6565b610ec2338383612c13565b8133611cbf82611721565b6001600160a01b031614611ce55760405162461bcd60e51b8152600401610d099061420f565b61013454821015611d555760405162461bcd60e51b815260206004820152603460248201527f5468652074696d656f7574206d7573742062652067726561746572207468616e604482015273081d1a19481b5a5b9a5b5d5b481d1a5b595bdd5d60621b6064820152608401610d09565b600083815261012e602090815260409182902060080184905581518581529081018490527face552c85eed7b5cf46330833e6f28b1f5ce696a4532e483192b5a64e4565e599101611af6565b611dab3383612885565b611dc75760405162461bcd60e51b8152600401610d099061412a565b611dd384848484612ce1565b50505050565b600083838360016101365460ff166002811115611df857611df8613d99565b1480611e1b575060026101365460ff166002811115611e1957611e19613d99565b145b611e625760405162461bcd60e51b8152602060048201526018602482015277135a5b9d081cdd185d1d5cc81a5cc81b9bdd081d985b1a5960421b6044820152606401610d09565b60016101365460ff166002811115611e7c57611e7c613d99565b03611edb57336000908152610130602052604090205460ff16611edb5760405162461bcd60e51b8152602060048201526017602482015276165bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b6044820152606401610d09565b610133543414611efd5760405162461bcd60e51b8152600401610d09906143de565b611f0681611781565b15611f235760405162461bcd60e51b8152600401610d0990614422565b61012d8383604051611f36929190614464565b9081526040519081900360200190205460ff1615611f8b5760405162461bcd60e51b81526020600482015260126024820152712730b6b29030b63932b0b23c903a30b5b2b760711b6044820152606401610d09565b611f958383612d14565b7f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c3686611fbf81612739565b611fd286611fcd6101355490565b612f36565b61201388888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506130c1915050565b98975050505050505050565b813361202a82611721565b6001600160a01b0316146120505760405162461bcd60e51b8152600401610d099061420f565b600083815261012e602090815260409182902060050184905581518581529081018490527f5cea455bfd7800a5b219f99906f1402cf18c09764b07b36821dc7285b86a77329101611af6565b6060610bd6826131b5565b60006120b281612739565b506001600160a01b03909116600090815261012f60209081526040808320805460ff19908116600117909155610131909252909120805492151592909116919091179055565b60008281526097602052604090206001015461211381612739565b610daa83836129d2565b600082823360016101365460ff16600281111561213c5761213c613d99565b148061215f575060026101365460ff16600281111561215d5761215d613d99565b145b6121a65760405162461bcd60e51b8152602060048201526018602482015277135a5b9d081cdd185d1d5cc81a5cc81b9bdd081d985b1a5960421b6044820152606401610d09565b60016101365460ff1660028111156121c0576121c0613d99565b0361221f57336000908152610130602052604090205460ff1661221f5760405162461bcd60e51b8152602060048201526017602482015276165bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b6044820152606401610d09565b6101335434146122415760405162461bcd60e51b8152600401610d09906143de565b61224a81611781565b156122675760405162461bcd60e51b8152600401610d0990614422565b61012d838360405161227a929190614464565b9081526040519081900360200190205460ff16156122cf5760405162461bcd60e51b81526020600482015260126024820152712730b6b29030b63932b0b23c903a30b5b2b760711b6044820152606401610d09565b6122d98383612d14565b6122e733611fcd6101355490565b61232886868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152503392506130c1915050565b9695505050505050565b813361233d82611721565b6001600160a01b0316146123635760405162461bcd60e51b8152600401610d099061420f565b600083815261012e602090815260409182902060040184905581518581529081018490527fccc64c8fc3688d9eb2c0bb58ff0dfef1a8528bcc06528d991da400c83835838d9101611af6565b81336123ba82611721565b6001600160a01b0316146123e05760405162461bcd60e51b8152600401610d099061420f565b8151602e1461241f5760405162461bcd60e51b815260206004820152600b60248201526a125b9d985b1a590818da5960aa1b6044820152606401610d09565b600083815261012e6020526040902060020161243b838261427c565b50827f613807bd6768f626264e7eb664a65ca99a0d930f8fd8a5b868491a592eb57f728360405161246c9190613a4a565b60405180910390a2505050565b60008111801561248b57506101355481105b610fa25760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081c1b185d199bdc9b481251606a1b6044820152606401610d09565b60006124d881612739565b610136805483919060ff191660018360028111156124f8576124f8613d99565b02179055507fbe5bfaa294dd4b792e98f2bcf8f597b2ead214107f9bc9e8392d6ec65e8d854f82604051610bb09190613daf565b61012e602052600090815260409020805460018201805491929161254f906140c7565b80601f016020809104026020016040519081016040528092919081815260200182805461257b906140c7565b80156125c85780601f1061259d576101008083540402835291602001916125c8565b820191906000526020600020905b8154815290600101906020018083116125ab57829003601f168201915b5050505050908060020180546125dd906140c7565b80601f0160208091040260200160405190810160405280929190818152602001828054612609906140c7565b80156126565780601f1061262b57610100808354040283529160200191612656565b820191906000526020600020905b81548152906001019060200180831161263957829003601f168201915b505050506003830154600484015460058501546006860154600787018054969761ffff8087169862010000909704169650939492936001600160a01b03909216926126a0906140c7565b80601f01602080910402602001604051908101604052809291908181526020018280546126cc906140c7565b80156127195780601f106126ee57610100808354040283529160200191612719565b820191906000526020600020905b8154815290600101906020018083116126fc57829003601f168201915b5050505060088301546009909301549192916001600160a01b031690508b565b610fa281336132e4565b60006001600160e01b031982166380ac58cd60e01b148061277457506001600160e01b03198216635b5e139f60e01b145b80610bd657506301ffc9a760e01b6001600160e01b0319831614610bd6565b60006001600160e01b03198216637965db0b60e01b1480610bd65750610bd682612743565b6000818152606760205260409020546001600160a01b0316610fa25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610d09565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061284c82611721565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061289183611721565b9050806001600160a01b0316846001600160a01b031614806128d857506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806128fc5750836001600160a01b03166128f184610c6e565b6001600160a01b0316145b949350505050565b60405162461bcd60e51b815260206004820152601d60248201527f546f6b656e207472616e73666572206973206e6f7420616c6c6f7765640000006044820152606401610d09565b6129568282611b97565b610ec25760008281526097602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561298e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6129dc8282611b97565b15610ec25760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ec281612739565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612a7757610daa8361333d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612ad1575060408051601f3d908101601f19168201909252612ace91810190614474565b60015b612b345760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610d09565b600080516020614c068339815191528114612ba35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610d09565b50610daa8383836133d9565b600054610100900460ff16612bd65760405162461bcd60e51b8152600401610d099061448d565b610ec282826133fe565b600054610100900460ff16612c075760405162461bcd60e51b8152600401610d099061448d565b565b610ec2828261294c565b816001600160a01b0316836001600160a01b031603612c745760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610d09565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612cec848484612904565b612cf88484848461343e565b611dd35760405162461bcd60e51b8152600401610d09906144d8565b600082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060058210905080612d615750601f81115b15612d7f57604051633eb64ab360e01b815260040160405180910390fd5b600084846000818110612d9457612d9461452a565b909101356001600160f81b031916915050602d60f81b811480612dc45750605f60f81b6001600160f81b03198216145b15612de257604051632f2c22a760e11b815260040160405180910390fd5b60005b82811015612f2e57600360fc1b848281518110612e0457612e0461452a565b01602001516001600160f81b0319161080612e425750603d60f91b848281518110612e3157612e3161452a565b01602001516001600160f81b031916115b80612e9e5750603960f81b848281518110612e5f57612e5f61452a565b01602001516001600160f81b031916118015612e9e5750606160f81b848281518110612e8d57612e8d61452a565b01602001516001600160f81b031916105b8015612ecf5750838181518110612eb757612eb761452a565b6020910101516001600160f81b031916602d60f81b14155b8015612f005750838181518110612ee857612ee861452a565b6020910101516001600160f81b031916605f60f81b14155b15612f1e57604051630bb7f19b60e21b815260040160405180910390fd5b612f2781614540565b9050612de5565b505050505050565b6001600160a01b038216612f8c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d09565b6000818152606760205260409020546001600160a01b031615612ff15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d09565b6000818152606760205260409020546001600160a01b0316156130565760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d09565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000806130ce6101355490565b90506130df61013580546001019055565b600081815261012e60205260409020600181016130fc868261427c565b508181556101345460088201556009810180546001600160a01b031916905560405160019061012d90613130908890614575565b908152604080519182900360209081018320805494151560ff19909516949094179093556001600160a01b0387166000818152610132909452922084905561013354610134547f8475f1ba3b06c1e11c870cbbf9753ca9a8292ea0b203262f682de476dc268f8c926131a59287928b92614591565b60405180910390a2509392505050565b600081815261012e602090815260408083209051606093926131db9260010191016145bd565b60405160208183030381529060405290506000601461012e60008681526020019081526020016000206001018054613212906140c7565b9050111561323a5760405180604001604052806002815260200161034360f41b815250613256565b60405180604001604052806002815260200161036360f41b8152505b90506000613284828460405160200161327092919061463f565b60405160208183030381529060405261353f565b60405160200161329491906149b7565b60405160208183030381529060405290506132bb83826040516020016132709291906149fc565b6040516020016132cb9190614a98565b6040516020818303038152906040529350505050919050565b6132ee8282611b97565b610ec2576132fb81613692565b6133068360206136a4565b604051602001613317929190614add565b60408051601f198184030181529082905262461bcd60e51b8252610d0991600401613a4a565b6001600160a01b0381163b6133aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610d09565b600080516020614c0683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6133e283613847565b6000825111806133ef5750805b15610daa57611dd38383613887565b600054610100900460ff166134255760405162461bcd60e51b8152600401610d099061448d565b6065613431838261427c565b506066610daa828261427c565b60006001600160a01b0384163b1561353457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613482903390899088908890600401614b52565b6020604051808303816000875af19250505080156134bd575060408051601f3d908101601f191682019092526134ba91810190614b85565b60015b61351a573d8080156134eb576040519150601f19603f3d011682016040523d82523d6000602084013e6134f0565b606091505b5080516000036135125760405162461bcd60e51b8152600401610d09906144d8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506128fc565b506001949350505050565b6060815160000361355e57505060408051602081019091526000815290565b6000604051806060016040528060408152602001614c26604091399050600060038451600261358d9190614ba2565b6135979190614bb5565b6135a2906004614bd7565b67ffffffffffffffff8111156135ba576135ba613b2c565b6040519080825280601f01601f1916602001820160405280156135e4576020820181803683370190505b509050600182016020820185865187015b80821015613650576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453506001830192506135f5565b505060038651066001811461366c576002811461367f57613687565b603d6001830353603d6002830353613687565b603d60018303535b509195945050505050565b6060610bd66001600160a01b03831660145b606060006136b3836002614bd7565b6136be906002614ba2565b67ffffffffffffffff8111156136d6576136d6613b2c565b6040519080825280601f01601f191660200182016040528015613700576020820181803683370190505b509050600360fc1b8160008151811061371b5761371b61452a565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061374a5761374a61452a565b60200101906001600160f81b031916908160001a905350600061376e846002614bd7565b613779906001614ba2565b90505b60018111156137f1576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106137ad576137ad61452a565b1a60f81b8282815181106137c3576137c361452a565b60200101906001600160f81b031916908160001a90535060049490941c936137ea81614bee565b905061377c565b5083156138405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d09565b9392505050565b6138508161333d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606138408383604051806060016040528060278152602001614c66602791396060600080856001600160a01b0316856040516138c49190614575565b600060405180830381855af49150503d80600081146138ff576040519150601f19603f3d011682016040523d82523d6000602084013e613904565b606091505b5091509150612328868383876060831561397f578251600003613978576001600160a01b0385163b6139785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d09565b50816128fc565b6128fc83838151156139945781518083602001fd5b8060405162461bcd60e51b8152600401610d099190613a4a565b6000602082840312156139c057600080fd5b5035919050565b6001600160e01b031981168114610fa257600080fd5b6000602082840312156139ef57600080fd5b8135613840816139c7565b60005b83811015613a155781810151838201526020016139fd565b50506000910152565b60008151808452613a368160208601602086016139fa565b601f01601f19169290920160200192915050565b6020815260006138406020830184613a1e565b6001600160a01b0381168114610fa257600080fd5b60008060408385031215613a8557600080fd5b8235613a9081613a5d565b946020939093013593505050565b600060208284031215613ab057600080fd5b813561384081613a5d565b600080600060608486031215613ad057600080fd5b8335613adb81613a5d565b92506020840135613aeb81613a5d565b929592945050506040919091013590565b60008060408385031215613b0f57600080fd5b823591506020830135613b2181613a5d565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112613b5357600080fd5b813567ffffffffffffffff80821115613b6e57613b6e613b2c565b604051601f8301601f19908116603f01168101908282118183101715613b9657613b96613b2c565b81604052838152866020858801011115613baf57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215613be457600080fd5b833592506020840135613bf681613a5d565b9150604084013567ffffffffffffffff811115613c1257600080fd5b613c1e86828701613b42565b9150509250925092565b60008060408385031215613c3b57600080fd5b8235613c4681613a5d565b9150602083013567ffffffffffffffff811115613c6257600080fd5b613c6e85828601613b42565b9150509250929050565b602081528151602082015260006020830151610160806040850152613ca1610180850183613a1e565b91506040850151601f1980868503016060870152613cbf8483613a1e565b935060608701519150613cd8608087018361ffff169052565b608087015161ffff811660a0880152915060a087015160c087015260c087015160e087015260e08701519150610100613d1b818801846001600160a01b03169052565b80880151925050610120818786030181880152613d388584613a1e565b90880151610140888101919091528801516001600160a01b038116858901529094509150613d639050565b5090949350505050565b60008060408385031215613d8057600080fd5b82359150602083013561ffff81168114613b2157600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160038310613dd157634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215613dea57600080fd5b8235613df581613a5d565b915060208301358015158114613b2157600080fd5b600060208284031215613e1c57600080fd5b813567ffffffffffffffff811115613e3357600080fd5b6128fc84828501613b42565b60008060408385031215613e5257600080fd5b50508035926020909101359150565b60008060008060808587031215613e7757600080fd5b8435613e8281613a5d565b93506020850135613e9281613a5d565b925060408501359150606085013567ffffffffffffffff811115613eb557600080fd5b613ec187828801613b42565b91505092959194509250565b60008083601f840112613edf57600080fd5b50813567ffffffffffffffff811115613ef757600080fd5b602083019150836020828501011115613f0f57600080fd5b9250929050565b600080600060408486031215613f2b57600080fd5b833567ffffffffffffffff811115613f4257600080fd5b613f4e86828701613ecd565b9094509250506020840135613f6281613a5d565b809150509250925092565b60008060208385031215613f8057600080fd5b823567ffffffffffffffff811115613f9757600080fd5b613fa385828601613ecd565b90969095509350505050565b60008060408385031215613fc257600080fd5b8235613fcd81613a5d565b91506020830135613b2181613a5d565b60008060408385031215613ff057600080fd5b82359150602083013567ffffffffffffffff811115613c6257600080fd5b60006020828403121561402057600080fd5b81356003811061384057600080fd5b60006101608d83528060208401526140498184018e613a1e565b9050828103604084015261405d818d613a1e565b61ffff8c811660608601528b16608085015260a084018a905260c084018990526001600160a01b0388811660e08601528482036101008601529091506140a38288613a1e565b92508561012085015280851661014085015250509c9b505050505050505050505050565b600181811c908216806140db57607f821691505b6020821081036140fb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bd657610bd6614101565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252600d908201526c2737ba103a34329037bbb732b960991b604082015260600190565b601f821115610daa57600081815260208120601f850160051c8101602086101561425d5750805b601f850160051c820191505b81811015612f2e57828155600101614269565b815167ffffffffffffffff81111561429657614296613b2c565b6142aa816142a484546140c7565b84614236565b602080601f8311600181146142df57600084156142c75750858301515b600019600386901b1c1916600185901b178555612f2e565b600085815260208120601f198616915b8281101561430e578886015182559484019460019091019084016142ef565b508582101561432c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8381526000602060018060a01b038516818401526060604084015260008454614364816140c7565b806060870152608060018084166000811461438657600181146143a0576143ce565b60ff1985168984015283151560051b8901830195506143ce565b896000528660002060005b858110156143c65781548b82018601529083019088016143ab565b8a0184019650505b50939a9950505050505050505050565b60208082526024908201527f496e636f727265637420616d6f756e74206f662045544820666f72206d696e746040820152632066656560e01b606082015260800190565b60208082526022908201527f506c6174666f726d20616c726561647920686173206120506c6174666f726d20604082015261125160f21b606082015260800190565b8183823760009101908152919050565b60006020828403121561448657600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161455257614552614101565b5060010190565b6000815161456b8185602086016139fa565b9290920192915050565b600082516145878184602087016139fa565b9190910192915050565b8481526080602082015260006145aa6080830186613a1e565b6040830194909452506060015292915050565b60008083546145cb816140c7565b600182811680156145e357600181146145f857614627565b60ff1984168752821515830287019450614627565b8760005260208060002060005b8581101561461e5781548a820152908401908201614605565b50505082870194505b50506302e746c760e41b835250506004019392505050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323081527f30302f737667222077696474683d2237323022206865696768743d223732302260208201527f3e3c726563742077696474683d223130302522206865696768743d223130302560408201527f222f3e3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f726760608201527f2f323030302f737667222077696474683d2231353022206865696768743d223160808201527f3530222076657273696f6e3d22312e32222076696577426f783d222d3230302060a08201527f2d353020313030302031303030223e3c706174682066696c6c3d22234646464660c08201527f46462220643d224d3236342e35203139302e3563302d31332e382031312e322d60e08201527f32352032352d3235483536386331332e3820302032352031312e3220323520326101008201527f357634393063302031332e382d31312e322032352d3235203235483238392e356101208201527f632d31332e3820302d32352d31312e322d32352d32357a222f3e3c70617468206101408201527f66696c6c3d22234646464646462220643d224d3236352036323463302d31332e6101608201527f382031312e322d32352032352d3235683534336331332e3820302032352031316101808201527f2e322032352032357635362e3563302031332e382d31312e322032352d3235206101a08201527f323548323930632d31332e3820302d32352d31312e322d32352d32357a222f3e6101c08201527f3c706174682066696c6c3d22234646464646462220643d224d30203139302e356101e08201527f63302d31332e382031312e322d32352032352d3235683534336331332e3820306102008201527f2032352031312e322032352032355632343763302031332e382d31312e3220326102208201527f352d3235203235483235632d31332e3820302d32352d31312e322d32352d32356102408201527f7a222f3e3c2f7376673e3c7465787420783d2233302220793d223637302220736102608201526b03a3cb6329e913337b73a1d160a51b61028082015260006128fc61499e61499861496f61028c860188614559565b7f70782073616e732d73657269663b66696c6c3a23666666223e00000000000000815260190190565b85614559565b6c1e17ba32bc3a1f1e17b9bb339f60991b8152600d0190565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c0000000000008152600082516149ef81601a8501602087016139fa565b91909101601a0192915050565b683d913730b6b2911d1160b91b81528251600090614a218160098501602088016139fa565b6b1116101134b6b0b3b2911d1160a11b6009918401918201528351614a4d8160158401602088016139fa565b7f222c20226465736372697074696f6e223a202254616c656e744c617965722050601592909101918201526b6c6174666f726d204944227d60a01b6035820152604101949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251614ad081601d8501602087016139fa565b91909101601d0192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614b158160178501602088016139fa565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614b468160288401602088016139fa565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061232890830184613a1e565b600060208284031215614b9757600080fd5b8151613840816139c7565b80820180821115610bd657610bd6614101565b600082614bd257634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610bd657610bd6614101565b600081614bfd57614bfd614101565b50600019019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203eee3339ba4ae3f1d4d40659a91e4bed0d8ee327b2c09341dd338b7790e176fb64736f6c63430008110033