[
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "requested",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAllowed",
"type": "uint256"
}
],
"name": "BridgeAmountExceeded",
"type": "error"
},
{
"inputs": [],
"name": "CheckpointUnorderedInsertion",
"type": "error"
},
{
"inputs": [],
"name": "ECDSAInvalidSignature",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "ECDSAInvalidSignatureLength",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "ECDSAInvalidSignatureS",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "increasedSupply",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "cap",
"type": "uint256"
}
],
"name": "ERC20ExceededSafeSupply",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "ERC2612ExpiredSignature",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC2612InvalidSigner",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "uint48",
"name": "clock",
"type": "uint48"
}
],
"name": "ERC5805FutureLookup",
"type": "error"
},
{
"inputs": [],
"name": "ERC6372InconsistentClock",
"type": "error"
},
{
"inputs": [],
"name": "EnforcedPause",
"type": "error"
},
{
"inputs": [],
"name": "ExpectedPause",
"type": "error"
},
{
"inputs": [],
"name": "FailedCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "expected",
"type": "address"
},
{
"internalType": "address",
"name": "provided",
"type": "address"
}
],
"name": "ImplementationMismatch",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "currentNonce",
"type": "uint256"
}
],
"name": "InvalidAccountNonce",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "provided",
"type": "address"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
}
],
"name": "InvalidAddress",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "InvalidRecipient",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "requested",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAllowed",
"type": "uint256"
}
],
"name": "MaxSupplyExceeded",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "bits",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintDowncast",
"type": "error"
},
{
"inputs": [],
"name": "TGEAlreadyInitialized",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"inputs": [],
"name": "UpgradeNotScheduled",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "remainingTime",
"type": "uint256"
}
],
"name": "UpgradeTimelockActive",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "reason",
"type": "string"
}
],
"name": "ValidationFailed",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "expiry",
"type": "uint256"
}
],
"name": "VotesExpiredSignature",
"type": "error"
},
{
"inputs": [],
"name": "ZeroAddress",
"type": "error"
},
{
"inputs": [],
"name": "ZeroAmount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"indexed": false,
"internalType": "uint32",
"name": "oldActiveChains",
"type": "uint32"
},
{
"indexed": false,
"internalType": "uint32",
"name": "newActiveChains",
"type": "uint32"
}
],
"name": "ActiveChainsUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "src",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "BridgeMint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "bridgeAddress",
"type": "address"
}
],
"name": "BridgeRoleAssigned",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "CCIPAdminTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "fromDelegate",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "toDelegate",
"type": "address"
}
],
"name": "DelegateChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "previousVotes",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newVotes",
"type": "uint256"
}
],
"name": "DelegateVotesChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "src",
"type": "address"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "oldMaxBridge",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newMaxBridge",
"type": "uint256"
}
],
"name": "MaxBridgeUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"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": "amount",
"type": "uint256"
}
],
"name": "TGE",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "src",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgrade",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "canceller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "UpgradeCancelled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
},
{
"indexed": false,
"internalType": "uint64",
"name": "scheduledTime",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint64",
"name": "effectiveTime",
"type": "uint64"
}
],
"name": "UpgradeScheduled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "activeChains",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burnFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "cancelUpgrade",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint32",
"name": "pos",
"type": "uint32"
}
],
"name": "checkpoints",
"outputs": [
{
"components": [
{
"internalType": "uint48",
"name": "_key",
"type": "uint48"
},
{
"internalType": "uint208",
"name": "_value",
"type": "uint208"
}
],
"internalType": "struct Checkpoints.Checkpoint208",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "delegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiry",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "delegateBySig",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "delegates",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCCIPAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getPastTotalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getPastVotes",
"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": "address",
"name": "account",
"type": "address"
}
],
"name": "getVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "burnAndMinter",
"type": "address"
}
],
"name": "grantMintAndBurnRoles",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "initialSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "ecosystem",
"type": "address"
},
{
"internalType": "address",
"name": "treasury",
"type": "address"
}
],
"name": "initializeTGE",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "guardian",
"type": "address"
},
{
"internalType": "address",
"name": "timelock",
"type": "address"
}
],
"name": "initializeUUPS",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "maxBridge",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "numCheckpoints",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"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": [],
"name": "pendingUpgrade",
"outputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
},
{
"internalType": "uint64",
"name": "scheduledTime",
"type": "uint64"
},
{
"internalType": "bool",
"name": "exists",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "permit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"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": "newImplementation",
"type": "address"
}
],
"name": "scheduleUpgrade",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "setCCIPAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tge",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "newActiveChains",
"type": "uint32"
}
],
"name": "updateActiveChains",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newMaxBridge",
"type": "uint256"
}
],
"name": "updateMaxBridgeAmount",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "upgradeTimelockRemaining",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]0x60a06040523060805234801562000014575f80fd5b506200001f62000025565b620000d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000765760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613cc5620001005f395f818161201f0152818161204801526122d10152613cc55ff3fe60806040526004361061027d575f3560e01c806301ffc9a7146102c857806306fdde03146102fc578063095ea7b31461031d5780630bcb8efc1461033c5780630c80447a1461035d57806318160ddd1461037c5780631c50bb621461039e57806323b872dd146103bd578063248a9ca3146103dc5780632f2ff15d146103fb578063313ce5671461041a5780633644e5151461043557806336568abe14610449578063378dc3dc146104685780633a46b1a81461047c5780633f4ba83a1461049b57806340c10f19146104af57806342966c68146104ce578063456560f4146104ed5780634bf5d7e9146105025780634f1ef286146105165780634fee307c1461052957806352d1902d1461056157806354fd4d501461057557806355f2916614610591578063587cde1e146105a55780635c19a95c146105d15780635c975abb146105f05780636fcfff451461060457806370a082311461062357806379cc6790146106425780637ecebe00146106615780638456cb591461068057806384b0196e146106945780638764cb07146106bb57806388211d1d146106da5780638e539e8c146106f95780638fd6a6ac1461071857806391d148541461073557806391ddadf41461075457806395d89b411461077f57806395e93245146107935780639ab24eb0146107fe5780639dc29fac1461081d578063a217fddf1461083c578063a7497fa51461084f578063a8fa343c14610872578063a9059cbb14610891578063ad3cb1cc146108b0578063c3cda520146108e0578063c630948d146108ff578063d505accf1461091e578063d547741f1461093d578063dd62ed3e1461095c578063f1127ed81461097b578063ffaf73cd146109c6575f80fd5b366102c457604051636ca2857760e11b81526020600482015260116024820152701393d7d15512115497d050d0d154151151607a1b60448201526064015b60405180910390fd5b5f80fd5b3480156102d3575f80fd5b506102e76102e2366004613484565b6109da565b60405190151581526020015b60405180910390f35b348015610307575f80fd5b50610310610a61565b6040516102f391906134f8565b348015610328575f80fd5b506102e7610337366004613525565b610aff565b348015610347575f80fd5b5061035b61035636600461354d565b610b16565b005b348015610368575f80fd5b5061035b610377366004613564565b610bef565b348015610387575f80fd5b50610390610ce0565b6040519081526020016102f3565b3480156103a9575f80fd5b5061035b6103b8366004613590565b610cf4565b3480156103c8575f80fd5b506102e76103d73660046135a9565b610def565b3480156103e7575f80fd5b506103906103f636600461354d565b610e14565b348015610406575f80fd5b5061035b6104153660046135e2565b610e32565b348015610425575f80fd5b50604051601281526020016102f3565b348015610440575f80fd5b50610390610e54565b348015610454575f80fd5b5061035b6104633660046135e2565b610e62565b348015610473575f80fd5b506103905f5481565b348015610487575f80fd5b50610390610496366004613525565b610e9a565b3480156104a6575f80fd5b5061035b610ee2565b3480156104ba575f80fd5b5061035b6104c9366004613525565b610f04565b3480156104d9575f80fd5b5061035b6104e836600461354d565b611076565b3480156104f8575f80fd5b5061039060015481565b34801561050d575f80fd5b5061031061107f565b61035b610524366004613620565b6110f7565b348015610534575f80fd5b5060025461054c90600160401b900463ffffffff1681565b60405163ffffffff90911681526020016102f3565b34801561056c575f80fd5b50610390611116565b348015610580575f80fd5b5060025461054c9063ffffffff1681565b34801561059c575f80fd5b5061035b611131565b3480156105b0575f80fd5b506105c46105bf366004613564565b6111c0565b6040516102f391906136db565b3480156105dc575f80fd5b5061035b6105eb366004613564565b6111ed565b3480156105fb575f80fd5b506102e76111f8565b34801561060f575f80fd5b5061054c61061e366004613564565b61120c565b34801561062e575f80fd5b5061039061063d366004613564565b611216565b34801561064d575f80fd5b5061035b61065c366004613525565b61123f565b34801561066c575f80fd5b5061039061067b366004613564565b611249565b34801561068b575f80fd5b5061035b611253565b34801561069f575f80fd5b506106a8611272565b6040516102f397969594939291906136ef565b3480156106c6575f80fd5b5061035b6106d5366004613786565b611316565b3480156106e5575f80fd5b5061035b6106f4366004613786565b6114e3565b348015610704575f80fd5b5061039061071336600461354d565b611778565b348015610723575f80fd5b506004546001600160a01b03166105c4565b348015610740575f80fd5b506102e761074f3660046135e2565b6117aa565b34801561075f575f80fd5b506107686117de565b60405165ffffffffffff90911681526020016102f3565b34801561078a575f80fd5b506103106117e7565b34801561079e575f80fd5b506003546107cf906001600160a01b03811690600160a01b81046001600160401b031690600160e01b900460ff1683565b604080516001600160a01b0390941684526001600160401b0390921660208401521515908201526060016102f3565b348015610809575f80fd5b50610390610818366004613564565b611803565b348015610828575f80fd5b5061035b610837366004613525565b611832565b348015610847575f80fd5b506103905f81565b34801561085a575f80fd5b5060025461054c90600160201b900463ffffffff1681565b34801561087d575f80fd5b5061035b61088c366004613564565b61183c565b34801561089c575f80fd5b506102e76108ab366004613525565b6118ce565b3480156108bb575f80fd5b50610310604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156108eb575f80fd5b5061035b6108fa3660046137be565b6118db565b34801561090a575f80fd5b5061035b610919366004613564565b61198e565b348015610929575f80fd5b5061035b610938366004613812565b611a1f565b348015610948575f80fd5b5061035b6109573660046135e2565b611b29565b348015610967575f80fd5b50610390610976366004613786565b611b45565b348015610986575f80fd5b5061099a610995366004613877565b611b7f565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016102f3565b3480156109d1575f80fd5b50610390611b91565b5f6001600160e01b031982166336372b0760e01b1480610a0a57506001600160e01b0319821663e6599b4d60e01b145b80610a2557506001600160e01b031982166301ffc9a760e01b145b80610a4057506001600160e01b03198216637965db0b60e01b145b80610a5b57506001600160e01b031982166323f5a9ab60e21b145b92915050565b60605f610a6c611c01565b9050806003018054610a7d9061389f565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa99061389f565b8015610af45780601f10610acb57610100808354040283529160200191610af4565b820191905f5260205f20905b815481529060010190602001808311610ad757829003601f168201915b505050505091505090565b5f33610b0c818585611c25565b5060019392505050565b80805f03610b3757604051631f2a200560e01b815260040160405180910390fd5b5f80516020613bf0833981519152610b4e81611c32565b60645f54610b5c91906138ff565b831115610ba557604051636ca2857760e11b8152602060048201526016602482015275084e4d2c8ceca40c2dadeeadce840e8dede40d0d2ced60531b60448201526064016102bb565b600180549084905560405133907f0c81c717c4b09e478e66818a705b7e76550fbc5ed975aadf02ef618a1ef4335290610be1908490889061391e565b60405180910390a250505050565b806001600160a01b038116610c175760405163d92e233d60e01b815260040160405180910390fd5b5f80516020613bb0833981519152610c2e81611c32565b425f610c3d6203f4808361392c565b604080516060810182526001600160a01b0388168082526001600160401b03868116602080850182905260019486019490945260038054600160e01b6001600160e01b03199091168517600160a01b84021760ff60e01b191617905584519081529085169281019290925292935033917fd555bb44cf2c5b99fb9936196db6ac3b4ca5946d1f2fc81ba6cc49fe978b55c491015b60405180910390a35050505050565b5f80610cea611c01565b6002015492915050565b8063ffffffff16805f03610d1b57604051631f2a200560e01b815260040160405180910390fd5b5f80516020613bf0833981519152610d3281611c32565b60025463ffffffff600160401b9091048116908416811115610d8f57604051636ca2857760e11b815260206004820152601560248201527424b73b30b634b21031b430b4b73990373ab6b132b960591b60448201526064016102bb565b6002805463ffffffff60401b1916600160401b63ffffffff87811691820292909217909255604080519184168252602082019290925233917f40bf83a393bd7a31e0c1786c149f9e412df93c34404592d582c02117fa443b359101610be1565b5f33610dfc858285611c3c565b610e07858585611c87565b60019150505b9392505050565b5f80610e1e611ce4565b5f9384526020525050604090206001015490565b610e3b82610e14565b610e4481611c32565b610e4e8383611d08565b50505050565b5f610e5d611dad565b905090565b6001600160a01b0381163314610e8b5760405163334bd91960e11b815260040160405180910390fd5b610e958282611db6565b505050565b5f80610ea4611e2c565b9050610ed1610eb284611e50565b6001600160a01b0386165f908152600184016020526040902090611e9e565b6001600160d01b0316949350505050565b5f80516020613c10833981519152610ef981611c32565b610f01611f4e565b50565b816001600160a01b038116610f2c5760405163d92e233d60e01b815260040160405180910390fd5b81805f03610f4d57604051631f2a200560e01b815260040160405180910390fd5b610f55611fa4565b5f80516020613c50833981519152610f6c81611c32565b306001600160a01b03861603610f975784604051630bc2c5df60e11b81526004016102bb91906136db565b60015480851115610fbf578481604051634b5921e160e11b81526004016102bb92919061391e565b5f600260089054906101000a900463ffffffff1663ffffffff165f54610fe5919061394c565b90505f86610ff1610ce0565b610ffb9190613963565b905081811115611022578082604051637502c12360e11b81526004016102bb92919061391e565b61102c8888611fcc565b6040518781526001600160a01b0389169033907fc3b8ae385c02b938fbbbd694d1da0761f755ee2c942f26bbfc6723c986d31b9b9060200160405180910390a35050505050505050565b610f0181612000565b606061108961200a565b65ffffffffffff166110996117de565b65ffffffffffff16146110bf576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6110ff612014565b611108826120b8565b6111128282612213565b5050565b5f61111f6122c6565b505f80516020613bd083398151915290565b5f80516020613bb083398151915261114881611c32565b600354600160e01b900460ff16611172576040516370d78f1760e11b815260040160405180910390fd5b600380546001600160e81b031981169091556040516001600160a01b0390911690819033907fa6698f935ea3cb05304828ddd237d7f7b2ee8f2d7733962bbba67888985e1a2c905f90a35050565b5f806111ca611e2c565b6001600160a01b039384165f908152602091909152604090205490921692915050565b33611112818361230f565b5f80611202612393565b5460ff1692915050565b5f610a5b826123b7565b5f80611220611c01565b6001600160a01b039093165f9081526020939093525050604090205490565b61111282826123e7565b5f610a5b826123fc565b5f80516020613c1083398151915261126a81611c32565b610f01612406565b5f6060805f805f60605f61128461244c565b805490915015801561129857506001810154155b6112dc5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016102bb565b6112e4612470565b6112ec61248c565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b5f80516020613c3083398151915261132d81611c32565b6001600160a01b038316611395576040805163f7693c3d60e01b81526001600160a01b03851660048201526024810191909152602060448201527f45636f73797374656d20616464726573732063616e6e6f74206265207a65726f60648201526084016102bb565b6001600160a01b0382166113fd576040805163f7693c3d60e01b81526001600160a01b03841660048201526024810191909152601f60448201527f547265617375727920616464726573732063616e6e6f74206265207a65726f0060648201526084016102bb565b600254600160201b900463ffffffff161561142b57604051637293cabb60e11b815260040160405180910390fd5b6002805460049061144890600160201b900463ffffffff16613976565b91906101000a81548163ffffffff021916908363ffffffff16021790555061147b826a16aa2cf9ef223bd5000000611fcc565b611490836a1232ae63c59c6bd6000000611fcc565b6114a433697f0e10af47c1c7000000611fcc565b7f4676d7836750b1293e00723159fb3b4f3fddcd42f2614e7488cb15b8ba48a3ed5f546040516114d691815260200190565b60405180910390a1505050565b5f6114ec612497565b805490915060ff600160401b82041615906001600160401b03165f811580156115125750825b90505f826001600160401b0316600114801561152d5750303b155b90508115801561153b575080155b156115595760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561158257845460ff60401b1916600160401b1785555b6001600160a01b038716158061159f57506001600160a01b038616155b156115bd5760405163d92e233d60e01b815260040160405180910390fd5b6116066040518060400160405280600b81526020016a4c656e646566692044414f60a81b815250604051806040016040528060048152602001631311539160e21b8152506124bf565b61160e6124d1565b6116166124d1565b61161e6124d1565b61164a6040518060400160405280600b81526020016a4c656e646566692044414f60a81b8152506124d9565b6116526124d1565b61165a6124d1565b6116645f87611d08565b5061167c5f80516020613bf083398151915287611d08565b506116945f80516020613c1083398151915287611d08565b506116ac5f80516020613bb083398151915287611d08565b506116c45f80516020613c3083398151915288611d08565b506a295be96e640669720000005f90815569010f0cf064dd59200000600155600280546bffffffff00000000ffffffff19166001600360401b0117905560405133917f908408e307fc569b417f6cbec5d5a06f44a0a505ac0479b47d421a4b2fd6a1e691a2831561176f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f80611782611e2c565b905061179a61179084611e50565b6002830190611e9e565b6001600160d01b03169392505050565b5f806117b4611ce4565b5f948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b5f610e5d61200a565b60605f6117f2611c01565b9050806004018054610a7d9061389f565b5f8061180d611e2c565b6001600160a01b0384165f908152600182016020526040902090915061179a90612504565b611112828261123f565b5f80516020613bf083398151915261185381611c32565b816001600160a01b03811661187b5760405163d92e233d60e01b815260040160405180910390fd5b600480546001600160a01b038581166001600160a01b0319831681179093556040519116919082907f9524c9e4b0b61eb018dd58a1cd856e3e74009528328ab4a613b434fa631d7242905f90a350505050565b5f33610b0c818585611c87565b834211156118ff57604051632341d78760e11b8152600481018590526024016102bb565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590525f90611978906119709060a0016040516020818303038152906040528051906020012061253b565b858585612567565b90506119848187612593565b61176f818861230f565b5f80516020613bf08339815191526119a581611c32565b816001600160a01b0381166119cd5760405163d92e233d60e01b815260040160405180910390fd5b6119e45f80516020613c5083398151915284611d08565b506040516001600160a01b0384169033907f01dd928fd7e112f920f9cef6bb914bf007da5eda59116527e4cef79581a17153905f90a3505050565b83421115611a435760405163313c898160e11b8152600481018590526024016102bb565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611a718c6125c3565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f611acb8261253b565b90505f611ada82878787612567565b9050896001600160a01b0316816001600160a01b031614611b1257808a6040516325c0072360e11b81526004016102bb929190613998565b611b1d8a8a8a611c25565b50505050505050505050565b611b3282610e14565b611b3b81611c32565b610e4e8383611db6565b5f80611b4f611c01565b6001600160a01b039485165f90815260019190910160209081526040808320959096168252939093525050205490565b611b8761346e565b610e0d83836125f4565b6003545f90600160e01b900460ff168015611bcb5750600354611bc8906203f48090600160a01b90046001600160401b0316613963565b42105b611bd457505f90565b6003544290611bf7906203f48090600160a01b90046001600160401b0316613963565b610e5d91906139b2565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b610e958383836001612633565b610f01813361270b565b5f611c478484611b45565b90505f19811015610e4e5781811015611c7957828183604051637dc7a0d960e11b81526004016102bb939291906139c5565b610e4e84848484035f612633565b6001600160a01b038316611cb0575f604051634b637e8f60e11b81526004016102bb91906136db565b6001600160a01b038216611cd9575f60405163ec442f0560e01b81526004016102bb91906136db565b610e95838383612736565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b5f80611d12611ce4565b9050611d1e84846117aa565b611d9d575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611d533390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610a5b565b5f915050610a5b565b5092915050565b5f610e5d612741565b5f80611dc0611ce4565b9050611dcc84846117aa565b15611d9d575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610a5b565b7fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d0090565b5f80611e5a6117de565b90508065ffffffffffff168310611e9557604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044016102bb565b610e0d836127b4565b81545f9081816005811115611efa575f611eb7846127e5565b611ec190856139b2565b5f8881526020902090915081015465ffffffffffff9081169087161015611eea57809150611ef8565b611ef5816001613963565b92505b505b5f611f0787878585612937565b90508015611f4157611f2b87611f1e6001846139b2565b5f91825260209091200190565b54600160301b90046001600160d01b0316611f43565b5f5b979650505050505050565b611f56612996565b5f611f5f612393565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051611f9991906136db565b60405180910390a150565b611fac6111f8565b15611fca5760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b038216611ff5575f60405163ec442f0560e01b81526004016102bb91906136db565b6111125f8383612736565b610f0133826129bb565b5f610e5d436127b4565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061209a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661208e5f80516020613bd0833981519152546001600160a01b031690565b6001600160a01b031614155b15611fca5760405163703e46dd60e11b815260040160405180910390fd5b5f80516020613bb08339815191526120cf81611c32565b600354600160e01b900460ff166120f9576040516370d78f1760e11b815260040160405180910390fd5b6003546001600160a01b0383811691161461213657600354604051631e53f1bb60e31b81526102bb916001600160a01b0316908490600401613998565b6003545f9061215590600160a01b90046001600160401b0316426139b2565b90506203f48081101561218b5761216f816203f4806139b2565b604051633b77feff60e11b81526004016102bb91815260200190565b600380546001600160e81b0319169055600280545f906121b09063ffffffff16613976565b91906101000a81548163ffffffff021916908363ffffffff160217905550826001600160a01b0316336001600160a01b03167fd23ce5645530506727523fe6d7939e72bb49102454460bc72f0f5baec60ac71860405160405180910390a3505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561226d575060408051601f3d908101601f1916820190925261226a918101906139e6565b60015b61228c5781604051634c9c8ce360e01b81526004016102bb91906136db565b5f80516020613bd083398151915281146122bc57604051632a87526960e21b8152600481018290526024016102bb565b610e9583836129ef565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611fca5760405163703e46dd60e11b815260040160405180910390fd5b5f612318611e2c565b90505f612324846111c0565b6001600160a01b038581165f8181526020869052604080822080546001600160a01b031916898616908117909155905194955093928516927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610e4e818461238e87612a44565b612a4e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b5f806123c1611e2c565b6001600160a01b0384165f908152600182016020526040902054909150610e0d90612b8f565b6123f2823383611c3c565b61111282826129bb565b5f610a5b82612bba565b61240e611fa4565b5f612417612393565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611f8c3390565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10090565b60605f61247b61244c565b9050806002018054610a7d9061389f565b60605f610a6c61244c565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610a5b565b6124c7612bc4565b6111128282612be9565b611fca612bc4565b6124e1612bc4565b610f0181604051806040016040528060018152602001603160f81b815250612c19565b80545f9080156125335761251d83611f1e6001846139b2565b54600160301b90046001600160d01b0316610e0d565b5f9392505050565b5f610a5b612547611dad565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f8061257788888888612c58565b9250925092506125878282612d16565b50909695505050505050565b5f61259d836125c3565b9050808214610e955782816040516301d4b62360e61b81526004016102bb9291906139fd565b5f806125cd612dce565b6001600160a01b039093165f90815260209390935250506040902080546001810190915590565b6125fc61346e565b5f612605611e2c565b6001600160a01b0385165f908152600182016020526040902090915061262b9084612df2565b949350505050565b5f61263c611c01565b90506001600160a01b038516612667575f60405163e602df0560e01b81526004016102bb91906136db565b6001600160a01b038416612690575f604051634a1406b160e11b81526004016102bb91906136db565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561270457836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610cd191815260200190565b5050505050565b61271582826117aa565b61111257808260405163e2517d3f60e01b81526004016102bb9291906139fd565b610e95838383612e54565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61276b612eb3565b612773612f18565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f65ffffffffffff8211156127e1576030826040516306dfcc6560e41b81526004016102bb929190613a16565b5090565b5f600182116127f2575090565b816001600160801b821061280b5760809190911c9060401b5b600160401b82106128215760409190911c9060201b5b600160201b82106128375760209190911c9060101b5b62010000821061284c5760109190911c9060081b5b61010082106128605760089190911c9060041b5b601082106128735760049190911c9060021b5b6004821061287f5760011b5b600302600190811c90818581612897576128976138d7565b048201901c905060018185816128af576128af6138d7565b048201901c905060018185816128c7576128c76138d7565b048201901c905060018185816128df576128df6138d7565b048201901c905060018185816128f7576128f76138d7565b048201901c9050600181858161290f5761290f6138d7565b048201901c905061292e818581612928576129286138d7565b04821190565b90039392505050565b5f5b8183101561298e575f61294c8484612f57565b5f8781526020902090915065ffffffffffff86169082015465ffffffffffff16111561297a57809250612988565b612985816001613963565b93505b50612939565b509392505050565b61299e6111f8565b611fca57604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b0382166129e4575f604051634b637e8f60e11b81526004016102bb91906136db565b611112825f83612736565b6129f882612f71565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612a3c57610e958282612fcb565b61111261303d565b5f610a5b82611216565b5f612a57611e2c565b9050826001600160a01b0316846001600160a01b031614158015612a7a57505f82115b15610e4e576001600160a01b03841615612b07576001600160a01b0384165f90815260018201602052604081208190612abe9061305c612ab987613067565b613095565b6001600160d01b031691506001600160d01b03169150856001600160a01b03165f80516020613c708339815191528383604051612afc92919061391e565b60405180910390a250505b6001600160a01b03831615610e4e576001600160a01b0383165f90815260018201602052604081208190612b41906130cd612ab987613067565b6001600160d01b031691506001600160d01b03169150846001600160a01b03165f80516020613c708339815191528383604051612b7f92919061391e565b60405180910390a2505050505050565b5f63ffffffff8211156127e1576020826040516306dfcc6560e41b81526004016102bb929190613a16565b5f80611220612dce565b612bcc6130d8565b611fca57604051631afcd79f60e31b815260040160405180910390fd5b612bf1612bc4565b5f612bfa611c01565b905060038101612c0a8482613a6d565b5060048101610e4e8382613a6d565b612c21612bc4565b5f612c2a61244c565b905060028101612c3a8482613a6d565b5060038101612c498382613a6d565b505f8082556001909101555050565b5f80806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115612c8757505f91506003905082612d0c565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612cd8573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116612d0357505f925060019150829050612d0c565b92505f91508190505b9450945094915050565b5f826003811115612d2957612d29613b2c565b03612d32575050565b6001826003811115612d4657612d46613b2c565b03612d645760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612d7857612d78613b2c565b03612d995760405163fce698f760e01b8152600481018290526024016102bb565b6003826003811115612dad57612dad613b2c565b03611112576040516335e2f38360e21b8152600481018290526024016102bb565b7f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0090565b612dfa61346e565b825f018263ffffffff1681548110612e1457612e14613b40565b5f9182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b612e5f8383836130f1565b6001600160a01b038316612ea8575f612e76610ce0565b90506001600160d01b0380821115612ea5578181604051630e58ae9360e11b81526004016102bb92919061391e565b50505b610e95838383613104565b5f80612ebd61244c565b90505f612ec8612470565b805190915015612ee057805160209091012092915050565b81548015612eef579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f80612f2261244c565b90505f612f2d61248c565b805190915015612f4557805160209091012092915050565b60018201548015612eef579392505050565b5f612f6560028484186138ff565b610e0d90848416613963565b806001600160a01b03163b5f03612f9d5780604051634c9c8ce360e01b81526004016102bb91906136db565b5f80516020613bd083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051612fe79190613b54565b5f60405180830381855af49150503d805f811461301f576040519150601f19603f3d011682016040523d82523d5f602084013e613024565b606091505b5091509150613034858383613172565b95945050505050565b3415611fca5760405163b398979f60e01b815260040160405180910390fd5b5f610e0d8284613b6f565b5f6001600160d01b038211156127e15760d0826040516306dfcc6560e41b81526004016102bb929190613a16565b5f806130c06130a26117de565b6130b86130ae88612504565b868863ffffffff16565b8791906131c5565b915091505b935093915050565b5f610e0d8284613b8f565b5f6130e1612497565b54600160401b900460ff16919050565b6130f9611fa4565b610e958383836131d2565b5f61310d611e2c565b90506001600160a01b03841661313357613130816002016130cd612ab985613067565b50505b6001600160a01b038316613157576131548160020161305c612ab985613067565b50505b610e4e613163856111c0565b61316c856111c0565b84612a4e565b60608261318757613182826132f5565b610e0d565b815115801561319e57506001600160a01b0384163b155b156131be5783604051639996b31560e01b81526004016102bb91906136db565b5080610e0d565b5f806130c085858561331e565b5f6131db611c01565b90506001600160a01b0384166132095781816002015f8282546131fe9190613963565b909155506132669050565b6001600160a01b0384165f90815260208290526040902054828110156132485784818460405163391434e360e21b81526004016102bb939291906139c5565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166132845760028101805483900390556132a2565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132e791815260200190565b60405180910390a350505050565b8051156133055780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b82545f9081908015613414575f61333a87611f1e6001856139b2565b805490915065ffffffffffff80821691600160301b90046001600160d01b031690881682111561337d57604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036133b657825465ffffffffffff16600160301b6001600160d01b03891602178355613406565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160301b029216919091179101555b94508593506130c592505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160301b0291909316179201919091559050816130c5565b604080518082019091525f808252602082015290565b5f60208284031215613494575f80fd5b81356001600160e01b031981168114610e0d575f80fd5b5f5b838110156134c55781810151838201526020016134ad565b50505f910152565b5f81518084526134e48160208601602086016134ab565b601f01601f19169290920160200192915050565b602081525f610e0d60208301846134cd565b80356001600160a01b0381168114613520575f80fd5b919050565b5f8060408385031215613536575f80fd5b61353f8361350a565b946020939093013593505050565b5f6020828403121561355d575f80fd5b5035919050565b5f60208284031215613574575f80fd5b610e0d8261350a565b803563ffffffff81168114613520575f80fd5b5f602082840312156135a0575f80fd5b610e0d8261357d565b5f805f606084860312156135bb575f80fd5b6135c48461350a565b92506135d26020850161350a565b9150604084013590509250925092565b5f80604083850312156135f3575f80fd5b823591506136036020840161350a565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215613631575f80fd5b61363a8361350a565b915060208301356001600160401b0380821115613655575f80fd5b818501915085601f830112613668575f80fd5b81358181111561367a5761367a61360c565b604051601f8201601f19908116603f011681019083821181831017156136a2576136a261360c565b816040528281528860208487010111156136ba575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b6001600160a01b0391909116815260200190565b60ff60f81b881681525f602060e0602084015261370f60e084018a6134cd565b8381036040850152613721818a6134cd565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b8181101561377457835183529284019291840191600101613758565b50909c9b505050505050505050505050565b5f8060408385031215613797575f80fd5b6137a08361350a565b91506136036020840161350a565b803560ff81168114613520575f80fd5b5f805f805f8060c087890312156137d3575f80fd5b6137dc8761350a565b955060208701359450604087013593506137f8606088016137ae565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a031215613828575f80fd5b6138318861350a565b965061383f6020890161350a565b9550604088013594506060880135935061385b608089016137ae565b925060a0880135915060c0880135905092959891949750929550565b5f8060408385031215613888575f80fd5b6138918361350a565b91506136036020840161357d565b600181811c908216806138b357607f821691505b6020821081036138d157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261391957634e487b7160e01b5f52601260045260245ffd5b500490565b918252602082015260400190565b6001600160401b03818116838216019080821115611da657611da66138eb565b8082028115828204841417610a5b57610a5b6138eb565b80820180821115610a5b57610a5b6138eb565b5f63ffffffff80831681810361398e5761398e6138eb565b6001019392505050565b6001600160a01b0392831681529116602082015260400190565b81810381811115610a5b57610a5b6138eb565b6001600160a01b039390931683526020830191909152604082015260600190565b5f602082840312156139f6575f80fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b60ff929092168252602082015260400190565b601f821115610e9557805f5260205f20601f840160051c81016020851015613a4e5750805b601f840160051c820191505b81811015612704575f8155600101613a5a565b81516001600160401b03811115613a8657613a8661360c565b613a9a81613a94845461389f565b84613a29565b602080601f831160018114613acd575f8415613ab65750858301515b5f19600386901b1c1916600185901b178555613b24565b5f85815260208120601f198616915b82811015613afb57888601518255948401946001909101908401613adc565b5085821015613b1857878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8251613b658184602087016134ab565b9190910192915050565b6001600160d01b03828116828216039080821115611da657611da66138eb565b6001600160d01b03818116838216019080821115611da657611da66138eb56fe189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0865d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a53705c9e5a8476131a17c0a6debb701e98c7c0208f3626128e72d5048f897d7b52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724a2646970667358221220a06e522fbb8f0a1c85cd6560f0e8ab679fde22e65744694ebb7811a20552b82e64736f6c63430008170033
0x60806040526004361061027d575f3560e01c806301ffc9a7146102c857806306fdde03146102fc578063095ea7b31461031d5780630bcb8efc1461033c5780630c80447a1461035d57806318160ddd1461037c5780631c50bb621461039e57806323b872dd146103bd578063248a9ca3146103dc5780632f2ff15d146103fb578063313ce5671461041a5780633644e5151461043557806336568abe14610449578063378dc3dc146104685780633a46b1a81461047c5780633f4ba83a1461049b57806340c10f19146104af57806342966c68146104ce578063456560f4146104ed5780634bf5d7e9146105025780634f1ef286146105165780634fee307c1461052957806352d1902d1461056157806354fd4d501461057557806355f2916614610591578063587cde1e146105a55780635c19a95c146105d15780635c975abb146105f05780636fcfff451461060457806370a082311461062357806379cc6790146106425780637ecebe00146106615780638456cb591461068057806384b0196e146106945780638764cb07146106bb57806388211d1d146106da5780638e539e8c146106f95780638fd6a6ac1461071857806391d148541461073557806391ddadf41461075457806395d89b411461077f57806395e93245146107935780639ab24eb0146107fe5780639dc29fac1461081d578063a217fddf1461083c578063a7497fa51461084f578063a8fa343c14610872578063a9059cbb14610891578063ad3cb1cc146108b0578063c3cda520146108e0578063c630948d146108ff578063d505accf1461091e578063d547741f1461093d578063dd62ed3e1461095c578063f1127ed81461097b578063ffaf73cd146109c6575f80fd5b366102c457604051636ca2857760e11b81526020600482015260116024820152701393d7d15512115497d050d0d154151151607a1b60448201526064015b60405180910390fd5b5f80fd5b3480156102d3575f80fd5b506102e76102e2366004613484565b6109da565b60405190151581526020015b60405180910390f35b348015610307575f80fd5b50610310610a61565b6040516102f391906134f8565b348015610328575f80fd5b506102e7610337366004613525565b610aff565b348015610347575f80fd5b5061035b61035636600461354d565b610b16565b005b348015610368575f80fd5b5061035b610377366004613564565b610bef565b348015610387575f80fd5b50610390610ce0565b6040519081526020016102f3565b3480156103a9575f80fd5b5061035b6103b8366004613590565b610cf4565b3480156103c8575f80fd5b506102e76103d73660046135a9565b610def565b3480156103e7575f80fd5b506103906103f636600461354d565b610e14565b348015610406575f80fd5b5061035b6104153660046135e2565b610e32565b348015610425575f80fd5b50604051601281526020016102f3565b348015610440575f80fd5b50610390610e54565b348015610454575f80fd5b5061035b6104633660046135e2565b610e62565b348015610473575f80fd5b506103905f5481565b348015610487575f80fd5b50610390610496366004613525565b610e9a565b3480156104a6575f80fd5b5061035b610ee2565b3480156104ba575f80fd5b5061035b6104c9366004613525565b610f04565b3480156104d9575f80fd5b5061035b6104e836600461354d565b611076565b3480156104f8575f80fd5b5061039060015481565b34801561050d575f80fd5b5061031061107f565b61035b610524366004613620565b6110f7565b348015610534575f80fd5b5060025461054c90600160401b900463ffffffff1681565b60405163ffffffff90911681526020016102f3565b34801561056c575f80fd5b50610390611116565b348015610580575f80fd5b5060025461054c9063ffffffff1681565b34801561059c575f80fd5b5061035b611131565b3480156105b0575f80fd5b506105c46105bf366004613564565b6111c0565b6040516102f391906136db565b3480156105dc575f80fd5b5061035b6105eb366004613564565b6111ed565b3480156105fb575f80fd5b506102e76111f8565b34801561060f575f80fd5b5061054c61061e366004613564565b61120c565b34801561062e575f80fd5b5061039061063d366004613564565b611216565b34801561064d575f80fd5b5061035b61065c366004613525565b61123f565b34801561066c575f80fd5b5061039061067b366004613564565b611249565b34801561068b575f80fd5b5061035b611253565b34801561069f575f80fd5b506106a8611272565b6040516102f397969594939291906136ef565b3480156106c6575f80fd5b5061035b6106d5366004613786565b611316565b3480156106e5575f80fd5b5061035b6106f4366004613786565b6114e3565b348015610704575f80fd5b5061039061071336600461354d565b611778565b348015610723575f80fd5b506004546001600160a01b03166105c4565b348015610740575f80fd5b506102e761074f3660046135e2565b6117aa565b34801561075f575f80fd5b506107686117de565b60405165ffffffffffff90911681526020016102f3565b34801561078a575f80fd5b506103106117e7565b34801561079e575f80fd5b506003546107cf906001600160a01b03811690600160a01b81046001600160401b031690600160e01b900460ff1683565b604080516001600160a01b0390941684526001600160401b0390921660208401521515908201526060016102f3565b348015610809575f80fd5b50610390610818366004613564565b611803565b348015610828575f80fd5b5061035b610837366004613525565b611832565b348015610847575f80fd5b506103905f81565b34801561085a575f80fd5b5060025461054c90600160201b900463ffffffff1681565b34801561087d575f80fd5b5061035b61088c366004613564565b61183c565b34801561089c575f80fd5b506102e76108ab366004613525565b6118ce565b3480156108bb575f80fd5b50610310604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156108eb575f80fd5b5061035b6108fa3660046137be565b6118db565b34801561090a575f80fd5b5061035b610919366004613564565b61198e565b348015610929575f80fd5b5061035b610938366004613812565b611a1f565b348015610948575f80fd5b5061035b6109573660046135e2565b611b29565b348015610967575f80fd5b50610390610976366004613786565b611b45565b348015610986575f80fd5b5061099a610995366004613877565b611b7f565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016102f3565b3480156109d1575f80fd5b50610390611b91565b5f6001600160e01b031982166336372b0760e01b1480610a0a57506001600160e01b0319821663e6599b4d60e01b145b80610a2557506001600160e01b031982166301ffc9a760e01b145b80610a4057506001600160e01b03198216637965db0b60e01b145b80610a5b57506001600160e01b031982166323f5a9ab60e21b145b92915050565b60605f610a6c611c01565b9050806003018054610a7d9061389f565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa99061389f565b8015610af45780601f10610acb57610100808354040283529160200191610af4565b820191905f5260205f20905b815481529060010190602001808311610ad757829003601f168201915b505050505091505090565b5f33610b0c818585611c25565b5060019392505050565b80805f03610b3757604051631f2a200560e01b815260040160405180910390fd5b5f80516020613bf0833981519152610b4e81611c32565b60645f54610b5c91906138ff565b831115610ba557604051636ca2857760e11b8152602060048201526016602482015275084e4d2c8ceca40c2dadeeadce840e8dede40d0d2ced60531b60448201526064016102bb565b600180549084905560405133907f0c81c717c4b09e478e66818a705b7e76550fbc5ed975aadf02ef618a1ef4335290610be1908490889061391e565b60405180910390a250505050565b806001600160a01b038116610c175760405163d92e233d60e01b815260040160405180910390fd5b5f80516020613bb0833981519152610c2e81611c32565b425f610c3d6203f4808361392c565b604080516060810182526001600160a01b0388168082526001600160401b03868116602080850182905260019486019490945260038054600160e01b6001600160e01b03199091168517600160a01b84021760ff60e01b191617905584519081529085169281019290925292935033917fd555bb44cf2c5b99fb9936196db6ac3b4ca5946d1f2fc81ba6cc49fe978b55c491015b60405180910390a35050505050565b5f80610cea611c01565b6002015492915050565b8063ffffffff16805f03610d1b57604051631f2a200560e01b815260040160405180910390fd5b5f80516020613bf0833981519152610d3281611c32565b60025463ffffffff600160401b9091048116908416811115610d8f57604051636ca2857760e11b815260206004820152601560248201527424b73b30b634b21031b430b4b73990373ab6b132b960591b60448201526064016102bb565b6002805463ffffffff60401b1916600160401b63ffffffff87811691820292909217909255604080519184168252602082019290925233917f40bf83a393bd7a31e0c1786c149f9e412df93c34404592d582c02117fa443b359101610be1565b5f33610dfc858285611c3c565b610e07858585611c87565b60019150505b9392505050565b5f80610e1e611ce4565b5f9384526020525050604090206001015490565b610e3b82610e14565b610e4481611c32565b610e4e8383611d08565b50505050565b5f610e5d611dad565b905090565b6001600160a01b0381163314610e8b5760405163334bd91960e11b815260040160405180910390fd5b610e958282611db6565b505050565b5f80610ea4611e2c565b9050610ed1610eb284611e50565b6001600160a01b0386165f908152600184016020526040902090611e9e565b6001600160d01b0316949350505050565b5f80516020613c10833981519152610ef981611c32565b610f01611f4e565b50565b816001600160a01b038116610f2c5760405163d92e233d60e01b815260040160405180910390fd5b81805f03610f4d57604051631f2a200560e01b815260040160405180910390fd5b610f55611fa4565b5f80516020613c50833981519152610f6c81611c32565b306001600160a01b03861603610f975784604051630bc2c5df60e11b81526004016102bb91906136db565b60015480851115610fbf578481604051634b5921e160e11b81526004016102bb92919061391e565b5f600260089054906101000a900463ffffffff1663ffffffff165f54610fe5919061394c565b90505f86610ff1610ce0565b610ffb9190613963565b905081811115611022578082604051637502c12360e11b81526004016102bb92919061391e565b61102c8888611fcc565b6040518781526001600160a01b0389169033907fc3b8ae385c02b938fbbbd694d1da0761f755ee2c942f26bbfc6723c986d31b9b9060200160405180910390a35050505050505050565b610f0181612000565b606061108961200a565b65ffffffffffff166110996117de565b65ffffffffffff16146110bf576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6110ff612014565b611108826120b8565b6111128282612213565b5050565b5f61111f6122c6565b505f80516020613bd083398151915290565b5f80516020613bb083398151915261114881611c32565b600354600160e01b900460ff16611172576040516370d78f1760e11b815260040160405180910390fd5b600380546001600160e81b031981169091556040516001600160a01b0390911690819033907fa6698f935ea3cb05304828ddd237d7f7b2ee8f2d7733962bbba67888985e1a2c905f90a35050565b5f806111ca611e2c565b6001600160a01b039384165f908152602091909152604090205490921692915050565b33611112818361230f565b5f80611202612393565b5460ff1692915050565b5f610a5b826123b7565b5f80611220611c01565b6001600160a01b039093165f9081526020939093525050604090205490565b61111282826123e7565b5f610a5b826123fc565b5f80516020613c1083398151915261126a81611c32565b610f01612406565b5f6060805f805f60605f61128461244c565b805490915015801561129857506001810154155b6112dc5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016102bb565b6112e4612470565b6112ec61248c565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b5f80516020613c3083398151915261132d81611c32565b6001600160a01b038316611395576040805163f7693c3d60e01b81526001600160a01b03851660048201526024810191909152602060448201527f45636f73797374656d20616464726573732063616e6e6f74206265207a65726f60648201526084016102bb565b6001600160a01b0382166113fd576040805163f7693c3d60e01b81526001600160a01b03841660048201526024810191909152601f60448201527f547265617375727920616464726573732063616e6e6f74206265207a65726f0060648201526084016102bb565b600254600160201b900463ffffffff161561142b57604051637293cabb60e11b815260040160405180910390fd5b6002805460049061144890600160201b900463ffffffff16613976565b91906101000a81548163ffffffff021916908363ffffffff16021790555061147b826a16aa2cf9ef223bd5000000611fcc565b611490836a1232ae63c59c6bd6000000611fcc565b6114a433697f0e10af47c1c7000000611fcc565b7f4676d7836750b1293e00723159fb3b4f3fddcd42f2614e7488cb15b8ba48a3ed5f546040516114d691815260200190565b60405180910390a1505050565b5f6114ec612497565b805490915060ff600160401b82041615906001600160401b03165f811580156115125750825b90505f826001600160401b0316600114801561152d5750303b155b90508115801561153b575080155b156115595760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561158257845460ff60401b1916600160401b1785555b6001600160a01b038716158061159f57506001600160a01b038616155b156115bd5760405163d92e233d60e01b815260040160405180910390fd5b6116066040518060400160405280600b81526020016a4c656e646566692044414f60a81b815250604051806040016040528060048152602001631311539160e21b8152506124bf565b61160e6124d1565b6116166124d1565b61161e6124d1565b61164a6040518060400160405280600b81526020016a4c656e646566692044414f60a81b8152506124d9565b6116526124d1565b61165a6124d1565b6116645f87611d08565b5061167c5f80516020613bf083398151915287611d08565b506116945f80516020613c1083398151915287611d08565b506116ac5f80516020613bb083398151915287611d08565b506116c45f80516020613c3083398151915288611d08565b506a295be96e640669720000005f90815569010f0cf064dd59200000600155600280546bffffffff00000000ffffffff19166001600360401b0117905560405133917f908408e307fc569b417f6cbec5d5a06f44a0a505ac0479b47d421a4b2fd6a1e691a2831561176f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f80611782611e2c565b905061179a61179084611e50565b6002830190611e9e565b6001600160d01b03169392505050565b5f806117b4611ce4565b5f948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b5f610e5d61200a565b60605f6117f2611c01565b9050806004018054610a7d9061389f565b5f8061180d611e2c565b6001600160a01b0384165f908152600182016020526040902090915061179a90612504565b611112828261123f565b5f80516020613bf083398151915261185381611c32565b816001600160a01b03811661187b5760405163d92e233d60e01b815260040160405180910390fd5b600480546001600160a01b038581166001600160a01b0319831681179093556040519116919082907f9524c9e4b0b61eb018dd58a1cd856e3e74009528328ab4a613b434fa631d7242905f90a350505050565b5f33610b0c818585611c87565b834211156118ff57604051632341d78760e11b8152600481018590526024016102bb565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590525f90611978906119709060a0016040516020818303038152906040528051906020012061253b565b858585612567565b90506119848187612593565b61176f818861230f565b5f80516020613bf08339815191526119a581611c32565b816001600160a01b0381166119cd5760405163d92e233d60e01b815260040160405180910390fd5b6119e45f80516020613c5083398151915284611d08565b506040516001600160a01b0384169033907f01dd928fd7e112f920f9cef6bb914bf007da5eda59116527e4cef79581a17153905f90a3505050565b83421115611a435760405163313c898160e11b8152600481018590526024016102bb565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611a718c6125c3565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f611acb8261253b565b90505f611ada82878787612567565b9050896001600160a01b0316816001600160a01b031614611b1257808a6040516325c0072360e11b81526004016102bb929190613998565b611b1d8a8a8a611c25565b50505050505050505050565b611b3282610e14565b611b3b81611c32565b610e4e8383611db6565b5f80611b4f611c01565b6001600160a01b039485165f90815260019190910160209081526040808320959096168252939093525050205490565b611b8761346e565b610e0d83836125f4565b6003545f90600160e01b900460ff168015611bcb5750600354611bc8906203f48090600160a01b90046001600160401b0316613963565b42105b611bd457505f90565b6003544290611bf7906203f48090600160a01b90046001600160401b0316613963565b610e5d91906139b2565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b610e958383836001612633565b610f01813361270b565b5f611c478484611b45565b90505f19811015610e4e5781811015611c7957828183604051637dc7a0d960e11b81526004016102bb939291906139c5565b610e4e84848484035f612633565b6001600160a01b038316611cb0575f604051634b637e8f60e11b81526004016102bb91906136db565b6001600160a01b038216611cd9575f60405163ec442f0560e01b81526004016102bb91906136db565b610e95838383612736565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b5f80611d12611ce4565b9050611d1e84846117aa565b611d9d575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611d533390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610a5b565b5f915050610a5b565b5092915050565b5f610e5d612741565b5f80611dc0611ce4565b9050611dcc84846117aa565b15611d9d575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610a5b565b7fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d0090565b5f80611e5a6117de565b90508065ffffffffffff168310611e9557604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044016102bb565b610e0d836127b4565b81545f9081816005811115611efa575f611eb7846127e5565b611ec190856139b2565b5f8881526020902090915081015465ffffffffffff9081169087161015611eea57809150611ef8565b611ef5816001613963565b92505b505b5f611f0787878585612937565b90508015611f4157611f2b87611f1e6001846139b2565b5f91825260209091200190565b54600160301b90046001600160d01b0316611f43565b5f5b979650505050505050565b611f56612996565b5f611f5f612393565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051611f9991906136db565b60405180910390a150565b611fac6111f8565b15611fca5760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b038216611ff5575f60405163ec442f0560e01b81526004016102bb91906136db565b6111125f8383612736565b610f0133826129bb565b5f610e5d436127b4565b306001600160a01b037f0000000000000000000000000d2c2c72ebe2a2543c027e6b25729dbd6f0a35b616148061209a57507f0000000000000000000000000d2c2c72ebe2a2543c027e6b25729dbd6f0a35b66001600160a01b031661208e5f80516020613bd0833981519152546001600160a01b031690565b6001600160a01b031614155b15611fca5760405163703e46dd60e11b815260040160405180910390fd5b5f80516020613bb08339815191526120cf81611c32565b600354600160e01b900460ff166120f9576040516370d78f1760e11b815260040160405180910390fd5b6003546001600160a01b0383811691161461213657600354604051631e53f1bb60e31b81526102bb916001600160a01b0316908490600401613998565b6003545f9061215590600160a01b90046001600160401b0316426139b2565b90506203f48081101561218b5761216f816203f4806139b2565b604051633b77feff60e11b81526004016102bb91815260200190565b600380546001600160e81b0319169055600280545f906121b09063ffffffff16613976565b91906101000a81548163ffffffff021916908363ffffffff160217905550826001600160a01b0316336001600160a01b03167fd23ce5645530506727523fe6d7939e72bb49102454460bc72f0f5baec60ac71860405160405180910390a3505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561226d575060408051601f3d908101601f1916820190925261226a918101906139e6565b60015b61228c5781604051634c9c8ce360e01b81526004016102bb91906136db565b5f80516020613bd083398151915281146122bc57604051632a87526960e21b8152600481018290526024016102bb565b610e9583836129ef565b306001600160a01b037f0000000000000000000000000d2c2c72ebe2a2543c027e6b25729dbd6f0a35b61614611fca5760405163703e46dd60e11b815260040160405180910390fd5b5f612318611e2c565b90505f612324846111c0565b6001600160a01b038581165f8181526020869052604080822080546001600160a01b031916898616908117909155905194955093928516927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610e4e818461238e87612a44565b612a4e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b5f806123c1611e2c565b6001600160a01b0384165f908152600182016020526040902054909150610e0d90612b8f565b6123f2823383611c3c565b61111282826129bb565b5f610a5b82612bba565b61240e611fa4565b5f612417612393565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611f8c3390565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10090565b60605f61247b61244c565b9050806002018054610a7d9061389f565b60605f610a6c61244c565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610a5b565b6124c7612bc4565b6111128282612be9565b611fca612bc4565b6124e1612bc4565b610f0181604051806040016040528060018152602001603160f81b815250612c19565b80545f9080156125335761251d83611f1e6001846139b2565b54600160301b90046001600160d01b0316610e0d565b5f9392505050565b5f610a5b612547611dad565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f8061257788888888612c58565b9250925092506125878282612d16565b50909695505050505050565b5f61259d836125c3565b9050808214610e955782816040516301d4b62360e61b81526004016102bb9291906139fd565b5f806125cd612dce565b6001600160a01b039093165f90815260209390935250506040902080546001810190915590565b6125fc61346e565b5f612605611e2c565b6001600160a01b0385165f908152600182016020526040902090915061262b9084612df2565b949350505050565b5f61263c611c01565b90506001600160a01b038516612667575f60405163e602df0560e01b81526004016102bb91906136db565b6001600160a01b038416612690575f604051634a1406b160e11b81526004016102bb91906136db565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561270457836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610cd191815260200190565b5050505050565b61271582826117aa565b61111257808260405163e2517d3f60e01b81526004016102bb9291906139fd565b610e95838383612e54565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61276b612eb3565b612773612f18565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f65ffffffffffff8211156127e1576030826040516306dfcc6560e41b81526004016102bb929190613a16565b5090565b5f600182116127f2575090565b816001600160801b821061280b5760809190911c9060401b5b600160401b82106128215760409190911c9060201b5b600160201b82106128375760209190911c9060101b5b62010000821061284c5760109190911c9060081b5b61010082106128605760089190911c9060041b5b601082106128735760049190911c9060021b5b6004821061287f5760011b5b600302600190811c90818581612897576128976138d7565b048201901c905060018185816128af576128af6138d7565b048201901c905060018185816128c7576128c76138d7565b048201901c905060018185816128df576128df6138d7565b048201901c905060018185816128f7576128f76138d7565b048201901c9050600181858161290f5761290f6138d7565b048201901c905061292e818581612928576129286138d7565b04821190565b90039392505050565b5f5b8183101561298e575f61294c8484612f57565b5f8781526020902090915065ffffffffffff86169082015465ffffffffffff16111561297a57809250612988565b612985816001613963565b93505b50612939565b509392505050565b61299e6111f8565b611fca57604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b0382166129e4575f604051634b637e8f60e11b81526004016102bb91906136db565b611112825f83612736565b6129f882612f71565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612a3c57610e958282612fcb565b61111261303d565b5f610a5b82611216565b5f612a57611e2c565b9050826001600160a01b0316846001600160a01b031614158015612a7a57505f82115b15610e4e576001600160a01b03841615612b07576001600160a01b0384165f90815260018201602052604081208190612abe9061305c612ab987613067565b613095565b6001600160d01b031691506001600160d01b03169150856001600160a01b03165f80516020613c708339815191528383604051612afc92919061391e565b60405180910390a250505b6001600160a01b03831615610e4e576001600160a01b0383165f90815260018201602052604081208190612b41906130cd612ab987613067565b6001600160d01b031691506001600160d01b03169150846001600160a01b03165f80516020613c708339815191528383604051612b7f92919061391e565b60405180910390a2505050505050565b5f63ffffffff8211156127e1576020826040516306dfcc6560e41b81526004016102bb929190613a16565b5f80611220612dce565b612bcc6130d8565b611fca57604051631afcd79f60e31b815260040160405180910390fd5b612bf1612bc4565b5f612bfa611c01565b905060038101612c0a8482613a6d565b5060048101610e4e8382613a6d565b612c21612bc4565b5f612c2a61244c565b905060028101612c3a8482613a6d565b5060038101612c498382613a6d565b505f8082556001909101555050565b5f80806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115612c8757505f91506003905082612d0c565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612cd8573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116612d0357505f925060019150829050612d0c565b92505f91508190505b9450945094915050565b5f826003811115612d2957612d29613b2c565b03612d32575050565b6001826003811115612d4657612d46613b2c565b03612d645760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612d7857612d78613b2c565b03612d995760405163fce698f760e01b8152600481018290526024016102bb565b6003826003811115612dad57612dad613b2c565b03611112576040516335e2f38360e21b8152600481018290526024016102bb565b7f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0090565b612dfa61346e565b825f018263ffffffff1681548110612e1457612e14613b40565b5f9182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b612e5f8383836130f1565b6001600160a01b038316612ea8575f612e76610ce0565b90506001600160d01b0380821115612ea5578181604051630e58ae9360e11b81526004016102bb92919061391e565b50505b610e95838383613104565b5f80612ebd61244c565b90505f612ec8612470565b805190915015612ee057805160209091012092915050565b81548015612eef579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f80612f2261244c565b90505f612f2d61248c565b805190915015612f4557805160209091012092915050565b60018201548015612eef579392505050565b5f612f6560028484186138ff565b610e0d90848416613963565b806001600160a01b03163b5f03612f9d5780604051634c9c8ce360e01b81526004016102bb91906136db565b5f80516020613bd083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051612fe79190613b54565b5f60405180830381855af49150503d805f811461301f576040519150601f19603f3d011682016040523d82523d5f602084013e613024565b606091505b5091509150613034858383613172565b95945050505050565b3415611fca5760405163b398979f60e01b815260040160405180910390fd5b5f610e0d8284613b6f565b5f6001600160d01b038211156127e15760d0826040516306dfcc6560e41b81526004016102bb929190613a16565b5f806130c06130a26117de565b6130b86130ae88612504565b868863ffffffff16565b8791906131c5565b915091505b935093915050565b5f610e0d8284613b8f565b5f6130e1612497565b54600160401b900460ff16919050565b6130f9611fa4565b610e958383836131d2565b5f61310d611e2c565b90506001600160a01b03841661313357613130816002016130cd612ab985613067565b50505b6001600160a01b038316613157576131548160020161305c612ab985613067565b50505b610e4e613163856111c0565b61316c856111c0565b84612a4e565b60608261318757613182826132f5565b610e0d565b815115801561319e57506001600160a01b0384163b155b156131be5783604051639996b31560e01b81526004016102bb91906136db565b5080610e0d565b5f806130c085858561331e565b5f6131db611c01565b90506001600160a01b0384166132095781816002015f8282546131fe9190613963565b909155506132669050565b6001600160a01b0384165f90815260208290526040902054828110156132485784818460405163391434e360e21b81526004016102bb939291906139c5565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166132845760028101805483900390556132a2565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132e791815260200190565b60405180910390a350505050565b8051156133055780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b82545f9081908015613414575f61333a87611f1e6001856139b2565b805490915065ffffffffffff80821691600160301b90046001600160d01b031690881682111561337d57604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036133b657825465ffffffffffff16600160301b6001600160d01b03891602178355613406565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160301b029216919091179101555b94508593506130c592505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160301b0291909316179201919091559050816130c5565b604080518082019091525f808252602082015290565b5f60208284031215613494575f80fd5b81356001600160e01b031981168114610e0d575f80fd5b5f5b838110156134c55781810151838201526020016134ad565b50505f910152565b5f81518084526134e48160208601602086016134ab565b601f01601f19169290920160200192915050565b602081525f610e0d60208301846134cd565b80356001600160a01b0381168114613520575f80fd5b919050565b5f8060408385031215613536575f80fd5b61353f8361350a565b946020939093013593505050565b5f6020828403121561355d575f80fd5b5035919050565b5f60208284031215613574575f80fd5b610e0d8261350a565b803563ffffffff81168114613520575f80fd5b5f602082840312156135a0575f80fd5b610e0d8261357d565b5f805f606084860312156135bb575f80fd5b6135c48461350a565b92506135d26020850161350a565b9150604084013590509250925092565b5f80604083850312156135f3575f80fd5b823591506136036020840161350a565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215613631575f80fd5b61363a8361350a565b915060208301356001600160401b0380821115613655575f80fd5b818501915085601f830112613668575f80fd5b81358181111561367a5761367a61360c565b604051601f8201601f19908116603f011681019083821181831017156136a2576136a261360c565b816040528281528860208487010111156136ba575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b6001600160a01b0391909116815260200190565b60ff60f81b881681525f602060e0602084015261370f60e084018a6134cd565b8381036040850152613721818a6134cd565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b8181101561377457835183529284019291840191600101613758565b50909c9b505050505050505050505050565b5f8060408385031215613797575f80fd5b6137a08361350a565b91506136036020840161350a565b803560ff81168114613520575f80fd5b5f805f805f8060c087890312156137d3575f80fd5b6137dc8761350a565b955060208701359450604087013593506137f8606088016137ae565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a031215613828575f80fd5b6138318861350a565b965061383f6020890161350a565b9550604088013594506060880135935061385b608089016137ae565b925060a0880135915060c0880135905092959891949750929550565b5f8060408385031215613888575f80fd5b6138918361350a565b91506136036020840161357d565b600181811c908216806138b357607f821691505b6020821081036138d157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261391957634e487b7160e01b5f52601260045260245ffd5b500490565b918252602082015260400190565b6001600160401b03818116838216019080821115611da657611da66138eb565b8082028115828204841417610a5b57610a5b6138eb565b80820180821115610a5b57610a5b6138eb565b5f63ffffffff80831681810361398e5761398e6138eb565b6001019392505050565b6001600160a01b0392831681529116602082015260400190565b81810381811115610a5b57610a5b6138eb565b6001600160a01b039390931683526020830191909152604082015260600190565b5f602082840312156139f6575f80fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b60ff929092168252602082015260400190565b601f821115610e9557805f5260205f20601f840160051c81016020851015613a4e5750805b601f840160051c820191505b81811015612704575f8155600101613a5a565b81516001600160401b03811115613a8657613a8661360c565b613a9a81613a94845461389f565b84613a29565b602080601f831160018114613acd575f8415613ab65750858301515b5f19600386901b1c1916600185901b178555613b24565b5f85815260208120601f198616915b82811015613afb57888601518255948401946001909101908401613adc565b5085821015613b1857878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8251613b658184602087016134ab565b9190910192915050565b6001600160d01b03828116828216039080821115611da657611da66138eb565b6001600160d01b03818116838216019080821115611da657611da66138eb56fe189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0865d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a53705c9e5a8476131a17c0a6debb701e98c7c0208f3626128e72d5048f897d7b52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724a2646970667358221220a06e522fbb8f0a1c85cd6560f0e8ab679fde22e65744694ebb7811a20552b82e64736f6c63430008170033