github-actions 3 éve
szülő
commit
1d395f1182

+ 3 - 2
.github/workflows/docs.yml

@@ -1,10 +1,11 @@
 name: Build Docs
 
 on:
-  push: release-v*
+  push:
+    branches: [release-v*]
 
 jobs:
-  trigger:
+  build:
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v2

+ 190 - 190
docs/modules/api/pages/GSN.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = Gas Station Network (GSN)
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/access.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = Access
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/cryptography.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = Cryptography
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/drafts.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = Draft EIPs
 
 This directory contains implementations of EIPs that are still in Draft status.

+ 190 - 190
docs/modules/api/pages/introspection.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = Introspection
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/math.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = Math
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/payment.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = Payment
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/presets.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = Presets
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/proxy.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = Proxies
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/token/ERC1155.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = ERC 1155
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/token/ERC20.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = ERC 20
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/token/ERC721.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = ERC 721
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/token/ERC777.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = ERC 777
 
 [.readme-notice]

+ 190 - 190
docs/modules/api/pages/utils.adoc

@@ -1,69 +1,3 @@
-:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
-:xref-ECDSA: xref:cryptography.adoc#ECDSA
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
-:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
-:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
-:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
-:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
-:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
-:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
-:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
-:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
-:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
-:xref-ERC165: xref:introspection.adoc#ERC165
-:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
-:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
-:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
-:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
-:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
-:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
-:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
-:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
-:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
-:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
-:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
-:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
-:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
-:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
-:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
-:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
-:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
-:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
-:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
-:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
-:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
-:xref-IERC165: xref:introspection.adoc#IERC165
-:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
-:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
-:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
-:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
-:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
-:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
-:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
-:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
-:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
-:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
-:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
-:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
-:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
-:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
-:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
-:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
-:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
-:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
-:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
-:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
-:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
-:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
-:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
-:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
-:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
-:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
-:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
-:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :GSNRecipient: pass:normal[xref:GSN.adoc#GSNRecipient[`GSNRecipient`]]
 :xref-GSNRecipient: xref:GSN.adoc#GSNRecipient
 :GSNRecipient-_POST_RELAYED_CALL_MAX_GAS: pass:normal[xref:GSN.adoc#GSNRecipient-_POST_RELAYED_CALL_MAX_GAS-uint256[`GSNRecipient._POST_RELAYED_CALL_MAX_GAS`]]
@@ -288,6 +222,98 @@
 :xref-TimelockController-Cancelled-bytes32-: xref:access.adoc#TimelockController-Cancelled-bytes32-
 :TimelockController-MinDelayChange: pass:normal[xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]]
 :xref-TimelockController-MinDelayChange-uint256-uint256-: xref:access.adoc#TimelockController-MinDelayChange-uint256-uint256-
+:ECDSA: pass:normal[xref:cryptography.adoc#ECDSA[`ECDSA`]]
+:xref-ECDSA: xref:cryptography.adoc#ECDSA
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-bytes-: xref:cryptography.adoc#ECDSA-recover-bytes32-bytes-
+:ECDSA-recover: pass:normal[xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]]
+:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:cryptography.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-
+:ECDSA-toEthSignedMessageHash: pass:normal[xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]]
+:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:cryptography.adoc#ECDSA-toEthSignedMessageHash-bytes32-
+:MerkleProof: pass:normal[xref:cryptography.adoc#MerkleProof[`MerkleProof`]]
+:xref-MerkleProof: xref:cryptography.adoc#MerkleProof
+:MerkleProof-verify: pass:normal[xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]]
+:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:cryptography.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-
+:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
+:xref-EIP712: xref:drafts.adoc#EIP712
+:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
+:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
+:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
+:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
+:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
+:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
+:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
+:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
+:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
+:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
+:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
+:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
+:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
+:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
+:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
+:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
+:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
+:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
+:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
+:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
+:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
+:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
+:ERC165: pass:normal[xref:introspection.adoc#ERC165[`ERC165`]]
+:xref-ERC165: xref:introspection.adoc#ERC165
+:ERC165-constructor: pass:normal[xref:introspection.adoc#ERC165-constructor--[`ERC165.constructor`]]
+:xref-ERC165-constructor--: xref:introspection.adoc#ERC165-constructor--
+:ERC165-supportsInterface: pass:normal[xref:introspection.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]]
+:xref-ERC165-supportsInterface-bytes4-: xref:introspection.adoc#ERC165-supportsInterface-bytes4-
+:ERC165-_registerInterface: pass:normal[xref:introspection.adoc#ERC165-_registerInterface-bytes4-[`ERC165._registerInterface`]]
+:xref-ERC165-_registerInterface-bytes4-: xref:introspection.adoc#ERC165-_registerInterface-bytes4-
+:ERC165Checker: pass:normal[xref:introspection.adoc#ERC165Checker[`ERC165Checker`]]
+:xref-ERC165Checker: xref:introspection.adoc#ERC165Checker
+:ERC165Checker-supportsERC165: pass:normal[xref:introspection.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]]
+:xref-ERC165Checker-supportsERC165-address-: xref:introspection.adoc#ERC165Checker-supportsERC165-address-
+:ERC165Checker-supportsInterface: pass:normal[xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]]
+:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:introspection.adoc#ERC165Checker-supportsInterface-address-bytes4-
+:ERC165Checker-getSupportedInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]]
+:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---
+:ERC165Checker-supportsAllInterfaces: pass:normal[xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]]
+:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:introspection.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---
+:ERC1820Implementer: pass:normal[xref:introspection.adoc#ERC1820Implementer[`ERC1820Implementer`]]
+:xref-ERC1820Implementer: xref:introspection.adoc#ERC1820Implementer
+:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]]
+:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:introspection.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-
+:IERC165: pass:normal[xref:introspection.adoc#IERC165[`IERC165`]]
+:xref-IERC165: xref:introspection.adoc#IERC165
+:IERC165-supportsInterface: pass:normal[xref:introspection.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]]
+:xref-IERC165-supportsInterface-bytes4-: xref:introspection.adoc#IERC165-supportsInterface-bytes4-
+:IERC1820Implementer: pass:normal[xref:introspection.adoc#IERC1820Implementer[`IERC1820Implementer`]]
+:xref-IERC1820Implementer: xref:introspection.adoc#IERC1820Implementer
+:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]]
+:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:introspection.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-
+:IERC1820Registry: pass:normal[xref:introspection.adoc#IERC1820Registry[`IERC1820Registry`]]
+:xref-IERC1820Registry: xref:introspection.adoc#IERC1820Registry
+:IERC1820Registry-setManager: pass:normal[xref:introspection.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]]
+:xref-IERC1820Registry-setManager-address-address-: xref:introspection.adoc#IERC1820Registry-setManager-address-address-
+:IERC1820Registry-getManager: pass:normal[xref:introspection.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]]
+:xref-IERC1820Registry-getManager-address-: xref:introspection.adoc#IERC1820Registry-getManager-address-
+:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]]
+:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-
+:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]]
+:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:introspection.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-
+:IERC1820Registry-interfaceHash: pass:normal[xref:introspection.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]]
+:xref-IERC1820Registry-interfaceHash-string-: xref:introspection.adoc#IERC1820Registry-interfaceHash-string-
+:IERC1820Registry-updateERC165Cache: pass:normal[xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]]
+:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-
+:IERC1820Registry-implementsERC165Interface: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]]
+:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-
+:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]]
+:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:introspection.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-
+:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]]
+:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:introspection.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-
+:IERC1820Registry-ManagerChanged: pass:normal[xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]]
+:xref-IERC1820Registry-ManagerChanged-address-address-: xref:introspection.adoc#IERC1820Registry-ManagerChanged-address-address-
 :Math: pass:normal[xref:math.adoc#Math[`Math`]]
 :xref-Math: xref:math.adoc#Math
 :Math-max: pass:normal[xref:math.adoc#Math-max-uint256-uint256-[`Math.max`]]
@@ -334,32 +360,6 @@
 :xref-SignedSafeMath-sub-int256-int256-: xref:math.adoc#SignedSafeMath-sub-int256-int256-
 :SignedSafeMath-add: pass:normal[xref:math.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]]
 :xref-SignedSafeMath-add-int256-int256-: xref:math.adoc#SignedSafeMath-add-int256-int256-
-:EIP712: pass:normal[xref:drafts.adoc#EIP712[`EIP712`]]
-:xref-EIP712: xref:drafts.adoc#EIP712
-:EIP712-constructor: pass:normal[xref:drafts.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]]
-:xref-EIP712-constructor-string-string-: xref:drafts.adoc#EIP712-constructor-string-string-
-:EIP712-_domainSeparatorV4: pass:normal[xref:drafts.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]]
-:xref-EIP712-_domainSeparatorV4--: xref:drafts.adoc#EIP712-_domainSeparatorV4--
-:EIP712-_hashTypedDataV4: pass:normal[xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]]
-:xref-EIP712-_hashTypedDataV4-bytes32-: xref:drafts.adoc#EIP712-_hashTypedDataV4-bytes32-
-:ERC20Permit: pass:normal[xref:drafts.adoc#ERC20Permit[`ERC20Permit`]]
-:xref-ERC20Permit: xref:drafts.adoc#ERC20Permit
-:ERC20Permit-constructor: pass:normal[xref:drafts.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]]
-:xref-ERC20Permit-constructor-string-: xref:drafts.adoc#ERC20Permit-constructor-string-
-:ERC20Permit-permit: pass:normal[xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]]
-:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:ERC20Permit-nonces: pass:normal[xref:drafts.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]]
-:xref-ERC20Permit-nonces-address-: xref:drafts.adoc#ERC20Permit-nonces-address-
-:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#ERC20Permit-DOMAIN_SEPARATOR--
-:IERC20Permit: pass:normal[xref:drafts.adoc#IERC20Permit[`IERC20Permit`]]
-:xref-IERC20Permit: xref:drafts.adoc#IERC20Permit
-:IERC20Permit-permit: pass:normal[xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]]
-:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:drafts.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-
-:IERC20Permit-nonces: pass:normal[xref:drafts.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]]
-:xref-IERC20Permit-nonces-address-: xref:drafts.adoc#IERC20Permit-nonces-address-
-:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]]
-:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:drafts.adoc#IERC20Permit-DOMAIN_SEPARATOR--
 :PaymentSplitter: pass:normal[xref:payment.adoc#PaymentSplitter[`PaymentSplitter`]]
 :xref-PaymentSplitter: xref:payment.adoc#PaymentSplitter
 :PaymentSplitter-constructor: pass:normal[xref:payment.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]]
