8.0.10 • Published 20 days ago

@libp2p/peer-record v8.0.10

Weekly downloads
-
License
Apache-2.0 OR MIT
Repository
github
Last release
20 days ago

@libp2p/peer-record

libp2p.io Discuss codecov CI

Used to transfer signed peer data across the network

About

Libp2p nodes need to store data in a public location (e.g. a DHT), or rely on potentially untrustworthy intermediaries to relay information over its lifetime. Accordingly, libp2p nodes need to be able to verify that the data came from a specific peer and that it hasn't been tampered with.

Envelope

Libp2p provides an all-purpose data container called envelope. It was created to enable the distribution of verifiable records, which we can prove originated from the addressed peer itself. The envelope includes a signature of the data, so that its authenticity is verified.

This envelope stores a marshaled record implementing the interface-record. These Records are designed to be serialized to bytes and placed inside of the envelopes before being shared with other peers.

You can read further about the envelope in RFC 0002 - Signed Envelopes. For the original discussion about it you can look at the PR that was used to create it: libp2p/specs#217.

Example - Creating a peer record

Create an envelope with an instance of an interface-record implementation and prepare it for being exchanged:

import { PeerRecord, RecordEnvelope } from '@libp2p/peer-record'
import { generateKeyPair } from '@libp2p/crypto/keys'
import { peerIdFromPrivateKey } from '@libp2p/peer-id'

const privateKey = await generateKeyPair('Ed25519')
const peerId = peerIdFromPrivateKey(privateKey)

const record = new PeerRecord({
   peerId,
  // ...other data
})

const envelope = await RecordEnvelope.seal(record, privateKey)
const wireData = envelope.marshal()

Example - Consuming a peer record

Consume a received envelope wireData and transform it back to a record:

import { PeerRecord, RecordEnvelope } from '@libp2p/peer-record'

const wireData = Uint8Array.from([0, 1, 2, 3, 4])
const envelope = await RecordEnvelope.openAndCertify(wireData, PeerRecord.DOMAIN)

const record = PeerRecord.createFromProtobuf(envelope.payload)

Peer Record

All libp2p nodes keep a PeerStore, that among other information stores a set of known addresses for each peer, which can come from a variety of sources.

Libp2p peer records were created to enable the distribution of verifiable address records, which we can prove originated from the addressed peer itself. With such guarantees, libp2p is able to prioritize addresses based on their authenticity, with the most strict strategy being to only dial certified addresses (no strategies have been implemented at the time of writing).

A peer record contains the peers' publicly reachable listen addresses, and may be extended in the future to contain additional metadata relevant to routing. It also contains a seqNumber field, a timestamp per the spec, so that we can verify the most recent record.

You can read further about the Peer Record in RFC 0003 - Peer Routing Records. For the original discussion about it you can view the PR that created the RFC: libp2p/specs#217.

Example

Create a new Peer Record

import { PeerRecord } from '@libp2p/peer-record'
import { peerIdFromPrivateKey } from '@libp2p/peer-id'
import { generateKeyPair } from '@libp2p/crypto/keys'
import { multiaddr } from '@multiformats/multiaddr'

const peerId = peerIdFromPrivateKey(await generateKeyPair('Ed25519'))

const record = new PeerRecord({
  peerId: peerId,
  multiaddrs: [
    multiaddr('/ip4/...'),
    multiaddr('/ip4/...')
  ]
})

Example

Create a Peer Record from a protobuf

import { PeerRecord } from '@libp2p/peer-record'

const data = Uint8Array.from([0, 1, 2, 3, 4])
const record = PeerRecord.createFromProtobuf(data)

Libp2p Flows

Self Record

Once a libp2p node has started and is listening on a set of multiaddrs, its own peer record can be created.

The identify service is responsible for creating the self record when the identify protocol kicks in for the first time. This record will be stored for future needs of the identify protocol when connecting with other peers.

Self record Updates

While creating peer records is fairly trivial, addresses are not static and might be modified at arbitrary times. This can happen via an Address Manager API, or even through AutoRelay/AutoNAT.

When a libp2p node changes its listen addresses, the identify service will be informed. Once that happens, the identify service creates a new self record and stores it. With the new record, the identify push/delta protocol will be used to communicate this change to the connected peers.

