Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
195,000.00 ORE

Holders:
352
Profile Summary
Blockchain:
Blast (81457)


Decimals:
18
Contract Source Code Verified (Partial Match)
Contract Name:
ORE404

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No

Created At:
Fri, 08 Mar 2024 10:36:43 GMT
ORE404.sol
ORE404.sol
ORE404.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AlreadyInitialized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ApprovalCallerNotOwnerNorApproved",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "DNAlreadyInitialized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FnSelectorNotRecognized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InsufficientAllowance",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InsufficientBalance",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LinkMirrorContractFailed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Locked",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MaxBalanceLimitReached",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MirrorAddressIsZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NewOwnerIsZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NoHandoverRequest",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SenderNotMirror",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TokenDoesNotExist",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TotalSupplyOverflow",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferCallerNotOwnerNorApproved",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferFromIncorrectOwner",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferToZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Unauthorized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UnitIsZero",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "pendingOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipHandoverCanceled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "pendingOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipHandoverRequested",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "roles",
        "type": "uint256"
      }
    ],
    "name": "RolesUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "target",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "SkipNFTSet",
    "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": "amount",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "stateMutability": "payable",
    "type": "fallback"
  },
  {
    "inputs": [],
    "name": "ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "BLAST",
    "outputs": [
      {
        "internalType": "contract IBlast",
        "name": "",
        "type": "address"
      }
    ],
    "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": "amount",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseURILocked",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "cancelOwnershipHandover",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "claimAllContractsGas",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "claimMaxContractsGas",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pendingOwner",
        "type": "address"
      }
    ],
    "name": "completeOwnershipHandover",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "getSkipNFT",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "roles",
        "type": "uint256"
      }
    ],
    "name": "grantRoles",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "roles",
        "type": "uint256"
      }
    ],
    "name": "hasAllRoles",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "roles",
        "type": "uint256"
      }
    ],
    "name": "hasAnyRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "mirror",
        "type": "address"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "target",
        "type": "address"
      }
    ],
    "name": "isWhitelisted",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lockBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lockNameAndSymbol",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxBalanceLimit",
    "outputs": [
      {
        "internalType": "uint32",
        "name": "",
        "type": "uint32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mirrorERC721",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "nameAndSymbolLocked",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "result",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pendingOwner",
        "type": "address"
      }
    ],
    "name": "ownershipHandoverExpiresAt",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "result",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "roles",
        "type": "uint256"
      }
    ],
    "name": "renounceRoles",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "requestOwnershipHandover",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "revealed",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "roles",
        "type": "uint256"
      }
    ],
    "name": "revokeRoles",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "rolesOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "roles",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "baseURI_",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint32",
        "name": "value",
        "type": "uint32"
      }
    ],
    "name": "setMaxBalanceLimit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol_",
        "type": "string"
      }
    ],
    "name": "setNameAndSymbol",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "setRevealed",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "skipNFT",
        "type": "bool"
      }
    ],
    "name": "setSkipNFT",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "targets",
        "type": "address[]"
      },
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "setSkipNFTAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "target",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "setWhitelist",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "result",
        "type": "string"
      }
    ],
    "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": "amount",
        "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": "amount",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "triggerLockWhitelist",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "whitelistLocked",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdraw",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