@@ -932,104 +932,6 @@
 :xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime--
 :TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]]
 :xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release--
-:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
-:xref-ERC777: xref:token/ERC777.adoc#ERC777
-:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
-:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
-:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
-:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
-:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
-:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
-:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
-:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
-:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
-:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
-:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
-:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
-:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
-:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
-:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
-:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
-:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
-:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
-:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
-:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
-:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
-:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
-:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
-:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
-:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
-:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
-:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
-:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
-:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
-:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
-:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
-:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
-:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
-:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
-:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
-:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
-:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
-:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
-:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
-:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
-:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
-:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
-:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
-:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
-:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
-:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
-:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
-:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
-:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
-:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
-:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
-:xref-IERC777: xref:token/ERC777.adoc#IERC777
-:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
-:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
-:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
-:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
-:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
-:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
-:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
-:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
-:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
-:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
-:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
-:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
-:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
-:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
-:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
-:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
-:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
-:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
-:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
-:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
-:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
-:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
-:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
-:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
-:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
-:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
-:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
-:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
-:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
-:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
-:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
-:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
-:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
-:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
-:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
-:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
-:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
-:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
-:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
-:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
-:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
-:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
-:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
-:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 :ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]]
 :xref-ERC721: xref:token/ERC721.adoc#ERC721
 :ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]]