Subsystem receiving a record

Considering that a node can discover other peers' addresses from a variety of sources, Libp2p Peerstore can differentiate the addresses that were obtained through a signed peer record.

Once a record is received and its signature properly validated, its envelope is stored in the AddressBook in its byte representation. The seqNumber remains unmarshalled so that we can quickly compare it against incoming records to determine the most recent record.

The AddressBook Addresses will be updated with the content of the envelope with a certified property. This allows other subsystems to identify the known certified addresses of a peer.

Subsystem providing a record

Libp2p subsystems that exchange other peers information will provide the envelope that they received by those peers. As a result, other peers can verify if the envelope was really created by the addressed peer.

When a subsystem wants to provide a record, it will get it from the AddressBook, if it exists. Other subsystems are also able to provide the self record, since it is also stored in the AddressBook.

Future Work

  • Persistence only considering certified addresses?
  • Peers may not know their own addresses. It's often impossible to automatically infer one's own public address, and peers may need to rely on third party peers to inform them of their observed public addresses.
  • A peer may inadvertently or maliciously sign an address that they do not control. In other words, a signature isn't a guarantee that a given address is valid.
  • Some addresses may be ambiguous. For example, addresses on a private subnet are valid within that subnet but are useless on the public internet.
  • Once all these pieces are in place, we will also need a way to prioritize addresses based on their authenticity, that is, the dialer can prioritize self-certified addresses over addresses from an unknown origin.
  • Modular dialer? (taken from go PR notes)
    • With the modular dialer, users should easily be able to configure precedence. With dialer v1, anything we do to prioritise dials is gonna be spaghetti and adhoc. With the modular dialer, you’d be able to specify the order of dials when instantiating the pipeline.
    • Multiple parallel dials. We already have the issue where new addresses aren't added to existing dials.

Install

$ npm i @libp2p/peer-record

Browser <script> tag

Loading this module through a script tag will make it's exports available as Libp2pPeerRecord in the global namespace.

<script src="https://unpkg.com/@libp2p/peer-record/dist/index.min.js"></script>

API Docs

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

8.0.10-c2ff2e454

20 days ago

8.0.10-0a3406a05

20 days ago

8.0.9-7383821e1

28 days ago

8.0.10

26 days ago

8.0.9-d34642db1

26 days ago

8.0.9-a657bbd2e

26 days ago

8.0.10-a5cd8cfbe

25 days ago

8.0.10-ad5cfd66a

24 days ago

8.0.9-717731e49

29 days ago

8.0.8-aa8de9fd3

1 month ago

8.0.8-3bc9769b8

1 month ago

8.0.8-3244ed086

1 month ago

8.0.8-4521cf1f7

1 month ago

8.0.9

1 month ago

8.0.8-e6b4158c6

1 month ago

8.0.8-75301ac7d

1 month ago

8.0.5-dad979f9b

2 months ago

8.0.8-5d199f9b6

1 month ago

8.0.6-58784abf7

2 months ago

8.0.7-d7a818e8e

1 month ago

8.0.6-661d6586a

2 months ago

8.0.7-0d326d102

1 month ago

8.0.7-d4da56961

2 months ago

8.0.6-d9c7e0f7e

2 months ago

8.0.6-35b48025c

2 months ago

8.0.7-e99e8f448

1 month ago

8.0.5-a390db4a4

2 months ago

8.0.6-80e798cdc

2 months ago

8.0.7-934a891f9

2 months ago

8.0.6-24fa1d5af

2 months ago

8.0.5-82bd42bcf

2 months ago

8.0.6-b4f02a637

2 months ago

8.0.8

1 month ago

8.0.7

2 months ago

8.0.6

2 months ago

8.0.6-32c176fd5

2 months ago

8.0.6-27b2fa6b6

2 months ago

8.0.4-c5988cce8

2 months ago

8.0.4-0c5957836

2 months ago

8.0.4-980038477

2 months ago

8.0.5

2 months ago

8.0.4-fa83ee1c7

2 months ago

8.0.3-c258b35af

2 months ago

8.0.2-7f7ec82ae

2 months ago

8.0.2-b3272cfce

2 months ago

