# About

<figure><img src="/files/WUxkYXlH12LdpQMdOSNH" alt=""><figcaption></figcaption></figure>

## Introduction

Sats Names is a standard for writing names to Bitcoin using ordinals. The goal is to build a name ecosystem for Bitcoin, that is built by Bitcoiners, and developed entirely on Bitcoin.&#x20;

Someone was inscribing .ord and .btc names very early in ordinals. The Sats Name System (SNS) formalized this process, created first JSON protocol on Bitcoin, and introduced the .sats namespace. Today, SNS has been widely adopted and has inspired an explosion of namespaces and JSON meta-protocols on Bitcoin.&#x20;

These are the guiding principles of the SNS project:&#x20;

**All namestate lives on Bitcoin**

Bitcoin transactions, and only Bitcoin transactions, are all that is needed to register and update names. A Bitcoin node contains all information needed to materialize all namestate. No other database or trusted services are required. Any client can independently compute the true state of all names.

**The standard will remain credibly neutral**

No gatekeepers: Nobody can turn off the standard or block anyone else from registering names. There is no smart contract or front end with privileged access. No tokenomics. No premine. No gas token. No governance. No perverse incentives.

**The first write of a name on Bitcoin owns the name**

For example, the first user to register an ordinal containing "satoshi.sats" owns that name and the rights to update that name. With ordinals anyone can write any data they wish, including duplicate names. This will lead to collisions and competing tribes of name standards. Bickering over various standards is a waste of our community’s energy. There is only one neutral, objective pattern for settling collisions; First is first.

## History and traction

SNS was launched on block 777847, Feb 22, 2023. Since then:&#x20;