@@ -1148,6 +1050,104 @@
 :xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver
 :IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]]
 :xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-
+:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]]
+:xref-ERC777: xref:token/ERC777.adoc#ERC777
+:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]]
+:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry
+:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]]
+:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address---
+:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]]
+:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name--
+:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]]
+:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol--
+:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]]
+:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals--
+:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]]
+:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity--
+:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]]
+:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply--
+:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]]
+:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address-
+:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]]
+:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-
+:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]]
+:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256-
+:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]]
+:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-
+:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]]
+:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-
+:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]]
+:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address-
+:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]]
+:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address-
+:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]]
+:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators--
+:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]]
+:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-
+:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]]
+:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-
+:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]]
+:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address-
+:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]]
+:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256-
+:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]]
+:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-
+:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]]
+:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-
+:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]]
+:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-
+:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]]
+:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-
+:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]]
+:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-
+:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]]
+:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-
+:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]]
+:xref-IERC777: xref:token/ERC777.adoc#IERC777
+:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]]
+:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name--
+:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]]
+:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol--
+:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]]
+:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity--
+:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]]
+:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply--
+:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]]
+:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address-
+:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]]
+:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-
+:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]]
+:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-
+:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]]
+:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-
+:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]]
+:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address-
+:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]]
+:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address-
+:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]]
+:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators--
+:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]]
+:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-
+:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]]
+:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-
+:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]]
+:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-
+:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]]
+:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-
+:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]]
+:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-
+:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]]
+:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-
+:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]]
+:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-
+:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]]
+:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient
+:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]]
+:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-
+:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]]
+:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender
+:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]]
+:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-
 = Utilities
 
 [.readme-notice]