8.0.4

2 months ago

8.0.3

2 months ago

8.0.1-c628c44c5

2 months ago

8.0.1-21fe841f2

2 months ago

8.0.2

2 months ago

8.0.1-4fd7eb2e1

2 months ago

8.0.1-6ccbb06f0

2 months ago

8.0.1-34455b5f2

2 months ago

8.0.0-1210884ed

2 months ago

8.0.0-18dd3cb26

2 months ago

8.0.1

2 months ago

8.0.0-d101aac4b

2 months ago

7.0.25-71e5f7a5b

2 months ago

7.0.25-b6681bd25

2 months ago

7.0.25-c010d575c

2 months ago

7.0.25-81ebe4e47

2 months ago

7.0.25-e1ca9cced

2 months ago

8.0.0-7cd984569

2 months ago

7.0.25-5214dec4a

2 months ago

7.0.25-2bbaf4361

2 months ago

7.0.25-a142bb642

2 months ago

8.0.0

2 months ago

7.0.25-df330695a

3 months ago

7.0.25-dd7b329c4

3 months ago

7.0.25-2265e59ba

3 months ago

7.0.25-737b3ea5b

3 months ago

7.0.25-1675adee2

3 months ago

7.0.25-e211b46cc

3 months ago

7.0.25-7655e5200

3 months ago

7.0.25-50b897139

3 months ago

7.0.21-d1aec4d9f

5 months ago

7.0.24-c5dba70a9

3 months ago

7.0.19

6 months ago

7.0.20-af85a7cad

5 months ago

7.0.19-863b3de03

5 months ago

7.0.24-7939dbd5c

3 months ago

7.0.23-944935f8d

4 months ago

7.0.20-21cf7bc56

5 months ago

7.0.18-7464dc00c

6 months ago

7.0.20-0b55625d1

5 months ago

7.0.21-e9b6a242a

4 months ago

7.0.18-440c9b360

6 months ago

7.0.24-1dfb74e79

3 months ago

7.0.19-8e4fdcde9

5 months ago

7.0.18-769461d3b

6 months ago

7.0.18-6011d3697

6 months ago

7.0.22-8b3114292

4 months ago

7.0.18-757fb2674

6 months ago

7.0.18-4bd8e4f79

6 months ago

7.0.18-167bf2b3c

6 months ago

7.0.21-ce6da9896

5 months ago

7.0.19-d1f1c2be7

5 months ago

7.0.19-94cac115a

5 months ago

7.0.21-3319ff41e

5 months ago

7.0.20-abb9f90c7

5 months ago

7.0.18-f4e572cd6

6 months ago

7.0.18-e69a2f1b6

6 months ago

7.0.22-a82ff8221

4 months ago

7.0.20-15eb66428

5 months ago

7.0.18-62e32252a

6 months ago

7.0.22-73f2b6b6d

4 months ago

7.0.18-bc6556f96

6 months ago

7.0.18-f6fe2cc3c

6 months ago

7.0.22-a130993ed

4 months ago

7.0.24-0edbfe7af

4 months ago

7.0.18-12106b5b0

6 months ago

7.0.21-151bc46fb

5 months ago

7.0.20-6573cb8b0

5 months ago

7.0.22-a8ec2bcb7

4 months ago

7.0.25-359265a3a

3 months ago

7.0.25-3c8dd5bbf

3 months ago

7.0.20-3b9cbf7d8

5 months ago

7.0.22-4a994c5ef

4 months ago

7.0.18-7aec7bd45

6 months ago

7.0.18-169c9d85e

6 months ago

7.0.22-928801a80

4 months ago

7.0.23

4 months ago

7.0.24

4 months ago

7.0.21

5 months ago

7.0.22

4 months ago

7.0.18-352699ab5

6 months ago

7.0.20

5 months ago

7.0.19-44791342

5 months ago

7.0.19-9e0236627

5 months ago

7.0.25

3 months ago

7.0.23-f30e2ee8d

4 months ago

7.0.21-e1f0b307c

5 months ago

7.0.22-40902d99b

4 months ago

7.0.20-b0b6cae12

5 months ago

7.0.18-90d10b565

6 months ago

7.0.22-34cf1f7cd

