mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-13 02:46:24 +00:00
Merge branch 'master' into nreq
This commit is contained in:
commit
faefbcd68e
2
01.md
2
01.md
@ -4,7 +4,7 @@ NIP-01
|
||||
Basic protocol flow description
|
||||
-------------------------------
|
||||
|
||||
`draft` `mandatory` `author:fiatjaf` `author:distbit` `author:scsibug` `author:kukks` `author:jb55` `author:semisol` `author:cameri` `author:Giszmo`
|
||||
`draft` `mandatory`
|
||||
|
||||
This NIP defines the basic protocol that should be implemented by everybody. New NIPs may add new optional (or mandatory) fields and messages and features to the structures and flows described here.
|
||||
|
||||
|
2
02.md
2
02.md
@ -4,7 +4,7 @@ NIP-02
|
||||
Contact List and Petnames
|
||||
-------------------------
|
||||
|
||||
`final` `optional` `author:fiatjaf` `author:arcbtc`
|
||||
`final` `optional`
|
||||
|
||||
A special event with kind `3`, meaning "contact list" is defined as having a list of `p` tags, one for each of the followed/known profiles one is following.
|
||||
|
||||
|
2
03.md
2
03.md
@ -4,7 +4,7 @@ NIP-03
|
||||
OpenTimestamps Attestations for Events
|
||||
--------------------------------------
|
||||
|
||||
`draft` `optional` `author:fiatjaf` `author:constant`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines an event with `kind:1040` that can contain an [OpenTimestamps](https://opentimestamps.org/) proof for any other event:
|
||||
|
||||
|
2
04.md
2
04.md
@ -4,7 +4,7 @@ NIP-04
|
||||
Encrypted Direct Message
|
||||
------------------------
|
||||
|
||||
`final` `optional` `author:arcbtc`
|
||||
`final` `optional`
|
||||
|
||||
A special event with kind `4`, meaning "encrypted direct message". It is supposed to have the following attributes:
|
||||
|
||||
|
2
05.md
2
05.md
@ -4,7 +4,7 @@ NIP-05
|
||||
Mapping Nostr keys to DNS-based internet identifiers
|
||||
----------------------------------------------------
|
||||
|
||||
`final` `optional` `author:fiatjaf` `author:mikedilger`
|
||||
`final` `optional`
|
||||
|
||||
On events of kind `0` (`metadata`) one can specify the key `"nip05"` with an [internet identifier](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1) (an email-like address) as the value. Although there is a link to a very liberal "internet identifier" specification above, NIP-05 assumes the `<local-part>` part will be restricted to the characters `a-z0-9-_.`, case-insensitive.
|
||||
|
||||
|
2
06.md
2
06.md
@ -4,7 +4,7 @@ NIP-06
|
||||
Basic key derivation from mnemonic seed phrase
|
||||
----------------------------------------------
|
||||
|
||||
`draft` `optional` `author:fiatjaf`
|
||||
`draft` `optional`
|
||||
|
||||
[BIP39](https://bips.xyz/39) is used to generate mnemonic seed words and derive a binary seed from them.
|
||||
|
||||
|
2
07.md
2
07.md
@ -4,7 +4,7 @@ NIP-07
|
||||
`window.nostr` capability for web browsers
|
||||
------------------------------------------
|
||||
|
||||
`draft` `optional` `author:fiatjaf`
|
||||
`draft` `optional`
|
||||
|
||||
The `window.nostr` object may be made available by web browsers or extensions and websites or web-apps may make use of it after checking its availability.
|
||||
|
||||
|
2
08.md
2
08.md
@ -6,7 +6,7 @@ NIP-08
|
||||
Handling Mentions
|
||||
-----------------
|
||||
|
||||
`final` `unrecommended` `optional` `author:fiatjaf` `author:scsibug`
|
||||
`final` `unrecommended` `optional`
|
||||
|
||||
This document standardizes the treatment given by clients of inline mentions of other events and pubkeys inside the content of `text_note`s.
|
||||
|
||||
|
2
09.md
2
09.md
@ -4,7 +4,7 @@ NIP-09
|
||||
Event Deletion
|
||||
--------------
|
||||
|
||||
`draft` `optional` `author:scsibug`
|
||||
`draft` `optional`
|
||||
|
||||
A special event with kind `5`, meaning "deletion" is defined as having a list of one or more `e` tags, each referencing an event the author is requesting to be deleted.
|
||||
|
||||
|
2
10.md
2
10.md
@ -5,7 +5,7 @@ NIP-10
|
||||
On "e" and "p" tags in Text Events (kind 1).
|
||||
--------------------------------------------
|
||||
|
||||
`draft` `optional` `author:unclebobmartin`
|
||||
`draft` `optional`
|
||||
|
||||
## Abstract
|
||||
This NIP describes how to use "e" and "p" tags in text events, especially those that are replies to other text events. It helps clients thread the replies into a tree rooted at the original event.
|
||||
|
2
11.md
2
11.md
@ -4,7 +4,7 @@ NIP-11
|
||||
Relay Information Document
|
||||
---------------------------
|
||||
|
||||
`draft` `optional` `author:scsibug` `author:doc-hex` `author:cameri`
|
||||
`draft` `optional`
|
||||
|
||||
Relays may provide server metadata to clients to inform them of capabilities, administrative contacts, and various server attributes. This is made available as a JSON document over HTTP, on the same URI as the relay's websocket.
|
||||
|
||||
|
2
12.md
2
12.md
@ -4,6 +4,6 @@ NIP-12
|
||||
Generic Tag Queries
|
||||
-------------------
|
||||
|
||||
`final` `mandatory` `author:scsibug` `author:fiatjaf`
|
||||
`final` `mandatory`
|
||||
|
||||
Moved to [NIP-01](01.md).
|
||||
|
2
13.md
2
13.md
@ -4,7 +4,7 @@ NIP-13
|
||||
Proof of Work
|
||||
-------------
|
||||
|
||||
`draft` `optional` `author:jb55` `author:cameri`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines a way to generate and interpret Proof of Work for nostr notes. Proof of Work (PoW) is a way to add a proof of computational work to a note. This is a bearer proof that all relays and clients can universally validate with a small amount of code. This proof can be used as a means of spam deterrence.
|
||||
|
||||
|
2
14.md
2
14.md
@ -4,7 +4,7 @@ NIP-14
|
||||
Subject tag in Text events
|
||||
--------------------------
|
||||
|
||||
`draft` `optional` `author:unclebobmartin`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines the use of the "subject" tag in text (kind: 1) events.
|
||||
(implemented in more-speech)
|
||||
|
2
15.md
2
15.md
@ -4,7 +4,7 @@ NIP-15
|
||||
Nostr Marketplace (for resilient marketplaces)
|
||||
-----------------------------------
|
||||
|
||||
`draft` `optional` `author:fiatjaf` `author:benarc` `author:motorina0` `author:talvasconcelos`
|
||||
`draft` `optional`
|
||||
|
||||
> Based on https://github.com/lnbits/Diagon-Alley
|
||||
|
||||
|
2
16.md
2
16.md
@ -4,6 +4,6 @@ NIP-16
|
||||
Event Treatment
|
||||
---------------
|
||||
|
||||
`final` `mandatory` `author:Semisol`
|
||||
`final` `mandatory`
|
||||
|
||||
Moved to [NIP-01](01.md).
|
||||
|
2
18.md
2
18.md
@ -4,7 +4,7 @@ NIP-18
|
||||
Reposts
|
||||
-------
|
||||
|
||||
`draft` `optional` `author:jb55` `author:fiatjaf` `author:arthurfranca`
|
||||
`draft` `optional`
|
||||
|
||||
A repost is a `kind 6` event that is used to signal to followers
|
||||
that a `kind 1` text note is worth reading.
|
||||
|
2
19.md
2
19.md
@ -4,7 +4,7 @@ NIP-19
|
||||
bech32-encoded entities
|
||||
-----------------------
|
||||
|
||||
`draft` `optional` `author:jb55` `author:fiatjaf` `author:Semisol` `author:kieran`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP standardizes bech32-formatted strings that can be used to display keys, ids and other information in clients. These formats are not meant to be used anywhere in the core protocol, they are only meant for displaying to users, copy-pasting, sharing, rendering QR codes and inputting data.
|
||||
|
||||
|
2
20.md
2
20.md
@ -4,6 +4,6 @@ NIP-20
|
||||
Command Results
|
||||
---------------
|
||||
|
||||
`final` `mandatory` `author:jb55`
|
||||
`final` `mandatory`
|
||||
|
||||
Moved to [NIP-01](01.md).
|
||||
|
2
21.md
2
21.md
@ -4,7 +4,7 @@ NIP-21
|
||||
`nostr:` URI scheme
|
||||
-------------------
|
||||
|
||||
`draft` `optional` `author:fiatjaf`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP standardizes the usage of a common URI scheme for maximum interoperability and openness in the network.
|
||||
|
||||
|
2
22.md
2
22.md
@ -4,7 +4,7 @@ NIP-22
|
||||
Event `created_at` Limits
|
||||
-------------------------
|
||||
|
||||
`draft` `optional` `author:jeffthibault` `author:Giszmo`
|
||||
`draft` `optional`
|
||||
|
||||
Relays may define both upper and lower limits within which they will consider an event's `created_at` to be acceptable. Both the upper and lower limits MUST be unix timestamps in seconds as defined in [NIP-01](01.md).
|
||||
|
||||
|
2
23.md
2
23.md
@ -4,7 +4,7 @@ NIP-23
|
||||
Long-form Content
|
||||
-----------------
|
||||
|
||||
`draft` `optional` `author:fiatjaf`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines `kind:30023` (a _parameterized replaceable event_) for long-form text content, generally referred to as "articles" or "blog posts". `kind:30024` has the same structure as `kind:30023` and is used to save long form drafts.
|
||||
|
||||
|
2
24.md
2
24.md
@ -4,7 +4,7 @@ NIP-24
|
||||
Extra metadata fields and tags
|
||||
------------------------------
|
||||
|
||||
`draft` `optional` `author:fiatjaf`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines extra optional fields added to events.
|
||||
|
||||
|
2
25.md
2
25.md
@ -5,7 +5,7 @@ NIP-25
|
||||
Reactions
|
||||
---------
|
||||
|
||||
`draft` `optional` `author:jb55`
|
||||
`draft` `optional`
|
||||
|
||||
A reaction is a `kind 7` event that is used to react to other events.
|
||||
|
||||
|
2
26.md
2
26.md
@ -4,7 +4,7 @@ NIP-26
|
||||
Delegated Event Signing
|
||||
-----
|
||||
|
||||
`draft` `optional` `author:markharding` `author:minds`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines how events can be delegated so that they can be signed by other keypairs.
|
||||
|
||||
|
2
27.md
2
27.md
@ -4,7 +4,7 @@ NIP-27
|
||||
Text Note References
|
||||
--------------------
|
||||
|
||||
`draft` `optional` `author:arthurfranca` `author:hodlbod` `author:fiatjaf`
|
||||
`draft` `optional`
|
||||
|
||||
This document standardizes the treatment given by clients of inline references of other events and profiles inside the `.content` of any event that has readable text in its `.content` (such as kinds 1 and 30023).
|
||||
|
||||
|
2
28.md
2
28.md
@ -5,7 +5,7 @@ NIP-28
|
||||
Public Chat
|
||||
-----------
|
||||
|
||||
`draft` `optional` `author:ChristopherDavid` `author:fiatjaf` `author:jb55` `author:Cameri`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines new event kinds for public chat channels, channel messages, and basic client-side moderation.
|
||||
|
||||
|
2
30.md
2
30.md
@ -4,7 +4,7 @@ NIP-30
|
||||
Custom Emoji
|
||||
------------
|
||||
|
||||
`draft` `optional` `author:alexgleason`
|
||||
`draft` `optional`
|
||||
|
||||
Custom emoji may be added to **kind 0** and **kind 1** events by including one or more `"emoji"` tags, in the form:
|
||||
|
||||
|
2
31.md
2
31.md
@ -4,7 +4,7 @@ NIP-31
|
||||
Dealing with unknown event kinds
|
||||
--------------------------------
|
||||
|
||||
`draft` `optional` `author:pablof7z` `author:fiatjaf`
|
||||
`draft` `optional`
|
||||
|
||||
When creating a new custom event kind that is part of a custom protocol and isn't meant to be read as text (like `kind:1`), clients should use an `alt` tag to write a short human-readable plaintext summary of what that event is about.
|
||||
|
||||
|
2
32.md
2
32.md
@ -4,7 +4,7 @@ NIP-32
|
||||
Labeling
|
||||
---------
|
||||
|
||||
`draft` `optional` `author:staab` `author:gruruya` `author:s3x-jay`
|
||||
`draft` `optional`
|
||||
|
||||
A label is a `kind 1985` event that is used to label other entities. This supports a number of use cases,
|
||||
including distributed moderation, collection management, license assignment, and content classification.
|
||||
|
2
33.md
2
33.md
@ -4,6 +4,6 @@ NIP-33
|
||||
Parameterized Replaceable Events
|
||||
--------------------------------
|
||||
|
||||
`final` `mandatory` `author:Semisol` `author:Kukks` `author:Cameri` `author:Giszmo`
|
||||
`final` `mandatory`
|
||||
|
||||
Moved to [NIP-01](01.md).
|
||||
|
2
36.md
2
36.md
@ -4,7 +4,7 @@ NIP-36
|
||||
Sensitive Content / Content Warning
|
||||
-----------------------------------
|
||||
|
||||
`draft` `optional` `author:fernandolguevara`
|
||||
`draft` `optional`
|
||||
|
||||
The `content-warning` tag enables users to specify if the event's content needs to be approved by readers to be shown.
|
||||
Clients can hide the content until the user acts on it.
|
||||
|
2
38.md
2
38.md
@ -5,7 +5,7 @@ NIP-38
|
||||
User Statuses
|
||||
--------------
|
||||
|
||||
`draft` `optional` `author:jb55`
|
||||
`draft` `optional`
|
||||
|
||||
## Abstract
|
||||
|
||||
|
2
39.md
2
39.md
@ -4,7 +4,7 @@ NIP-39
|
||||
External Identities in Profiles
|
||||
-------------------------------
|
||||
|
||||
`draft` `optional` `author:pseudozach` `author:Semisol`
|
||||
`draft` `optional`
|
||||
|
||||
## Abstract
|
||||
|
||||
|
2
40.md
2
40.md
@ -4,7 +4,7 @@ NIP-40
|
||||
Expiration Timestamp
|
||||
-----------------------------------
|
||||
|
||||
`draft` `optional` `author:0xtlt`
|
||||
`draft` `optional`
|
||||
|
||||
The `expiration` tag enables users to specify a unix timestamp at which the message SHOULD be considered expired (by relays and clients) and SHOULD be deleted by relays.
|
||||
|
||||
|
2
42.md
2
42.md
@ -4,7 +4,7 @@ NIP-42
|
||||
Authentication of clients to relays
|
||||
-----------------------------------
|
||||
|
||||
`draft` `optional` `author:Semisol` `author:fiatjaf`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines a way for clients to authenticate to relays by signing an ephemeral event.
|
||||
|
||||
|
2
45.md
2
45.md
@ -4,7 +4,7 @@ NIP-45
|
||||
Event Counts
|
||||
--------------
|
||||
|
||||
`draft` `optional` `author:staab`
|
||||
`draft` `optional`
|
||||
|
||||
Relays may support the verb `COUNT`, which provides a mechanism for obtaining event counts.
|
||||
|
||||
|
2
46.md
2
46.md
@ -4,7 +4,7 @@ NIP-46
|
||||
Nostr Connect
|
||||
------------------------
|
||||
|
||||
`draft` `optional` `author:tiero` `author:giowe` `author:vforvalerio87`
|
||||
`draft` `optional`
|
||||
|
||||
## Rationale
|
||||
|
||||
|
2
47.md
2
47.md
@ -4,7 +4,7 @@ NIP-47
|
||||
Nostr Wallet Connect
|
||||
--------------------
|
||||
|
||||
`draft` `optional` `author:kiwiidb` `author:bumi` `author:semisol` `author:vitorpamplona`
|
||||
`draft` `optional`
|
||||
|
||||
## Rationale
|
||||
|
||||
|
2
48.md
2
48.md
@ -4,7 +4,7 @@ NIP-48
|
||||
Proxy Tags
|
||||
----------
|
||||
|
||||
`draft` `optional` `author:alexgleason`
|
||||
`draft` `optional`
|
||||
|
||||
Nostr events bridged from other protocols such as ActivityPub can link back to the source object by including a `"proxy"` tag, in the form:
|
||||
|
||||
|
2
50.md
2
50.md
@ -4,7 +4,7 @@ NIP-50
|
||||
Search Capability
|
||||
-----------------
|
||||
|
||||
`draft` `optional` `author:brugeman` `author:mikedilger` `author:fiatjaf`
|
||||
`draft` `optional`
|
||||
|
||||
## Abstract
|
||||
|
||||
|
2
51.md
2
51.md
@ -4,7 +4,7 @@ NIP-51
|
||||
Lists
|
||||
-----
|
||||
|
||||
`draft` `optional` `author:fiatjaf` `author:arcbtc` `author:monlovesmango` `author:eskema` `author:gzuuus`
|
||||
`draft` `optional`
|
||||
|
||||
A "list" event is defined as having a list of public and/or private tags. Public tags will be listed in the event `tags`. Private tags will be encrypted in the event `content`. Encryption for private tags will use [NIP-04 - Encrypted Direct Message](04.md) encryption, using the list author's private and public key for the shared secret. A distinct event kind should be used for each list type created.
|
||||
|
||||
|
2
52.md
2
52.md
@ -4,7 +4,7 @@ NIP-52
|
||||
Calendar Events
|
||||
---------------
|
||||
|
||||
`draft` `optional` `author:tyiu`
|
||||
`draft` `optional`
|
||||
|
||||
This specification defines calendar events representing an occurrence at a specific moment or between moments. These calendar events are _parameterized replaceable_ and deletable per [NIP-09](09.md).
|
||||
|
||||
|
2
53.md
2
53.md
@ -4,7 +4,7 @@ NIP-53
|
||||
Live Activities
|
||||
---------------
|
||||
|
||||
`draft` `optional` `author:vitorpamplona` `author:v0l`
|
||||
`draft` `optional`
|
||||
|
||||
## Abstract
|
||||
|
||||
|
2
56.md
2
56.md
@ -5,7 +5,7 @@ NIP-56
|
||||
Reporting
|
||||
---------
|
||||
|
||||
`draft` `optional` `author:jb55`
|
||||
`draft` `optional`
|
||||
|
||||
A report is a `kind 1984` note that is used to report other notes for spam,
|
||||
illegal and explicit content.
|
||||
|
2
57.md
2
57.md
@ -4,7 +4,7 @@ NIP-57
|
||||
Lightning Zaps
|
||||
--------------
|
||||
|
||||
`draft` `optional` `author:jb55` `author:kieran`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines two new event types for recording lightning payments between users. `9734` is a `zap request`, representing a payer's request to a recipient's lightning wallet for an invoice. `9735` is a `zap receipt`, representing the confirmation by the recipient's lightning wallet that the invoice issued in response to a `zap request` has been paid.
|
||||
|
||||
|
2
58.md
2
58.md
@ -4,7 +4,7 @@ NIP-58
|
||||
Badges
|
||||
------
|
||||
|
||||
`draft` `optional` `author:cameri`
|
||||
`draft` `optional`
|
||||
|
||||
Three special events are used to define, award and display badges in
|
||||
user profiles:
|
||||
|
2
65.md
2
65.md
@ -4,7 +4,7 @@ NIP-65
|
||||
Relay List Metadata
|
||||
-------------------
|
||||
|
||||
`draft` `optional` `author:mikedilger` `author:vitorpamplona`
|
||||
`draft` `optional`
|
||||
|
||||
Defines a replaceable event using `kind:10002` to advertise preferred relays for discovering a user's content and receiving fresh content from others.
|
||||
|
||||
|
2
72.md
2
72.md
@ -4,7 +4,7 @@ NIP-72
|
||||
Moderated Communities (Reddit Style)
|
||||
------------------------------------
|
||||
|
||||
`draft` `optional` `author:vitorpamplona` `author:arthurfranca`
|
||||
`draft` `optional`
|
||||
|
||||
The goal of this NIP is to create moderator-approved public communities around a topic. It defines the replaceable event `kind:34550` to define the community and the current list of moderators/administrators. Users that want to post into the community, simply tag any Nostr event with the community's `a` tag. Moderators issue an approval event `kind:4550` that links the community with the new post.
|
||||
|
||||
|
2
75.md
2
75.md
@ -2,7 +2,7 @@
|
||||
|
||||
## Zap Goals
|
||||
|
||||
`draft` `optional` `author:verbiricha`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines an event for creating fundraising goals. Users can contribute funds towards the goal by zapping the goal event.
|
||||
|
||||
|
2
78.md
2
78.md
@ -4,7 +4,7 @@ NIP-78
|
||||
Arbitrary custom app data
|
||||
-------------------------
|
||||
|
||||
`draft` `optional` `author:sandwich` `author:fiatjaf`
|
||||
`draft` `optional`
|
||||
|
||||
The goal of this NIP is to enable [remoteStorage](https://remotestorage.io/)-like capabilities for custom applications that do not care about interoperability.
|
||||
|
||||
|
2
84.md
2
84.md
@ -4,7 +4,7 @@ NIP-84
|
||||
Highlights
|
||||
----------
|
||||
|
||||
`draft` `optional` `author:pablof7z`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines `kind:9802`, a "highlight" event, to signal content a user finds valuable.
|
||||
|
||||
|
2
89.md
2
89.md
@ -4,7 +4,7 @@ NIP-89
|
||||
Recommended Application Handlers
|
||||
--------------------------------
|
||||
|
||||
`draft` `optional` `author:pablof7z`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP describes `kind:31989` and `kind:31990`: a way to discover applications that can handle unknown event-kinds.
|
||||
|
||||
|
2
90.md
2
90.md
@ -4,7 +4,7 @@ NIP-90
|
||||
Data Vending Machine
|
||||
--------------------
|
||||
|
||||
`draft` `optional` `author:pablof7z` `author:dontbelievethehype`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines the interaction between customers and Service Providers for performing on-demand computation.
|
||||
|
||||
|
2
94.md
2
94.md
@ -4,7 +4,7 @@ NIP-94
|
||||
File Metadata
|
||||
-------------
|
||||
|
||||
`draft` `optional` `author:frbitten` `author:kieran` `author:lovvtide` `author:fiatjaf` `author:staab`
|
||||
`draft` `optional`
|
||||
|
||||
The purpose of this NIP is to allow an organization and classification of shared files. So that relays can filter and organize in any way that is of interest. With that, multiple types of filesharing clients can be created. NIP-94 support is not expected to be implemented by "social" clients that deal with kind:1 notes or by longform clients that deal with kind:30023 articles.
|
||||
|
||||
|
2
98.md
2
98.md
@ -4,7 +4,7 @@ NIP-98
|
||||
HTTP Auth
|
||||
-------------------------
|
||||
|
||||
`draft` `optional` `author:kieran` `author:melvincarvalho`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines an ephemeral event used to authorize requests to HTTP servers using nostr events.
|
||||
|
||||
|
2
99.md
2
99.md
@ -2,7 +2,7 @@
|
||||
|
||||
## Classified Listings
|
||||
|
||||
`draft` `optional` `author:erskingardner`
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines `kind:30402`: a parameterized replaceable event to describe classified listings that list any arbitrary product, service, or other thing for sale or offer and includes enough structured metadata to make them useful.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user