updated site
@@ -1,23 +0,0 @@
|
||||
.screenshot {
|
||||
max-width: 100%;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.jumbotron {
|
||||
padding-top: 155px;
|
||||
padding-bottom: 20px;
|
||||
background-attachment: scroll;
|
||||
background: url("../img/jumbotron_pattern.png") repeat center;
|
||||
background-color: #123051;
|
||||
}
|
||||
|
||||
#masthead {
|
||||
background-attachment: scroll;
|
||||
background: url("../img/jumbotron_pattern.png") repeat center;
|
||||
background-color: #123051;
|
||||
}
|
||||
|
||||
.important {
|
||||
color: red;
|
||||
}
|
@@ -1,230 +0,0 @@
|
||||
<!DOCTYPE html><html><head><title>VinylDNS: Contributing</title><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="author" content="VinylDNS" /><meta name="description" content="DNS Governance" /><meta name="og:image" content="/img/poster.png" /><meta name="image" property="og:image" content="/img/poster.png" /><meta name="og:title" content="VinylDNS: Contributing" /><meta name="title" property="og:title" content="VinylDNS: Contributing" /><meta name="og:site_name" content="VinylDNS" /><meta name="og:url" content="http://vinyldns.io" /><meta name="og:type" content="website" /><meta name="og:description" content="DNS Governance" /><link rel="icon" type="image/png" href="/img/favicon.png" /><meta name="twitter:title" content="VinylDNS: Contributing" /><meta name="twitter:image" content="/img/poster.png" /><meta name="twitter:description" content="DNS Governance" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:creator" content="@vinyldns" /><link rel="icon" type="image/png" sizes="16x16" href="/img/favicon16x16.png" /><link rel="icon" type="image/png" sizes="32x32" href="/img/favicon32x32.png" /><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" /><link rel="stylesheet" href="/highlight/styles/atom-one-light.css" /><link rel="stylesheet" href="/css/light-style.css" /><link rel="stylesheet" href="/css/custom.css" /></head><body class="page"><nav id="navigation" aria-labelledby="main-navigation"><div class="navbar-wrapper container"><div class="navigation-brand"><a href="/" class="brand custom-feature-icon"><div class="page-icon-wrapper"></div><span class="brand-title">VinylDNS</span></a></div><div class="navigation-menu"><ul><li><a href="https://github.com/vinyldns/vinyldns" target="_blank" rel="noopener noreferrer"><i class="nav-item-icon fa fa-lg fa-github" hidden="true"></i><span class="nav-item-text">GitHub</span></a></li><li><a href="/api"><i class="nav-item-icon fa fa-lg fa-file-text" hidden="true"></i><span class="nav-item-text">API Documentation</span></a></li></ul></div></div></nav><nav class="menu-container" aria-labelledby="section-navigation"><div id="horizontal-menu"><ul class="horizontal-nav"><li><a class="" href="/">Home</a></li><li><a class="" href="/portal/">Portal Guide</a></li><li><a class="" href="/operator/">Operator Guide</a></li><li><a class=" active " href="/extra_md/contributing.html">Contributing</a></li><li><a class="" href="/tools.html">Tools</a></li><li><a class="" href="/faq.html">FAQ</a></li><li><a class="" href="/permissions.html">Permissions Guide</a></li><li><a class="" href="/getting-help.html">Getting Help</a></li></ul></div></nav><main id="site-main" class="page-site-main"><section class="use"><div class="container"><div id="content"><h1 id="contributing-to-vinyldns">Contributing to VinylDNS</h1>
|
||||
<p>The following are a set of guidelines for contributing to VinylDNS and its associated repositories.</p>
|
||||
|
||||
<h2 id="table-of-contents">Table of Contents</h2>
|
||||
<ul>
|
||||
<li><a href="#code-of-conduct">Code of Conduct</a></li>
|
||||
<li><a href="#issues">Issues</a>
|
||||
<ul>
|
||||
<li><a href="#working-on-an-issue">Working on an Issue</a></li>
|
||||
<li><a href="#submitting-an-issue">Submitting an Issue</a></li>
|
||||
<li><a href="#discussion-process">Discussion Process</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#pull-requests">Pull Requests</a>
|
||||
<ul>
|
||||
<li><a href="#general-flow">General Flow</a></li>
|
||||
<li><a href="#pull-request-requirements">Pull Request Requirements</a>
|
||||
<ul>
|
||||
<li><a href="#commit-messages">Commit Messages</a></li>
|
||||
<li><a href="#testing">Testing</a></li>
|
||||
<li><a href="#documentation-edits">Documentation Edits</a></li>
|
||||
<li><a href="#style-guides">Style Guides</a></li>
|
||||
<li><a href="#license-header-checks">License Header Checks</a></li>
|
||||
<li><a href="#contributor-license-agreement">Contributor License Agreement</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#modifying-your-pull-requests">Modifying your Pull Request</a></li>
|
||||
<li><a href="#pull-request-approval">Pull Request Approval</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#release-management">Release Management</a></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="code-of-conduct">Code of Conduct</h2>
|
||||
<p>This project and everyone participating in it are governed by the <a href="CODE_OF_CONDUCT.md">VinylDNS Code Of Conduct</a>. By
|
||||
participating, you agree to this Code. Please report any violations to the code of conduct to vinyldns-core@googlegroups.com.</p>
|
||||
|
||||
<h2 id="issues">Issues</h2>
|
||||
|
||||
<p>Work on VinylDNS is tracked by <a href="https://guides.github.com/features/issues/">Github Issues</a>. To contribute to VinylDNS,
|
||||
you can join the discussion on an issue, submit a Pull Request to resolve the issue, or make an issue of your own.
|
||||
VinylDNS issues are generally labeled as bug reports, feature requests, or maintenance requests.</p>
|
||||
|
||||
<h3 id="working-on-an-issue">Working on an Issue</h3>
|
||||
<p>If you would like to contribute to VinylDNS, you can look through <code class="highlighter-rouge">good first issue</code> and <code class="highlighter-rouge">help wanted</code> issues. We keep a list
|
||||
of these issues around to encourage participation in building the platform. In the issue list, you can chose “Labels” and
|
||||
choose a specific label to narrow down the issues to review.</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>Beginner issues</strong>: only require a few lines of code to complete, rather isolated to one or two files. A good way
|
||||
to get through changing and testing your code, and meet everyone!</li>
|
||||
<li><strong>Help wanted issues</strong>: these are more involved than beginner issues, are items that tend to come near the top of our
|
||||
backlog but not necessarily in the current development stream.</li>
|
||||
</ul>
|
||||
|
||||
<p>Besides those issues, you can sort the issue list by number of comments to find one that may be of interest. You do
|
||||
<em>not</em> have to limit yourself to <em>only</em> <code class="highlighter-rouge">good first issue</code> or <code class="highlighter-rouge">help wanted</code> issues.</p>
|
||||
|
||||
<p>When resolving an issue, you generally will do so by making a <a href="#pull-requests">Pull Request</a>, and adding a link to the issue.</p>
|
||||
|
||||
<p>Before choosing an issue, see if anyone is assigned or has indicated they are working on it (either in comment or via Pull Request).
|
||||
If that is the case, then instead of making a Pull Request of your own, you can help out by reviewing their Pull Request.</p>
|
||||
|
||||
<h3 id="submitting-an-issue">Submitting an Issue</h3>
|
||||
<p>When submitting an issue you will notice there are three issue templates to choose from. Before making any issue, please
|
||||
go search the issue list (open and closed issues) and check to see if a similar issue has been made. If so, we ask that you do not duplicate an
|
||||
issue, but feel free to comment on the existing issue with additional details.</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>Bug report</strong>: If you find a bug in the project you can report it with this template and the VinylDNS team will take a
|
||||
look at it. Please be as detailed as possible as it will help us recreate the bug and figure out what exactly is going on.
|
||||
If you are unsure whether what you found is a bug, we encourage you to first pop in our <a href="https://gitter.im/vinyldns/vinyldns">dev gitter</a>, and we can
|
||||
help determine if what you’re seeing is unexpected behavior, and if it is we will direct to make the bug report.</li>
|
||||
<li><strong>Feature request</strong>: Use this template if you have something you wish to be added to the project. Please be detailed
|
||||
when describing why you are requesting the feature, what you want it to do, and alternative solutions you have considered.</li>
|
||||
<li><strong>Maintenance request</strong>: This template is for suggesting upgrades to the existing code base. This could include
|
||||
code refactoring, new libraries, additional testing, among other things. Please be detailed when describing the
|
||||
reason for the maintenance, and what benefits will come out of it. Please describe the scope of the change, and
|
||||
what parts of the system will be impacted.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="discussion-process">Discussion Process</h3>
|
||||
|
||||
<p>Some issues may require discussion with the community before proceeding to implementation. This can happen if the issue is a larger change, for example a big refactoring or new feature. The VinylDNS maintainers may label an issue for <strong>Discussion</strong> in order to solicit more detail before proceeding. If the issue is straightforward and/or well documented, it can be implemented immediately by the submitter. If the submitter is unable to make the changes required to address the issue, the VinylDNS maintainers will prioritize the work in our backlog.</p>
|
||||
|
||||
<h2 id="pull-requests">Pull Requests</h2>
|
||||
<p>Contributions to VinylDNS are generally made via <a href="https://help.github.com/articles/about-pull-requests/">Github Pull Requests</a>.
|
||||
Most Pull Requests are related to an <a href="#issues">issue</a>, and will have a link to the issue in the Pull Request.</p>
|
||||
|
||||
<h3 id="general-flow">General Flow</h3>
|
||||
<p>We follow the standard <em>GitHub Flow</em> for taking code contributions. The following is the process typically followed:</p>
|
||||
|
||||
<ol>
|
||||
<li>Create a fork of the repository that you want to contribute code to</li>
|
||||
<li>Clone your forked repository to your local machine</li>
|
||||
<li>In your local machine, add a remote to the “main” repository, we call this “upstream” by running
|
||||
<code class="highlighter-rouge">git remote add upstream https://github.com/vinyldns/vinyldns.git</code>. Note: you can also use <code class="highlighter-rouge">ssh</code> instead of <code class="highlighter-rouge">https</code></li>
|
||||
<li>Create a local branch for your work <code class="highlighter-rouge">git checkout -b your-user-name/user-branch-name</code>. Add whatever your GitHub
|
||||
user name is before whatever you want your branch to be.</li>
|
||||
<li>Begin working on your local branch</li>
|
||||
<li>Be sure to add necessary unit, integration, and functional tests, see the <a href="DEVELOPER_GUIDE.md#testing">Testing</a> section of the Developer Guide.</li>
|
||||
<li>Make sure you run all builds before posting a Pull Request! It’s faster to run everything locally rather than waiting for
|
||||
the build server to complete its job. See <a href="DEVELOPER_GUIDE.md">DEVELOPER_GUIDE.md</a> for information on local development.</li>
|
||||
<li>When you are ready to contribute your code, run <code class="highlighter-rouge">git push origin your-user-name/user-branch-name</code> to push your changes
|
||||
to your <em>own fork</em></li>
|
||||
<li>Go to the <a href="https://github.com/vinyldns/vinyldns.git">VinylDNS main repository</a> (or whatever repo you are contributing to)
|
||||
and you will see your change waiting and a link to “Create a Pull Request”. Click the link to create a Pull Request.</li>
|
||||
<li>Be as detailed as possible in the description of your Pull Request. Describe what you changed, why you changed it, and
|
||||
give a detailed list of changes and impacted files. If your Pull Request is related to an existing issue, be sure to link the
|
||||
issue in the Pull Request itself, in addition to the Pull Request description.</li>
|
||||
<li>You will receive comments on your Pull Request. Use the Pull Request as a dialog on your changes.</li>
|
||||
</ol>
|
||||
|
||||
<h3 id="pull-request-requirements">Pull Request Requirements</h3>
|
||||
|
||||
<h4 id="commit-messages">Commit Messages</h4>
|
||||
<ul>
|
||||
<li>Limit the first line to 72 characters or fewer.</li>
|
||||
<li>Use the present tense (“Add validation” not “Added validation”).</li>
|
||||
<li>Use the imperative mood (“Move database call” not “Moves database call”).</li>
|
||||
<li>Reference issues and other pull requests liberally after the first line. Use <a href="https://help.github.com/articles/autolinked-references-and-urls/">GitHub Auto Linking</a>
|
||||
to link your Pull Request to other issues.</li>
|
||||
<li>Use markdown syntax as much as you want</li>
|
||||
</ul>
|
||||
|
||||
<h4 id="testing">Testing</h4>
|
||||
<p>When making changes to the VinylDNS codebase, be sure to add necessary unit, integration, and functional tests.
|
||||
For specifics on our tests, see the <a href="DEVELOPER_GUIDE.md#testing">Testing</a> section of the Developer Guide.</p>
|
||||
|
||||
<h4 id="documentation-edits">Documentation Edits</h4>
|
||||
<p>Documentation for the VinylDNS project lives in files such as this one in the root of the project directory, as well
|
||||
as in <code class="highlighter-rouge">modules/docs/src/main/tut</code> for the docs you see on <a href="https://vinyldns.io">vinyldns.io</a>. Many changes, such as those that impact
|
||||
an API endpoint, config, portal usage, etc, will also need corresponding documentation edited to prevent it from going stale. The VinylDNS <a href="https://github.com/vinyldns/vinyldns/tree/gh-pages#vinyldns-documentation-site">gh-pages branch README</a> has information on how to run and edit the documentation page.</p>
|
||||
|
||||
<h4 id="style-guides">Style Guides</h4>
|
||||
<ul>
|
||||
<li>For Scala code we use <a href="https://www.scalastyle.org/">Scalastyle</a>. The configs are <code class="highlighter-rouge">scalastyle-config.xml</code> and
|
||||
<code class="highlighter-rouge">scalastyle-test-config.xml</code> for source code and test code respectively
|
||||
<ul>
|
||||
<li>We have it set to fail builds if the styling rules are not followed. For example, one of our rules is that all lines must be <= 120 characters, and a build will fail if that is violated.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>For our python code that we use for functional testing, we generally try to follow <a href="https://www.python.org/dev/peps/pep-0008/">PEP 8</a></li>
|
||||
</ul>
|
||||
|
||||
<h4 id="license-header-checks">License Header Checks</h4>
|
||||
<p>VinylDNS is configured with <a href="https://github.com/sbt/sbt-header">sbt-header</a>. All existing scala files have the appropriate
|
||||
header. To add or check for headers, follow these steps:</p>
|
||||
|
||||
<h5 id="api">API</h5>
|
||||
<p>You can check for headers in the API in <code class="highlighter-rouge">sbt</code> with:</p>
|
||||
|
||||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>> ;project api;headerCheck;test:headerCheck;it:headerCheck
|
||||
</code></pre></div></div>
|
||||
|
||||
<p>If you add a new file, you can add the appropriate header in <code class="highlighter-rouge">sbt</code> with:</p>
|
||||
|
||||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>> ;project api;headerCreate;test:headerCreate;it:headerCreate
|
||||
</code></pre></div></div>
|
||||
|
||||
<h5 id="portal">Portal</h5>
|
||||
<p>You can check for headers in the Portal in <code class="highlighter-rouge">sbt</code> with:</p>
|
||||
|
||||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>> ;project portal;headerCheck;test:headerCheck;checkJsHeaders
|
||||
</code></pre></div></div>
|
||||
|
||||
<p>If you add a new file, you can add the appropriate header in <code class="highlighter-rouge">sbt</code> with:</p>
|
||||
|
||||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>> ;project portal;headerCreate;test:headerCreate;createJsHeaders
|
||||
</code></pre></div></div>
|
||||
|
||||
<h4 id="contributor-license-agreement">Contributor License Agreement</h4>
|
||||
<p>Before Comcast merges your code into the project you must sign the
|
||||
<a href="https://gist.github.com/ComcastOSS/a7b8933dd8e368535378cda25c92d19a">Comcast Contributor License Agreement (CLA)</a>.</p>
|
||||
|
||||
<p>If you haven’t previously signed a Comcast CLA, you’ll automatically be asked to when you open a pull request.
|
||||
Alternatively, we can send you a PDF that you can sign and scan back to us. Please create a new GitHub issue to request a PDF version of the CLA.</p>
|
||||
|
||||
<h3 id="modifying-your-pull-requests">Modifying your Pull Requests</h3>
|
||||
<p>Often times, you will need to make revisions to your Pull Requests that you submit. This is part of the standard process of code
|
||||
review. There are different ways that you can make revisions, but the following process is pretty standard.</p>
|
||||
|
||||
<ol>
|
||||
<li>Sync with upstream first. <code class="highlighter-rouge">git checkout master && git fetch upstream && git rebase upstream master && git push origin master</code></li>
|
||||
<li>Checkout your branch on your local <code class="highlighter-rouge">git checkout your-user-name/user-branch-name</code></li>
|
||||
<li>Sync your branch with latest <code class="highlighter-rouge">git rebase master</code>. Note: If you have merge conflicts, you will have to resolve them</li>
|
||||
<li>Revise your Pull Request, making changes recommended in the comments / code review</li>
|
||||
<li>Stage and commit these changes on top of your existing commits</li>
|
||||
<li>When all tests pass, <code class="highlighter-rouge">git push origin your-user-name/user-branch-name</code> to revise your commit. <em>Note: If you rebased or altered the commit history, you will have to force push with a <code class="highlighter-rouge">-f</code> flag.</em> GitHub automatically
|
||||
recognizes the update and will re-run verification on your Pull Request!</li>
|
||||
</ol>
|
||||
|
||||
<h3 id="pull-request-approval">Pull Request Approval</h3>
|
||||
<p>A pull request must satisfy our <a href="#pull-request-requirements">pull request requirements</a></p>
|
||||
|
||||
<p>Afterwards, if a Pull Request is approved, a maintainer of the project will merge it.
|
||||
If you are a maintainer, you can merge your Pull Request once you have the approval of at least 2 other maintainers.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>Note: The first time you make a Pull Request, add yourself to the authors list <a href="AUTHORS.md">here</a> as part of the Pull Request</p>
|
||||
</blockquote>
|
||||
|
||||
<h2 id="release-management">Release Management</h2>
|
||||
<p>As an overview, we release on a regular schedule roughly once per month.</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>current release</strong> - For example, 0.8.0. This constitutes the current work that is in-flight</li>
|
||||
<li><strong>next release</strong> - For example, 0.8.1. These are the issues pegged for the <em>next</em> release to be worked on</li>
|
||||
<li><strong>maintenance release</strong> - We will have maintenance releases once we bump MINOR. For example, we will have <code class="highlighter-rouge">0.8.x</code> once we move to <code class="highlighter-rouge">0.9.0-SNAPSHOT</code></li>
|
||||
</ul>
|
||||
|
||||
</div></div></section></main><footer id="site-footer"><div class="container"><div class="row"><p>VinylDNS is designed and developed by <a href="" target="_blank" rel="noopener noreferrer">VinylDNS</a></p></div></div></footer><script src="/highlight/highlight.pack.js"></script><script>
|
||||
// For all code blocks, copy the language from the containing div
|
||||
// to the inner code tag (where hljs expects it to be)
|
||||
const langPrefix = 'language-';
|
||||
document.querySelectorAll(`div[class^='${langPrefix}']`).forEach(function(div) {
|
||||
div.classList.forEach(function(cssClass) {
|
||||
if (cssClass.startsWith(langPrefix)) {
|
||||
const lang = cssClass.substring(langPrefix.length);
|
||||
div.querySelectorAll('pre code').forEach(function(code) {
|
||||
code.classList.add(lang);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
hljs.configure({languages:['scala','java','bash']});
|
||||
hljs.initHighlightingOnLoad();
|
||||
</script><script>console.info('\x57\x65\x62\x73\x69\x74\x65\x20\x62\x75\x69\x6c\x74\x20\x77\x69\x74\x68\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x20\x20\x20\x20\x5f\x5f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x20\x5f\x5f\x0a\x20\x20\x20\x5f\x5f\x5f\x5f\x5f\x2f\x20\x2f\x5f\x20\x20\x2f\x20\x2f\x5f\x20\x20\x20\x20\x20\x20\x5f\x5f\x5f\x5f\x20\x5f\x5f\x5f\x20\x20\x28\x5f\x29\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x20\x20\x5f\x5f\x5f\x5f\x5f\x28\x5f\x29\x20\x2f\x5f\x5f\x5f\x5f\x20\x20\x5f\x5f\x5f\x5f\x5f\x0a\x20\x20\x2f\x20\x5f\x5f\x5f\x2f\x20\x5f\x5f\x20\x5c\x2f\x20\x5f\x5f\x2f\x5f\x5f\x5f\x5f\x5f\x2f\x20\x5f\x5f\x20\x60\x5f\x5f\x20\x5c\x2f\x20\x2f\x20\x5f\x5f\x5f\x2f\x20\x5f\x5f\x5f\x2f\x20\x5f\x5f\x20\x5c\x2f\x20\x5f\x5f\x5f\x2f\x20\x2f\x20\x5f\x5f\x2f\x20\x5f\x20\x5c\x2f\x20\x5f\x5f\x5f\x2f\x0a\x20\x28\x5f\x5f\x20\x20\x29\x20\x2f\x5f\x2f\x20\x2f\x20\x2f\x5f\x2f\x5f\x5f\x5f\x5f\x5f\x2f\x20\x2f\x20\x2f\x20\x2f\x20\x2f\x20\x2f\x20\x2f\x20\x2f\x5f\x5f\x2f\x20\x2f\x20\x20\x2f\x20\x2f\x5f\x2f\x20\x28\x5f\x5f\x20\x20\x29\x20\x2f\x20\x2f\x5f\x2f\x20\x20\x5f\x5f\x28\x5f\x5f\x20\x20\x29\x0a\x2f\x5f\x5f\x5f\x5f\x2f\x5f\x2e\x5f\x5f\x5f\x2f\x5c\x5f\x5f\x2f\x20\x20\x20\x20\x20\x2f\x5f\x2f\x20\x2f\x5f\x2f\x20\x2f\x5f\x2f\x5f\x2f\x5c\x5f\x5f\x5f\x2f\x5f\x2f\x20\x20\x20\x5c\x5f\x5f\x5f\x5f\x2f\x5f\x5f\x5f\x5f\x2f\x5f\x2f\x5c\x5f\x5f\x2f\x5c\x5f\x5f\x5f\x2f\x5f\x5f\x5f\x5f\x2f\x0a\x0a\x68\x74\x74\x70\x73\x3a\x2f\x2f\x34\x37\x64\x65\x67\x2e\x67\x69\x74\x68\x75\x62\x2e\x69\x6f\x2f\x73\x62\x74\x2d\x6d\x69\x63\x72\x6f\x73\x69\x74\x65\x73')</script><script>((window.gitter = {}).chat = {}).options = {
|
||||
room: 'vinyldns/Lobby'};</script><script src="https://sidecar.gitter.im/dist/sidecar.v1.js"></script><script src="/js/version-selector.js"></script></body></html>
|
@@ -1,29 +0,0 @@
|
||||
BSD 3-Clause License
|
||||
|
||||
Copyright (c) 2006, Ivan Sagalaev.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@@ -1,96 +0,0 @@
|
||||
/*
|
||||
|
||||
Atom One Light by Daniel Gamage
|
||||
Original One Light Syntax theme from https://github.com/atom/one-light-syntax
|
||||
|
||||
base: #fafafa
|
||||
mono-1: #383a42
|
||||
mono-2: #686b77
|
||||
mono-3: #a0a1a7
|
||||
hue-1: #0184bb
|
||||
hue-2: #4078f2
|
||||
hue-3: #a626a4
|
||||
hue-4: #50a14f
|
||||
hue-5: #e45649
|
||||
hue-5-2: #c91243
|
||||
hue-6: #986801
|
||||
hue-6-2: #c18401
|
||||
|
||||
*/
|
||||
|
||||
.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 0.5em;
|
||||
color: #383a42;
|
||||
background: #fafafa;
|
||||
}
|
||||
|
||||
.hljs-comment,
|
||||
.hljs-quote {
|
||||
color: #a0a1a7;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.hljs-doctag,
|
||||
.hljs-keyword,
|
||||
.hljs-formula {
|
||||
color: #a626a4;
|
||||
}
|
||||
|
||||
.hljs-section,
|
||||
.hljs-name,
|
||||
.hljs-selector-tag,
|
||||
.hljs-deletion,
|
||||
.hljs-subst {
|
||||
color: #e45649;
|
||||
}
|
||||
|
||||
.hljs-literal {
|
||||
color: #0184bb;
|
||||
}
|
||||
|
||||
.hljs-string,
|
||||
.hljs-regexp,
|
||||
.hljs-addition,
|
||||
.hljs-attribute,
|
||||
.hljs-meta-string {
|
||||
color: #50a14f;
|
||||
}
|
||||
|
||||
.hljs-built_in,
|
||||
.hljs-class .hljs-title {
|
||||
color: #c18401;
|
||||
}
|
||||
|
||||
.hljs-attr,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-type,
|
||||
.hljs-selector-class,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo,
|
||||
.hljs-number {
|
||||
color: #986801;
|
||||
}
|
||||
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-link,
|
||||
.hljs-meta,
|
||||
.hljs-selector-id,
|
||||
.hljs-title {
|
||||
color: #4078f2;
|
||||
}
|
||||
|
||||
.hljs-emphasis {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hljs-link {
|
||||
text-decoration: underline;
|
||||
}
|
BIN
img/favicon.png
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 761 B |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 8.1 KiB |
@@ -1,83 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="490px" height="321px" viewBox="0 0 490 321" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>header-image</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="header-image" transform="translate(-51.000000, -21.000000)">
|
||||
<rect id="Rectangle" opacity="0.0248093378" x="0" y="0" width="584" height="379"></rect>
|
||||
<g id="browser" transform="translate(53.000000, 23.000000)">
|
||||
<polygon id="path" stroke="#FFFFFF" stroke-width="5" fill-opacity="0.15" fill="#FFFFFF" fill-rule="nonzero" points="0.5 0.5 0.5 23.5 357.5 23.5 357.5 0.5"></polygon>
|
||||
<circle id="path" fill="#FFFFFF" fill-rule="nonzero" cx="13" cy="12" r="3"></circle>
|
||||
<circle id="path" fill="#FFFFFF" fill-rule="nonzero" cx="25" cy="12" r="3"></circle>
|
||||
<circle id="path" fill="#FFFFFF" fill-rule="nonzero" cx="37" cy="12" r="3"></circle>
|
||||
<polyline id="Path" stroke="#FFFFFF" stroke-width="5" points="357.5 111.535156 357.5 23.5 0.5 23.5 0.5 302.5 236.675781 302.5"></polyline>
|
||||
<g id="item" transform="translate(136.000000, 195.000000)" fill="#FFFFFF" fill-rule="nonzero">
|
||||
<rect id="path" stroke="#FFFFFF" stroke-width="5" fill-opacity="0.15" x="25.5" y="0.5" width="35" height="35"></rect>
|
||||
<rect id="path" x="0" y="48" width="86" height="5"></rect>
|
||||
<rect id="path" opacity="0.7" x="0" y="60" width="86" height="5"></rect>
|
||||
<rect id="path" opacity="0.4" x="13" y="72" width="60" height="5"></rect>
|
||||
</g>
|
||||
<g id="item" transform="translate(30.000000, 195.000000)" fill="#FFFFFF" fill-rule="nonzero">
|
||||
<rect id="path" stroke="#FFFFFF" stroke-width="5" fill-opacity="0.15" x="25.5" y="0.5" width="35" height="35"></rect>
|
||||
<rect id="path" x="0" y="48" width="86" height="5"></rect>
|
||||
<rect id="path" opacity="0.702776228" x="0" y="60" width="86" height="5"></rect>
|
||||
<rect id="path" opacity="0.4" x="13" y="72" width="60" height="5"></rect>
|
||||
</g>
|
||||
<g id="header" transform="translate(0.000000, 23.000000)">
|
||||
<polyline id="Path" stroke="#FFFFFF" stroke-width="5" points="237.15625 137.5 0.5 137.5 0.5 0.5 357.5 0.5 357.5 87.6933594"></polyline>
|
||||
<g id="text" transform="translate(30.000000, 29.000000)" fill="#FFFFFF" fill-rule="nonzero">
|
||||
<rect id="path" x="0" y="21" width="130" height="5"></rect>
|
||||
<rect id="path" x="0" y="7" width="130" height="5"></rect>
|
||||
<polyline id="Path" stroke="#FFFFFF" stroke-width="5" fill-opacity="0.15" points="207.060547 79.5 170.5 79.5 170.5 0.5 295.5 0.5 295.5 58.9960938"></polyline>
|
||||
<rect id="path" x="0" y="35" width="130" height="5"></rect>
|
||||
<rect id="path" x="0" y="49" width="130" height="5"></rect>
|
||||
<rect id="path" x="0" y="63" width="90" height="5"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="browser-doc" transform="translate(290.000000, 134.000000)">
|
||||
<polygon id="path" stroke="#FFFFFF" stroke-width="4" fill-rule="nonzero" points="0 16 249 16 249 0 0 0"></polygon>
|
||||
<circle id="path" fill="#FFFFFF" fill-rule="nonzero" cx="9" cy="8" r="2"></circle>
|
||||
<circle id="path" fill="#FFFFFF" fill-rule="nonzero" cx="17" cy="8" r="2"></circle>
|
||||
<circle id="path" fill="#FFFFFF" fill-rule="nonzero" cx="25" cy="8" r="2"></circle>
|
||||
<path d="M0,16 L0,205 C0,205.552285 0.44771525,206 1,206 L248,206 C248.552285,206 249,205.552285 249,205 L249,16 L0,16 Z" id="path" stroke="#FFFFFF" stroke-width="4" fill-rule="nonzero"></path>
|
||||
<polygon id="path" stroke="#FFFFFF" stroke-width="4" points="0 16 0 206 76 206 76 16"></polygon>
|
||||
<rect id="path" stroke="#FFFFFF" stroke-width="4" fill-rule="nonzero" x="0" y="16" width="76" height="28"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" x="10" y="25" width="11" height="11"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" x="26" y="28" width="39" height="4"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" opacity="0.3" x="9" y="63" width="58" height="4"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" opacity="0.3" x="9" y="54" width="58" height="4"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" x="9" y="72" width="58" height="4"></rect>
|
||||
<g id="code" transform="translate(90.000000, 30.000000)" fill="#FFFFFF" fill-rule="nonzero">
|
||||
<rect id="path" opacity="0.7" x="0" y="64" width="80" height="4"></rect>
|
||||
<rect id="path" opacity="0.4" x="0" y="154" width="80" height="4"></rect>
|
||||
<rect id="path" x="0" y="100" width="73" height="4"></rect>
|
||||
<rect id="path" opacity="0.4" x="0" y="136" width="45" height="4"></rect>
|
||||
<rect id="path" opacity="0.7" x="0" y="109" width="62" height="4"></rect>
|
||||
<rect id="path" opacity="0.7" x="0" y="145" width="107" height="4"></rect>
|
||||
<rect id="path" opacity="0.4" x="0" y="73" width="40" height="4"></rect>
|
||||
<rect id="path" opacity="0.4" x="0" y="118" width="128" height="4"></rect>
|
||||
<rect id="path" opacity="0.7" x="0" y="127" width="77" height="4"></rect>
|
||||
<rect id="path" opacity="0.7" x="0" y="91" width="114" height="4"></rect>
|
||||
<rect id="path" x="0" y="82" width="27" height="4"></rect>
|
||||
<rect id="path" opacity="0.7" x="0" y="0" width="124" height="4"></rect>
|
||||
<rect id="path" opacity="0.7" x="0" y="45" width="80" height="4"></rect>
|
||||
<rect id="path" x="0" y="36" width="45" height="4"></rect>
|
||||
<rect id="path" opacity="0.4" x="0" y="54" width="98" height="4"></rect>
|
||||
<rect id="path" opacity="0.4" x="0" y="9" width="57" height="4"></rect>
|
||||
<rect id="path" opacity="0.4" x="0" y="27" width="114" height="4"></rect>
|
||||
<rect id="path" x="0" y="18" width="27" height="4"></rect>
|
||||
</g>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" opacity="0.3" x="9" y="81" width="58" height="4"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" opacity="0.3" x="9" y="90" width="58" height="4"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" opacity="0.3" x="9" y="99" width="58" height="4"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" opacity="0.3" x="9" y="108" width="58" height="4"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" opacity="0.3" x="9" y="117" width="58" height="4"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" opacity="0.3" x="9" y="126" width="58" height="4"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" opacity="0.3" x="9" y="135" width="58" height="4"></rect>
|
||||
<rect id="path" fill="#FFFFFF" fill-rule="nonzero" opacity="0.3" x="9" y="144" width="58" height="4"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 7.5 KiB |
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="56px" height="56px" viewBox="0 0 56 56" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 57.1 (83088) - https://sketch.com -->
|
||||
<title>features01</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="features01" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(0.000000, 1.000000)">
|
||||
<path d="M1.5,17.5 L54.5,17.5 L54.5,3 C54.5,2.17157288 53.8284271,1.5 53,1.5 L3,1.5 C2.17157288,1.5 1.5,2.17157288 1.5,3 L1.5,17.5 Z" id="path" stroke="#02B4E5" stroke-width="3"></path>
|
||||
<path d="M1.5,17.5 L1.5,51 C1.5,51.8284271 2.17157288,52.5 3,52.5 L53,52.5 C53.8284271,52.5 54.5,51.8284271 54.5,51 L54.5,17.5 L1.5,17.5 Z" id="path" stroke="#02B4E5" stroke-width="3"></path>
|
||||
<path d="M29.5,24 C29.7761424,24 30,24.2238576 30,24.5 L30.0004318,26.5122698 C31.0531515,26.8844135 32.0159676,27.4468593 32.8475444,28.1582713 L34.5932667,27.1519238 C34.8324131,27.0138526 35.1382083,27.0957902 35.2762794,27.3349365 L37.7762794,31.6650635 C37.9143506,31.9042098 37.8324131,32.210005 37.5932667,32.3480762 L35.849989,33.3548835 C35.9485093,33.8882553 36,34.4381145 36,35 C36,35.5617948 35.9485259,36.1115671 35.8500367,36.644858 L37.5932667,37.6519238 C37.8324131,37.789995 37.9143506,38.0957902 37.7762794,38.3349365 L35.2762794,42.6650635 C35.1382083,42.9042098 34.8324131,42.9861474 34.5932667,42.8480762 L32.8478288,41.8414853 C32.0160518,42.5531282 31.052958,43.1157272 29.9999176,43.487912 L30,45.5 C30,45.7761424 29.7761424,46 29.5,46 L24.5,46 C24.2238576,46 24,45.7761424 24,45.5 L23.9995682,43.4877302 C22.9468485,43.1155865 21.9840324,42.5531407 21.1524556,41.8417287 L19.4067333,42.8480762 C19.1675869,42.9861474 18.8617917,42.9042098 18.7237206,42.6650635 L16.2237206,38.3349365 C16.0856494,38.0957902 16.1675869,37.789995 16.4067333,37.6519238 L18.150011,36.6451165 C18.0514907,36.1117447 18,35.5618855 18,35 C18,34.4381145 18.0514907,33.8882553 18.150011,33.3548835 L16.4067333,32.3480762 C16.1675869,32.210005 16.0856494,31.9042098 16.2237206,31.6650635 L18.7237206,27.3349365 C18.8617917,27.0957902 19.1675869,27.0138526 19.4067333,27.1519238 L21.1524556,28.1582713 C21.9840324,27.4468593 22.9468485,26.8844135 23.9995682,26.5122698 L24,24.5 C24,24.2238576 24.2238576,24 24.5,24 L29.5,24 Z M27,31 C24.790861,31 23,32.790861 23,35 C23,37.209139 24.790861,39 27,39 C29.209139,39 31,37.209139 31,35 C31,32.790861 29.209139,31 27,31 Z" id="path" fill="#02B4E5"></path>
|
||||
<rect id="path" fill="#02B4E5" opacity="0.3" x="18" y="3" width="35" height="13"></rect>
|
||||
<rect id="path" fill="#02B4E5" x="15" y="2" width="3" height="16"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 739 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1011 KiB |
Before Width: | Height: | Size: 1011 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300"><style>.st2{fill:none;stroke:#fff;stroke-width:5.1314}</style><path fill="#0085ff" d="M285.6 167.1v-34.2l-32.4-4.8a105 105 0 00-14.7-35.5L258 66.2 233.8 42l-26.3 19.5A105 105 0 00172 46.8l-4.8-32.4H133l-4.8 32.4a105 105 0 00-35.5 14.7L66.2 42 42 66.2l19.5 26.3A105 105 0 0046.8 128l-32.4 4.8V167l32.4 4.8a105 105 0 0014.7 35.5L42 233.8 66.2 258l26.3-19.5a105 105 0 0035.5 14.7l4.8 32.4H167l4.8-32.4a105 105 0 0035.5-14.7l26.3 19.5 24.2-24.2-19.5-26.3A105 105 0 00253 172l32.6-4.9z"/><circle cx="150" cy="150" r="90.2" fill="#1e232f" stroke="#fff" stroke-miterlimit="10" stroke-width="5.1"/><path fill="#fff" d="M150 123.1a26.8 26.8 0 100 53.8 26.8 26.8 0 100-53.8zm0 30.9a4 4 0 01-4-4c0-2.2 1.8-4 4-4s4 1.8 4 4a4 4 0 01-4 4z"/><path d="M106.4 165.9a47 47 0 0017 22.2M93.8 170.4a60 60 0 0021.8 28.5M81.2 175a75.5 75.5 0 0026.8 34.9M193.6 134.1a47 47 0 00-17-22.2M206.2 129.6a60 60 0 00-21.8-28.5M218.8 125A75.5 75.5 0 00192 90" class="st2"/></svg>
|
Before Width: | Height: | Size: 1008 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300"><style>.st2{fill:none;stroke:#fff;stroke-width:5.1314}</style><path fill="#0085ff" d="M285.6 167.1v-34.2l-32.4-4.8a105 105 0 00-14.7-35.5L258 66.2 233.8 42l-26.3 19.5A105 105 0 00172 46.8l-4.8-32.4H133l-4.8 32.4a105 105 0 00-35.5 14.7L66.2 42 42 66.2l19.5 26.3A105 105 0 0046.8 128l-32.4 4.8V167l32.4 4.8a105 105 0 0014.7 35.5L42 233.8 66.2 258l26.3-19.5a105 105 0 0035.5 14.7l4.8 32.4H167l4.8-32.4a105 105 0 0035.5-14.7l26.3 19.5 24.2-24.2-19.5-26.3A105 105 0 00253 172l32.6-4.9z"/><circle cx="150" cy="150" r="90.2" fill="#1e232f" stroke="#fff" stroke-miterlimit="10" stroke-width="5.1"/><path fill="#fff" d="M150 123.1a26.8 26.8 0 100 53.8 26.8 26.8 0 100-53.8zm0 30.9a4 4 0 01-4-4c0-2.2 1.8-4 4-4s4 1.8 4 4a4 4 0 01-4 4z"/><path d="M106.4 165.9a47 47 0 0017 22.2M93.8 170.4a60 60 0 0021.8 28.5M81.2 175a75.5 75.5 0 0026.8 34.9M193.6 134.1a47 47 0 00-17-22.2M206.2 129.6a60 60 0 00-21.8-28.5M218.8 125A75.5 75.5 0 00192 90" class="st2"/></svg>
|
Before Width: | Height: | Size: 1008 B |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 293 KiB |
Before Width: | Height: | Size: 245 KiB |
Before Width: | Height: | Size: 340 KiB |
Before Width: | Height: | Size: 274 KiB |
Before Width: | Height: | Size: 154 KiB |
Before Width: | Height: | Size: 345 KiB |
Before Width: | Height: | Size: 364 KiB |
Before Width: | Height: | Size: 405 KiB |
Before Width: | Height: | Size: 270 KiB |
Before Width: | Height: | Size: 154 KiB |
Before Width: | Height: | Size: 163 KiB |
Before Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 222 KiB |
Before Width: | Height: | Size: 240 KiB |
Before Width: | Height: | Size: 342 KiB |
Before Width: | Height: | Size: 233 KiB |
Before Width: | Height: | Size: 253 KiB |
Before Width: | Height: | Size: 284 KiB |
Before Width: | Height: | Size: 300 KiB |
Before Width: | Height: | Size: 163 KiB |
Before Width: | Height: | Size: 221 KiB |
Before Width: | Height: | Size: 346 KiB |
Before Width: | Height: | Size: 183 KiB |