4 months ago

7.0.18

6 months ago

7.0.17-1cc6a9405

6 months ago

7.0.17-1eb5b2713

6 months ago

7.0.17-1a41c28bb

6 months ago

7.0.17-a3e8beabd

6 months ago

7.0.17-1cd5aae11

6 months ago

7.0.17-48444f750

6 months ago

7.0.17-5b7380259

6 months ago

7.0.17-8214dcfb0

6 months ago

7.0.17-7de56f244

6 months ago

7.0.17-3c73707ff

6 months ago

7.0.17

6 months ago

7.0.16-9d4b0596f

6 months ago

7.0.16-43046b9ae

6 months ago

7.0.16-83c14d08f

6 months ago

7.0.16-7ae6063df

7 months ago

7.0.16-bfa7660d5

7 months ago

7.0.16-1488a7371

7 months ago

7.0.16-4ad63bb79

7 months ago

7.0.16-767b23e71

7 months ago

7.0.16-d9366f9aa

7 months ago

7.0.16-510d9ce65

7 months ago

7.0.16-a11e135c2

7 months ago

7.0.16

7 months ago

7.0.16-9d13a2f6a

7 months ago

7.0.15-de3f7aeaf

7 months ago

7.0.15-3d7a9da17

7 months ago

7.0.15-c82432312

7 months ago

7.0.15-3bc94b403

7 months ago

7.0.15-e1923b0a7

7 months ago

7.0.15-998fcaf94

7 months ago

7.0.15-90cfd25e2

7 months ago

7.0.14-2281f802b

7 months ago

7.0.14-c2181f0cf

7 months ago

7.0.15

7 months ago

7.0.14-fd1f8343d

7 months ago

7.0.14-eaf8ac7cf

7 months ago

7.0.14-acef72613

7 months ago

7.0.14

7 months ago

7.0.14-ea4f26285

7 months ago

7.0.13-31c78f4ed

7 months ago

7.0.13-08dabd390

7 months ago

7.0.12-2c56203f9

7 months ago

7.0.13

7 months ago

7.0.12-b17824a1d

7 months ago

7.0.12-936dbba10

8 months ago

7.0.12-732c436d4

8 months ago

7.0.12-2b2958fe6

8 months ago

7.0.12

8 months ago

7.0.11-3e515f007

8 months ago

7.0.11-d446c6c31

8 months ago

7.0.11-a2b41f793

8 months ago

7.0.11-80278b36b

8 months ago

7.0.11-afe15f669

8 months ago

7.0.11-1f589c822

8 months ago

7.0.11-4fc0a7d30

8 months ago

7.0.11-ab5f05763

8 months ago

7.0.11-3ffecc5bf

8 months ago

7.0.10-59a97b61b

8 months ago

7.0.10-82901e785

8 months ago

7.0.11

8 months ago

7.0.10-bf720c045

8 months ago

7.0.10-1fc929c1c

8 months ago

7.0.10-330a5ed72

8 months ago

7.0.10-fad3074b8

8 months ago

7.0.10-f39ce5f13

9 months ago

7.0.10-e1798aa26

8 months ago

7.0.10-cad9cf007

8 months ago

7.0.10-83ef3717e

9 months ago

7.0.10-ab466004b

9 months ago

7.0.10-a9cc0ee49

9 months ago

7.0.10-28e51652a

9 months ago

7.0.10-2122a713d

9 months ago

7.0.10-f71bc49bd

9 months ago

7.0.10

9 months ago

7.0.9-f0d2b52d0

9 months ago

7.0.9-e1c01370b

9 months ago

7.0.9-bedfd0aa2

9 months ago

7.0.9-8072a2e59

9 months ago

7.0.9-b1b77adb4

9 months ago

7.0.9-fb7c51c3c

9 months ago

7.0.7-03ff9fd82

10 months ago

7.0.7-1cb2408ac

10 months ago

7.0.7-9891ecd73

10 months ago

7.0.7-2370d1c39

10 months ago

7.0.7-0321812e7

10 months ago

7.0.8-0c7bbbb07

10 months ago

7.0.8

10 months ago

7.0.9

10 months ago

7.0.7-dab5cf724

10 months ago

7.0.7-e1db332a4