608060405234801562000010575f80fd5b5073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff16634e606c476040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200006b575f80fd5b505af11580156200007e573d5f803e3d5ffd5b5050505062000093326200009960201b60201c565b62000755565b620000aa816200018760201b60201c565b620000bd8160016200026860201b60201c565b6040518060400160405280600381526020017f4f726500000000000000000000000000000000000000000000000000000000008152505f908162000102919062000671565b506040518060400160405280600381526020017f4f524500000000000000000000000000000000000000000000000000000000008152506001908162000149919062000671565b505f6003806101000a81548163ffffffff021916908363ffffffff1602179055505f600360016101000a81548160ff02191690831515021790555050565b62000197620002af60201b60201c565b1562000212577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415620001d357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35062000265565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b620002ab826200029f836200028386620002b360201b60201c565b6affffffffffffffffffffff166200032260201b90919060201c565b6200035360201b60201c565b5050565b5f90565b5f620002c4620003d360201b60201c565b600b015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a90046affffffffffffffffffffff169050919050565b5f8115156200033784620003e360201b60201c565b1515146200034a5760576001901b831892505b82905092915050565b8062000364620003d360201b60201c565b600b015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a8154816affffffffffffffffffffff02191690836affffffffffffffffffffff1602179055505050565b5f68a20d6e21d0e5255308905090565b5f806057836affffffffffffffffffffff16901c6affffffffffffffffffffff1614159050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200048957607f821691505b6020821081036200049f576200049e62000444565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004c6565b6200050f8683620004c6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000559620005536200054d8462000527565b62000530565b62000527565b9050919050565b5f819050919050565b620005748362000539565b6200058c620005838262000560565b848454620004d2565b825550505050565b5f90565b620005a262000594565b620005af81848462000569565b505050565b5b81811015620005d657620005ca5f8262000598565b600181019050620005b5565b5050565b601f8211156200062557620005ef81620004a5565b620005fa84620004b7565b810160208510156200060a578190505b620006226200061985620004b7565b830182620005b4565b50505b505050565b5f82821c905092915050565b5f620006475f19846008026200062a565b1980831691505092915050565b5f62000661838362000636565b9150826002028217905092915050565b6200067c826200040d565b67ffffffffffffffff81111562000698576200069762000417565b5b620006a4825462000471565b620006b1828285620005da565b5f60209050601f831160018114620006e7575f8415620006d2578287015190505b620006de858262000654565b8655506200074d565b601f198416620006f786620004a5565b5f5b828110156200072057848901518255600182019150602085019450602081019050620006f9565b868310156200074057848901516200073c601f89168262000636565b8355505b6001600288020188555050505b505050505050565b614f2c80620007635f395ff3fe60806040526004361061028b575f3560e01c806353df5c7c1161015957806397d75776116100c0578063dd62ed3e11610079578063dd62ed3e14610f46578063e0a8085314610f82578063f04e283e14610faa578063f2fde38b14610fc6578063fee81cf414610fe2578063fefdec101461101e5761029d565b806397d7577614610e3c578063a9059cbb14610e66578063c0c3274114610ea2578063c4d66de814610eb8578063c87b56dd14610ee0578063d73c1fb314610f1c5761029d565b806370a082311161011257806370a0823114610d50578063715018a614610d8c57806375b238fc14610d965780638da5cb5b14610dc0578063918e7a1e14610dea57806395d89b4114610e125761029d565b806353df5c7c14610ca057806354d1f13d14610cb657806355f804b314610cc05780635a44621514610ce85780635d148e5c14610d105780636338cb8a14610d3a5761029d565b8063274e430b116101fd5780633ccfd60b116101b65780633ccfd60b14610bb65780634a4ee7b114610bcc5780634ef41efc14610be8578063514e62fc14610c125780635183022714610c4e57806353d6fd5914610c785761029d565b8063274e430b14610a745780632a6a935d14610ab05780632de9480714610aec578063313ce56714610b28578063368bfcee14610b525780633af32abf14610b7a5761029d565b806318160ddd1161024f57806318160ddd14610990578063183a4f6e146109ba5780631c10893f146109d65780631cd64df4146109f257806323b872dd14610a2e5780632569296214610a6a5761029d565b806304dfe79d146108c057806306fdde03146108ea578063095ea7b3146109145780630a745b1a14610950578063180434a3146109665761029d565b3661029d575f341461029b575f80fd5b005b5f6102a6611034565b90505f60e06102b45f611044565b901c90505f826001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905063e5eb36c8820361038a578073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461034f576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61037f61035c6004611044565b6103666024611044565b6103706044611044565b61037a6064611044565b61104e565b610389600161106a565b5b63813500fc820361042e578073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103fa576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104236104076004611044565b5f6104126024611044565b141561041e6044611044565b611072565b61042d600161106a565b5b63e985e9c582036104cf578073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049e576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104bf846003016104b06004611044565b6104ba6024611044565b61109b565b90506104cd815f015461106a565b505b636352211e8203610570578073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461053f576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61056f61055461054f6004611044565b6110b8565b73ffffffffffffffffffffffffffffffffffffffff1661106a565b5b63243598798203610611578073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105e0576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106106105f56105f06004611044565b611108565b73ffffffffffffffffffffffffffffffffffffffff1661106a565b5b63d10b6e0c82036106cb578073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610681576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6106a861068f6004611044565b6106996024611044565b6106a36044611044565b611177565b90506106c98173ffffffffffffffffffffffffffffffffffffffff1661106a565b505b63081812fc820361076c578073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461073b576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61076b61075061074b6004611044565b6112f3565b73ffffffffffffffffffffffffffffffffffffffff1661106a565b5b63f5b100ea82036107f7578073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107dc576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107f66107f16107ec6004611044565b611374565b61106a565b5b63e2c792818203610878578073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610867576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108776108726113db565b61106a565b5b63b7a94eb8820361088e5761088d600161106a565b5b6040517f3c10b94e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156108cb575f80fd5b506108d4611402565b6040516108e19190614423565b60405180910390f35b3480156108f5575f80fd5b506108fe611416565b60405161090b91906144c6565b60405180910390f35b34801561091f575f80fd5b5061093a6004803603810190610935919061457b565b6114a5565b60405161094791906145d3565b60405180910390f35b34801561095b575f80fd5b506109646114bb565b005b348015610971575f80fd5b5061097a611559565b60405161098791906145d3565b60405180910390f35b34801561099b575f80fd5b506109a461156c565b6040516109b191906145fb565b60405180910390f35b6109d460048036038101906109cf9190614614565b6115a3565b005b6109f060048036038101906109eb919061457b565b6115b0565b005b3480156109fd575f80fd5b50610a186004803603810190610a13919061457b565b6115c6565b604051610a2591906145d3565b60405180910390f35b348015610a39575f80fd5b50610a546004803603810190610a4f919061463f565b6115dc565b604051610a6191906145d3565b60405180910390f35b610a7261175f565b005b348015610a7f575f80fd5b50610a9a6004803603810190610a95919061468f565b6117b0565b604051610aa791906145d3565b60405180910390f35b348015610abb575f80fd5b50610ad66004803603810190610ad191906146e4565b61184b565b604051610ae391906145d3565b60405180910390f35b348015610af7575f80fd5b50610b126004803603810190610b0d919061468f565b61185f565b604051610b1f91906145fb565b60405180910390f35b348015610b33575f80fd5b50610b3c611878565b604051610b49919061472a565b60405180910390f35b348015610b5d575f80fd5b50610b786004803603810190610b7391906147a4565b611880565b005b348015610b85575f80fd5b50610ba06004803603810190610b9b919061468f565b6118e3565b604051610bad91906145d3565b60405180910390f35b348015610bc1575f80fd5b50610bca611909565b005b610be66004803603810190610be1919061457b565b611920565b005b348015610bf3575f80fd5b50610bfc611936565b604051610c099190614810565b60405180910390f35b348015610c1d575f80fd5b50610c386004803603810190610c33919061457b565b611967565b604051610c4591906145d3565b60405180910390f35b348015610c59575f80fd5b50610c6261197e565b604051610c6f91906145d3565b60405180910390f35b348015610c83575f80fd5b50610c9e6004803603810190610c999190614829565b611991565b005b348015610cab575f80fd5b50610cb46119f2565b005b610cbe611a1a565b005b348015610ccb575f80fd5b50610ce66004803603810190610ce191906148bc565b611a53565b005b348015610cf3575f80fd5b50610d0e6004803603810190610d099190614907565b611abb565b005b348015610d1b575f80fd5b50610d24611b37565b604051610d3191906145d3565b60405180910390f35b348015610d45575f80fd5b50610d4e611b49565b005b348015610d5b575f80fd5b50610d766004803603810190610d71919061468f565b611b72565b604051610d8391906145fb565b60405180910390f35b610d94611be9565b005b348015610da1575f80fd5b50610daa611bfc565b604051610db791906145fb565b60405180910390f35b348015610dcb575f80fd5b50610dd4611c01565b604051610de19190614810565b60405180910390f35b348015610df5575f80fd5b50610e106004803603810190610e0b91906149af565b611c29565b005b348015610e1d575f80fd5b50610e26611c58565b604051610e3391906144c6565b60405180910390f35b348015610e47575f80fd5b50610e50611ce8565b604051610e5d9190614a35565b60405180910390f35b348015610e71575f80fd5b50610e8c6004803603810190610e87919061457b565b611d00565b604051610e9991906145d3565b60405180910390f35b348015610ead575f80fd5b50610eb6611d16565b005b348015610ec3575f80fd5b50610ede6004803603810190610ed9919061468f565b611db4565b005b348015610eeb575f80fd5b50610f066004803603810190610f019190614614565b611df9565b604051610f1391906144c6565b60405180910390f35b348015610f27575f80fd5b50610f30611fcc565b604051610f3d91906145d3565b60405180910390f35b348015610f51575f80fd5b50610f6c6004803603810190610f679190614a4e565b611fdf565b604051610f7991906145fb565b60405180910390f35b348015610f8d575f80fd5b50610fa86004803603810190610fa391906146e4565b6120e5565b005b610fc46004803603810190610fbf919061468f565b61210e565b005b610fe06004803603810190610fdb919061468f565b61214c565b005b348015610fed575f80fd5b506110086004803603810190611003919061468f565b612175565b60405161101591906145fb565b60405180910390f35b348015611029575f80fd5b5061103261218e565b005b5f68a20d6e21d0e5255308905090565b5f81359050919050565b61105a848484846121c6565b6110648484612758565b50505050565b805f5260205ff35b61107b82612853565b611090611086611034565b600301838661109b565b5f0181905550505050565b5f8160285282601452835f5260485f2090505f6028529392505050565b5f6110c28261285e565b6110f8576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110182611108565b9050919050565b5f80611112611034565b9050806002015f61113683600a0161113161112c8861289e565b6128b0565b6128bf565b63ffffffff1663ffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b5f80611181611034565b9050806002015f6111a583600a016111a061119b8961289e565b6128b0565b6128bf565b63ffffffff1663ffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461125d575f61122282600301848661109b565b5f01540361125c576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b84816004015f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112eb81600501855f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614156128e2565b509392505050565b5f6112fd8261285e565b611333576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133b611034565b6004015f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61137d611034565b600b015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160109054906101000a900463ffffffff1663ffffffff169050919050565b5f6113e4611034565b5f0160109054906101000a900463ffffffff1663ffffffff16905090565b60038054906101000a900463ffffffff1681565b60605f805461142490614ab9565b80601f016020809104026020016040519081016040528092919081815260200182805461145090614ab9565b801561149b5780601f106114725761010080835404028352916020019161149b565b820191905f5260205f20905b81548152906001019060200180831161147e57829003601f168201915b5050505050905090565b5f6114b1338484612906565b6001905092915050565b60016114c681612a25565b73430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663662aa11d30336040518363ffffffff1660e01b8152600401611515929190614ae9565b6020604051808303815f875af1158015611531573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115559190614b24565b5050565b600360029054906101000a900460ff1681565b5f611575611034565b5f0160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905090565b6115ad3382612a5a565b50565b6115b8612a69565b6115c28282612aa0565b5050565b5f81826115d28561185f565b1614905092915050565b5f806115f36115e9611034565b600701863361109b565b90505f6115fe612ab0565b801561164457506e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80156116aa57505f6004611656611034565b600b015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01600b9054906101000a900460ff161660ff16145b6116b757815f01546116d9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611747578084111561173c576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838103825f01819055505b611752868686612ab4565b6001925050509392505050565b5f611768612ace565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f806117ba611034565b600b015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6001825f01600b9054906101000a900460ff161660ff16036118285761182083612ad8565b915050611846565b5f6002825f01600b9054906101000a900460ff161660ff1614159150505b919050565b5f6118563383612ae2565b60019050919050565b5f638b78c6d8600c52815f526020600c20549050919050565b5f6012905090565b600161188b81612a25565b5f5b848490508110156118dc576118c98585838181106118ae576118ad614b4f565b5b90506020020160208101906118c3919061468f565b84612ae2565b80806118d490614ba9565b91505061188d565b5050505050565b5f6119026118f083612b78565b6affffffffffffffffffffff16612bdf565b9050919050565b600161191481612a25565b61191d33612c09565b50565b611928612a69565b6119328282612a5a565b5050565b5f61193f611034565b6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f80826119738561185f565b161415905092915050565b600360019054906101000a900460ff1681565b600161199c81612a25565b600360079054906101000a900460ff16156119e3576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119ed8383612c25565b505050565b60016119fd81612a25565b600160035f6101000a81548160ff02191690831515021790555050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6001611a5e81612a25565b60035f9054906101000a900460ff1615611aa4576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260029182611ab5929190614dbb565b50505050565b6001611ac681612a25565b600360029054906101000a900460ff1615611b0d576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84845f9182611b1d929190614dbb565b50828260019182611b2f929190614dbb565b505050505050565b60035f9054906101000a900460ff1681565b6001611b5481612a25565b6001600360026101000a81548160ff02191690831515021790555050565b5f611b7b611034565b600b015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b611bf1612a69565b611bfa5f612c5a565b565b600181565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6001611c3481612a25565b816003806101000a81548163ffffffff021916908363ffffffff1602179055505050565b606060018054611c6790614ab9565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9390614ab9565b8015611cde5780601f10611cb557610100808354040283529160200191611cde565b820191905f5260205f20905b815481529060010190602001808311611cc157829003601f168201915b5050505050905090565b73430000000000000000000000000000000000000281565b5f611d0c338484612ab4565b6001905092915050565b6001611d2181612a25565b73430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663954fa5ee30336040518363ffffffff1660e01b8152600401611d70929190614ae9565b6020604051808303815f875af1158015611d8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db09190614b24565b5050565b6001611dbf81612a25565b5f670de0b6b3a76400006202f9b8611dd79190614e88565b90505f339050611de8828286612d20565b611df3816001612c25565b50505050565b6060611e048261285e565b611e3a576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60028054611e4890614ab9565b905014611fc757600360019054906101000a900460ff16611ef35760028054611e7090614ab9565b80601f0160208091040260200160405190810160405280929190818152602001828054611e9c90614ab9565b8015611ee75780601f10611ebe57610100808354040283529160200191611ee7565b820191905f5260205f20905b815481529060010190602001808311611eca57829003601f168201915b50505050509050611fc6565b611fc360028054611f0390614ab9565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2f90614ab9565b8015611f7a5780601f10611f5157610100808354040283529160200191611f7a565b820191905f5260205f20905b815481529060010190602001808311611f5d57829003601f168201915b50505050506040518060400160405280600481526020017f7b69647d00000000000000000000000000000000000000000000000000000000815250611fbe85613049565b613098565b90505b5b919050565b600360079054906101000a900460ff1681565b5f611fe8612ab0565b801561202e57506e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156120c4575f61203c611034565b600b015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01600b9054906101000a900460ff1690505f6004821660ff16036120c2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150506120df565b505b6120d96120cf611034565b600701848461109b565b5f015490505b92915050565b60016120f081612a25565b81600360016101000a81548160ff0219169083151502179055505050565b612116612a69565b63389a75e1600c52805f526020600c20805442111561213c57636f5e88185f526004601cfd5b5f81555061214981612c5a565b50565b612154612a69565b8060601b61216957637448fbae5f526004601cfd5b61217281612c5a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b600161219981612a25565b600360079054906101000a900460ff1615600360076101000a81548160ff02191690831515021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361222b576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612234611034565b90505f73ffffffffffffffffffffffffffffffffffffffff16816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612290575f80fd5b5f81600a019050816002015f6122b6836122b16122ac8961289e565b6128b0565b6128bf565b63ffffffff1663ffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612353576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612436575f61239583600301888661109b565b5f01540361243557816004015f8581526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612434576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5f612440876131eb565b90505f61244c876131eb565b90505f612457613294565b90505f8560080190505f815f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f855f0160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905080841115612506576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838103865f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555083855f0160148282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050612597876005018a6132a3565b156125e0576125aa876005018a5f6128e2565b866004015f8a81526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b5f61262782875f01601081819054906101000a900463ffffffff166001900391906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff166128bf565b90505f61263c886126378d6132c0565b6128bf565b905061264f838263ffffffff16846132d2565b612668886126628463ffffffff166132c0565b836132d2565b50505f845f01601081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff16021790555090506126f4835f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208263ffffffff168c6132d2565b612709878b612703888f6132fd565b846133fb565b506127158b8b8b61343d565b825f528960601b60601c8b60601b60601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60205fa35050505050505050505050565b5f60038054906101000a900463ffffffff1663ffffffff1690505f810361277f575061284f565b80670de0b6b3a76400000261279383611b72565b1161279e575061284f565b6127bc6127aa83612b78565b6affffffffffffffffffffff16612bdf565b156127c7575061284f565b6127cf611c01565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612807575061284f565b612812836001611967565b1561281d575061284f565b6040517f0f2acbfc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f8115159050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff1661287f83611108565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b5f640100000000821082029050919050565b5f6001808303901b9050919050565b5f8160031c8360601b0180546007841660051b1c63ffffffff1691505092915050565b8160081c8360601b018260ff16821515811b6001821b198354161782555050505050565b61290e612ab0565b801561295457506e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156129ce576004612963611034565b600b015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01600b8282829054906101000a900460ff161792506101000a81548160ff021916908360ff1602179055505b806129e46129da611034565b600701858561109b565b5f0181905550805f528160601b60601c8360601b60601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa3505050565b638b78c6d819543314612a5757638b78c6d8600c52335f52806020600c205416612a56576382b429005f526004601cfd5b5b50565b612a6582825f613442565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612a9e576382b429005f526004601cfd5b565b612aac82826001613442565b5050565b5f90565b612abf83838361349a565b612ac98383612758565b505050565b5f6202a300905090565b5f813b9050919050565b5f612aec836131eb565b90508115155f6002835f01600b9054906101000a900460ff161660ff161415151514612b42576002815f01600b8282829054906101000a900460ff161892506101000a81548160ff021916908360ff1602179055505b8115155f528260601b60601c7fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2505050565b5f612b81611034565b600b015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a90046affffffffffffffffffffff169050919050565b5f806057836affffffffffffffffffffff16901c6affffffffffffffffffffff1614159050919050565b5f385f3847855af1612c225763b12d13eb5f526004601cfd5b50565b612c5682612c5183612c3686612b78565b6affffffffffffffffffffff16613fe590919063ffffffff16565b61400d565b5050565b612c62614085565b15612cc7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550612d1d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f612d29611034565b90505f612d34613294565b03612d6b576040517f0af2b2b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612df3576040517fead4d2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e58576040517f39a84a7b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b630f4599e55f523360205260205f6024601c5f865af160015f511416612e855763d125259c5f526004601cfd5b6001815f0160046101000a81548163ffffffff021916908363ffffffff16021790555081816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8414613043575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f56576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f5f84614089565b15612f96576040517fe5cfe95700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505f612fd2846131eb565b905084815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550845f528360601b60601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60205fa3613041846001612ae2565b505b50505050565b60606080604051019050602081016040525f8152805f19835b600115613083578184019350600a81066030018453600a8104905080613062575b50828203602084039350808452505050919050565b60608351835183516020870196506020860195506020850194506020604051019350828701838311613196576001838203015f602085106130d95784892090505b601f851660200360031b89515b600115613191578b51818118831c61316e57831561312a5783888e201461312957808a5260018a01995060018d019c50848d106131235750613191565b5061318c565b5b5f5b60011561314957808c0151818c015260208101905087811061312c575b50868a019950878d019c50871561316d57848d106131675750613191565b5061318c565b5b808a5260018a01995060018d019c50848d1061318a5750613191565b505b6130e6565b505050505b846020604051019550888203868203015b828a10156131c4578951825260208201915060208a0199506131a7565b6020870396508060208801015f815260208101604052818852505050505050509392505050565b5f6131f4611034565b600b015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6001825f01600b9054906101000a900460ff161660ff160361328f575f600260ff1661326861326385612ad8565b612853565b029050600160ff168117825f01600b6101000a81548160ff021916908360ff160217905550505b919050565b5f670de0b6b3a7640000905090565b5f8160081c8360601b0180548360ff161c60011691505092915050565b5f60018060018403901b019050919050565b8160031c8360601b016007831660051b815480821c841863ffffffff16821b81188355505050505050565b5f80613307611034565b9050835f01600c9054906101000a900463ffffffff1691505f8263ffffffff16036133f457805f015f81819054906101000a900463ffffffff1660010191906101000a81548163ffffffff021916908363ffffffff1602179055915081845f01600c6101000a81548163ffffffff021916908363ffffffff16021790555082816002015f8463ffffffff1663ffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8263ffffffff16036133f3575f80fd5b5b5092915050565b600183038060021c8560601b0180546003831660061b8563ffffffff168560201b178083831c1867ffffffffffffffff16821b83188455505050505050505050565b505050565b638b78c6d8600c52825f526020600c2080548381178361346457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036134ff576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f613509846131eb565b90505f613515846131eb565b90505f613520611034565b90505f73ffffffffffffffffffffffffffffffffffffffff16816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361357c575f80fd5b61358461432e565b835f0160109054906101000a900463ffffffff1663ffffffff16816080018181525050825f0160109054906101000a900463ffffffff1663ffffffff168160a0018181525050815f0160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168160c0018181525050835f0160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168160400181815250851115613668576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848160400181815103915081815250845f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555084835f0160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16018160600181815250835f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550613736816080015161371d613294565b8360400151816137305761372f614ec9565b5b046140ad565b815f0181815250505f6002845f01600b9054906101000a900460ff161660ff16036137d5578573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036137a257805f01518160800151038160a00181815250505b6137cb6137ad613294565b8260600151816137c0576137bf614ec9565b5b048260a001516140ad565b8160200181815250505b6137dd6140bd565b15613a78575f61380182608001516137fc845f015185602001516140c5565b6140c5565b90505f81036138105750613a78565b80825f018181510391508181525050808260200181815103915081815250508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff160361387857808260a001818151019150818152505050613a78565b5f613884828a8a6140d7565b90505f846008015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f856008015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050613914878b6132fd565b85610140019063ffffffff16908163ffffffff16815250505f8560a0015190505b5f61394e848860800180516001900390818152506128bf565b63ffffffff1690506139618383836132d2565b61397b88600a0182896101400151858060010196506133fb565b6139858582614110565b61399288600501826132a3565b156139db576139a588600501825f6128e2565b876004015f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6139e68d8d8361343d565b505f85600190039550850361393557808660a00181815250885f0160106101000a81548163ffffffff021916908363ffffffff1602179055508560800151895f0160106101000a81548163ffffffff021916908363ffffffff160217905550613a7284886001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16614120565b50505050505b805f01518160200151835f0160109054906101000a900463ffffffff1663ffffffff1601038160e00181815250508060e00151825f0160106101000a81548163ffffffff021916908363ffffffff1602179055505f82600a0190505f613ae68360200151845f015101614177565b9050835f01600c9054906101000a900463ffffffff1683610180019063ffffffff16908163ffffffff16815250505f835f015114613ce357613b2a818a60016141a2565b5f613b3d8460e001518560c001516141b2565b90505f856008015f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f85608001519050855f01518103866101000181815250895f0160106101000a81548163ffffffff021916908363ffffffff1602179055505f86610180015190505b5f613bd58484600190039450846128bf565b63ffffffff169050613be987825f806133fb565b613bf386826141bf565b613bfb6141d8565b15613c0f57613c0e89600601825f6128e2565b5b8415613c3057613c2f896009018380600101945063ffffffff16836132d2565b5b613c3d89600501826132a3565b15613c8657613c5089600501825f6128e2565b886004015f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b613c918e5f8361343d565b508661010001518203613bc3578315613cde578087610180019063ffffffff16908163ffffffff16815250885f01600c6101000a81548163ffffffff021916908363ffffffff1602179055505b505050505b5f836020015114613f6a57613cf981895f6141a2565b5f846008015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050613d45868a6132fd565b84610140019063ffffffff16908163ffffffff16815250505f613d66613294565b8560c0015181613d7957613d78614ec9565b5b049050613d9f865f0160049054906101000a900463ffffffff1663ffffffff16826141e0565b856101600181815250505f8560a00151905085602001518101866101200181815250885f0160106101000a81548163ffffffff021916908363ffffffff1602179055505f875f0160089054906101000a900463ffffffff1690505b5f87610180015163ffffffff168263ffffffff1614613e3957613e2c896009018380600101945063ffffffff166128bf565b63ffffffff169050613ebb565b87610160015190505b5f613e5588613e50846128b0565b6128bf565b63ffffffff1614613ea357613e686141d8565b613e7e57613e7960018201856141e0565b613e9c565b613e9b613e958a60060160018401600188016141f3565b856141e0565b5b9050613e42565b613eb060018201856141e0565b886101600181815250505b613ec36141d8565b15613ed857613ed7896006018260016128e2565b5b613ee38584836132d2565b613efa87828a6101400151868060010197506133fb565b613f0486826141bf565b613f0f5f8e8361343d565b508661012001518203613dfa5780885f0160086101000a81548163ffffffff021916908363ffffffff160217905550866101600151885f0160046101000a81548163ffffffff021916908363ffffffff160217905550505050505b5f81604001515114613fa457613fa381856001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166142ef565b5b5050845f528560601b60601c8760601b60601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60205fa350505050505050565b5f811515613ff284612bdf565b1515146140045760576001901b831892505b82905092915050565b80614016611034565b600b015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a8154816affffffffffffffffffffff02191690836affffffffffffffffffffff1602179055505050565b5f90565b5f80614093613294565b905080830463fffffffe108360601c171515915050919050565b5f81830382841102905092915050565b5f6001905090565b5f828210828418028318905092915050565b6140df614395565b604051848152806020018560051b810160405281836060015283836040015284836020015280835250509392505050565b8151818152602081018352505050565b6060820151805160051b6084016080820363144027d381528460200151856040015181602084015280604084015260608084015260208385601c86015f8a5af160018451141661416e575f83fd5b50505050505050565b61417f6143e6565b604051828152806020018360051b81016040528183604001528083525050919050565b808260601b176020840152505050565b5f8291505f905092915050565b81518160081b6020840151178152602081018352505050565b5f6001905090565b5f81831183838511150217905092915050565b5f801990508360601b8360081c81018054198560ff161c8560ff161b80614252578460081c83015b60011561423857600183019250825419915080831182171561421b575b808311156142505781861960ff161b861960ff161c91505b505b80156142e55760018119018116806fffffffffffffffffffffffffffffffff1060071b81811c67ffffffffffffffff1060061b8117905081811c63ffffffff1060051b811790507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f83831c63d76453e004161a811790508085850360081b17905087811087821015175f038117955050505b5050509392505050565b60408201516040810363263c69d68152602080820152815160051b60440160208282601c85015f885af1600183511416614327575f82fd5b5050505050565b604051806101a001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f63ffffffff1681526020015f81526020015f63ffffffff1681525090565b60405180608001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b60405180606001604052805f81526020015f8152602001606081525090565b5f63ffffffff82169050919050565b61441d81614405565b82525050565b5f6020820190506144365f830184614414565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015614473578082015181840152602081019050614458565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6144988261443c565b6144a28185614446565b93506144b2818560208601614456565b6144bb8161447e565b840191505092915050565b5f6020820190508181035f8301526144de818461448e565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614517826144ee565b9050919050565b6145278161450d565b8114614531575f80fd5b50565b5f813590506145428161451e565b92915050565b5f819050919050565b61455a81614548565b8114614564575f80fd5b50565b5f8135905061457581614551565b92915050565b5f8060408385031215614591576145906144e6565b5b5f61459e85828601614534565b92505060206145af85828601614567565b9150509250929050565b5f8115159050919050565b6145cd816145b9565b82525050565b5f6020820190506145e65f8301846145c4565b92915050565b6145f581614548565b82525050565b5f60208201905061460e5f8301846145ec565b92915050565b5f60208284031215614629576146286144e6565b5b5f61463684828501614567565b91505092915050565b5f805f60608486031215614656576146556144e6565b5b5f61466386828701614534565b935050602061467486828701614534565b925050604061468586828701614567565b9150509250925092565b5f602082840312156146a4576146a36144e6565b5b5f6146b184828501614534565b91505092915050565b6146c3816145b9565b81146146cd575f80fd5b50565b5f813590506146de816146ba565b92915050565b5f602082840312156146f9576146f86144e6565b5b5f614706848285016146d0565b91505092915050565b5f60ff82169050919050565b6147248161470f565b82525050565b5f60208201905061473d5f83018461471b565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261476457614763614743565b5b8235905067ffffffffffffffff81111561478157614780614747565b5b60208301915083602082028301111561479d5761479c61474b565b5b9250929050565b5f805f604084860312156147bb576147ba6144e6565b5b5f84013567ffffffffffffffff8111156147d8576147d76144ea565b5b6147e48682870161474f565b935093505060206147f7868287016146d0565b9150509250925092565b61480a8161450d565b82525050565b5f6020820190506148235f830184614801565b92915050565b5f806040838503121561483f5761483e6144e6565b5b5f61484c85828601614534565b925050602061485d858286016146d0565b9150509250929050565b5f8083601f84011261487c5761487b614743565b5b8235905067ffffffffffffffff81111561489957614898614747565b5b6020830191508360018202830111156148b5576148b461474b565b5b9250929050565b5f80602083850312156148d2576148d16144e6565b5b5f83013567ffffffffffffffff8111156148ef576148ee6144ea565b5b6148fb85828601614867565b92509250509250929050565b5f805f806040858703121561491f5761491e6144e6565b5b5f85013567ffffffffffffffff81111561493c5761493b6144ea565b5b61494887828801614867565b9450945050602085013567ffffffffffffffff81111561496b5761496a6144ea565b5b61497787828801614867565b925092505092959194509250565b61498e81614405565b8114614998575f80fd5b50565b5f813590506149a981614985565b92915050565b5f602082840312156149c4576149c36144e6565b5b5f6149d18482850161499b565b91505092915050565b5f819050919050565b5f6149fd6149f86149f3846144ee565b6149da565b6144ee565b9050919050565b5f614a0e826149e3565b9050919050565b5f614a1f82614a04565b9050919050565b614a2f81614a15565b82525050565b5f602082019050614a485f830184614a26565b92915050565b5f8060408385031215614a6457614a636144e6565b5b5f614a7185828601614534565b9250506020614a8285828601614534565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614ad057607f821691505b602082108103614ae357614ae2614a8c565b5b50919050565b5f604082019050614afc5f830185614801565b614b096020830184614801565b9392505050565b5f81519050614b1e81614551565b92915050565b5f60208284031215614b3957614b386144e6565b5b5f614b4684828501614b10565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614bb382614548565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614be557614be4614b7c565b5b600182019050919050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614c48565b614c8d8683614c48565b95508019841693508086168417925050509392505050565b5f614cbf614cba614cb584614548565b6149da565b614548565b9050919050565b5f819050919050565b614cd883614ca5565b614cec614ce482614cc6565b848454614c54565b825550505050565b5f90565b614d00614cf4565b614d0b818484614ccf565b505050565b5b81811015614d2e57614d235f82614cf8565b600181019050614d11565b5050565b601f821115614d7357614d4481614c27565b614d4d84614c39565b81016020851015614d5c578190505b614d70614d6885614c39565b830182614d10565b50505b505050565b5f82821c905092915050565b5f614d935f1984600802614d78565b1980831691505092915050565b5f614dab8383614d84565b9150826002028217905092915050565b614dc58383614bf0565b67ffffffffffffffff811115614dde57614ddd614bfa565b5b614de88254614ab9565b614df3828285614d32565b5f601f831160018114614e20575f8415614e0e578287013590505b614e188582614da0565b865550614e7f565b601f198416614e2e86614c27565b5f5b82811015614e5557848901358255600182019150602085019450602081019050614e30565b86831015614e725784890135614e6e601f891682614d84565b8355505b6001600288020188555050505b50505050505050565b5f614e9282614548565b9150614e9d83614548565b9250828202614eab81614548565b91508282048414831517614ec257614ec1614b7c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffdfea2646970667358221220d80c81c4770fa1f9554254f27e424a2c205fc25b686549f7ab812c69a2ea3c1964736f6c63430008140033