* 400,000 .sats names have been inscribed
* Over 1.8M SNS names have been inscribed for other namespaces like .ord, .btc, .xbt
* 65,000 users hold .sats names
* SNS marketplaces are supported on all major ordinal exchanges such as [unisat.io](https://unisat.io/), [ordinalswallet.com](https://ordinalswallet.com/), [ordswap.io](https://ordswap.io/), [magiceden.io](https://magiceden.io/), [element.market](https://element.market/), and [okx.com](https://www.okx.com/).&#x20;
* SNS name resolution is supported on Unisat wallet and Ordinals wallet.&#x20;

The SNS community is looking forward to future namespaces, integrations, and products built on top of the SNS standard.&#x20;


# SNS Spec

{% content-ref url="/pages/R431jI1RUjuecX5hTv5Q" %}
[Namespaces](/sats-names/sns-spec/namespaces)
{% endcontent-ref %}

{% content-ref url="/pages/I53kxXmaXzuAPs7VjdxP" %}
[Mint names](/sats-names/sns-spec/mint-names)
{% endcontent-ref %}

{% content-ref url="/pages/FjXgTSDD349As4KJSMw2" %}
[Index names](/sats-names/sns-spec/index-names)
{% endcontent-ref %}


# Namespaces

<figure><img src="/files/WUxkYXlH12LdpQMdOSNH" alt=""><figcaption></figcaption></figure>

## Namespaces

Namespace operations define a namespace, for example, `.sats` is a namespace.&#x20;

As of this writing over 100 different communities have started namespaces simply by inscribing names. This has created a bit of a mess—namespace operations help builders, marketplaces, and indexers, track all names, across all namespaces, with a standard syntax. Just like BRC20 has a syntax for fetching all tokens, SNS has a standard for fetching all names.&#x20;

Here are few noteworthy examples and their namespace inscription:&#x20;

<table><thead><tr><th width="139">Namespace</th><th width="264.3333333333333">About</th><th>Namespace operation</th></tr></thead><tbody><tr><td>.sats</td><td>Names on Bitcoin. First is first.</td><td><a href="https://www.ord.io/15529498">https://www.ord.io/15529498</a></td></tr><tr><td>.ord</td><td>Built on Bitcoin with ordinals</td><td><a href="https://www.ord.io/15529517">https://www.ord.io/15529517</a></td></tr><tr><td>.gm</td><td>Good morning Bitcoiners</td><td><a href="https://www.ord.io/15529507">https://www.ord.io/15529507</a></td></tr></tbody></table>

There are many more. You can find them all by searching for the `ns` operation.&#x20;

## Create a namespace

<figure><img src="/files/M2zfWJVTXdflebYxxOwf" alt=""><figcaption></figcaption></figure>

Here are few reasons to inscribe a namespace operation for your community:&#x20;

* Help indexers and marketplaces "find" your namespace.
* Include a description so inscribers know the purpose of the namespace.
* Include a nice avatar or logo for marketplaces.

A few other important details about namespaces:&#x20;

* Like names, namespaces (specifically the `ns` value) are globally unique, and the first inscription of any namespace is the only valid instance. First is first.&#x20;
* The namespace inscription does not add, or remove, or limit anything related to how others inscribe names.
* You can inscribe any SNS name, on any namespace, before the namespace inscription has been created.&#x20;
* No special permissions are given to the namespace inscription holder.
* Namespace inscriptions have no speculative or secondary market value.

## Namespace operation

```json5
{
    "p": "sns",
    "op": "ns",
    "ns": "sats",
    "about": "Names on Bitcoin. First is first.",
    "avatar": "6373fce7c218e344d78e6c1802651ee1557eb6ebd2292b2ba24d449792227869i0",
}
```

<table><thead><tr><th width="102.33333333333331">Key</th><th width="111">Required?</th><th>Description</th></tr></thead><tbody><tr><td>p</td><td>Yes</td><td>Helps indexers identify the SNS protocol</td></tr><tr><td>op</td><td>Yes</td><td>New namespace operation </td></tr><tr><td>ns</td><td>Yes</td><td>Defines the namespace, for example <code>sats</code> defines the .sats namespace. Do not include the period <code>.</code></td></tr><tr><td>about</td><td>No</td><td>A short description. Aim for under 50 characters. </td></tr><tr><td>avatar</td><td>No</td><td>A logo or image symbolizing the namespace. Use Inscription ID.</td></tr></tbody></table>

{% hint style="warning" %}
Do not include the period, or dot, in the operation.&#x20;
{% endhint %}

{% hint style="info" %}
You're welcome to put any UTF-8 character in your namespace but we recommend keeping things simple. Emoji, rare unicode characters, etc. are probably a bad idea and may have poor support by indexers or marketplaces.
{% endhint %}

### ⚠️ Registration limitations

These rules apply to all namespaces and names:&#x20;

* Only the first instance of each name/namespace is valid.&#x20;
* Only one name operation per ordinal inscription.&#x20;
* Any UTF-8 character is valid.
* Capitalization does not matter. All names/namespaces will be indexed as lowercase.&#x20;
* No spaces are permitted within a name.


# Mint names

The syntax below applies to all SNS namespaces, for example `.sats` `.ord` `.gm` and so on, plus all future namespaces.&#x20;

New names can be minted (inscribed for the first time) as ordinals with only a Bitcoin transaction. This process is open to anyone that can inscribe.&#x20;

## Registering names

### Simple registration

To register a new name within the Sats Name System simply inscribe an ordinal containing your desired name. Here is an [example](https://ordinals.com/inscription/04a53ecaf63216850635efe16e6efbc8813dce60fac2af642a66c9d46d2a1972i0).&#x20;

```
satoshi.sats
```

### Advanced registration

Advanced registration allows users to add additional data to a name using JSON5 syntax. The format is optional for registration.&#x20;

```json
{ 
  "p": "sns",
  "op": "reg",
  "name": "satoshi.sats",
  "avatar": "7f9c06b712c5b60c0b66868c69568b2d198533553c347cd732fc3c87e62efe86i0",
  "rev": "bc1psvggtp7mzr3lu8x5vrycqjqqkk5e7urtu2axjvwejea0ctjfdl3qqrctsf",
  "relay": "85b10531435304cbe47d268106b58b57a4416c76573d4b50fa544432597ad670i0"
}
```

<table><thead><tr><th width="95.33333333333331">Key</th><th width="109">Required?</th><th width="150">Expected</th><th>Description</th></tr></thead><tbody><tr><td>p</td><td>Yes</td><td>sns</td><td>Helps indexers identify the SNS protocol</td></tr><tr><td>op</td><td>Yes</td><td>reg</td><td>Tells indexers this is a new name</td></tr><tr><td>name</td><td>Yes</td><td>SNS name</td><td>Name: Your desired name. Including .sats, or another namespace, is required.</td></tr><tr><td>avatar</td><td>No</td><td>Inscription ID</td><td>Avatar or profile pic. Specify with inscription ID.</td></tr><tr><td>rev</td><td>No</td><td>Bitcoin address</td><td>Reverse resolution: Sets the Bitcoin address for this name.</td></tr><tr><td>relay</td><td>No</td><td>Inscription ID</td><td>Tells indexers this SNS name is a pointer, or relay, to another inscription. Specify with inscription ID.</td></tr></tbody></table>

{% hint style="warning" %}
Updating names: Avatar, Relay, and Reverse Resolution (rev) will have update operations in the future. There are some complexities related to making updates safe and reliable that will require new inscription tools. Once those are widely available and tested, we will release the syntax!
{% endhint %}

### ⚠️ Registration limitations

These rules apply to all namespaces and names:&#x20;

* Only the first instance of each name/namespace is valid.&#x20;
* Only one name operation per ordinal inscription.&#x20;
* Any UTF-8 character is valid.
* Capitalization does not matter. All names/namespaces will be indexed as lowercase.&#x20;
* No spaces are permitted within a name.
* Only one period permitted within a name.


# Index names

## Building an indexer

These instructions explain the protocol logic and instructions for extracting and validating names so you can properly index them and determine the first instance of each name.&#x20;

### Fetch the data

These instructions assume you have access to the entire ordinals data structure with basic details like content type, ID, as well as the content.

Validate that the inscription's content type is any of these:&#x20;

* `text/plain`
* `application/json`

Fetch `text` as the raw text contents of an inscription. For example, `text` would be the raw contents returned at [this Ordinals.com URL](https://ordinals.com/content/861572ad8c7c91091463859324876e13221f0f640350f0c94c066d7ee32c4f23i0).

### Validate names

The first instance of each name is the only valid instance of the name in the Sats Name System. We determine which name is first by inscription number. The following instructions will tell you how to extract and validate the name so you can compare inscription number and determine the first.&#x20;

### Extracting the name from JSON5

1. Validate the text according to the [JSON5 standard](https://json5.org/). To check if the inscription is JSON, try parsing the text. If an error is thrown (invalid JSON), skip to the "plain text" instructions listed under Validate Names.
2. Check that the JSON has the required keys:
   * `p` equals `"sns"`
   * `op` equals `"reg"`
   * `name` is present and is type `string`
3. Once `name` is extracted, follow the steps proceed to the Validate names steps.

{% hint style="info" %}
Trailing commas are valid in JSON5. New lines *inside* values are not valid.&#x20;
{% endhint %}

### Validate names

1. Validate utf-8 characters
2. Turn the string into lowercase
3. Delete everything after the first whitespace or newline (`\n`)
4. Trim all whitespace and newlines
5. Validate that there is only one period (`.`) in the name

## Fetch namespaces

The first instance of each `ns` operation is the only valid instance in the Sats Name System. We determine which operation is first by inscription number.&#x20;

### Extract namespace operations

1. Validate the text according to the [JSON5 standard](https://json5.org/).&#x20;
2. Check that the JSON has the required keys:&#x20;
   * `p` equals `"sns"`
   * `op` equals `"ns"`
   * `ns` is present and is type `string`

### Validate namespace

1. Validate utf-8 characters
2. Turn the string into lowercase
3. Validate that there is no period (`.`) in the namespace

## Indexer & API

If you have a valid namespace or name compare to all other instances of the identical string. The first instance according to inscription number is the only valid name/namespace, or the "first" of this name.&#x20;

Make sure you convert all queries to lowercase, otherwise you might inadvertently show name as available when they are registered.&#x20;

Make sure your API returns a decoded version of the UTF-8 name. Scammers hide hidden characters inside names and by including this information clients can flag deceptive names.&#x20;

### Clients

Queries for names that include `#` and `?` will fail unless you convert them to [URL encoding reference](https://www.w3schools.com/tags/ref_urlencode.ASP) first.&#x20;


# Indexing reference

{% hint style="info" %}
This page contains no new rules, these are examples in reference to the SNS spec. The rules and examples apply to all SNS namespaces.&#x20;
{% endhint %}

## Simple registration

<figure><img src="/files/qIzMplCyAf3ZWiM9sBx3" alt=""><figcaption></figcaption></figure>

## Advanced registration

All simple registration rules apply with some JSON specific adjustments:

<figure><img src="/files/cB9F61iNwtcsCOu1vK0R" alt=""><figcaption></figcaption></figure>


# Relay examples

Relays allow an SNS name to point to another inscription. This is similar to an "a record" in DNS.&#x20;

This is different than recursive inscriptions. Recursion inserts the content of one inscription into another. Relay simply establishes a link, pointing one inscription at another, giving the target inscription a human readable name. Examples below:&#x20;

## white-paper.sats&#x20;

<https://www.ord.io/12805283>

```json5
{ 
  "p": "sns",
  "op": "reg",
  "name": "white-paper.sats",
  "relay": "85b10531435304cbe47d268106b58b57a4416c76573d4b50fa544432597ad670i0",
}
```

Relays to an early inscription of the Bitcoin white paper: <https://www.ord.io/54>

<figure><img src="/files/C9kmMRNMqgaRzKBSkEur" alt="" width="375"><figcaption></figcaption></figure>

## hellodickbutt.sats

<https://www.ord.io/12806136>

```json5
{ 
  "p": "sns",
  "op": "reg",
  "name": "hellodickbutt.sats",
  "relay": "26482871f33f1051f450f2da9af275794c0b5f1c61ebf35e4467fb42c2813403i0",
}
```

Relays to inscription #1: <https://www.ord.io/1>

<figure><img src="/files/xdMlddNDJIZaDdbBdZ77" alt="" width="274"><figcaption></figcaption></figure>

## taprootwzrd.sats

<https://www.ord.io/12806132>

```json5
{
  "p": "sns",
  "op": "reg",
  "name": "taprootwzrd.sats",
  "relay": "0301e0480b374b32851a9462db29dc19fe830a7f7d7a88b81612b9d42099c0aei0",
}
```

Relays to the infamous 4 megggor: <https://www.ord.io/652>

<figure><img src="/files/dHaKDbuxSbZXz0sILu6a" alt="" width="375"><figcaption></figcaption></figure>

## mrmarshall.sats

<https://www.ord.io/12806440>

```json5
{
  "p": "sns",
  "op": "reg",
  "name": "mrmarshall.sats",
  "relay": "111bb15037a4665a79701edb84050b802be1b16791f4a6f03a673d2d3e23cf70i0",
}
```

Relays to Brandon Marshall's (first ever?) inscription website: <https://www.ord.io/11633881>

<figure><img src="/files/qxioxyCmMzAqKtgL3vxi" alt="" width="375"><figcaption></figcaption></figure>

## hellofelipe.sats

<https://www.ord.io/12806955>

```
{
  "p": "sns",
  "op": "reg",
  "name": "hellofelipe.sats",
  "relay": "5225a64d069123381db15173822e6b6f924d5f4cb578bd260f82c754a20f8bf5i0",
}
```

Relays to Felipe Servin's fancy inscription website: <https://www.ord.io/11849888>

<figure><img src="/files/lDFnfkpjftzCR9Ngxe6d" alt="" width="375"><figcaption></figcaption></figure>


# Draft: SNS Core

## Overview

Writing names to Bitcoin is permissionless, meaning no service can enforce character validation at the point of inscription. Other naming systems have struggled with complexity and disputes over valid characters. These realities, combined with the fact that SNS began as an experiment, led the early community to opt for a highly permissive character set. It has been fun but also a mess!&#x20;

## Solution: SNS Core

SNS Core defines a stricter subset of valid characters and a limit on length which will improve SNS robustness for applications like wallet resolution.&#x20;

### Core Character Set

* Letters (<mark style="color:orange;">`a-z`</mark>)
* Numbers (<mark style="color:orange;">`0-9`</mark>)
* Hyphen (<mark style="color:orange;">`-`</mark>)
* Underscore (<mark style="color:orange;">`_`</mark>)

{% hint style="info" %}
Upper or lowercase characters are both valid, but will indexed as lowercase.
{% endhint %}

### Core Name Length

* **Name:** Must be ≤ **63 characters**
* **Namespace:** Must be ≤ **63 characters**
* Combined: `name`, plus `name space` plus `.` can be up to 127 characters

{% hint style="info" %}
These constraints mirror DNS standards and prevent indexing edge cases.
{% endhint %}

{% hint style="info" %}
Note: There is no specification for subdomains in SNS yet.
{% endhint %}

## Indexing SNS Core

{% hint style="info" %}
SNS core does not make any breaking changes to indexers or invalidate any previously inscribed names. All rules in the [SNS spec](/sats-names/sns-spec) remain unchanged. SNS Core defines a subset of the existing names.&#x20;
{% endhint %}

### **Only Index SNS Core**

* Follow the [index spec](/sats-names/sns-spec/index-names)
* Add additional validation for Core characters and length restrictions
* Recommended for wallets and DNS-like applications&#x20;

### Flag SNS Core&#x20;

* Follow the [index spec](/sats-names/sns-spec/index-names)
* Add additional validation for Core characters and length restrictions and add a boolean flag to each name that passes.&#x20;
* Recommended for marketplaces&#x20;


# Indexers

{% hint style="info" %}
These indexers and APIs are maintained by independent teams and companies following the SNS standard. Please test and understand the limits of each indexer before building with them or relying on them for valid indexing.
{% endhint %}

### Geniidata  <mark style="color:green;">`Production`</mark>

<https://apidocs.geniidata.com/reference/get-sns-name-list-copy>

### Sns.run  <mark style="color:yellow;">`In development`</mark>

<https://docs.sns.run/>

### sats.id  <mark style="color:red;">`Retired`</mark>

The first indexer ever built for a JSON meta protocol on Bitcoin.


# FAQs

## **About Sats Names**

**Why own an SNS name?**

Name systems are essential for our online lives but they are usually under the control of centralized companies. A Bitcoin-based name system has the potential to revolutionize online identity with names secured with Bitcoin security and decentralization. We hope to see many wallets, marketplaces, and apps develop around the SNS standard.

#### **When will Sats Names go live?**

It already is. You register names by inscribing ordinals. Go inscribe one right now!

#### **Can I trade Sats Names?**&#x20;

Sure! Names are simply ordinals and can be traded. Whatever wallet holds the first instance of a name our indexer will consider the current owner.&#x20;

#### **How can I support Sats Names?**

You can support Sats Names by inscribing some great names and changing your Twitter and Nostr handle!&#x20;

#### **How does Sats Names make money?**

We do not make money, nor do we have any plans to do so. Names are inscribed as ordinals, and the only fees involved are paid to miners on the Bitcoin network.

#### **Who controls the DAO and standard?**

There is no DAO. And there is no protocol in the smart contract sense. All we propose here is a standard for registering names. We cannot change names, update names, raise the cost of names, or do anything of that sort.

#### **How do I get OG status, rewards, tokens, mintpass, whitelisted, etc.?**

There is nothing like that here. Everyone has equal access to inscribe whatever Sats Name they wish on a first come first serve basis.&#x20;

## Registrations

#### **How do I register names?**

Follow the instructions in the [SNS Spec](/sats-names/sns-spec) or use an app that supports registrations.&#x20;

#### **How can I tell if someone has already registered my name?**

Most inscription services index and check for you. To be very certain you should cross check in multiple indexers.&#x20;

#### **How can I tell if a particular ordinal name is real / authentic / legit?**

We’re just a couple devs suggesting a standard. We don’t have any authority over what is “real” or not. We’re going to build some tools that help marketplaces, wallets, and individuals users sort out which .sats name was first. You shouldn’t trust us or anyone—you should verify. That said we’ll try to make it fast and easy to verify!&#x20;

#### **Can I register multiple names in one ordinal?**&#x20;

No. See [SNS Spec](/sats-names/sns-spec).

#### **What about emoji and punycode?**&#x20;

If you want emoji then just use the emoji directly.&#x20;

#### **What happens if I inscribe a duplicate name?**

First is first. Indexers will regard the second name as invalid.&#x20;

#### **Why is my name not indexed properly?**&#x20;

Funky or imperfect formatting can sometimes cause this. See the examples in the [reference page](/sats-names/indexing-reference). Check your [JSON5 here](https://jsonformatter.org/json5-validator).


# Terms of use

{% code overflow="wrap" %}

```
Terms of use

Terms updated Aug 18 2023

As a user of the Sats Names, the Sats Names System (”SNS”), standard, open source code, related intellectual property, or API, (the “Materials”) you are subject to the following terms (the “Terms”) that are made available by the copyright holder and its contributors (“Copyright Holder”, “our” or “we”). By continuing to use the Materials, you acknowledge that you have read and understood the Terms, including those additional terms and conditions and policies referenced herein and/or available by hyperlink, and agree to be bound by them. 

**Intellectual property**

You acknowledge and agree that the Materials and all of its contents, features, and functionality, including, but not limited to, the "look and feel" of the Materials, data files, graphics, text, photographs, drawings, logos, images, sounds, music, video or audio files, are protected by copyright and are the sole property of the Copyright Holder, protected by United States and international copyright, trademark, patent, trade secret, and other intellectual property or proprietary rights laws. 

You agree not to take any action(s) inconsistent with such ownership interests. We reserve all rights in connection with the Materials, including, without limitation, the exclusive right to create derivative works. You acknowledge that you shall not create any derivative works from the Materials without the express written permission of the Copyright Holder. These provisions shall be considered legally binding and enforceable to the maximum extent permitted by law.

**Disclaimers; Limitations of Liability**

YOU EXPRESSLY AGREE THAT ACCESS TO AND USE OF THE MATERIALS IS AT YOUR SOLE RISK AND IS PROVIDED ON AN “AS IS” AND “AS AVAILABLE” BASIS WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF TITLE OR IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. WITHOUT LIMITING THE FOREGOING, NEITHER COPYRIGHT HOLDER NOR ITS AFFILIATES OR SUBSIDIARIES, DIRECTORS, OFFICERS, EMPLOYEES, CONTRACTORS, AGENTS, ATTORNEYS, THIRD-PARTY PROVIDERS, DISTRIBUTORS, LICENSEES, LICENSORS, SUCCESSORS OR ASSIGNS, DO NOT WARRANT THAT THE MATERIALS WILL BE UNINTERRUPTED, SECURE, BUG-FREE OR ERROR-FREE. ALSO, NONE OF THE COPYRIGHT HOLDER PARTIES WARRANT THAT THE MATERIALS IS MERCHANTABLE OR FIT FOR ANY PARTICULAR PURPOSE. THE ENTIRE QUALITY AND PERFORMANCE RISK OF THE MATERIALS IS WITH YOU. IN THE EVENT THAT THE MATERIALS PROVES DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

TO THE FULLEST EXTENT PERMITTED BY LAW, ANY AND ALL DAMAGES, LOSSES, AND/OR INJURY CAUSED BY OR RELATED TO THE USE OF, OR INABILITY TO USE, THE MATERIALS UNDER ANY CAUSE OR ACTION WHATSOEVER OF ANY JURISDICTION, INCLUDING, WITHOUT LIMITATION, ACTIONS FOR BREACH OF WARRANTY, BREACH OF CONTRACT, AND/OR TORT (INCLUDING NEGLIGENCE), ARE SUBJECT TO THE DISCLAIMERS OF LIABILITY CONTAINED HEREIN. THE COPYRIGHT HOLDER PARTIES SHALL NOT BE LIABLE FOR ANY LOSS, INCLUDING BUT NOT LIMITED TO LOST PROFITS, REVENUES, OR FINANCIAL LOSSES OR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE AND/OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF, OR INABILITY TO USE, THE MATERIALS, OR FOR ANY DAMAGES RELATED TO THE LOSS OF REVENUE, LOSS OF PROFITS, LOSS OF BUSINESS, LOSS OF USE, LOSS OF GOODWILL, OR LOSS OF DATA, WHETHER CAUSED BY TORT (INCLUDING NEGLIGENCE), BREACH OF CONTRACT, OR OTHERWISE, EVEN IF FORESEEABLE AND EVEN IF THE COPYRIGHT HOLDER PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. YOU FURTHER ACKNOWLEDGE THAT THE COPYRIGHT HOLDER PARTIES ARE NOT LIABLE, AND YOU AGREE NOT TO SEEK TO HOLD THE COPYRIGHT HOLDER PARTIES LIABLE, FOR THE CONDUCT OF THIRD PARTIES, INCLUDING OTHER USERS OF THE MATERIALS, AND THAT THE RISK OF THE USE OF THE MATERIALS AND OF INJURY FROM THE FOREGOING RESTS ENTIRELY WITH YOU.

IN THE EVENT THAT A COURT AND/OR ARBITRATOR(S) OF COMPETENT JURISDICTION HOLDS THAT ANY OF THE COPYRIGHT HOLDER PARTIES IS LIABLE TO YOU (FOR EXAMPLE AND WITHOUT LIMITATION, BECAUSE ANY RELEASE OR WAIVER HEREUNDER IS FOUND TO BE VOID OR OTHERWISE UNENFORCEABLE, OR BECAUSE ANY CLAIMS ARE FOUND TO BE OUTSIDE THE SCOPE OF ANY SUCH RELEASE OR WAIVER), UNDER NO CIRCUMSTANCES WILL ANY OF THE COPYRIGHT HOLDER PARTIES BE LIABLE TO YOU IN THE AGGREGATE FOR MORE THAN ONE HUNDRED DOLLARS ($100), WHETHER SUCH LIABILITY IS BASED ON BREACH OF WARRANTY, BREACH OF CONTRACT, OR TORT (INCLUDING NEGLIGENCE) OR OTHERWISE. THE PROVISIONS IN THIS SECTION (DISCLAIMERS; LIMITATIONS OF LIABILITY) WILL SURVIVE ANY TERMINATION OF YOUR USE OF OR ACCESS TO THE MATERIALS.

**Indemnification**

You agree to indemnify, defend and hold the Copyright Holder Parties harmless from and against any and all losses, claims, damages, judgments, demands, actions, proceedings, investigations (whether formal or informal), or expenses (including reasonable attorneys’ fees), or threats thereof, due to, arising out of or relating to (a) your violation of (i) any law or (ii) the rights of a third-party, or (b) your use of the Materials.

If such a claim, suit, or action arises, we will make an attempt to provide you with notice at the contact information we have for your account/on file. However, failure to deliver such notice will not eliminate or reduce your indemnification obligations hereunder. The Copyright Holder Parties reserve the right, at their own cost, to assume the exclusive defense and control of any matter otherwise subject to indemnification by you, in which event you will fully cooperate with the Copyright Holder Parties in asserting any available defenses. You acknowledge and agree that the provisions in this Section (Indemnification) shall survive any termination of your use of or access to the Materials.

**Miscellaneous**

We reserve the right to update, change, modify or replace any part of these Terms at our discretion by posting updates and changes. It is your responsibility to regularly check for changes to these Terms. Your continued use of or access to the Materials following the posting of any changes to these Terms constitutes acceptance of those changes. These Terms constitute the entire agreement and understanding between you and us relating to the Materials. These Terms and all disputes arising out of or relating to the Terms shall be governed by, construed and enforced in accordance with the laws of the State of Delaware in the United States, without regard to its conflict of laws principles. These disputes will be resolved exclusively in the federal and state courts in the State of Delaware, and you and we consent to personal jurisdiction in those courts.
```

{% endcode %}