10 months ago

7.0.7-6f323de7d

10 months ago

7.0.7-c9ed1c7d6

10 months ago

7.0.6-dbc92ab74

10 months ago

7.0.6-2e464c099

10 months ago

7.0.7

10 months ago

7.0.6-74fb5671d

10 months ago

7.0.6-f4dda4a3c

10 months ago

7.0.6-72f0e09f7

10 months ago

7.0.6-8c6654c3a

10 months ago

7.0.6-f27138ca1

10 months ago

7.0.6-08f6f607d

10 months ago

7.0.6-74477f6ea

10 months ago

7.0.6-9376e61a1

10 months ago

7.0.6-3e47d88fd

10 months ago

7.0.6

10 months ago

7.0.5-092861e23

10 months ago

7.0.5-8bbd43628

11 months ago

7.0.5

11 months ago

7.0.4-ddaa59a60

11 months ago

7.0.4-856ccd708

11 months ago

7.0.4-4691f4173

11 months ago

7.0.4-ee7ffe9b9

11 months ago

7.0.4-900236724

11 months ago

7.0.4-821a38e24

11 months ago

7.0.3-528d73781

11 months ago

7.0.3-d011f6130

11 months ago

7.0.3-581574d6d

11 months ago

7.0.4

11 months ago

7.0.3-444d83751

11 months ago

7.0.3-388d02b33

11 months ago

7.0.3-ba7089984

11 months ago

7.0.3

11 months ago

7.0.2-28587d24f

11 months ago

7.0.2-5d1f68e92

11 months ago

7.0.2-4e0135c7d

11 months ago

7.0.2-6fd681d09

11 months ago

7.0.2-cd8cafcd5

11 months ago

7.0.2-c00378909

11 months ago

7.0.2-178fe2671

11 months ago

7.0.2-83dfc7dc8

11 months ago

7.0.1-07f3afe2d

11 months ago

7.0.1-ad6f70bf3

11 months ago

7.0.1-f71f2e14e

11 months ago

7.0.1-984f13e42

11 months ago

7.0.2

11 months ago

7.0.1-a7c6a93c6

11 months ago

7.0.1-230afea4b

11 months ago

7.0.1-9eff7eff0

11 months ago

7.0.1-f81be145a

11 months ago

7.0.1-01e9a5fe4

11 months ago

7.0.1

12 months ago

7.0.1-742915567

12 months ago

7.0.0-341581166

12 months ago

7.0.0-6d11e8268

12 months ago

7.0.0-d10506189

12 months ago

7.0.0-64a915ae9

12 months ago

7.0.0-3bf6387ff

12 months ago

7.0.0-93890c8f9

12 months ago

7.0.0-16588d27c

12 months ago

7.0.0-887c6ffe1

12 months ago

6.0.8-70d5efc2e

1 year ago

6.0.6-cf3ae893

1 year ago

6.0.8-dfbe0cc0

1 year ago

6.0.3-725f5df1

1 year ago

6.0.8-051154dd

1 year ago

5.0.4-c2232166

1 year ago

6.0.3-9a69e6f7

1 year ago

5.0.4-5315f7bc

1 year ago

6.0.5-e9099d40

1 year ago

6.0.0-72e81dc1

1 year ago

6.0.3-10cbc8fa

1 year ago

6.0.4-d9159dd5

1 year ago

6.0.3-32825633

1 year ago

6.0.5-b57bca44

1 year ago

6.0.3-0634e3b7

1 year ago

6.0.2-18567b7c

1 year ago

6.0.1-446fff87

1 year ago

6.0.3-6abcd22f

1 year ago

6.0.6-68504939

1 year ago

6.0.0-e66f4891

1 year ago

6.0.8-8b82e68e8

1 year ago

6.0.9-4a474d54d

12 months ago

6.0.6-b5a808af

1 year ago

6.0.5-f09ac4a7

1 year ago

6.0.7-b686fb5a

1 year ago

6.0.0-8f855a3c

1 year ago

6.0.0-58421e11

1 year ago

5.0.4-eabf6f36

1 year ago

6.0.9-68db79f6b

12 months ago

6.0.12

12 months ago

6.0.11

12 months ago

6.0.10

12 months ago

6.0.2-5e85154b

1 year ago

5.0.4-7debe031

1 year ago

6.0.2-a31b420f

1 year ago

6.0.5-f1053159

1 year ago

6.0.3-24a5edae

1 year ago

6.0.7-16a87076

1 year ago

6.0.6-ab2c1f67

1 year ago

6.0.0-5ffa7a74

1 year ago

6.0.9-9ad8f8686

1 year ago

6.0.2-123ded59

1 year ago

6.0.3-24c1c248

1 year ago

6.0.3-f3fd7b62

1 year ago

5.0.4-562f9b08

1 year ago

6.0.8-fdcb801e

1 year ago

6.0.3-6a02d765

1 year ago

6.0.3-46dc3ce9

1 year ago

6.0.11-cf963694f

12 months ago

6.0.5-28794fe4

1 year ago

5.0.4-a41d25d4

1 year ago

6.0.2-32212959

1 year ago

6.0.7-7903d7a5

1 year ago

6.0.3-b599905c

1 year ago

6.0.5-c97dea04

1 year ago

6.0.7-025c082a

1 year ago

6.0.3-87dc7e9f

1 year ago

6.0.5-6640116d

1 year ago

6.0.9-8f921ee97

12 months ago

6.0.5-e3ab1929

1 year ago

6.0.9-c960eb659

1 year ago

6.0.4-122f1e67

1 year ago

6.0.3-7b2ddc17

1 year ago

6.0.11-8c169db1b

12 months ago

6.0.9-8bb6d5333

12 months ago

6.0.9-3dee5df4d

1 year ago

6.0.5-7d8b1551

1 year ago

6.0.8-d25d9510

1 year ago

6.0.7

1 year ago

6.0.6

1 year ago

6.0.2-e26848b0

1 year ago

6.0.9

1 year ago

6.0.8

1 year ago

6.0.2-364e0592

1 year ago

6.0.4-4db2f5f5

1 year ago

5.0.4-5eee70a4

1 year ago

6.0.3-a6be8f0f

1 year ago

6.0.2-a1fbb7e2

1 year ago

6.0.4-0ee4f784

1 year ago

6.0.5-ae36e86b

1 year ago

7.0.0-bcfa15993

12 months ago

6.0.4-0ce318ec

1 year ago

6.0.9-74e84bc29

12 months ago

6.0.1

1 year ago

6.0.0

1 year ago

6.0.3

1 year ago

6.0.5-6cb80f7d

1 year ago

6.0.2

1 year ago

6.0.5

1 year ago

6.0.0-a4a10fd4

1 year ago

6.0.4

1 year ago

6.0.2-eaac8943

1 year ago

5.0.4-7f60b579

1 year ago

6.0.11-6c1f0ee81

12 months ago

6.0.8-78db573f9

1 year ago

6.0.10-06e6d235f

12 months ago

6.0.5-96166ada

1 year ago

6.0.2-3345f28b

1 year ago

6.0.9-bb6ceb192

1 year ago

6.0.9-97ab31c0c

1 year ago

7.0.0-10ea19700

12 months ago

5.0.4-57c32721

1 year ago

6.0.10-a32e70bac

12 months ago

6.0.10-273d8177c

12 months ago

6.0.9-7877a50e0

12 months ago

6.0.0-c858ca7f

1 year ago

6.0.9-0f5c305af

1 year ago

5.0.4-1f7e18b0

1 year ago

6.0.8-f4fac961

1 year ago

6.0.9-05b52d69c

1 year ago

6.0.11-f537b3731

12 months ago

6.0.11-9197f10ba

12 months ago

6.0.7-69581367

1 year ago

6.0.10-7682861f9

12 months ago

6.0.3-87165551

1 year ago

6.0.3-d30f09f2

1 year ago

7.0.0-09dd02987

12 months ago

6.0.10-8e4fbe13a

12 months ago

6.0.0-fdd80820

1 year ago

5.0.4-791f56f0

1 year ago

6.0.9-9c67c5b3d

1 year ago

5.0.4-e9cafd3d

1 year ago

6.0.9-effcfaa8e

1 year ago

6.0.7-50442d7a

1 year ago

6.0.11-53224004f

12 months ago

6.0.9-d8f5bc211

1 year ago

5.0.4-6eab9c5e

1 year ago

6.0.3-a533cc39

1 year ago

6.0.3-5294f14c

1 year ago

6.0.3-2b755a82

1 year ago

6.0.0-ef83dd1d

1 year ago

6.0.5-5a6a4379

1 year ago

5.0.4-69c93ac5

1 year ago

6.0.11-561797a89

12 months ago

7.0.0

12 months ago

6.0.3-7517082d

1 year ago

5.0.4-a1ec46b5

1 year ago

6.0.0-8d49602f

1 year ago

6.0.4-20d5f220

1 year ago

6.0.8-1d141331a

1 year ago

6.0.3-89778624

1 year ago

6.0.7-d5ef1c91

1 year ago

6.0.0-8f681db3

1 year ago

6.0.5-980857c3

1 year ago

6.0.5-91842c93

1 year ago

6.0.11-738dd40f1

12 months ago

6.0.3-13f5b48e

1 year ago

6.0.9-adea7bbbf

1 year ago

6.0.4-88c47f51

1 year ago

7.0.0-5a9362e21

12 months ago

6.0.5-972b10a9

1 year ago

5.0.4-b1024c6c

1 year ago

6.0.6-62a56b54

1 year ago

6.0.6-77e3cbc3

1 year ago

6.0.8-fb8a6f188

1 year ago

6.0.5-72319fe6

1 year ago

6.0.3-4559a624

1 year ago

6.0.3-73b87c5a

1 year ago

5.0.4-06f4901a

1 year ago

5.0.4-b36ec7f2

1 year ago

6.0.9-e2267d437

12 months ago

6.0.2-02b89323

1 year ago

6.0.3-d9948596

1 year ago

6.0.2-4c1a33b3

1 year ago

6.0.9-6625a27fc

1 year ago

6.0.3-4ef9c79c

1 year ago

5.0.4-7b5c54dd

1 year ago

6.0.7-346ff5a2

1 year ago

6.0.3-0d228f9f

1 year ago

6.0.3-28d6722f

1 year ago

6.0.3-e664d14f

1 year ago

6.0.11-7861ed882

12 months ago

6.0.3-63041afe

1 year ago

6.0.9-13a870cbe

1 year ago

6.0.6-50f912c2

1 year ago

6.0.11-e7167fe52

12 months ago

6.0.3-098ba082

1 year ago

6.0.5-c88de8e1

1 year ago

6.0.2-9c0353cf

1 year ago

6.0.5-e8123d3f

1 year ago

5.0.4-daeb43d8

1 year ago

6.0.10-bcf18265e

12 months ago

6.0.3-01acccef

1 year ago

6.0.9-0b4a2ee79

1 year ago

6.0.10-551622a96

12 months ago

6.0.11-bca8d6e68

12 months ago

6.0.6-f9d1c072

1 year ago

6.0.9-d729d66a5

1 year ago

5.0.4-c999d6a7

1 year ago

6.0.5-f670307a

1 year ago

6.0.2-6b839807

1 year ago

6.0.9-6b6ba9ab7

1 year ago

6.0.6-7534ae7b

1 year ago

6.0.3-c4eff4c5

1 year ago

5.0.4-3dfc236e

1 year ago

5.0.4

1 year ago

5.0.4-8b0e6bef

1 year ago

5.0.4-879f4794

1 year ago

5.0.4-7fb23cd3

1 year ago

5.0.4-f427cfc9

1 year ago

5.0.4-ea8a0637

1 year ago

5.0.4-d853d124

1 year ago

5.0.4-05abd49f

1 year ago

5.0.4-42c1c097

1 year ago

5.0.4-ab0e3980

1 year ago

5.0.4-2e561fe9

1 year ago

5.0.4-85a317bb

1 year ago

5.0.4-6fdaa7dc

1 year ago

5.0.3

2 years ago

5.0.2

2 years ago

5.0.1

2 years ago

5.0.0

2 years ago

4.0.5

2 years ago

4.0.4

2 years ago

4.0.3

2 years ago

3.0.0

2 years ago

2.0.2

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

4.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.9

3 years ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.12

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.0.0

3 years ago