Przeglądaj źródła

Feat: homepage update from rocket

Jonathan Kelley 4 lat temu
rodzic
commit
a61503f6cc

+ 2 - 0
.vscode/spellright.dict

@@ -16,3 +16,5 @@ Dodrio
 fc
 Jemalloc
 Cloudfare
+webapps
+downcasting

+ 5 - 4
README.md

@@ -11,12 +11,12 @@ Dioxus is a portable, performant, and ergonomic framework for building cross-pla
 
 ```rust
 static Example: FC<()> = |ctx| {
-    let (val1, set_val1) = use_state(&ctx, || "___?");
+    let (value, set_value) = use_state(&ctx, || "...?");
 
     ctx.view(html! {
         <div>
-            <button onclick={move |_| set_val1("world!")}> "world" </button>
-            <button onclick={move |_| set_val1("dioxus 🎉")}> "dioxus" </button>
+            <button onclick={move |_| set_value("world!")}> "world" </button>
+            <button onclick={move |_| set_value("dioxus 🎉")}> "dioxus" </button>
             <div>
                 <p> "Hello, {val1}" </p>
             </div>
@@ -24,7 +24,8 @@ static Example: FC<()> = |ctx| {
     })
 };
 ```
-The primary Dioxus crate is agnostic to platform and is meant to be configured with external renderers for getting content to the screen. We have built renderers for Dioxus to serve WebApps, Desktop Apps, static pages, liveview, Android, and iOS.
+Dioxus can be used to serve webapps, desktop apps, static pages, LiveView apps, Android apps, iOS Apps, and more. At its core,
+Dioxus is entirely renderer agnostic and has great documentation for creating new renderers for any platform.
 
 Dioxus is supported by Dioxus Labs, a company providing end-to-end services for building, testing, deploying, and managing Dioxus apps on all supported platforms, designed especially for your next startup. 
 

+ 0 - 0
docs/guides/00-index.md


+ 0 - 0
docs/guides/01-ssr.md


+ 0 - 0
docs/guides/02-wasm.md


+ 0 - 0
docs/guides/03-desktop.md


+ 89 - 1
docs/index.html

@@ -1 +1,89 @@
-hello world!
+<!doctype html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width"><title>Dioxus - Simple, Fast, Type-Safe Web Framework for Rust</title><meta name=description content="Dioxus is a web framework for the Rust
+      programming language that makes it simple to write fast web applications
+      without sacrificing flexibility or type safety."><meta name=author content="Sergio Benitez"><link href="https://fonts.googleapis.com/css?family=Proza+Libre:400,500" rel=stylesheet><link rel=stylesheet href=/v0.4/css/style.css media=all><link rel=icon type=image/png href=/v0.4/images/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/v0.4/images/favicon-16x16.png sizes=16x16><style media=screen>#logo{background-image:url(/v0.4/images/logo.svg)}@media(max-width:870px){#logo{background-image:url(/v0.4/images/logo-small.svg)}}input#search-input{background-image:url(/v0.4/images/search-icon.svg)}.cancel-search{background:url(/v0.4/images/cancel-icon.svg) no-repeat center}.admonition.note .title{background-image:url(/v0.4/images/pencil-icon.svg)}.admonition.tip .title{background-image:url(/v0.4/images/star-icon.svg)}.admonition.warning .title{background-image:url(/v0.4/images/warning-icon.svg)}</style></head><body><header><div id=clouds></div><div class=container><a id=logo href=/ ><span>Dioxus Homepage</span></a><nav class=version-select><span onclick=toggleOptions()>v0.4 <i></i></span><options><a href=/v0.3/ >v0.3</a> <a href=/master/ >master</a></options></nav><input type=checkbox id=toggle> <label for=toggle class=hamburger><span></span> <span></span> <span></span></label><nav class=main><a href=/v0.4/overview>overview</a> <a href=/v0.4/guide>guide</a> <a href=https://api.Dioxus.rs/v0.4/Dioxus>api</a> <a href=/v0.4/news>news</a> <a href=https://github.com/SergioBenitez/Dioxus/tree/v0.4>code</a></nav><div class="centered banner"><h1>Meet Dioxus.</h1><h2>Dioxus is a web framework for Rust that makes it simple to write <i>fast</i>, <b>secure</b> web applications without sacrificing flexibility, usability, or type safety.</h2><a href=/v0.4/guide class=button>Get Started</a> <a href=/v0.4/overview class="button inverted">Learn More</a></div><div class=grid><div class=col><hr></div><h4 class=col style=text-align:center;margin:0;padding:0>Latest Release: <a href=https://crates.io/crates/Dioxus/0.4.6>0.4.6 (Nov 09, 2020)</a></h4><div class=col><hr></div></div><br><div class="grid features"><div class="col centered"><img src=/v0.4/images/helmet.svg alt="Type Safe Icon (helmet)"><h3>Type Safe</h3><figcaption>From request to response Dioxus ensures that your types mean something.</figcaption><a class="button inverted small" href=/v0.4/overview/#how-Dioxus-works>Learn More</a></div><div class="col centered"><img src=/v0.4/images/robot-free.svg alt="Boilerplate Free Icon (robot-free)"><h3>Boilerplate Free</h3><figcaption>Spend your time writing code that really matters, and let Dioxus generate the rest.</figcaption><a class="button inverted small" href=/v0.4/overview/#anatomy-of-a-Dioxus-application>See Examples</a></div><div class="col centered"><img src=/v0.4/images/sun.svg alt="Easy To Use Icon (sun)" style=margin-top:2px><h3>Easy To Use</h3><figcaption>Simple, intuitive APIs make Dioxus approachable, no matter your background.</figcaption><a class="button inverted small" href=/v0.4/guide>Get Started</a></div><div class="col centered"><img src=/v0.4/images/telescope.svg alt="Extensible Icon (telescope)" style=margin-top:9px><h3>Extensible</h3><figcaption>Create your own first-class primitives that any Dioxus application can use.</figcaption><a class="button inverted small" href=/v0.4/overview/#anatomy-of-a-Dioxus-application>See How</a></div></div></div></header><a href=https://github.com/SergioBenitez/Dioxus/tree/v0.4 class=github-corner aria-label="View source on Github"><svg width=75 height=75 viewBox="0 0 250 250" style=fill:#fff;z-index:10;color:#151513;mix-blend-mode:screen;position:absolute;top:0;border:0;right:0 aria-hidden=true><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7
+       120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9
+       125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill=currentColor style="transform-origin:130px 106px" class=octo-arm></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6
+       C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0
+       C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1
+       C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4
+       C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9
+       C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5
+       C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9
+       L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill=currentColor class=octo-body></path></svg> </a><span></span><section class="grid mobile-reverse"><div class=container><div class="col left-main"><h3>Hello, Dioxus!</h3><hr><p>This is a <strong>complete Dioxus application</strong>. It does exactly what you would expect. If you were to visit <strong>http://localhost:8000/hello/John/58</strong>, you’d see:</p><p><span class=callout>Hello, 58 year old named John!</span></p><p>If someone visits a path with an <code>&lt;age></code> that isn’t a <code>u8</code>, Dioxus doesn’t blindly call <code>hello</code>. Instead, it tries other matching routes or returns a <strong>404</strong>.</p></div><div class="col right-main hl-dark"><table class="code hltable"><tr><td class=linenos><div class=linenodiv><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12</pre></div></td><td class=code><div class="code hl"><pre><span></span><span class=cp></span><span class=w></span>
+
+<span class=cp>#[macro_use]</span><span class=w> </span><span class=k>extern</span><span class=w> </span><span class=k>crate</span><span class=w> </span><span class=n>dioxus</span><span class=p>;</span><span class=w></span>
+
+<span class=cp>#[get(</span><span class=s>"/hello/&lt;name>/&lt;age>"</span><span class=cp>)]</span><span class=w></span>
+<span class=k>fn</span> <span class=nf>hello</span><span class=p>(</span><span class=n>name</span>: <span class=nb>String</span><span class=p>,</span><span class=w> </span><span class=n>age</span>: <span class=kt>u8</span><span class=p>)</span><span class=w> </span>-> <span class=nb>String</span> <span class=p>{</span><span class=w></span>
+<span class=w>    </span><span class=n>format</span><span class=o>!</span><span class=p>(</span><span class=s>"Hello, {} year old named {}!"</span><span class=p>,</span><span class=w> </span><span class=n>age</span><span class=p>,</span><span class=w> </span><span class=n>name</span><span class=p>)</span><span class=w></span>
+<span class=p>}</span><span class=w></span>
+
+<span class=k>fn</span> <span class=nf>main</span><span class=p>()</span><span class=w> </span><span class=p>{</span><span class=w></span>
+<span class=w>    </span><span class=n>Dioxus</span>::<span class=n>ignite</span><span class=p>().</span><span class=n>mount</span><span class=p>(</span><span class=s>"/"</span><span class=p>,</span><span class=w> </span><span class=n>routes</span><span class=o>!</span><span class=p>[</span><span class=n>hello</span><span class=p>]).</span><span class=n>launch</span><span class=p>();</span><span class=w></span>
+<span class=p>}</span><span class=w></span>
+</pre></div></td></tr></table></div></div></section><section class="grid mobile-reverse"><div class=container><div class="col left-main"><h3>Forms? Check!</h3><hr><p>Handling forms <strong>is simple and easy</strong>. Simply derive <code>FromForm</code> for your structure and let Dioxus know which parameter to use. Dioxus <strong>parses and validates</strong> the form request, creates the structure, and calls your function.</p><p>Bad form request? Dioxus doesn’t call your function! What if you want to know if the form was bad? Simple! Change the type of <code>task</code> to <code>Option</code> or <code>Result</code>!</p></div><div class="col right-main hl-light"><table class="code hltable"><tr><td class=linenos><div class=linenodiv><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14</pre></div></td><td class=code><div class="code hl"><pre><span></span><span class=cp>#[derive(FromForm)]</span><span class=w></span>
+<span class=k>struct</span> <span class=nc>Task</span><span class=w> </span><span class=p>{</span><span class=w></span>
+<span class=w>   </span><span class=n>description</span>: <span class=nb>String</span><span class=p>,</span><span class=w></span>
+<span class=w>   </span><span class=n>completed</span>: <span class=kt>bool</span>
+<span class=p>}</span><span class=w></span>
+
+<span class=cp>#[post(</span><span class=s>"/"</span><span class=cp>, data = </span><span class=s>"&lt;task>"</span><span class=cp>)]</span><span class=w></span>
+<span class=k>fn</span> <span class=nf>new</span><span class=p>(</span><span class=n>task</span>: <span class=nc>Form</span><span class=o>&lt;</span><span class=n>Task</span><span class=o>></span><span class=p>)</span><span class=w> </span>-> <span class=nc>Flash</span><span class=o>&lt;</span><span class=n>Redirect</span><span class=o>></span><span class=w> </span><span class=p>{</span><span class=w></span>
+<span class=w>    </span><span class=k>if</span><span class=w> </span><span class=n>task</span><span class=p>.</span><span class=n>description</span><span class=p>.</span><span class=n>is_empty</span><span class=p>()</span><span class=w> </span><span class=p>{</span><span class=w></span>
+<span class=w>        </span><span class=n>Flash</span>::<span class=n>error</span><span class=p>(</span><span class=n>Redirect</span>::<span class=n>to</span><span class=p>(</span><span class=s>"/"</span><span class=p>),</span><span class=w> </span><span class=s>"Cannot be empty."</span><span class=p>)</span><span class=w></span>
+<span class=w>    </span><span class=p>}</span><span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span><span class=w></span>
+<span class=w>        </span><span class=n>Flash</span>::<span class=n>success</span><span class=p>(</span><span class=n>Redirect</span>::<span class=n>to</span><span class=p>(</span><span class=s>"/"</span><span class=p>),</span><span class=w> </span><span class=s>"Task added."</span><span class=p>)</span><span class=w></span>
+<span class=w>    </span><span class=p>}</span><span class=w></span>
+<span class=p>}</span><span class=w></span>
+</pre></div></td></tr></table></div></div></section><section class="grid mobile-reverse"><div class=container><div class="col left-main"><h3>JSON, out of the box.</h3><hr><p>Dioxus has first-class support for JSON, right out of the box. Simply derive <code>Deserialize</code> or <code>Serialize</code> to receive or return JSON, respectively.</p><p>Like other important features, JSON works through Dioxus’s <code>FromData</code> trait, Dioxus’s approach to deriving types from body data. It works like this: specify a <code>data</code> route parameter of any type that implements <code>FromData</code>. A value of that type will then be created automatically from the incoming request body. Best of all, you can implement <code>FromData</code> for your types!</p></div><div class="col right-main hl-dark"><table class="code hltable"><tr><td class=linenos><div class=linenodiv><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14</pre></div></td><td class=code><div class="code hl"><pre><span></span><span class=cp>#[derive(Serialize, Deserialize)]</span><span class=w></span>
+<span class=k>struct</span> <span class=nc>Message</span><span class=w> </span><span class=p>{</span><span class=w></span>
+<span class=w>   </span><span class=n>contents</span>: <span class=nb>String</span><span class=p>,</span><span class=w></span>
+<span class=p>}</span><span class=w></span>
+
+<span class=cp>#[put(</span><span class=s>"/&lt;id>"</span><span class=cp>, data = </span><span class=s>"&lt;msg>"</span><span class=cp>)]</span><span class=w></span>
+<span class=k>fn</span> <span class=nf>update</span><span class=p>(</span><span class=n>db</span>: <span class=kp>&</span><span class=nc>Db</span><span class=p>,</span><span class=w> </span><span class=n>id</span>: <span class=nc>Id</span><span class=p>,</span><span class=w> </span><span class=n>msg</span>: <span class=nc>Json</span><span class=o>&lt;</span><span class=n>Message</span><span class=o>></span><span class=p>)</span><span class=w> </span>-> <span class=nc>JsonValue</span><span class=w> </span><span class=p>{</span><span class=w></span>
+<span class=w>    </span><span class=k>if</span><span class=w> </span><span class=n>db</span><span class=p>.</span><span class=n>contains_key</span><span class=p>(</span><span class=o>&</span><span class=n>id</span><span class=p>)</span><span class=w> </span><span class=p>{</span><span class=w></span>
+<span class=w>        </span><span class=n>db</span><span class=p>.</span><span class=n>insert</span><span class=p>(</span><span class=n>id</span><span class=p>,</span><span class=w> </span><span class=o>&</span><span class=n>msg</span><span class=p>.</span><span class=n>contents</span><span class=p>);</span><span class=w></span>
+<span class=w>        </span><span class=n>json</span><span class=o>!</span><span class=p>({</span><span class=w> </span><span class=s>"status"</span>: <span class=s>"ok"</span><span class=w> </span><span class=p>})</span><span class=w></span>
+<span class=w>    </span><span class=p>}</span><span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span><span class=w></span>
+<span class=w>        </span><span class=n>json</span><span class=o>!</span><span class=p>({</span><span class=w> </span><span class=s>"status"</span>: <span class=s>"error"</span><span class=w> </span><span class=p>})</span><span class=w></span>
+<span class=w>    </span><span class=p>}</span><span class=w></span>
+<span class=p>}</span><span class=w></span>
+</pre></div></td></tr></table></div></div></section><section class=centered><h1>Dioxus is ready to launch.</h1><a href=/v0.4/guide class=button>Get Started</a> <a href=/v0.4/overview class="button inverted">Learn More</a></section><section class=features><div class=container><div class=centered><h2>And so much more.</h2><h4>Essential features, built in.</h4></div><div class=grid><div class="col centered tight"><img src=/v0.4/images/templating-icon.svg alt="Templating Icon (templating-icon)"><h3 class=blue>Templating</h3><figcaption class=wide>Dioxus makes templating a breeze with built-in templating support.</figcaption><a class="button inverted small blue" href=/v0.4/guide/responses/#templates>Learn More</a></div><div class="col centered tight"><img src=/v0.4/images/cookies-icon.svg alt="Cookies Icon (cookies-icon)" style=margin-top:-6px><h3 class=purple>Cookies</h3><figcaption class=wide>View, add, or remove cookies, with or without encryption, without hassle.</figcaption><a class="button inverted small purple" href=/v0.4/guide/requests/#cookies>Learn More</a></div><div class="col centered tight"><img src=/v0.4/images/streams-icon.svg alt="Streams Icon (streams-icon)" style=margin-top:-29px><h3 class=red>Streams</h3><figcaption class=wide>Dioxus streams all incoming and outgoing data, so size isn't a concern.</figcaption><a class="button inverted small red" href=/v0.4/guide/requests/#streaming>Learn More</a></div></div><hr><div class=grid><div class="col centered tight"><img src=/v0.4/images/config-icon.svg alt="Config Environments Icon (config-icon)" style=margin-top:-3px><h3 class=yellow>Config Environments</h3><figcaption class=wide>Configure your application your way for development, staging, and production.</figcaption><a class="button inverted small yellow" href=/v0.4/guide/configuration/#environment>Learn More</a></div><div class="col centered tight"><img src=/v0.4/images/testing-icon.svg alt="Testing Library Icon (testing-icon)"><h3 class=orange>Testing Library</h3><figcaption class=wide>Unit test your applications with ease using the built-in testing library.</figcaption><a class="button inverted small orange" href=/v0.4/guide/testing#testing>Learn More</a></div><div class="col centered tight"><img src=/v0.4/images/ship-icon.svg alt="Typed URIs Icon (ship-icon)" style=margin-top:-20px><h3 class=green>Typed URIs</h3><figcaption class=wide>Dioxus typechecks route URIs for you so you never mistype a URI again.</figcaption><a class="button inverted small green" href=/v0.4/guide/responses/#typed-uris>Learn More</a></div></div></div></section><footer class=grid><div class=container><div class="col mobile-hide"><a href=https://sergio.bz>© 2016-2020 Sergio Benitez</a></div><div class="col centered"><img src=/v0.4/images/logo-small.svg alt="Small Dioxus Logo"></div><div class="col text-right mobile-hide"><a href=#>BACK TO TOP Δ</a></div></div></footer><script>function toggleOptions(){if(!(870<=screen.width)){var e=document.querySelector("nav.version-select options");e.style.display="none"===e.style.display?"block":"none"}}</script><script>function make_clouds(){for(var t=[{src:"/v0.4/images/cloud-0.png",className:"cloud back",style:{width:"254px",height:"159px",left:.4150208376753395,top:.8482790827243787,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-1.png",className:"cloud front",style:{width:"231px",height:"117px",left:.08151647217334701,top:.46384778619445943,transform:""}},{src:"/v0.4/images/cloud-2.png",className:"cloud front",style:{width:"66px",height:"37px",left:.748033557779848,top:.22765147586875178,transform:""}},{src:"/v0.4/images/cloud-0.png",className:"cloud front",style:{width:"114px",height:"71px",left:.9580076354609097,top:.5181917598421091,transform:""}},{src:"/v0.4/images/cloud-0.png",className:"cloud back",style:{width:"96px",height:"60px",left:.526598813402908,top:.828749451839631,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-0.png",className:"cloud front",style:{width:"72px",height:"45px",left:.43174032452284195,top:.03627323642266411,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-0.png",className:"cloud back",style:{width:"84px",height:"53px",left:.9296373513977365,top:.2143312531352375,transform:""}},{src:"/v0.4/images/cloud-1.png",className:"cloud front",style:{width:"157px",height:"79px",left:.8394192676334562,top:.06256812600484052,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-1.png",className:"cloud front",style:{width:"129px",height:"66px",left:.5289903611035771,top:.44941927870774023,transform:""}},{src:"/v0.4/images/cloud-2.png",className:"cloud front",style:{width:"191px",height:"107px",left:.5054580108916613,top:.21665631039514555,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-1.png",className:"cloud front",style:{width:"257px",height:"130px",left:.711964549651326,top:.9866528842991085,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-0.png",className:"cloud front",style:{width:"160px",height:"100px",left:.8804341424789892,top:.9525512115988461,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-0.png",className:"cloud front",style:{width:"189px",height:"118px",left:.11523417887783305,top:.21620306890331475,transform:""}},{src:"/v0.4/images/cloud-2.png",className:"cloud back",style:{width:"167px",height:"93px",left:.5745663098156899,top:.40474044003106946,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-2.png",className:"cloud back",style:{width:"211px",height:"118px",left:.640291368531211,top:.854708255363859,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-2.png",className:"cloud back",style:{width:"228px",height:"128px",left:.9868028690238078,top:.3390108865793462,transform:"scaleX(-1)"}}],p=document.getElementsByTagName("header")[0],e=document.getElementById("clouds"),s=Math.min(p.offsetHeight/750*t.length,t.length),l=0;l<s;l++){var a=t[l],c=document.createElement("img");Object.assign(c,a),Object.assign(c.style,a.style);var o=p.offsetWidth;c.style.left=o*a.style.left+"px";var r=p.offsetHeight;c.style.top=r*a.style.top+"px",e.appendChild(c)}var n=0,i=0,d=14,m=5,f=e.children;function h(t,e,s,l){var a=(e-s)/1e3*l;if(a<1)return!1;for(var c=0;c<f.length;c++){var o=f[c];if(o.className.includes(t)){var r=parseInt(o.style.left)-a,n=parseInt(o.style.width);if(r<-n){var i=p.offsetWidth;r=i- -(r+n)%i}o.style.left=r+"px"}}return!0}window.requestAnimationFrame(function t(e){e-Math.min(i,n)<50||(h("front",e,n,d)&&(n=e),h("back",e,i,m)&&(i=e)),window.requestAnimationFrame(t)})}make_clouds()</script></body></html>

+ 29 - 0
docs/posts/08-custom-renderer.md

@@ -1 +1,30 @@
 # Custom Renderer
+
+Dioxus is an incredibly portable framework for UI development. The lessons, knowledge, hooks, and components you acquire over time can always be used for future projects. However, sometimes those projects cannot leverage a supported renderer or you need to implement your own better renderer.
+
+Great news: the design of the renderer is entirely up to you! We provide suggestions and inspiration with the 1st party renderers, but provide no trait or explicit interface to follow. 
+
+Implementing the renderer is fairly straightforward. The renderer needs to:
+1. Handle the stream of edit events generated by updates to the virtual DOM
+2. Register listeners and pass events into the virtual DOM's event system
+3. Progress the virtual DOM with an async executor (or disable the suspense API and use `progress_sync`)
+
+Essentially, your renderer needs to understand the EditEvent type and provide a callback for injecting events. From there, you'll have everything needed to render the VirtualDOM to the screen.
+
+Internally, Dioxus handles the tree relationship, diffing, memory management, and the event system, leaving as little as possible required for renderers to implement themselves.
+
+For inspiration, check out the source code for the various renderers we support:
+- WebSys
+- Morph
+
+## Compatibility 
+
+Forewarning: not every hook and service will work on your platform. Dioxus wraps things that need to be cross-platform in "synthetic" types. However, downcasting to a native type might fail if the types don't match. 
+
+There are three opportunities for platform incompatibilities to break your program:
+1. When downcasting elements via `Ref.to_native<T>()`
+2. When downcasting events via `Event.to_native<T>()`
+3. Calling platform-specific APIs that don't exist
+
+The best hooks will properly detect the target platform and still provide functionality, failing gracefully when a platform is not supported. We encourage - and provide - an indication to the user on what platforms a hook supports. For issues 1 and 2, these return a result as to not cause panics on unsupported platforms. When designing your hooks, we recommend propagating this error upwards into user facing code, making it obvious that this particular service is not supported.
+

+ 91 - 0
docs/rocketsrchrome.htm

@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<!-- saved from url=(0018)https://rocket.rs/ -->
+<html><link type="text/css" rel="stylesheet" id="dark-mode-general-link"><link type="text/css" rel="stylesheet" id="dark-mode-custom-link"><style lang="en" type="text/css" id="dark-mode-custom-style"></style><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width"><title>Dioxus - Simple, Fast, Type-Safe Web Framework for Rust</title><meta name="description" content="Dioxus is a web framework for the Rust
+      programming language that makes it simple to write fast web applications
+      without sacrificing flexibility or type safety."><meta name="author" content="Sergio Benitez"><link href="./rocketsrchrome_files/css" rel="stylesheet"><link rel="stylesheet" href="./rocketsrchrome_files/style.css" media="all"><link rel="icon" type="image/png" href="https://rocket.rs/v0.4/images/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="https://rocket.rs/v0.4/images/favicon-16x16.png" sizes="16x16"><style media="screen">#logo{background-image:url(/v0.4/images/logo.svg)}@media(max-width:870px){#logo{background-image:url(/v0.4/images/logo-small.svg)}}input#search-input{background-image:url(/v0.4/images/search-icon.svg)}.cancel-search{background:url(/v0.4/images/cancel-icon.svg) no-repeat center}.admonition.note .title{background-image:url(/v0.4/images/pencil-icon.svg)}.admonition.tip .title{background-image:url(/v0.4/images/star-icon.svg)}.admonition.warning .title{background-image:url(/v0.4/images/warning-icon.svg)}</style></head><body><header><div id="clouds"><img src="./rocketsrchrome_files/cloud-0.png" class="cloud back" style="width: 254px; height: 159px; transform: scaleX(-1); left: 327.999px; top: 620.94px;"><img src="./rocketsrchrome_files/cloud-1.png" class="cloud front" style="width: 231px; height: 117px; left: -122.168px; top: 339.537px;"><img src="./rocketsrchrome_files/cloud-2.png" class="cloud front" style="width: 66px; height: 37px; left: 505.832px; top: 166.641px;"><img src="./rocketsrchrome_files/cloud-0.png" class="cloud front" style="width: 114px; height: 71px; left: 740.832px; top: 379.316px;"><img src="./rocketsrchrome_files/cloud-0.png" class="cloud back" style="width: 96px; height: 60px; transform: scaleX(-1); left: 452.999px; top: 606.645px;"><img src="./rocketsrchrome_files/cloud-0.png" class="cloud front" style="width: 72px; height: 45px; transform: scaleX(-1); left: 149.832px; top: 26.552px;"><img src="./rocketsrchrome_files/cloud-0.png" class="cloud back" style="width: 84px; height: 53px; left: 939.999px; top: 156.89px;"><img src="./rocketsrchrome_files/cloud-1.png" class="cloud front" style="width: 157px; height: 79px; transform: scaleX(-1); left: 607.832px; top: 45.7999px;"><img src="./rocketsrchrome_files/cloud-1.png" class="cloud front" style="width: 129px; height: 66px; left: 259.832px; top: 328.975px;"><img src="./rocketsrchrome_files/cloud-2.png" class="cloud front" style="width: 191px; height: 107px; transform: scaleX(-1); left: 232.832px; top: 158.592px;"><img src="./rocketsrchrome_files/cloud-1.png" class="cloud front" style="width: 257px; height: 130px; transform: scaleX(-1); left: 464.832px; top: 722.23px;"><img src="./rocketsrchrome_files/cloud-0.png" class="cloud front" style="width: 160px; height: 100px; transform: scaleX(-1); left: 653.832px; top: 697.267px;"><img src="./rocketsrchrome_files/cloud-0.png" class="cloud front" style="width: 189px; height: 118px; left: -103.168px; top: 158.261px;"><img src="./rocketsrchrome_files/cloud-2.png" class="cloud back" style="width: 167px; height: 93px; transform: scaleX(-1); left: 506.999px; top: 296.27px;"><img src="./rocketsrchrome_files/cloud-2.png" class="cloud back" style="width: 211px; height: 118px; transform: scaleX(-1); left: 580.999px; top: 625.646px;"><img src="./rocketsrchrome_files/cloud-2.png" class="cloud back" style="width: 228px; height: 128px; transform: scaleX(-1); left: 1034px; top: 248.156px;"></div><div class="container"><a id="logo" href="https://rocket.rs/"><span>Dioxus Homepage</span></a><nav class="version-select"><span onclick="toggleOptions()">v0.4 <i></i></span><options><a href="https://rocket.rs/v0.3/">v0.3</a> <a href="https://rocket.rs/master/">master</a></options></nav><input type="checkbox" id="toggle"> <label for="toggle" class="hamburger"><span></span> <span></span> <span></span></label><nav class="main"><a href="https://rocket.rs/v0.4/overview">overview</a> <a href="https://rocket.rs/v0.4/guide">guide</a> <a href="https://api.rocket.rs/v0.4/rocket">api</a> <a href="https://rocket.rs/v0.4/news">news</a> <a href="https://github.com/SergioBenitez/Dioxus/tree/v0.4">code</a></nav><div class="centered banner"><h1>Meet Dioxus.</h1><h2>Dioxus is a web framework for Rust that makes it simple to write <i>fast</i>, <b>secure</b> web applications without sacrificing flexibility, usability, or type safety.</h2><a href="https://rocket.rs/v0.4/guide" class="button">Get Started</a> <a href="https://rocket.rs/v0.4/overview" class="button inverted">Learn More</a></div><div class="grid"><div class="col"><hr></div><h4 class="col" style="text-align:center;margin:0;padding:0">Latest Release: <a href="https://crates.io/crates/rocket/0.4.6">0.4.6 (Nov 09, 2020)</a></h4><div class="col"><hr></div></div><br><div class="grid features"><div class="col centered"><img src="./rocketsrchrome_files/helmet.svg" alt="Type Safe Icon (helmet)"><h3>Type Safe</h3><figcaption>From request to response Dioxus ensures that your types mean something.</figcaption><a class="button inverted small" href="https://rocket.rs/v0.4/overview/#how-rocket-works">Learn More</a></div><div class="col centered"><img src="./rocketsrchrome_files/robot-free.svg" alt="Boilerplate Free Icon (robot-free)"><h3>Boilerplate Free</h3><figcaption>Spend your time writing code that really matters, and let Dioxus generate the rest.</figcaption><a class="button inverted small" href="https://rocket.rs/v0.4/overview/#anatomy-of-a-rocket-application">See Examples</a></div><div class="col centered"><img src="./rocketsrchrome_files/sun.svg" alt="Easy To Use Icon (sun)" style="margin-top:2px"><h3>Easy To Use</h3><figcaption>Simple, intuitive APIs make Dioxus approachable, no matter your background.</figcaption><a class="button inverted small" href="https://rocket.rs/v0.4/guide">Get Started</a></div><div class="col centered"><img src="./rocketsrchrome_files/telescope.svg" alt="Extensible Icon (telescope)" style="margin-top:9px"><h3>Extensible</h3><figcaption>Create your own first-class primitives that any Dioxus application can use.</figcaption><a class="button inverted small" href="https://rocket.rs/v0.4/overview/#anatomy-of-a-rocket-application">See How</a></div></div></div></header><a href="https://github.com/SergioBenitez/Dioxus/tree/v0.4" class="github-corner" aria-label="View source on Github"><svg width="75" height="75" viewBox="0 0 250 250" style="fill:#fff;z-index:10;color:#151513;mix-blend-mode:screen;position:absolute;top:0;border:0;right:0" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7
+       120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9
+       125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin:130px 106px" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6
+       C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0
+       C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1
+       C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4
+       C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9
+       C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5
+       C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9
+       L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg> </a><span></span><section class="grid mobile-reverse"><div class="container"><div class="col left-main"><h3>Hello, Dioxus!</h3><hr><p>This is a <strong>complete Dioxus application</strong>. It does exactly what you would expect. If you were to visit <strong>http://localhost:8000/hello/John/58</strong>, you’d see:</p><p><span class="callout">Hello, 58 year old named John!</span></p><p>If someone visits a path with an <code>&lt;age&gt;</code> that isn’t a <code>u8</code>, Dioxus doesn’t blindly call <code>hello</code>. Instead, it tries other matching routes or returns a <strong>404</strong>.</p></div><div class="col right-main hl-dark"><table class="code hltable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12</pre></div></td><td class="code"><div class="code hl"><pre><span></span><span class="cp">#![feature(proc_macro_hygiene, decl_macro)]</span><span class="w"></span>
+
+<span class="cp">#[macro_use]</span><span class="w"> </span><span class="k">extern</span><span class="w"> </span><span class="k">crate</span><span class="w"> </span><span class="n">rocket</span><span class="p">;</span><span class="w"></span>
+
+<span class="cp">#[get(</span><span class="s">"/hello/&lt;name&gt;/&lt;age&gt;"</span><span class="cp">)]</span><span class="w"></span>
+<span class="k">fn</span> <span class="nf">hello</span><span class="p">(</span><span class="n">name</span>: <span class="nb">String</span><span class="p">,</span><span class="w"> </span><span class="n">age</span>: <span class="kt">u8</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nb">String</span> <span class="p">{</span><span class="w"></span>
+<span class="w">    </span><span class="n">format</span><span class="o">!</span><span class="p">(</span><span class="s">"Hello, {} year old named {}!"</span><span class="p">,</span><span class="w"> </span><span class="n">age</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">)</span><span class="w"></span>
+<span class="p">}</span><span class="w"></span>
+
+<span class="k">fn</span> <span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w">    </span><span class="n">rocket</span>::<span class="n">ignite</span><span class="p">().</span><span class="n">mount</span><span class="p">(</span><span class="s">"/"</span><span class="p">,</span><span class="w"> </span><span class="n">routes</span><span class="o">!</span><span class="p">[</span><span class="n">hello</span><span class="p">]).</span><span class="n">launch</span><span class="p">();</span><span class="w"></span>
+<span class="p">}</span><span class="w"></span>
+</pre></div></td></tr></tbody></table></div></div></section><section class="grid mobile-reverse"><div class="container"><div class="col left-main"><h3>Forms? Check!</h3><hr><p>Handling forms <strong>is simple and easy</strong>. Simply derive <code>FromForm</code> for your structure and let Dioxus know which parameter to use. Dioxus <strong>parses and validates</strong> the form request, creates the structure, and calls your function.</p><p>Bad form request? Dioxus doesn’t call your function! What if you want to know if the form was bad? Simple! Change the type of <code>task</code> to <code>Option</code> or <code>Result</code>!</p></div><div class="col right-main hl-light"><table class="code hltable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14</pre></div></td><td class="code"><div class="code hl"><pre><span></span><span class="cp">#[derive(FromForm)]</span><span class="w"></span>
+<span class="k">struct</span> <span class="nc">Task</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w">   </span><span class="n">description</span>: <span class="nb">String</span><span class="p">,</span><span class="w"></span>
+<span class="w">   </span><span class="n">completed</span>: <span class="kt">bool</span>
+<span class="p">}</span><span class="w"></span>
+
+<span class="cp">#[post(</span><span class="s">"/"</span><span class="cp">, data = </span><span class="s">"&lt;task&gt;"</span><span class="cp">)]</span><span class="w"></span>
+<span class="k">fn</span> <span class="nf">new</span><span class="p">(</span><span class="n">task</span>: <span class="nc">Form</span><span class="o">&lt;</span><span class="n">Task</span><span class="o">&gt;</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nc">Flash</span><span class="o">&lt;</span><span class="n">Redirect</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="n">task</span><span class="p">.</span><span class="n">description</span><span class="p">.</span><span class="n">is_empty</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w">        </span><span class="n">Flash</span>::<span class="n">error</span><span class="p">(</span><span class="n">Redirect</span>::<span class="n">to</span><span class="p">(</span><span class="s">"/"</span><span class="p">),</span><span class="w"> </span><span class="s">"Cannot be empty."</span><span class="p">)</span><span class="w"></span>
+<span class="w">    </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w">        </span><span class="n">Flash</span>::<span class="n">success</span><span class="p">(</span><span class="n">Redirect</span>::<span class="n">to</span><span class="p">(</span><span class="s">"/"</span><span class="p">),</span><span class="w"> </span><span class="s">"Task added."</span><span class="p">)</span><span class="w"></span>
+<span class="w">    </span><span class="p">}</span><span class="w"></span>
+<span class="p">}</span><span class="w"></span>
+</pre></div></td></tr></tbody></table></div></div></section><section class="grid mobile-reverse"><div class="container"><div class="col left-main"><h3>JSON, out of the box.</h3><hr><p>Dioxus has first-class support for JSON, right out of the box. Simply derive <code>Deserialize</code> or <code>Serialize</code> to receive or return JSON, respectively.</p><p>Like other important features, JSON works through Dioxus’s <code>FromData</code> trait, Dioxus’s approach to deriving types from body data. It works like this: specify a <code>data</code> route parameter of any type that implements <code>FromData</code>. A value of that type will then be created automatically from the incoming request body. Best of all, you can implement <code>FromData</code> for your types!</p></div><div class="col right-main hl-dark"><table class="code hltable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14</pre></div></td><td class="code"><div class="code hl"><pre><span></span><span class="cp">#[derive(Serialize, Deserialize)]</span><span class="w"></span>
+<span class="k">struct</span> <span class="nc">Message</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w">   </span><span class="n">contents</span>: <span class="nb">String</span><span class="p">,</span><span class="w"></span>
+<span class="p">}</span><span class="w"></span>
+
+<span class="cp">#[put(</span><span class="s">"/&lt;id&gt;"</span><span class="cp">, data = </span><span class="s">"&lt;msg&gt;"</span><span class="cp">)]</span><span class="w"></span>
+<span class="k">fn</span> <span class="nf">update</span><span class="p">(</span><span class="n">db</span>: <span class="kp">&amp;</span><span class="nc">Db</span><span class="p">,</span><span class="w"> </span><span class="n">id</span>: <span class="nc">Id</span><span class="p">,</span><span class="w"> </span><span class="n">msg</span>: <span class="nc">Json</span><span class="o">&lt;</span><span class="n">Message</span><span class="o">&gt;</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nc">JsonValue</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="n">db</span><span class="p">.</span><span class="n">contains_key</span><span class="p">(</span><span class="o">&amp;</span><span class="n">id</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w">        </span><span class="n">db</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">msg</span><span class="p">.</span><span class="n">contents</span><span class="p">);</span><span class="w"></span>
+<span class="w">        </span><span class="n">json</span><span class="o">!</span><span class="p">({</span><span class="w"> </span><span class="s">"status"</span>: <span class="s">"ok"</span><span class="w"> </span><span class="p">})</span><span class="w"></span>
+<span class="w">    </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w">        </span><span class="n">json</span><span class="o">!</span><span class="p">({</span><span class="w"> </span><span class="s">"status"</span>: <span class="s">"error"</span><span class="w"> </span><span class="p">})</span><span class="w"></span>
+<span class="w">    </span><span class="p">}</span><span class="w"></span>
+<span class="p">}</span><span class="w"></span>
+</pre></div></td></tr></tbody></table></div></div></section><section class="centered"><h1>Dioxus is ready to launch.</h1><a href="https://rocket.rs/v0.4/guide" class="button">Get Started</a> <a href="https://rocket.rs/v0.4/overview" class="button inverted">Learn More</a></section><section class="features"><div class="container"><div class="centered"><h2>And so much more.</h2><h4>Essential features, built in.</h4></div><div class="grid"><div class="col centered tight"><img src="./rocketsrchrome_files/templating-icon.svg" alt="Templating Icon (templating-icon)"><h3 class="blue">Templating</h3><figcaption class="wide">Dioxus makes templating a breeze with built-in templating support.</figcaption><a class="button inverted small blue" href="https://rocket.rs/v0.4/guide/responses/#templates">Learn More</a></div><div class="col centered tight"><img src="./rocketsrchrome_files/cookies-icon.svg" alt="Cookies Icon (cookies-icon)" style="margin-top:-6px"><h3 class="purple">Cookies</h3><figcaption class="wide">View, add, or remove cookies, with or without encryption, without hassle.</figcaption><a class="button inverted small purple" href="https://rocket.rs/v0.4/guide/requests/#cookies">Learn More</a></div><div class="col centered tight"><img src="./rocketsrchrome_files/streams-icon.svg" alt="Streams Icon (streams-icon)" style="margin-top:-29px"><h3 class="red">Streams</h3><figcaption class="wide">Dioxus streams all incoming and outgoing data, so size isn't a concern.</figcaption><a class="button inverted small red" href="https://rocket.rs/v0.4/guide/requests/#streaming">Learn More</a></div></div><hr><div class="grid"><div class="col centered tight"><img src="./rocketsrchrome_files/config-icon.svg" alt="Config Environments Icon (config-icon)" style="margin-top:-3px"><h3 class="yellow">Config Environments</h3><figcaption class="wide">Configure your application your way for development, staging, and production.</figcaption><a class="button inverted small yellow" href="https://rocket.rs/v0.4/guide/configuration/#environment">Learn More</a></div><div class="col centered tight"><img src="./rocketsrchrome_files/testing-icon.svg" alt="Testing Library Icon (testing-icon)"><h3 class="orange">Testing Library</h3><figcaption class="wide">Unit test your applications with ease using the built-in testing library.</figcaption><a class="button inverted small orange" href="https://rocket.rs/v0.4/guide/testing#testing">Learn More</a></div><div class="col centered tight"><img src="./rocketsrchrome_files/ship-icon.svg" alt="Typed URIs Icon (ship-icon)" style="margin-top:-20px"><h3 class="green">Typed URIs</h3><figcaption class="wide">Dioxus typechecks route URIs for you so you never mistype a URI again.</figcaption><a class="button inverted small green" href="https://rocket.rs/v0.4/guide/responses/#typed-uris">Learn More</a></div></div></div></section><footer class="grid"><div class="container"><div class="col mobile-hide"><a href="https://sergio.bz/">© 2016-2020 Sergio Benitez</a></div><div class="col centered"><img src="./rocketsrchrome_files/logo-small.svg" alt="Small Dioxus Logo"></div><div class="col text-right mobile-hide"><a href="https://rocket.rs/#">BACK TO TOP Δ</a></div></div></footer><script>function toggleOptions(){if(!(870<=screen.width)){var e=document.querySelector("nav.version-select options");e.style.display="none"===e.style.display?"block":"none"}}</script><script>function make_clouds(){for(var t=[{src:"/v0.4/images/cloud-0.png",className:"cloud back",style:{width:"254px",height:"159px",left:.4150208376753395,top:.8482790827243787,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-1.png",className:"cloud front",style:{width:"231px",height:"117px",left:.08151647217334701,top:.46384778619445943,transform:""}},{src:"/v0.4/images/cloud-2.png",className:"cloud front",style:{width:"66px",height:"37px",left:.748033557779848,top:.22765147586875178,transform:""}},{src:"/v0.4/images/cloud-0.png",className:"cloud front",style:{width:"114px",height:"71px",left:.9580076354609097,top:.5181917598421091,transform:""}},{src:"/v0.4/images/cloud-0.png",className:"cloud back",style:{width:"96px",height:"60px",left:.526598813402908,top:.828749451839631,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-0.png",className:"cloud front",style:{width:"72px",height:"45px",left:.43174032452284195,top:.03627323642266411,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-0.png",className:"cloud back",style:{width:"84px",height:"53px",left:.9296373513977365,top:.2143312531352375,transform:""}},{src:"/v0.4/images/cloud-1.png",className:"cloud front",style:{width:"157px",height:"79px",left:.8394192676334562,top:.06256812600484052,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-1.png",className:"cloud front",style:{width:"129px",height:"66px",left:.5289903611035771,top:.44941927870774023,transform:""}},{src:"/v0.4/images/cloud-2.png",className:"cloud front",style:{width:"191px",height:"107px",left:.5054580108916613,top:.21665631039514555,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-1.png",className:"cloud front",style:{width:"257px",height:"130px",left:.711964549651326,top:.9866528842991085,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-0.png",className:"cloud front",style:{width:"160px",height:"100px",left:.8804341424789892,top:.9525512115988461,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-0.png",className:"cloud front",style:{width:"189px",height:"118px",left:.11523417887783305,top:.21620306890331475,transform:""}},{src:"/v0.4/images/cloud-2.png",className:"cloud back",style:{width:"167px",height:"93px",left:.5745663098156899,top:.40474044003106946,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-2.png",className:"cloud back",style:{width:"211px",height:"118px",left:.640291368531211,top:.854708255363859,transform:"scaleX(-1)"}},{src:"/v0.4/images/cloud-2.png",className:"cloud back",style:{width:"228px",height:"128px",left:.9868028690238078,top:.3390108865793462,transform:"scaleX(-1)"}}],p=document.getElementsByTagName("header")[0],e=document.getElementById("clouds"),s=Math.min(p.offsetHeight/750*t.length,t.length),l=0;l<s;l++){var a=t[l],c=document.createElement("img");Object.assign(c,a),Object.assign(c.style,a.style);var o=p.offsetWidth;c.style.left=o*a.style.left+"px";var r=p.offsetHeight;c.style.top=r*a.style.top+"px",e.appendChild(c)}var n=0,i=0,d=14,m=5,f=e.children;function h(t,e,s,l){var a=(e-s)/1e3*l;if(a<1)return!1;for(var c=0;c<f.length;c++){var o=f[c];if(o.className.includes(t)){var r=parseInt(o.style.left)-a,n=parseInt(o.style.width);if(r<-n){var i=p.offsetWidth;r=i- -(r+n)%i}o.style.left=r+"px"}}return!0}window.requestAnimationFrame(function t(e){e-Math.min(i,n)<50||(h("front",e,n,d)&&(n=e),h("back",e,i,m)&&(i=e)),window.requestAnimationFrame(t)})}make_clouds()</script></body></html>

BIN
docs/rocketsrchrome_files/cloud-0.png


BIN
docs/rocketsrchrome_files/cloud-1.png


BIN
docs/rocketsrchrome_files/cloud-2.png


+ 1 - 0
docs/rocketsrchrome_files/config-icon.svg

@@ -0,0 +1 @@
+<svg width="57" height="57" xmlns="http://www.w3.org/2000/svg"><g fill="#FFF" fill-rule="evenodd"><path d="M28.44 49.58v-1a20.07 20.07 0 0 1-14.23-5.9 20.07 20.07 0 0 1 0-28.47 20.07 20.07 0 0 1 28.47 0 20.08 20.08 0 0 1 0 28.47 20.07 20.07 0 0 1-14.24 5.9v2a22.16 22.16 0 0 0 22.14-22.14c0-12.2-9.93-22.13-22.14-22.14A22.16 22.16 0 0 0 6.3 28.44a22.16 22.16 0 0 0 22.14 22.14v-1"/><path d="M28.44 55.89v-1c-7.29 0-13.9-2.97-18.69-7.76a26.36 26.36 0 0 1 0-37.38 26.36 26.36 0 0 1 37.38 0 26.36 26.36 0 0 1 0 37.38 26.35 26.35 0 0 1-18.69 7.76v2a28.47 28.47 0 0 0 28.44-28.45A28.47 28.47 0 0 0 28.44 0 28.47 28.47 0 0 0 0 28.44 28.47 28.47 0 0 0 28.44 56.9v-1"/><path d="M43.04 28.44h-1 .03-.03.03-.03l-.02.05a1.66 1.66 0 0 1-.27.37c-.21.25-.53.54-.85.88a4.5 4.5 0 0 0-.46.57 2.4 2.4 0 0 0-.35.8 2.25 2.25 0 0 0-.06.5c0 .34.07.64.14.91.11.42.26.79.37 1.1.1.32.16.58.15.68v.05l.08.03-.08-.04v.01l.08.03-.08-.04.03.02-.02-.02.02.02-.02-.02s-.09.08-.27.17c-.27.13-.7.27-1.18.44a5.07 5.07 0 0 0-.74.33 2.49 2.49 0 0 0-.73.6c-.31.4-.43.82-.51 1.2-.12.56-.14 1.1-.2 1.49a2.05 2.05 0 0 1-.11.43l-.04.07.03.05-.03-.05.03.05-.03-.05.04.06-.03-.06h-.01l.04.06-.03-.06s-.12.04-.32.04a7.04 7.04 0 0 1-.78-.07c-.3-.03-.64-.07-1-.07-.37 0-.78.03-1.2.24a2.6 2.6 0 0 0-.98.85c-.35.45-.6.92-.82 1.24a2.1 2.1 0 0 1-.29.34l-.07.06v.04-.04.04-.04l.01.06v-.06h-.01l.01.06v-.06a.89.89 0 0 1-.3-.1c-.27-.14-.65-.4-1.08-.66a5.08 5.08 0 0 0-.73-.36 2.55 2.55 0 0 0-.93-.2c-.47 0-.85.15-1.19.3-.49.25-.9.54-1.24.74l-.43.23a.58.58 0 0 1-.18.05v.06l.02-.06h-.02v.06l.02-.06-.02.05.02-.05-.02.05.02-.05c-.03-.02-.14-.1-.26-.26-.2-.25-.42-.64-.69-1.05a4.94 4.94 0 0 0-.48-.63 2.47 2.47 0 0 0-.73-.55c-.43-.2-.83-.24-1.2-.24-.36 0-.7.04-1 .07a7.28 7.28 0 0 1-.78.07 1.21 1.21 0 0 1-.28-.03l-.04-.01-.04.06.05-.06h-.01l-.04.06.05-.06-.03.03.03-.02-.03.02.03-.02s-.06-.1-.1-.3c-.08-.29-.1-.75-.18-1.25a5.18 5.18 0 0 0-.16-.8 2.5 2.5 0 0 0-.43-.84c-.32-.4-.7-.6-1.04-.77-.53-.23-1.04-.37-1.4-.52a2.06 2.06 0 0 1-.4-.2l-.07-.06-.04.02.04-.02-.04.02.04-.02-.07.04.08-.03-.08.03.08-.03h-.02.02-.02.02v-.05a1.6 1.6 0 0 1 .06-.38c.07-.27.2-.61.33-1 .13-.38.26-.8.26-1.31 0-.16-.01-.33-.05-.5-.12-.5-.37-.85-.61-1.15-.37-.43-.77-.78-1.03-1.07a2 2 0 0 1-.27-.36l-.04-.08v-.01h-.02.02-.02.02-.04.04-.04.04l.02-.05a1.65 1.65 0 0 1 .26-.37c.22-.24.54-.53.85-.87.16-.17.32-.36.47-.58a2.18 2.18 0 0 0 .4-1.29 3.51 3.51 0 0 0-.14-.92c-.1-.41-.26-.78-.36-1.1-.1-.32-.16-.58-.16-.68v-.05l-.07-.02.07.03-.07-.03.07.03-.03-.01.03.02-.03-.02.03.02s.08-.09.26-.17c.27-.14.71-.27 1.19-.45a5.06 5.06 0 0 0 .73-.33c.25-.14.51-.33.73-.6.32-.4.44-.82.52-1.2.11-.56.14-1.09.2-1.48.03-.2.07-.35.11-.43l.04-.08-.04-.04.04.04-.04-.04.04.04-.05-.06.04.07-.04-.07.04.07a.92.92 0 0 1 .32-.04c.2 0 .47.03.78.06.3.04.64.08 1 .08.37 0 .77-.04 1.2-.24.46-.23.74-.55.98-.85.34-.46.59-.93.82-1.25.11-.16.21-.28.28-.34l.07-.05h.01l-.01-.04v.04h.01l-.01-.04v.04-.07.07-.07.07a.89.89 0 0 1 .29.1c.27.13.65.4 1.09.65.22.13.45.26.72.37.27.1.58.19.93.19.47 0 .86-.15 1.2-.3.48-.24.9-.54 1.24-.74.17-.1.32-.18.43-.22a.58.58 0 0 1 .17-.05v-.07l-.01.06h.01v-.06l-.01.06.01-.04-.02.04.02-.04-.02.04h.01c.03.02.13.1.26.27.2.24.41.64.68 1.05.14.2.3.41.48.62.2.2.42.4.73.56.43.2.84.24 1.2.24.37 0 .7-.04 1-.08.31-.03.59-.06.79-.06l.27.02.04.02.04-.07-.04.06.04-.05-.04.05.03-.03-.04.03h.01l.03-.03-.04.03s.07.1.11.3c.07.28.1.75.17 1.25.03.25.08.51.16.79.09.27.21.57.43.85.32.39.7.6 1.05.76.52.24 1.03.37 1.4.53a2 2 0 0 1 .4.2l.06.05.05-.02-.05.02.05-.02-.05.02.08-.03-.08.02v.01l.08-.03-.08.02h.01-.01.01-.01v.05c0 .07-.02.2-.06.39l-.34 1c-.12.38-.25.8-.26 1.3 0 .17.02.34.06.51.12.5.37.84.6 1.14.38.44.78.78 1.04 1.08a2 2 0 0 1 .27.35l.03.08v.01h.03-.02.02-.02 2a2.07 2.07 0 0 0-.14-.74 3.24 3.24 0 0 0-.6-.94c-.32-.37-.66-.68-.9-.95a2.8 2.8 0 0 1-.29-.33.53.53 0 0 1-.07-.14v-.06a1.61 1.61 0 0 1 .06-.4c.07-.27.2-.61.33-.99s.26-.8.26-1.3c0-.29-.05-.6-.2-.92a2.04 2.04 0 0 0-.45-.6c-.3-.28-.62-.45-.93-.58-.46-.2-.9-.33-1.23-.46a2.83 2.83 0 0 1-.4-.18.52.52 0 0 1-.14-.1 1 1 0 0 1-.12-.35c-.07-.34-.1-.85-.18-1.4a3.94 3.94 0 0 0-.23-.87 2.15 2.15 0 0 0-.64-.88 2.08 2.08 0 0 0-.81-.39 3.16 3.16 0 0 0-.75-.08c-.37 0-.7.04-1 .07a7.43 7.43 0 0 1-.79.07.89.89 0 0 1-.33-.04s-.11-.08-.25-.26c-.21-.28-.46-.73-.78-1.19a3.93 3.93 0 0 0-.59-.68 2.17 2.17 0 0 0-.96-.52 1.89 1.89 0 0 0-.43-.04c-.47 0-.85.15-1.17.3-.48.24-.89.53-1.23.73-.17.1-.32.18-.44.23a.62.62 0 0 1-.2.05.9.9 0 0 1-.32-.1c-.28-.14-.66-.4-1.09-.66a5.13 5.13 0 0 0-.7-.36 2.47 2.47 0 0 0-.93-.2c-.14 0-.28.02-.43.06a2.05 2.05 0 0 0-.69.3 3.25 3.25 0 0 0-.78.78c-.3.4-.51.8-.72 1.1l-.26.35a.54.54 0 0 1-.13.1c0 .01-.12.05-.33.05a7.28 7.28 0 0 1-.78-.07c-.3-.03-.64-.07-1-.07-.24 0-.49.02-.75.08a2.08 2.08 0 0 0-.81.39 2.04 2.04 0 0 0-.5.57c-.2.36-.28.71-.35 1.04-.09.49-.11.95-.17 1.3a2.77 2.77 0 0 1-.09.43.53.53 0 0 1-.07.16s-.1.1-.31.2c-.32.14-.81.28-1.33.48a3.93 3.93 0 0 0-.8.42 2.15 2.15 0 0 0-.71.82 2.08 2.08 0 0 0-.2.91c0 .34.07.64.14.91.11.41.26.78.36 1.1.11.31.17.58.16.69v.06l-.04.08a2.54 2.54 0 0 1-.35.43c-.26.27-.6.58-.93.97a3.4 3.4 0 0 0-.45.68 2.15 2.15 0 0 0-.23.94 2 2 0 0 0 .14.75c.15.38.37.67.59.93.32.38.67.69.92.95.12.13.21.25.27.34a.53.53 0 0 1 .08.14v.06a1.6 1.6 0 0 1-.07.4c-.07.26-.2.6-.33.98-.12.39-.25.8-.26 1.31a2.02 2.02 0 0 0 .65 1.52c.3.28.63.44.93.58.46.2.9.32 1.24.45.17.07.3.13.4.19a.54.54 0 0 1 .13.1c.01 0 .08.12.12.35.07.33.1.85.19 1.4.04.27.1.56.23.87a2.08 2.08 0 0 0 1.45 1.27c.26.06.51.07.75.07.36 0 .7-.04 1-.07.3-.04.58-.07.78-.06.2 0 .32.03.33.04 0 0 .12.07.25.26.22.27.46.72.78 1.18.16.23.35.47.6.68a1.99 1.99 0 0 0 1.39.56c.46 0 .84-.14 1.16-.3.49-.24.9-.53 1.24-.73.17-.1.32-.18.43-.22a.63.63 0 0 1 .2-.06.9.9 0 0 1 .33.11c.28.13.65.4 1.08.65.22.13.45.26.71.36.27.1.57.2.92.2a2.01 2.01 0 0 0 1.13-.36c.34-.23.57-.5.77-.77.3-.4.52-.81.72-1.11.1-.15.2-.27.27-.35a.53.53 0 0 1 .12-.1.72.72 0 0 1 .33-.04c.2 0 .48.02.78.06.3.03.64.07 1 .07.24 0 .5-.01.76-.08a2.06 2.06 0 0 0 1.3-.96c.2-.36.29-.7.35-1.04.1-.48.12-.94.17-1.3.03-.18.06-.33.1-.43a.53.53 0 0 1 .06-.16s.1-.1.32-.19c.31-.14.8-.28 1.32-.49.26-.1.53-.23.8-.42.26-.19.54-.45.71-.82a2.07 2.07 0 0 0 .2-.9 3.5 3.5 0 0 0-.14-.92c-.1-.41-.26-.78-.36-1.1a3 3 0 0 1-.16-.68v-.07l.05-.08c.05-.1.17-.25.35-.43.25-.27.6-.58.93-.97.16-.2.32-.4.45-.68.13-.26.23-.58.23-.94h-1m-30.5-21a2.6 2.6 0 1 1-5.2 0 2.6 2.6 0 0 1 5.2 0m29.75 39a3.35 3.35 0 1 1-6.7 0 3.35 3.35 0 0 1 6.7 0"/></g></svg>

+ 1 - 0
docs/rocketsrchrome_files/cookies-icon.svg

@@ -0,0 +1 @@
+<svg width="72" height="58" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path d="M51.1 35.7a3 3 0 0 1-2.8-3c0-.4 0-.8.2-1.1l.4-1-1-.3a5.1 5.1 0 0 1-3.3-4.8l.1-1.1.3-1.2h-1.4a4.6 4.6 0 0 1-4.6-4.6V17l-1.2.4a3.2 3.2 0 0 1-1.1.2 3.3 3.3 0 0 1-3.3-3.2c0-.6.2-1.2.5-1.7l.7-1-1.2-.4a26 26 0 0 0-7.4-1 26 26 0 1 0 26 26.3v-.9h-.9z" id="b"/><filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="a"><feOffset dx="2" in="SourceAlpha" result="shadowOffsetOuter1"/><feGaussianBlur stdDeviation=".5" in="shadowOffsetOuter1" result="shadowBlurOuter1"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0" in="shadowBlurOuter1"/></filter></defs><g fill="none" fill-rule="evenodd"><g transform="rotate(14 33.7 105.7)" fill="#FFF"><path d="M51.1 25.4a3 3 0 0 1-2.8-3c0-.3 0-.7.2-1l.4-1-1-.3a5.1 5.1 0 0 1-3.3-4.8l.1-1.2.3-1.1h-1.4A4.6 4.6 0 0 1 39 8.4V6.8l-1.2.4a3.2 3.2 0 0 1-1.1.2 3.3 3.3 0 0 1-3.3-3.2c0-.6.2-1.2.5-1.7l.7-1-1.2-.4A26 26 0 0 0 26 0a26 26 0 1 0 26 26.4v-1h-.9zM26 50.1c-7.5 0-14.3-3.4-18.7-8.9a3.2 3.2 0 1 0 .3-6.3 3.2 3.2 0 0 0-3 2.2 24 24 0 0 1-2.7-10.7 2 2 0 0 0 2 1.5 2 2 0 0 0 0-4.1 2 2 0 0 0-2 1.5 24.2 24.2 0 0 1 19.4-23l-.2 1a2.2 2.2 0 1 0 4.4 0 2.2 2.2 0 0 0-.5-1.4h1c2 0 4 .2 5.8.7a5 5 0 0 0-.2 1.6 5.1 5.1 0 0 0 5 5h.6a6.5 6.5 0 0 0 5.5 5.6 6.5 6.5 0 0 0 0 .5 7 7 0 0 0 3.8 6.2 4.8 4.8 0 0 0 3.6 5.7 24.2 24.2 0 0 1-24.1 23z" stroke="#FFF"/><ellipse cx="14.5" cy="11.4" rx="2" ry="2"/><ellipse cx="27.9" cy="14.1" rx="2.9" ry="2.9"/><ellipse cx="15.5" cy="21.6" rx="3.1" ry="3.1"/><circle cx="26.5" cy="29.5" r="3.8"/><ellipse cx="34" cy="42.5" rx="2.3" ry="2.3"/><ellipse cx="41.6" cy="32.9" rx="2" ry="2"/><circle cx="20.8" cy="41.7" r="2.6"/><ellipse cx="39.1" cy="20.7" rx="2" ry="2"/></g><g transform="translate(0 -6)"><use fill="#000" filter="url(#a)" xlink:href="#b"/><use fill="#282828" xlink:href="#b"/></g><g transform="translate(1.9 4.2)" fill="#FFF" stroke="#FFF"><path d="M51.1 25.4a3 3 0 0 1-2.8-3c0-.3 0-.7.2-1l.4-1-1-.3a5.1 5.1 0 0 1-3.3-4.8l.1-1.2.3-1.1h-1.4A4.6 4.6 0 0 1 39 8.4V6.8l-1.2.4a3.2 3.2 0 0 1-1.1.2 3.3 3.3 0 0 1-3.3-3.2c0-.6.2-1.2.5-1.7l.7-1-1.2-.4A26 26 0 0 0 26 0a26 26 0 1 0 26 26.4v-1h-.9zM26 50.1c-7.5 0-14.3-3.4-18.7-8.9a3.2 3.2 0 1 0 .3-6.3 3.2 3.2 0 0 0-3 2.2 24 24 0 0 1-2.7-10.7 2 2 0 0 0 2 1.5 2 2 0 0 0 0-4.1 2 2 0 0 0-2 1.5 24.2 24.2 0 0 1 19.4-23l-.2 1a2.2 2.2 0 1 0 4.4 0 2.2 2.2 0 0 0-.5-1.4h1c2 0 4 .2 5.8.7a5 5 0 0 0-.2 1.6 5.1 5.1 0 0 0 5 5h.6a6.5 6.5 0 0 0 5.5 5.6 6.5 6.5 0 0 0 0 .5 7 7 0 0 0 3.8 6.2 4.8 4.8 0 0 0 3.6 5.7 24.2 24.2 0 0 1-24.1 23z"/><ellipse cx="14.5" cy="11.4" rx="2" ry="2"/><ellipse cx="27.9" cy="14.1" rx="2.9" ry="2.9"/><ellipse cx="15.5" cy="21.6" rx="3.1" ry="3.1"/><ellipse cx="26.5" cy="29.5" rx="3.8" ry="3.8"/><ellipse cx="34" cy="42.5" rx="2.3" ry="2.3"/><ellipse cx="41.6" cy="32.9" rx="2" ry="2"/><ellipse cx="20.8" cy="41.7" rx="2.6" ry="2.6"/><ellipse cx="39.1" cy="20.7" rx="2" ry="2"/></g></g></svg>

+ 32 - 0
docs/rocketsrchrome_files/css

@@ -0,0 +1,32 @@
+/* latin-ext */
+@font-face {
+  font-family: 'Proza Libre';
+  font-style: normal;
+  font-weight: 400;
+  src: url(https://fonts.gstatic.com/s/prozalibre/v5/LYjGdGHgj0k1DIQRyUEyyEomdNr1Wpyyzzc.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Proza Libre';
+  font-style: normal;
+  font-weight: 400;
+  src: url(https://fonts.gstatic.com/s/prozalibre/v5/LYjGdGHgj0k1DIQRyUEyyEoodNr1Wpyy.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Proza Libre';
+  font-style: normal;
+  font-weight: 500;
+  src: url(https://fonts.gstatic.com/s/prozalibre/v5/LYjbdGHgj0k1DIQRyUEyyELbV8_WeJGY9T6Mh1k.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Proza Libre';
+  font-style: normal;
+  font-weight: 500;
+  src: url(https://fonts.gstatic.com/s/prozalibre/v5/LYjbdGHgj0k1DIQRyUEyyELbV8_YeJGY9T6M.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}

+ 1 - 0
docs/rocketsrchrome_files/helmet.svg

@@ -0,0 +1 @@
+<svg width="69" height="71" xmlns="http://www.w3.org/2000/svg"><defs><filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="a"><feOffset dy="1" in="SourceAlpha" result="shadowOffsetOuter1"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1"/><feMerge><feMergeNode in="shadowMatrixOuter1"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs><g filter="url(#a)" fill="#FFF" fill-rule="evenodd"><path d="M61 41.5h-1.2v.2c0 3.7 0 7.1-.4 10.2a20 20 0 0 1-1.7 6.1 12.3 12.3 0 0 1-2.7 3.6 17 17 0 0 1-7.3 3.9c-3.3 1-7.6 1.4-13.1 1.4-6.5 0-11.4-.7-14.9-2-2.6-1-4.6-2.2-6-3.7a16 16 0 0 1-2.5-3.7c-.9-2.1-1.3-4.6-1.6-7.3-.2-2.7-.2-5.6-.2-8.7a25.5 25.5 0 0 1 7.4-18 25 25 0 0 1 35.6 0 25.5 25.5 0 0 1 7.4 18h2.5c0-15.5-12.4-28-27.7-28a27.9 27.9 0 0 0-27.8 28c0 3.7 0 7.2.5 10.5.3 2.5.8 4.9 1.9 7a15 15 0 0 0 3.1 4.4c2 2 4.8 3.5 8.5 4.5 3.6 1 8.1 1.6 13.8 1.6a47 47 0 0 0 15.7-2.2c3-1 5.2-2.5 7-4.2 1.2-1.4 2.2-2.9 2.9-4.5 1-2.4 1.6-5.1 1.9-8 .2-2.8.2-5.8.2-8.9v-.2h-1.2"/><path d="M61 41.5h-1.2v.2c0 3.7 0 7.1-.4 10.2a20 20 0 0 1-1.7 6.1 12.3 12.3 0 0 1-2.7 3.6 17 17 0 0 1-7.3 3.9c-3.3 1-7.6 1.4-13.1 1.4-6.5 0-11.4-.7-14.9-2-2.6-1-4.6-2.2-6-3.7a16 16 0 0 1-2.5-3.7c-.9-2.1-1.3-4.6-1.6-7.3-.2-2.7-.2-5.6-.2-8.7a25.5 25.5 0 0 1 7.4-18 25 25 0 0 1 35.6 0 25.5 25.5 0 0 1 7.4 18h2.5c0-15.5-12.4-28-27.7-28a27.9 27.9 0 0 0-27.8 28c0 3.7 0 7.2.5 10.5.3 2.5.8 4.9 1.9 7a15 15 0 0 0 3.1 4.4c2 2 4.8 3.5 8.5 4.5 3.6 1 8.1 1.6 13.8 1.6a47 47 0 0 0 15.7-2.2c3-1 5.2-2.5 7-4.2 1.2-1.4 2.2-2.9 2.9-4.5 1-2.4 1.6-5.1 1.9-8 .2-2.8.2-5.8.2-8.9v-.2h-1.2"/><path d="M55.7 54.5h-1.3a4.3 4.3 0 0 1-2.2 3.7 3.5 3.5 0 0 1-1.6.3H19a4.8 4.8 0 0 1-1.9-.3 6.2 6.2 0 0 1-2.3-1.8 4.3 4.3 0 0 1-.7-1 2.3 2.3 0 0 1-.2-.9V39.7c0-.4.1-.6.3-1 .4-.4 1-.9 1.9-1.2.8-.4 1.8-.6 2.9-.6h31.6c1.4 0 2.3.4 3 .8a2.3 2.3 0 0 1 .8 2v14.8H57V39.7a5.1 5.1 0 0 0-.5-2.2 5 5 0 0 0-2.3-2.4c-1-.5-2.3-.7-3.6-.7H19c-1.8 0-3.6.4-5 1.3-.7.4-1.4 1-1.8 1.6a4.2 4.2 0 0 0-.8 2.4v14.8c0 1 .3 1.7.7 2.5a8.2 8.2 0 0 0 6.9 4h31.6a6 6 0 0 0 2.7-.5 6.7 6.7 0 0 0 3.7-6h-1.3M37.7 5h-1.3a2 2 0 0 1-2 2 2 2 0 0 1-2.1-2 2 2 0 0 1 2-2.1 2 2 0 0 1 2 2H39c0-2.5-2-4.5-4.6-4.5-2.5 0-4.6 2-4.6 4.6A4.6 4.6 0 1 0 39 5h-1.3"/><path d="M32.3 15.3h2.5V7.6h-2.5zM19.6 19v6.4a1.3 1.3 0 0 0 1.3 1.2c.7 0 1.3-.5 1.3-1.2V19a1.3 1.3 0 0 0-1.3-1.3c-.7 0-1.3.6-1.3 1.3m26.6 0v6.4a1.3 1.3 0 0 0 1.3 1.2c.7 0 1.2-.5 1.2-1.2V19a1.3 1.3 0 0 0-1.2-1.3c-.7 0-1.3.6-1.3 1.3M7.6 52.6H6.3l.1.6.2.4h.5-.5.5-.5l1-.2h-1v.2l1-.2h-1 1.2l-1.2-.3v.3h1.2l-1.2-.3 1.2.3-1-.6a1.3 1.3 0 0 0-.2.3l1.2.3-1-.6 1 .6-.6-1c-.2 0-.4.3-.5.4l1.1.6-.6-1 .6 1v-1.2a1.2 1.2 0 0 0-.6.1l.6 1.1v-1.2H2.2v1.1l.4-1-.4-.1v1.1l.4-1-.3.6.4-.6h-.1l-.3.6.4-.6a2 2 0 0 1-.3-.2l-.5.3.5-.3-.5.3.5-.3-1 .5h1.1v-.5l-1 .5h1V37H1.4l1 .6a1.2 1.2 0 0 0 .1-.6H1.4l1 .6-1-.6.6 1 .3-.4-1-.6.7 1-.6-1 .2 1.1.4-.1-.6-1 .2 1.1-.2-.8v.8h.2l-.2-.8v.8-.3.3-.3.3l.2.1h6.2A1.3 1.3 0 0 0 9.1 37a1.3 1.3 0 0 0-.1-.6l-.3-.4a1.5 1.5 0 0 0-.4-.2 1.4 1.4 0 0 0-.6-.2 1.3 1.3 0 0 0-1 .4 1.4 1.4 0 0 0-.3.5 1.4 1.4 0 0 0 0 .5v15.7h2.5V37H7.8l1 .3a1 1 0 0 0 0-.3h-1l1 .3-1.1-.3.7 1a1.2 1.2 0 0 0 .4-.7L7.7 37l.7 1-.7-1v1c.1 0 .4 0 .7-.2l-.7-1V38v-1l-.5 1h.5v-1l-.5 1 .4-1-.7.8a1 1 0 0 0 .3.2l.4-1-.7.8.8-.8-1 .6.2.2.8-.8-1 .6 1-.7-1 .4v.3l1-.7-1 .4 1.1-.4H6.6v.4l1.2-.4H6.6h1.2l-1-.6c-.2.2-.2.4-.2.6h1.2l-1-.6 1 .6-.8-1a1.3 1.3 0 0 0-.3.4l1.1.6-.8-1 .8 1-.3-1.2a1.2 1.2 0 0 0-.5.2l.8 1-.3-1.2.3 1.1v-1.2a1.2 1.2 0 0 0-.3 0l.3 1.2v-1.2H2.2v1l.2-1h-.2v1l.2-1v.2-.2.2-.2H2l-.6-.1c-.2 0-.4 0-.7.2a1.4 1.4 0 0 0-.6.4 1.4 1.4 0 0 0-.2.8v15.7l.2.8.4.5a4.4 4.4 0 0 0 1 .6 1.8 1.8 0 0 0 .3.2h6a1.3 1.3 0 0 0 1.3-1V53l-.2-.3v-.2l-.8.1H9v-.1l-.8.1H9 7.6m59.5 0h-1.3l.1.6.2.4h.5-.5.5-.5l1-.2h-1v.2l1-.2h-1 1.2l-1.2-.3v.3h1.2l-1.2-.3 1.2.3-1-.6a1.3 1.3 0 0 0-.2.3l1.2.3-1-.6 1 .6-.6-1c-.2 0-.4.3-.5.4l1.1.6-.6-1 .6 1v-1.2a1.2 1.2 0 0 0-.6.1l.6 1.1v-1.2h-5.6v1.1l.4-1-.4-.1v1.1l.4-1-.3.6.4-.6H62l-.3.6.4-.6a2 2 0 0 1-.3-.2l-.5.3.5-.3-.5.3.5-.3-1 .5H62v-.5l-1 .5h1V37h-1l1 .6a1.2 1.2 0 0 0 .1-.6H61l1 .6-1-.6.6 1 .3-.4-1-.6.7 1-.6-1 .2 1.1a1 1 0 0 0 .4-.1l-.6-1 .2 1.1-.1-.8v.8h.1l-.1-.8v.8-.3.3-.3.3l.2.1h6.1a1.3 1.3 0 0 0 1.3-1.2 1.3 1.3 0 0 0-.1-.6l-.3-.4a1.5 1.5 0 0 0-.4-.2 1.4 1.4 0 0 0-.6-.2 1.3 1.3 0 0 0-1.3 1 1.4 1.4 0 0 0 0 .4v15.7h2.5V37h-1.1l1 .3a1 1 0 0 0 0-.3h-1l1 .3-1.1-.4.7 1a1.2 1.2 0 0 0 .4-.6l-1.1-.4.7 1-.7-1V38c.2 0 .4 0 .7-.2l-.7-1V38v-1l-.5 1h.5v-1l-.5 1 .4-1-.7.8a1 1 0 0 0 .3.2l.4-1-.7.8.8-.8-1 .6.2.2.8-.8-1 .6 1-.7-1 .4v.3l1-.7-1 .4 1.1-.4h-1.2v.4l1.2-.4h-1.2 1.2l-1-.6a1.3 1.3 0 0 0-.2.6h1.2l-1-.6 1 .6-.8-1a1.3 1.3 0 0 0-.3.4l1.1.6-.8-1 .8 1-.3-1.2a1.2 1.2 0 0 0-.5.2l.8 1-.3-1.2.3 1.1v-1.2a1.2 1.2 0 0 0-.3 0l.3 1.2v-1.2h-5.6v1l.2-1h-.2v1l.2-1v.2-.2.2-.2h-.3l-.6-.1c-.2 0-.4 0-.7.2a1.4 1.4 0 0 0-.8 1.2v15.7l.2.8.4.5a4.4 4.4 0 0 0 1 .6 1.8 1.8 0 0 0 .3.2 1.3 1.3 0 0 0 .3 0h5.6a1.3 1.3 0 0 0 1.3-1V53l-.1-.3-.1-.2-.8.1h.8v-.1l-.8.1h.8H67m-42.9-5.8l4.8-4.9a1.3 1.3 0 0 0 0-1.8 1.3 1.3 0 0 0-1.8 0L22.4 45a1.3 1.3 0 0 0 0 1.8 1.3 1.3 0 0 0 1.8 0M29 55l13.5-13.5a1.3 1.3 0 0 0 0-1.8 1.3 1.3 0 0 0-1.8 0L27.2 53.2a1.3 1.3 0 0 0 0 1.8 1.3 1.3 0 0 0 1.8 0m13.3 0l4.4-4.4a1.3 1.3 0 0 0 0-1.8 1.3 1.3 0 0 0-1.8 0l-4.4 4.4a1.3 1.3 0 0 0 0 1.8 1.3 1.3 0 0 0 1.8 0"/></g></svg>

+ 1 - 0
docs/rocketsrchrome_files/logo-small.svg

@@ -0,0 +1 @@
+<svg width="139" height="28" xmlns="http://www.w3.org/2000/svg"><defs><filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="a"><feOffset dx="-2" in="SourceAlpha" result="shadowOffsetOuter1"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1"/><feMerge><feMergeNode in="shadowMatrixOuter1"/><feMergeNode in="SourceGraphic"/></feMerge></filter><linearGradient x1="-18.384%" y1="118.346%" x2="91.782%" y2="8.547%" id="b"><stop offset="0%"/><stop stop-color="#FFF" offset="100%"/></linearGradient></defs><g filter="url(#a)" transform="rotate(45 103.014 54.088)" fill="none" fill-rule="evenodd"><path d="M63.563 29.254c0 1.444.367 2.725 1.1 3.793L62.1 35.615c-.272.294-.072.497.216.786l2.012 2.003c.277.294.465.475.748.187l2.78-2.778c.624.229 2.121.628 4.385.296l1.74-1.311c.13-.099.357-.245.507-.327l1.563-.855-1.253 1.266c-.12.121-.324.3-.453.398l-1.496 1.127 2.55 6.977a.45.45 0 0 0 .735.171l5.985-5.693a.455.455 0 0 0 .134-.248l1.342-7.499c1.632-1.411 3.284-3.053 4.913-4.882 9.376-10.53 10.775-18.76 10.775-22.728 0-1.307-.159-2.027-.165-2.057a.452.452 0 0 0-.365-.346c-.466-.08-11.581-1.793-26.046 12.662-.018.02-1.897 1.957-3.92 4.674l-7.428 2.065a.451.451 0 0 0-.226.147l-5.284 6.349a.452.452 0 0 0 .221.722l7.1 2.064 1.195-1.375c.106-.122.295-.308.423-.418l1.334-1.143-.945 1.48a4.67 4.67 0 0 1-.356.478l-1.258 1.447zM79.24 13.868c2.348-2.348 5.694-2.81 7.473-1.03 1.78 1.78 1.319 5.125-1.03 7.474-2.348 2.348-5.693 2.809-7.473 1.03-1.78-1.78-1.318-5.126 1.03-7.474z" fill="#FFF"/><path d="M79.225 13.894c2.348-2.349 5.694-2.81 7.473-1.03 1.78 1.78 1.319 5.125-1.03 7.473-2.348 2.349-5.693 2.81-7.473 1.03-1.78-1.78-1.318-5.125 1.03-7.473z" fill-opacity=".1" fill="url(#b)"/><path d="M62.342 40.43L9.359 93.336a.815.815 0 0 1-1.152 0l-.573-.572a.813.813 0 0 1 0-1.15l52.982-52.909a.815.815 0 0 1 1.152 0l.574.573a.813.813 0 0 1 0 1.15m-.762 6.738L8.595 100.074a.815.815 0 0 1-1.152 0l-.573-.573a.813.813 0 0 1 0-1.15l52.983-52.908a.815.815 0 0 1 1.152 0l.573.572a.813.813 0 0 1 0 1.15M2.027 94.388a.817.817 0 0 1-1.152 0L.3 93.816a.813.813 0 0 1 0-1.15l52.983-52.91a.815.815 0 0 1 1.152 0l.574.573a.813.813 0 0 1 0 1.15L2.027 94.39z" fill="#FFF"/></g></svg>

+ 1 - 0
docs/rocketsrchrome_files/robot-free.svg

@@ -0,0 +1 @@
+<svg width="78" height="71" xmlns="http://www.w3.org/2000/svg"><defs><filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="a"><feOffset dy="1" in="SourceAlpha" result="shadowOffsetOuter1"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1"/><feMerge><feMergeNode in="shadowMatrixOuter1"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs><g filter="url(#a)" fill="#FFF" fill-rule="evenodd"><path d="M36.24 21.208h-1.155c0 .36-.14.673-.36.901a1.15 1.15 0 0 1-1.667 0 1.286 1.286 0 0 1-.361-.9c0-.361.14-.674.36-.901.224-.228.51-.357.834-.359.324.002.61.131.833.359.221.227.361.54.361.9h2.311a3.6 3.6 0 0 0-1.016-2.515 3.468 3.468 0 0 0-2.489-1.058 3.47 3.47 0 0 0-2.49 1.058 3.604 3.604 0 0 0-1.015 2.515 3.6 3.6 0 0 0 1.016 2.515 3.469 3.469 0 0 0 2.49 1.058c.973 0 1.861-.41 2.488-1.058a3.6 3.6 0 0 0 1.016-2.515h-1.155m5.225-17.097H40.31c0 .36-.14.674-.36.902a1.152 1.152 0 0 1-1.666 0 1.287 1.287 0 0 1-.361-.902c0-.36.14-.672.36-.9a1.15 1.15 0 0 1 1.667 0c.22.228.36.54.36.9h2.312a3.6 3.6 0 0 0-1.016-2.515A3.464 3.464 0 0 0 39.117.54a3.467 3.467 0 0 0-2.49 1.057 3.605 3.605 0 0 0-1.015 2.515 3.6 3.6 0 0 0 1.016 2.516 3.467 3.467 0 0 0 2.49 1.057 3.464 3.464 0 0 0 2.488-1.057 3.6 3.6 0 0 0 1.016-2.516h-1.156m5.226 17.096h-1.156c0 .36-.14.673-.36.901a1.146 1.146 0 0 1-1.666 0 1.286 1.286 0 0 1-.361-.9c0-.361.14-.674.36-.902.224-.227.51-.356.834-.358.324.002.61.131.833.359.22.227.36.54.36.9h2.312a3.6 3.6 0 0 0-1.016-2.515 3.47 3.47 0 0 0-2.49-1.058c-.973 0-1.861.41-2.488 1.058a3.602 3.602 0 0 0-1.016 2.515 3.6 3.6 0 0 0 1.016 2.515 3.468 3.468 0 0 0 2.489 1.058c.973 0 1.862-.41 2.489-1.058a3.6 3.6 0 0 0 1.016-2.515h-1.156"/><path d="M52.94 21.116h-1.156c0 2.355-.923 4.444-2.412 5.957a8.121 8.121 0 0 1-5.809 2.431h-8.825a8.12 8.12 0 0 1-5.809-2.431c-1.489-1.513-2.412-3.602-2.413-5.957.001-2.356.924-4.445 2.413-5.957a8.12 8.12 0 0 1 5.809-2.432h8.825a8.121 8.121 0 0 1 5.809 2.432c1.489 1.512 2.412 3.601 2.412 5.957h2.312c0-2.97-1.175-5.654-3.08-7.583a10.43 10.43 0 0 0-7.453-3.12h-8.825a10.429 10.429 0 0 0-7.453 3.12c-1.905 1.93-3.081 4.613-3.08 7.583-.001 2.97 1.175 5.653 3.08 7.582a10.429 10.429 0 0 0 7.453 3.12h8.825a10.43 10.43 0 0 0 7.453-3.12c1.905-1.93 3.08-4.613 3.08-7.582H52.94m3.104 37.314v-1.157H21.956V38.182h32.933V58.43h1.155v-1.157 1.157H57.2V35.868H19.644v23.719H57.2V58.43h-1.156"/><path d="M67.282 59.298h-1.155c-.001 2.355-.925 4.444-2.414 5.956a8.12 8.12 0 0 1-5.808 2.432h-37.51a8.12 8.12 0 0 1-5.807-2.432c-1.49-1.512-2.413-3.6-2.414-5.956 0-2.356.924-4.445 2.414-5.957a8.12 8.12 0 0 1 5.808-2.432h37.509a8.12 8.12 0 0 1 5.808 2.432c1.49 1.512 2.413 3.6 2.414 5.957h2.31c.001-2.97-1.174-5.654-3.08-7.583a10.43 10.43 0 0 0-7.452-3.12h-37.51a10.43 10.43 0 0 0-7.452 3.12c-1.905 1.93-3.08 4.613-3.08 7.583 0 2.969 1.175 5.653 3.08 7.582A10.43 10.43 0 0 0 20.396 70h37.509a10.43 10.43 0 0 0 7.453-3.12c1.905-1.93 3.08-4.613 3.08-7.582h-1.156"/><path d="M20.396 63.636c-2.342 0-4.177-1.905-4.177-4.338s1.835-4.34 4.177-4.34h37.509c2.342 0 4.177 1.907 4.177 4.34s-1.835 4.338-4.177 4.338h-37.51M41.6 36.446V35.29h-4.622v-2.892h3.466v4.05H41.6V35.29v1.157h1.156v-6.363h-8.09v7.52h8.09v-1.157H41.6m-20.12 5.511L9.544 29.688 7.89 31.302l11.934 12.27m37.04 1.321L70.336 31.31l-1.64-1.63-13.471 13.582"/><path d="M5.851 27.344l-.828-.808c-.33.349-.877.593-1.411.718a5.251 5.251 0 0 1-1.147.142h-.03v.035-.036.036-.036l.003.001-.082-.002a1.96 1.96 0 0 0-1.308.467 1.766 1.766 0 0 0-.59 1.33c0 .3.069.583.18.842.062.146.285.58.915 1.227l.045.047-.046-.047a5.67 5.67 0 0 0 4.076 1.733 5.67 5.67 0 0 0 4.075-1.733 5.936 5.936 0 0 0 1.672-4.147 5.933 5.933 0 0 0-1.672-4.146l-.007-.006.005.005c-.624-.64-1.023-.863-1.182-.936a2.12 2.12 0 0 0-.874-.198 1.728 1.728 0 0 0-1.531.897 2.038 2.038 0 0 0-.244.993v.113c.002.143-.012.66-.14 1.22-.123.564-.37 1.145-.706 1.481l.827.808.828.807c.78-.811 1.12-1.784 1.306-2.587a8.15 8.15 0 0 0 .197-1.73l-.001-.109v-.003l-.415-.03.283.274a.444.444 0 0 0 .132-.244l-.415-.03.283.274-.404-.392v.572a.589.589 0 0 0 .404-.18l-.404-.392v.572-.32l-.073.312.073.008v-.32l-.073.312.028-.116-.04.114.012.002.028-.116-.04.114.004.001.244-.54-.302.511.058.029.244-.54-.302.511c.004.002.19.114.541.474a3.617 3.617 0 0 1 1.017 2.531c0 .925-.34 1.837-1.017 2.533a3.357 3.357 0 0 1-2.42 1.033 3.355 3.355 0 0 1-2.418-1.033 3.907 3.907 0 0 1-.42-.496l-.05-.076-.596.312.618-.266-.021-.046-.597.312.618-.266-.05-.118.05.118-.002-.004-.229.075h.239l-.01-.075-.229.075h.239-.552l.358.407a.575.575 0 0 0 .194-.407h-.552l.358.407-.316-.36.152.458a.486.486 0 0 0 .164-.098l-.316-.36.152.458-.087-.26.041.271.046-.011-.087-.26.041.271-.009-.062v.063h.01l-.01-.063v.063h.005c.012 0 .048.002.104.002a7.51 7.51 0 0 0 1.686-.205c.784-.192 1.741-.552 2.529-1.354l-.829-.807m66.531 0l-.828.807c.788.802 1.745 1.162 2.529 1.354a7.498 7.498 0 0 0 1.79.203h.005v-.063l-.01.062.01.001v-.063l-.01.062.069-.446-.322.293a.47.47 0 0 0 .254.153l.068-.446-.322.293.397-.363h-.547a.564.564 0 0 0 .15.363l.397-.363h-.547.299l-.292-.065-.007.065h.299l-.292-.065.107.024-.104-.034-.003.01.107.024-.104-.034-.002.004.769.33-.752-.369-.017.039.769.33-.752-.369.191.094-.186-.102-.005.008.191.094-.186-.102c-.005.008-.116.209-.47.573a3.357 3.357 0 0 1-2.419 1.033 3.357 3.357 0 0 1-2.419-1.033 3.617 3.617 0 0 1-1.017-2.533c0-.924.34-1.836 1.017-2.531.233-.24.394-.37.476-.43l.064-.043-.301-.51.244.538.057-.028-.301-.51.244.538.004-.001-.085-.247v.257c.053 0 .081-.01.085-.01l-.085-.247v.257-.531l-.212.485c.08.035.16.047.212.046v-.531l-.212.485.233-.533-.511.283a.602.602 0 0 0 .278.25l.233-.533-.511.283.347-.192-.388.09.04.102.348-.192-.388.09.193-.045-.197.022.004.024.193-.046-.197.022.07-.008-.07.004v.004l.07-.008-.07.004v.006-.002c0 .012-.002.05-.002.11.001.257.016.922.197 1.729.186.803.526 1.776 1.305 2.587l.828-.807.828-.808c-.336-.336-.583-.917-.706-1.482a5.927 5.927 0 0 1-.14-1.219v-.113a1.962 1.962 0 0 0-.454-1.296 1.712 1.712 0 0 0-.606-.447 1.782 1.782 0 0 0-.715-.147 2.1 2.1 0 0 0-.873.198c-.16.072-.56.295-1.184.936a5.932 5.932 0 0 0-1.673 4.147 5.935 5.935 0 0 0 1.672 4.147 5.67 5.67 0 0 0 4.075 1.733 5.67 5.67 0 0 0 4.076-1.733c.63-.647.852-1.081.915-1.227.11-.259.18-.542.18-.842.008-.474-.205-1-.591-1.33a1.96 1.96 0 0 0-1.308-.467l-.082.002h.003v.033-.034.034-.034l-.03.001c-.13 0-.617-.013-1.147-.142-.534-.125-1.081-.37-1.412-.718l-.828.808M37.556 11.57h2.31V6.364h-2.31zM20.8 42.231h19.644v-2.314H20.8zm0 4.629h19.644v-2.315H20.8zm31.936-4.647h-1.155a1.147 1.147 0 0 1-.322.805 1.02 1.02 0 0 1-1.48 0 1.147 1.147 0 0 1-.322-.805c0-.322.125-.601.322-.805.2-.202.452-.317.74-.318.287.001.54.116.74.318.197.204.321.483.322.805h2.31c0-.936-.37-1.797-.976-2.419a3.338 3.338 0 0 0-2.396-1.018c-.938 0-1.793.395-2.396 1.018a3.467 3.467 0 0 0-.977 2.42c0 .936.372 1.797.977 2.418a3.333 3.333 0 0 0 2.396 1.018 3.335 3.335 0 0 0 2.396-1.018 3.465 3.465 0 0 0 .977-2.419h-1.156"/></g></svg>

+ 1 - 0
docs/rocketsrchrome_files/ship-icon.svg

@@ -0,0 +1 @@
+<svg width="98" height="74" xmlns="http://www.w3.org/2000/svg"><g fill="#FFF" fill-rule="evenodd"><path d="M96.384 53.5h-1.617c-.001 1.045-.26 2.068-.793 3.11-.927 1.82-2.738 3.681-5.355 5.399-3.919 2.58-9.597 4.817-16.405 6.377C65.407 69.95 57.468 70.852 49 70.852c-12.903.003-24.582-2.102-32.892-5.426-4.155-1.657-7.459-3.622-9.643-5.69-1.094-1.032-1.908-2.085-2.44-3.125-.532-1.043-.791-2.066-.792-3.111 0-1.046.26-2.07.792-3.112.927-1.82 2.738-3.68 5.355-5.398 3.92-2.58 9.598-4.817 16.405-6.377C32.593 37.05 40.531 36.148 49 36.148c12.903-.004 24.58 2.101 32.892 5.426 4.155 1.657 7.458 3.621 9.642 5.689 1.095 1.032 1.908 2.086 2.44 3.125.533 1.042.792 2.066.793 3.112H98c0-1.568-.403-3.096-1.133-4.517-1.283-2.493-3.517-4.677-6.44-6.602-4.39-2.882-10.387-5.202-17.47-6.832C65.873 33.923 57.703 33 49 33c-13.267.004-25.28 2.135-34.12 5.66-4.419 1.77-8.055 3.882-10.665 6.343-1.304 1.231-2.352 2.556-3.083 3.98C.402 50.404-.002 51.932 0 53.5c-.002 1.567.402 3.094 1.132 4.517 1.283 2.492 3.517 4.676 6.44 6.601 4.391 2.882 10.387 5.202 17.471 6.832C32.125 73.077 40.295 74 49 74c13.266-.004 25.28-2.136 34.118-5.661 4.42-1.77 8.056-3.882 10.667-6.343 1.304-1.23 2.352-2.555 3.082-3.98.73-1.422 1.134-2.95 1.133-4.516h-1.616"/><path d="M89.78 46.567c0 .866.72 1.568 1.61 1.568.89 0 1.61-.702 1.61-1.568 0-.865-.72-1.567-1.61-1.567-.89 0-1.61.702-1.61 1.567zm-1.957 4.701a1.539 1.539 0 0 0 .226 2.206 1.64 1.64 0 0 0 2.266-.22 1.539 1.539 0 0 0-.226-2.205 1.641 1.641 0 0 0-2.266.219zM83.32 54.97a1.543 1.543 0 0 0-.504 2.162 1.637 1.637 0 0 0 2.221.49c.753-.461.978-1.43.503-2.162a1.637 1.637 0 0 0-2.22-.49zm-5.493 2.718a1.553 1.553 0 0 0-.872 2.048c.34.8 1.283 1.18 2.104.848.822-.332 1.212-1.249.872-2.048-.341-.8-1.283-1.18-2.104-.848zm-5.916 1.995c-.854.24-1.347 1.11-1.1 1.94.246.832 1.14 1.312 1.993 1.072.856-.24 1.348-1.109 1.101-1.94-.246-.832-1.138-1.311-1.994-1.072zm-6.128 1.44c-.873.169-1.44.993-1.267 1.843.173.848 1.02 1.4 1.893 1.231.872-.168 1.44-.992 1.267-1.842-.173-.849-1.021-1.4-1.893-1.232zm-6.248.977c-.882.108-1.508.891-1.398 1.75.11.86.916 1.468 1.799 1.36.882-.107 1.508-.89 1.397-1.75-.11-.858-.915-1.467-1.798-1.36zm-6.313.57c-.888.053-1.563.797-1.509 1.66.054.865.819 1.523 1.706 1.47.888-.054 1.564-.797 1.509-1.661-.055-.864-.818-1.521-1.706-1.468zm-6.344.195c-.89.002-1.609.706-1.607 1.57.002.867.725 1.567 1.614 1.565.89-.002 1.61-.705 1.607-1.57-.002-.867-.725-1.566-1.614-1.565zm-6.351-.156c-.889-.046-1.647.618-1.694 1.482-.047.865.635 1.603 1.523 1.648.888.047 1.646-.617 1.693-1.482.048-.864-.634-1.602-1.522-1.648zm-6.325-.51c-.883-.098-1.68.52-1.781 1.38-.101.86.534 1.637 1.418 1.735.883.097 1.68-.52 1.781-1.38.101-.86-.533-1.637-1.418-1.735zm-6.262-.901c-.875-.158-1.715.406-1.876 1.257-.16.851.417 1.668 1.292 1.825.874.158 1.714-.406 1.875-1.257.162-.851-.417-1.668-1.291-1.825zm-6.15-1.356c-.86-.228-1.744.264-1.978 1.1-.235.834.271 1.696 1.129 1.924.858.228 1.744-.264 1.978-1.1.234-.834-.271-1.696-1.13-1.924zm-5.94-1.914c-.827-.321-1.764.07-2.094.874-.33.804.073 1.716.9 2.037.824.321 1.762-.07 2.092-.875.33-.803-.073-1.715-.899-2.037v.001zm-5.512-2.657c-.756-.457-1.749-.232-2.218.504a1.542 1.542 0 0 0 .517 2.158 1.636 1.636 0 0 0 2.218-.503 1.543 1.543 0 0 0-.517-2.159zM5.87 51.684a1.641 1.641 0 0 0-2.263-.251 1.54 1.54 0 0 0-.258 2.202 1.64 1.64 0 0 0 2.263.251 1.54 1.54 0 0 0 .258-2.202zm22.24-25.73c2.976 1.4 10.46 4.391 20.173 4.396 5.905 0 12.634-1.114 19.63-4.375 4.502 4.369 7.453 10.212 7.996 16.71a50.737 50.737 0 0 1-4.564 2.236c-3.207 1.375-7.215 2.648-10.837 2.643-.45 0-.814.35-.814.782 0 .43.365.781.814.781 4.276-.005 8.732-1.546 12.153-3.064a52.697 52.697 0 0 0 3.335-1.629c.003.144.004.287.004.431 0 14.847-56 14.847-56 0 0-.225.003-.45.009-.674a52.741 52.741 0 0 0 3.786 1.872c3.421 1.518 7.878 3.059 12.152 3.064.45 0 .815-.35.815-.781 0-.432-.364-.782-.815-.782-3.862.006-8.165-1.445-11.467-2.918a51.002 51.002 0 0 1-4.368-2.204c.597-6.411 3.54-12.172 7.997-16.488zm1.264-1.151C34.324 20.57 40.85 18 48 18c7.162 0 13.697 2.579 18.649 6.822-6.557 2.953-12.828 3.964-18.366 3.965-6.089 0-11.29-1.227-14.963-2.454a42.813 42.813 0 0 1-3.946-1.53z"/><path d="M49.48 9.283l7.268-1.692a1.63 1.63 0 0 0 1.24-1.385 1.609 1.609 0 0 0-.884-1.626l-8.69-4.4a1.692 1.692 0 0 0-1.62.055A1.62 1.62 0 0 0 46 1.62v18.76c0 .895.74 1.62 1.655 1.62.914 0 1.655-.725 1.655-1.62l.17-11.097z"/></g></svg>

+ 1 - 0
docs/rocketsrchrome_files/streams-icon.svg

@@ -0,0 +1 @@
+<svg width="82" height="81" xmlns="http://www.w3.org/2000/svg"><g fill="#FFF" fill-rule="evenodd"><path d="M17.41 20.294c0 2.096-1.732 3.795-3.87 3.795-2.137 0-3.869-1.699-3.869-3.795s1.732-3.796 3.87-3.796c2.137 0 3.869 1.7 3.869 3.796m48.14 48.052c0 .828-.684 1.5-1.528 1.5-.846 0-1.53-.672-1.53-1.5 0-.83.684-1.5 1.53-1.5.844 0 1.529.67 1.529 1.5M35.542 55.012l-1.377.553a15.557 15.557 0 0 1 1.208 6.002c0 3.127-.95 6.18-2.685 8.76a16.045 16.045 0 0 1-7.387 5.949 16.41 16.41 0 0 1-6.12 1.185c-3.19 0-6.301-.932-8.932-2.633a15.872 15.872 0 0 1-6.064-7.247 15.558 15.558 0 0 1-1.21-6.002c0-3.128.95-6.18 2.686-8.76a16.04 16.04 0 0 1 7.388-5.949 16.406 16.406 0 0 1 6.12-1.185c3.189 0 6.3.932 8.931 2.633a15.878 15.878 0 0 1 6.065 7.247l1.377-.553 1.378-.551a18.806 18.806 0 0 0-7.182-8.58 19.46 19.46 0 0 0-17.815-1.713 19.015 19.015 0 0 0-8.747 7.044A18.607 18.607 0 0 0 0 61.579c0 2.37.46 4.781 1.43 7.106a18.804 18.804 0 0 0 7.18 8.58 19.46 19.46 0 0 0 17.816 1.713c3.71-1.487 6.697-3.99 8.747-7.044a18.6 18.6 0 0 0 3.176-10.367c0-2.37-.46-4.781-1.43-7.107l-1.377.552"/><path d="M10.119 48.911L45.309 2.78a1.441 1.441 0 0 0-.3-2.043 1.508 1.508 0 0 0-2.082.295L7.737 47.163a1.44 1.44 0 0 0 .3 2.043c.657.482 1.59.35 2.082-.295m24.25 24.432l47.034-34.516a1.44 1.44 0 0 0 .3-2.042 1.507 1.507 0 0 0-2.082-.295L32.586 71.006a1.441 1.441 0 0 0-.3 2.043 1.507 1.507 0 0 0 2.083.294m3.907-27.893l30.631-31.594a1.44 1.44 0 0 0-.053-2.064 1.51 1.51 0 0 0-2.104.052L36.12 43.439a1.44 1.44 0 0 0 .054 2.064 1.508 1.508 0 0 0 2.103-.053M25.648 75.23c-2.724-4.05-5.68-7.907-9.206-11.319-1.828-1.769-3.996-3.122-6.07-4.585-1.797-1.268-4.234-1.856-5.919-3.144-1.1-.84-2.623.347-2.123 1.59.544 1.349 1.643 1.665 2.86 2.409 2.077 1.271 3.884 3.002 5.71 4.586 4.205 3.645 7.617 8.153 10.211 13.025 1.784 3.345 6.654.583 4.537-2.562"/><path d="M35.876 60.62c-2.09.656-8.949-1.58-11.42-2.508-2.914-1.094-5.503-2.671-7.921-4.584-1.58-1.248-4.243-3.255-4.894-5.29-.747-2.33-4.626-.554-3.109 1.758 3.506 5.342 10.075 9.056 16.056 10.963 1.287.41 12.404 3.44 12.321.257-.012-.515-.607-.729-1.033-.596"/></g></svg>

+ 2033 - 0
docs/rocketsrchrome_files/style.css

@@ -0,0 +1,2033 @@
+@keyframes octocat-wave {
+  0%,
+  to {
+    transform: rotate(0);
+  }
+  20%,
+  60% {
+    transform: rotate(-25deg);
+  }
+  40%,
+  80% {
+    transform: rotate(10deg);
+  }
+}
+html {
+  line-height: 1.15;
+  -ms-text-size-adjust: 100%;
+  -webkit-text-size-adjust: 100%;
+}
+.features .col.tight .button,
+.features .col.tight button,
+body {
+  margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+header nav.version-select:hover options,
+main,
+menu,
+nav,
+section {
+  display: block;
+}
+h1 {
+  margin: 0.67em 0;
+  font-size: 3em;
+}
+figure {
+  margin: 1em 40px;
+}
+hr {
+  box-sizing: content-box;
+  overflow: visible;
+  border: 0;
+  height: 1px;
+  background-color: rgba(255, 255, 255, 0.25);
+}
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+a {
+  background-color: transparent;
+  -webkit-text-decoration-skip: objects;
+  color: #fff;
+  text-decoration: none;
+}
+a:active,
+a:hover {
+  outline-width: 0;
+}
+abbr[title] {
+  border-bottom: none;
+  text-decoration: underline dotted;
+}
+b,
+strong {
+  font-weight: bolder;
+}
+dfn {
+  font-style: italic;
+}
+mark {
+  background-color: #ff0;
+  color: #000;
+}
+small {
+  font-size: 80%;
+}
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+sub {
+  bottom: -0.25em;
+}
+sup {
+  top: -0.5em;
+}
+audio,
+canvas,
+video {
+  display: inline-block;
+}
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+img {
+  border-style: none;
+}
+svg:not(:root) {
+  overflow: hidden;
+}
+button {
+  line-height: 1.15;
+}
+input,
+optgroup,
+select,
+textarea {
+  font-family: sans-serif;
+  line-height: 1.15;
+  margin: 0;
+}
+optgroup {
+  font-size: 100%;
+}
+button,
+input {
+  overflow: visible;
+}
+button,
+select {
+  text-transform: none;
+}
+[type="reset"],
+[type="submit"],
+button,
+html [type="button"] {
+  -webkit-appearance: button;
+}
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner,
+button::-moz-focus-inner {
+  border-style: none;
+  padding: 0;
+}
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring,
+button:-moz-focusring {
+  outline: 1px dotted ButtonText;
+}
+fieldset {
+  border: 1px solid silver;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em;
+}
+legend {
+  color: inherit;
+  display: table;
+  max-width: 100%;
+  white-space: normal;
+}
+progress {
+  display: inline-block;
+  vertical-align: baseline;
+}
+textarea {
+  overflow: auto;
+}
+[type="checkbox"],
+[type="radio"],
+legend {
+  box-sizing: border-box;
+  padding: 0;
+}
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+[type="search"] {
+  -webkit-appearance: textfield;
+  outline-offset: -2px;
+}
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+::-webkit-file-upload-button {
+  -webkit-appearance: button;
+  font: inherit;
+}
+summary {
+  display: list-item;
+}
+[hidden],
+template {
+  display: none;
+}
+body,
+html {
+  -webkit-font-smoothing: antialiased;
+  background-color: black;
+  /* background-color: #d33847; */
+}
+html {
+  color: #fff;
+}
+a.button,
+body,
+button,
+html {
+  font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
+}
+body {
+  font-size: 16px;
+}
+body,
+input,
+select,
+textarea {
+  color: #fff;
+}
+.code {
+  font-family: Consolas, "Liberation Mono", Menlo, Monaco, Lucida Console,
+    Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New,
+    monospace, serif;
+}
+.container {
+  margin: 0 20px;
+  display: inherit;
+  position: relative;
+  width: calc(100% - 40px);
+}
+@media (min-width: 1310px) {
+  .container {
+    margin: auto;
+    width: 1270px;
+  }
+}
+h2 {
+  font-size: 2.5em;
+}
+h3 {
+  font-size: 1.6em;
+}
+h4 {
+  font-size: 1.2em;
+}
+.addon,
+input,
+select,
+textarea {
+  outline: 0;
+  font-size: 14px;
+}
+ul.columns {
+  list-style-position: inside;
+  columns: 1;
+}
+@media (min-width: 650px) {
+  ul.columns {
+    columns: 2;
+  }
+}
+@media (min-width: 800px) {
+  ul.columns {
+    columns: 3;
+  }
+}
+a.button,
+button {
+  font-size: 1.125em;
+  background: #999;
+  border-radius: 5px;
+  border: 0;
+  cursor: pointer;
+  display: inline-block;
+  padding: 8px 34px;
+  background: #fff;
+  color: #f03b4d;
+  font-weight: 500;
+  box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15);
+  margin: 15px;
+  text-shadow: none;
+}
+a.button.small,
+button.small {
+  font-size: 0.875em;
+  padding: 8px 26px;
+}
+a.button:hover,
+button:hover {
+  background: #ffd1d6;
+  background: linear-gradient(#fff, #ffd1d6);
+  border: 0;
+  outline: 0;
+}
+a.button:active,
+a.button:focus,
+button:active,
+button:focus {
+  background: #ffd1d6;
+  background: linear-gradient(#ffd1d6, #fff);
+  border: 0;
+  outline: 0;
+}
+a.button.inverted,
+button.inverted {
+  background: 0 0;
+  color: #fff;
+  padding: 6px 30px;
+  border: 2px solid #fff;
+  font-weight: 500;
+}
+a.button.inverted.small,
+button.inverted.small {
+  padding: 6px 24px;
+}
+a.button.inverted:hover,
+button.inverted:hover {
+  background-color: rgba(255, 255, 255, 0.15);
+}
+a.button.inverted:active,
+a.button.inverted:focus,
+button.inverted:active,
+button.inverted:focus {
+  background-color: rgba(0, 0, 0, 0.25);
+}
+a.button.inverted.blue,
+button.inverted.blue {
+  border-color: #5daced;
+}
+a.button.inverted.purple,
+button.inverted.purple {
+  border-color: #df76ff;
+}
+a.button.inverted.red,
+button.inverted.red {
+  border-color: #ff6170;
+}
+a.button.inverted.yellow,
+button.inverted.yellow {
+  border-color: #fff776;
+}
+a.button.inverted.orange,
+button.inverted.orange {
+  border-color: #ff853e;
+}
+a.button.inverted.green,
+button.inverted.green {
+  border-color: #15dc98;
+}
+.table-container {
+  overflow-x: auto;
+}
+table:not(.code) {
+  border-collapse: collapse;
+  border-spacing: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
+  text-shadow: none;
+  box-shadow: 0 2px 2px rgba(0, 0, 0, 0.25);
+  border-bottom: 1px solid #111;
+  border-top: 1px solid #111;
+}
+table:not(.code) thead {
+  background-color: #131313;
+  text-align: left;
+  border-bottom: 1px solid #111;
+}
+table:not(.code) td,
+table:not(.code) th {
+  border-left: 1px solid #111;
+  padding: 0.5em 1.25em;
+}
+table:not(.code) td:last-child,
+table:not(.code) th:last-child {
+  border-right: 1px solid #111;
+}
+table:not(.code) tbody > tr {
+  background: #303133;
+}
+table:not(.code) tbody > tr:nth-child(2n) {
+  background: #202020;
+}
+.grid {
+  display: flex;
+}
+@media (max-width: 870px) {
+  .grid {
+    display: block;
+  }
+}
+.col {
+  box-sizing: border-box;
+  flex: 1;
+}
+.col.center {
+  align-self: center;
+}
+.hl,
+.hl-dark {
+  color: #abb2bf;
+}
+.hl .c,
+.hl-dark .c {
+  color: #5c6370;
+  font-style: italic;
+}
+.hl .err,
+.hl-dark .err {
+  color: #960050;
+  background-color: #1e0010;
+}
+.hl .k,
+.hl-dark .k {
+  color: #c678dd;
+}
+.hl .l,
+.hl-dark .l {
+  color: #98c379;
+}
+.hl .n,
+.hl .o,
+.hl .p,
+.hl-dark .n,
+.hl-dark .o,
+.hl-dark .p {
+  color: #abb2bf;
+}
+.hl .cm,
+.hl-dark .cm {
+  color: #5c6370;
+  font-style: italic;
+}
+.hl .cp,
+.hl-dark .cp {
+  color: #61afef;
+}
+.hl .c1,
+.hl .cs,
+.hl-dark .c1,
+.hl-dark .cs {
+  color: #5c6370;
+  font-style: italic;
+}
+.hl .ge,
+.hl-dark .ge {
+  font-style: italic;
+}
+.hl .gs,
+.hl-dark .gs {
+  font-weight: 700;
+}
+.hl .kc,
+.hl .kd,
+.hl .kn,
+.hl-dark .kc,
+.hl-dark .kd,
+.hl-dark .kn {
+  color: #c678dd;
+}
+.hl .kp,
+.hl-dark .kp {
+  color: #d19a66;
+}
+.hl .kr,
+.hl-dark .kr {
+  color: #c678dd;
+}
+.hl .kt,
+.hl-dark .kt {
+  color: #e06c75;
+}
+.hl .ld,
+.hl-dark .ld {
+  color: #98c379;
+}
+.hl .m,
+.hl-dark .m {
+  color: #d19a66;
+}
+.hl .s,
+.hl-dark .s {
+  color: #98c379;
+}
+.hl .na,
+.hl-dark .na {
+  color: #d19a66;
+}
+.hl .nb,
+.hl .nc,
+.hl .nd,
+.hl .ne,
+.hl .ni,
+.hl .no,
+.hl-dark .nb,
+.hl-dark .nc,
+.hl-dark .nd,
+.hl-dark .ne,
+.hl-dark .ni,
+.hl-dark .no {
+  color: #e5c07b;
+}
+.hl .nf,
+.hl-dark .nf {
+  color: #61afef;
+}
+.hl .nl,
+.hl-dark .nl {
+  color: #e5c07b;
+}
+.hl .nn,
+.hl .nx,
+.hl-dark .nn,
+.hl-dark .nx {
+  color: #abb2bf;
+}
+.hl .py,
+.hl-dark .py {
+  color: #e5c07b;
+}
+.hl .nt,
+.hl-dark .nt {
+  color: #e06c75;
+}
+.hl .nv,
+.hl-dark .nv {
+  color: #e5c07b;
+}
+.hl .ow,
+.hl-dark .ow {
+  font-weight: 700;
+}
+.hl .w,
+.hl-dark .w {
+  color: #f8f8f2;
+}
+.hl .mf,
+.hl .mh,
+.hl .mi,
+.hl .mo,
+.hl-dark .mf,
+.hl-dark .mh,
+.hl-dark .mi,
+.hl-dark .mo {
+  color: #d19a66;
+}
+.hl .s2,
+.hl .sb,
+.hl .sc,
+.hl .sd,
+.hl .se,
+.hl .sh,
+.hl .si,
+.hl .sx,
+.hl-dark .s2,
+.hl-dark .sb,
+.hl-dark .sc,
+.hl-dark .sd,
+.hl-dark .se,
+.hl-dark .sh,
+.hl-dark .si,
+.hl-dark .sx {
+  color: #98c379;
+}
+.hl .sr,
+.hl-dark .sr {
+  color: #56b6c2;
+}
+.hl .s1,
+.hl-dark .s1 {
+  color: #98c379;
+}
+.hl .ss,
+.hl-dark .ss {
+  color: #56b6c2;
+}
+.hl .bp,
+.hl .vc,
+.hl .vg,
+.hl-dark .bp,
+.hl-dark .vc,
+.hl-dark .vg {
+  color: #e5c07b;
+}
+.hl .vi,
+.hl-dark .vi {
+  color: #e06c75;
+}
+.hl .il,
+.hl-dark .il {
+  color: #d19a66;
+}
+.hl .gu,
+.hl-dark .gu {
+  color: #75715e;
+}
+.hl .gd,
+.hl-dark .gd {
+  color: #f92672;
+}
+.hl .gi,
+.hl-dark .gi {
+  color: #a6e22e;
+}
+.hl-light {
+  color: #383a42;
+}
+.hl-light .c {
+  color: #a0a1a7;
+  font-style: italic;
+}
+.hl-light .err {
+  color: #960050;
+  background-color: #1e0010;
+}
+.hl-light .k {
+  color: #a626a4;
+}
+.hl-light .l {
+  color: #50a14f;
+}
+.hl-light .n,
+.hl-light .o,
+.hl-light .p {
+  color: #383a42;
+}
+.hl-light .cm {
+  color: #a0a1a7;
+  font-style: italic;
+}
+.hl-light .cp {
+  color: #4078f2;
+}
+.hl-light .c1,
+.hl-light .cs {
+  color: #a0a1a7;
+  font-style: italic;
+}
+.hl-light .ge {
+  font-style: italic;
+}
+.hl-light .gs {
+  font-weight: 700;
+}
+.hl-light .kc,
+.hl-light .kd,
+.hl-light .kn {
+  color: #a626a4;
+}
+.hl-light .kp {
+  color: #986801;
+}
+.hl-light .kr {
+  color: #a626a4;
+}
+.hl-light .kt {
+  color: #e45649;
+}
+.hl-light .ld {
+  color: #50a14f;
+}
+.hl-light .m {
+  color: #986801;
+}
+.hl-light .s {
+  color: #50a14f;
+}
+.hl-light .na {
+  color: #986801;
+}
+.hl-light .nb,
+.hl-light .nc,
+.hl-light .nd,
+.hl-light .ne,
+.hl-light .ni,
+.hl-light .no {
+  color: #c18401;
+}
+.hl-light .nf {
+  color: #4078f2;
+}
+.hl-light .nl {
+  color: #c18401;
+}
+.hl-light .nn,
+.hl-light .nx {
+  color: #383a42;
+}
+.hl-light .py {
+  color: #c18401;
+}
+.hl-light .nt {
+  color: #e45649;
+}
+.hl-light .nv {
+  color: #c18401;
+}
+.hl-light .ow {
+  font-weight: 700;
+}
+.hl-light .w {
+  color: #f8f8f2;
+}
+.hl-light .mf,
+.hl-light .mh,
+.hl-light .mi,
+.hl-light .mo {
+  color: #986801;
+}
+.hl-light .s2,
+.hl-light .sb,
+.hl-light .sc,
+.hl-light .sd,
+.hl-light .se,
+.hl-light .sh,
+.hl-light .si,
+.hl-light .sx {
+  color: #50a14f;
+}
+.hl-light .sr {
+  color: #0184bc;
+}
+.hl-light .s1 {
+  color: #50a14f;
+}
+.hl-light .ss {
+  color: #0184bc;
+}
+.hl-light .bp,
+.hl-light .vc,
+.hl-light .vg {
+  color: #c18401;
+}
+.hl-light .vi {
+  color: #e45649;
+}
+.hl-light .il {
+  color: #986801;
+}
+.hl-light .gu {
+  color: #75715e;
+}
+.hl-light .gd {
+  color: #f92672;
+}
+.hl-light .gi {
+  color: #a6e22e;
+}
+header {
+  background-color: #d33847;
+  position: relative;
+  overflow: hidden;
+}
+header :not(.cloud) {
+  position: relative;
+  z-index: 10;
+}
+header h1,
+header h2,
+header h3,
+header h4 {
+  font-family: "Proza Libre", "Helvetica Neue", Helvetica, Arial,
+    "Lucida Grande", sans-serif;
+  text-shadow: 0 2px 0 rgba(0, 0, 0, 0.25);
+}
+header h1 {
+  font-size: 42px;
+  margin: 30px 0 0;
+  font-weight: 600;
+}
+header h1 a:active,
+header h1 a:focus,
+header h1 a:hover {
+  color: #ffbec4;
+  border: 0;
+}
+header h4 {
+  font-size: 16px;
+  line-height: 18px;
+  font-weight: 500;
+  margin: 0;
+  padding: 10px 0 70px;
+  color: #ffdada;
+}
+header .banner {
+  margin: 30px 0 50px;
+}
+header .banner h1,
+header .banner h2,
+header .banner h3,
+header .banner h4 {
+  font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
+}
+header .banner h1 {
+  font-size: 36px;
+  font-weight: 500;
+  margin: 17px 0;
+}
+header .banner h2 {
+  font-size: 25px;
+  font-weight: 300;
+  line-height: 36px;
+  margin: 10px auto 15px;
+  max-width: 580px;
+}
+.cloud {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  display: block;
+  -webkit-backface-visibility: hidden;
+  -moz-backface-visibility: hidden;
+  -ms-backface-visibility: hidden;
+  backface-visibility: hidden;
+  -webkit-perspective: 1000;
+  -moz-perspective: 1000;
+  -ms-perspective: 1000;
+  perspective: 1000;
+  transform: translateZ(0);
+}
+.cloud.back {
+  z-index: 1;
+  opacity: 0.03;
+}
+.cloud.front {
+  z-index: 2;
+  opacity: 0.06;
+}
+.features img {
+  margin-bottom: 15px;
+}
+.features h2 {
+  font-size: 36px;
+  color: #fff;
+  text-shadow: 0 2px 0 rgba(0, 0, 0, 0.15);
+  font-weight: 500;
+  line-height: 36px;
+  margin-top: 0;
+  margin-bottom: 10px;
+}
+.features figcaption,
+.features h2,
+.features h3,
+.features h4 {
+  font-family: "Proza Libre", "Helvetica Neue", Helvetica, Arial,
+    "Lucida Grande", sans-serif;
+}
+.features h3 {
+  font-size: 20px;
+  line-height: 20px;
+  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
+  margin: 0 auto;
+  font-weight: 500;
+}
+.features h3.blue {
+  color: #5daced;
+}
+.features h3.purple {
+  color: #df76ff;
+}
+.features h3.red {
+  color: #ff6170;
+}
+.features h3.yellow {
+  color: #fff776;
+}
+.features h3.orange {
+  color: #ff853e;
+}
+.features h3.green {
+  color: #15dc98;
+}
+.features figcaption,
+.features h4 {
+  font-weight: 400;
+}
+.features h4 {
+  margin-top: 0;
+  margin-bottom: 35px;
+  font-size: 18px;
+  color: #a2a2a2;
+  line-height: 24px;
+}
+.features figcaption {
+  color: #ffd5d8;
+  font-size: 15px;
+  line-height: 25px;
+  max-width: 220px;
+  margin: 10px auto 0;
+}
+.features figcaption.wide {
+  margin-bottom: 15px;
+  max-width: 300px;
+  font-weight: 300;
+  color: #fff;
+  padding: 0 10px;
+}
+.features .col {
+  border-right: 1px solid rgba(255, 255, 255, 0.25);
+  margin: 40px 0;
+}
+@media (max-width: 870px) {
+  .features .col {
+    border-right: none;
+  }
+}
+.features .col.tight:last-child,
+.features .col:last-child {
+  border-right: none;
+}
+@media (max-width: 870px) {
+  .features .col:last-child {
+    margin-bottom: 40px;
+  }
+}
+.features .col.tight {
+  padding: 35px 0;
+  margin: 10px 0;
+  border-right: 1px solid rgba(255, 255, 255, 0.1);
+}
+@media (max-width: 870px) {
+  .features .col.tight {
+    border-right: none;
+  }
+}
+@media (max-width: 870px) {
+  .features .col.tight:last-child {
+    margin-bottom: 0;
+  }
+}
+.features hr {
+  background-color: rgba(255, 255, 255, 0.1);
+  margin: 30px 0;
+}
+a:hover {
+  border-bottom: 1px dashed #fff;
+}
+a:active,
+a:focus {
+  border-bottom: 1px solid #fff;
+  outline: 0;
+}
+#pagination ul,
+.centered,
+.circle-container h4 {
+  text-align: center;
+}
+.pull-right {
+  float: right;
+}
+.text-right {
+  text-align: right;
+}
+table {
+  width: 100%;
+}
+table.code {
+  display: inline-block;
+  color: #a5abb8;
+  font-size: 14px;
+  text-shadow: none;
+  padding: 0;
+  border-spacing: 0;
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.5);
+  border-radius: 5px;
+  width: 100%;
+  overflow-x: auto;
+}
+table.code * {
+  font-family: Consolas, "Liberation Mono", Menlo, Monaco, Lucida Console,
+    Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New,
+    monospace, serif;
+  line-height: 18px;
+  margin: 0;
+  -webkit-font-smoothing: subpixel-antialiased;
+}
+table.code td.linenos {
+  background-color: #3a3a3a;
+  padding: 15px 10px 15px 18px;
+  color: #666;
+  text-align: right;
+  border-top-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  border: 1px solid #4b4b4b;
+  border-right: 1px solid #1b1d22;
+}
+table.code td.code {
+  padding-left: 15px;
+  background: #323232;
+  border-top-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  border: 1px solid #4b4b4b;
+  border-left: none;
+  width: 100%;
+}
+footer,
+section {
+  text-shadow: 0 2px 0 rgba(0, 0, 0, 0.25);
+  background-color: #272727;
+}
+section {
+  padding: 70px 0;
+}
+footer.tight,
+section.tight {
+  padding: 0;
+}
+footer.dark,
+section.dark {
+  background-color: #1d1d1d;
+}
+footer h3,
+section h3 {
+  font-size: 36px;
+  font-weight: 500;
+  margin: 20px 0 0;
+  line-height: 48px;
+}
+footer .col.left-main,
+section .col.left-main {
+  line-height: 22px;
+  align-self: center;
+}
+footer .col.left-main h3,
+footer .col.left-main p,
+section .col.left-main h3,
+section .col.left-main p {
+  padding: 0 20px;
+}
+footer .col.right-main,
+section .col.right-main {
+  overflow-x: auto;
+  align-self: center;
+}
+@media (max-width: 870px) {
+  footer h3,
+  section h3 {
+    margin: -10px 0 0;
+    text-align: center;
+  }
+  footer span.callout,
+  section span.callout {
+    display: block;
+    text-align: center;
+  }
+  footer .col.left-main,
+  section .col.left-main {
+    padding-bottom: 10px;
+  }
+}
+@media (min-width: 870px) {
+  footer:nth-child(even) .col.left-main,
+  section:nth-child(even) .col.left-main {
+    padding-left: 20px;
+  }
+  footer:nth-child(even) .col.right-main,
+  section:nth-child(even) .col.right-main {
+    padding-right: 20px;
+    order: -1;
+  }
+  footer:nth-child(odd) .col.left-main,
+  section:nth-child(odd) .col.left-main {
+    padding-right: 20px;
+  }
+  footer:nth-child(odd) .col.right-main,
+  section:nth-child(odd) .col.right-main {
+    padding-left: 20px;
+  }
+}
+footer:nth-child(odd),
+section:nth-child(odd) {
+  background-color: #d33847;
+}
+footer:nth-child(odd) table.code,
+section:nth-child(odd) table.code {
+  border-color: #a0a0a0;
+  color: #222;
+}
+footer:nth-child(odd) table.code td.linenos,
+section:nth-child(odd) table.code td.linenos {
+  background-color: #efefef;
+  border: 1px solid #a0a0a0;
+  border-right: 1px solid #d5d5d5;
+  color: #a9a9a9;
+}
+footer:nth-child(odd) table.code td.code,
+section:nth-child(odd) table.code td.code {
+  background: #fff;
+  border: 1px solid #a0a0a0;
+  border-left: none;
+}
+footer #sidebar,
+section #sidebar {
+  background-color: #1d1d1d;
+  width: calc(280px + (100% - 1310px) / 2);
+  min-width: 280px;
+}
+@media (max-width: 870px) {
+  footer #sidebar,
+  section #sidebar {
+    display: none;
+  }
+}
+footer #search-results,
+footer article,
+section #search-results,
+section article {
+  width: calc(100% - 280px);
+  max-width: 1060px;
+  padding: 40px;
+}
+@media (max-width: 870px) {
+  footer #search-results,
+  footer article,
+  section #search-results,
+  section article {
+    width: 100%;
+    padding: 35px 30px;
+  }
+}
+footer nav,
+section nav {
+  padding: 40px 35px;
+  box-sizing: border-box;
+  font-family: "Proza Libre", "Helvetica Neue", Helvetica, Arial,
+    "Lucida Grande", sans-serif;
+  font-weight: 500;
+  position: relative;
+  min-width: 250px;
+  float: right;
+  display: inline-block;
+  overflow: auto;
+}
+footer nav .affix,
+section nav .affix {
+  position: fixed;
+  top: 40px;
+  overflow: auto;
+  height: 100%;
+}
+footer nav .affix-bottom,
+section nav .affix-bottom {
+  position: relative;
+  bottom: 40px;
+  overflow: auto;
+  height: 100%;
+}
+footer nav li,
+section nav li {
+  list-style: none;
+}
+footer nav .toc ul,
+section nav .toc ul {
+  padding: 10px 0 0;
+}
+footer nav .toc ul:first-child,
+section nav .toc ul:first-child {
+  padding: 0;
+  margin: 0;
+}
+footer nav .toc ul.small,
+section nav .toc ul.small {
+  padding: 0;
+}
+footer nav .toc ul.small a,
+section nav .toc ul.small a {
+  font-size: 14px;
+}
+footer nav .toc > ul > li,
+section nav .toc > ul > li {
+  font-size: 20px;
+  line-height: 20px;
+  margin: 20px 0;
+}
+footer nav .toc > ul > li:first-child,
+section nav .toc > ul > li:first-child {
+  margin: 0;
+}
+footer nav .toc > ul > li ul li,
+section nav .toc > ul > li ul li {
+  border-left: 1px solid #424242;
+  padding: 10px 0 10px 17px;
+  font-size: 14px;
+  line-height: 14px;
+}
+footer nav .toc > ul > li ul li a,
+section nav .toc > ul > li ul li a {
+  color: #c5c5c5;
+}
+article.news a > h2,
+footer nav .toc > ul > li ul li a.active,
+footer nav .toc > ul > li ul li a:hover,
+section nav .toc > ul > li ul li a.active,
+section nav .toc > ul > li ul li a:hover {
+  color: #fff;
+}
+footer nav .toc > ul > li ul li a:active,
+footer nav .toc > ul > li ul li a:focus,
+section nav .toc > ul > li ul li a:active,
+section nav .toc > ul > li ul li a:focus {
+  color: #444;
+}
+footer nav a:hover,
+section nav a:hover {
+  border: 0;
+  text-decoration: underline;
+  color: #fff;
+}
+footer nav a:active,
+footer nav a:focus,
+section nav a:active,
+section nav a:focus {
+  border: 0;
+  color: #444;
+}
+footer nav a.active,
+section nav a.active {
+  font-weight: 700;
+}
+#search-results,
+article,
+main {
+  box-sizing: border-box;
+  padding: 40px 10px;
+  font-size: 16px;
+  font-family: Helvetica, Arial, "Lucida Grande", sans-serif;
+  line-height: 24px;
+}
+#search-results p,
+article p,
+main p {
+  margin: 15px 0;
+}
+#search-results h2,
+#search-results h3,
+#search-results h4,
+#search-results h5,
+article h2,
+article h3,
+article h4,
+article h5,
+main h2,
+main h3,
+main h4,
+main h5 {
+  font-family: "Proza Libre", "Helvetica Neue", Helvetica, Arial,
+    "Lucida Grande", sans-serif;
+  font-weight: 600;
+  text-align: left;
+}
+#search-results h2 + p,
+#search-results h3 + p,
+#search-results h4 + p,
+#search-results h5 + p,
+article h2 + p,
+article h3 + p,
+article h4 + p,
+article h5 + p,
+main h2 + p,
+main h3 + p,
+main h4 + p,
+main h5 + p {
+  margin-top: 0;
+}
+#search-results h2:first-child,
+#search-results h3:first-child,
+#search-results h4:first-child,
+#search-results h5:first-child,
+article h2:first-child,
+article h3:first-child,
+article h4:first-child,
+article h5:first-child,
+main h2:first-child,
+main h3:first-child,
+main h4:first-child,
+main h5:first-child {
+  padding-top: 0;
+  margin-top: 0;
+}
+#pagination li,
+#search-results h2:hover > a,
+#search-results h3:hover > a,
+#search-results h4:hover > a,
+#search-results h5:hover > a,
+article h2:hover > a,
+article h3:hover > a,
+article h4:hover > a,
+article h5:hover > a,
+main h2:hover > a,
+main h3:hover > a,
+main h4:hover > a,
+main h5:hover > a {
+  display: inline;
+}
+#search-results h2,
+article h2,
+main h2 {
+  padding: 20px 0 10px;
+  margin: 15px 0;
+  font-size: 30px;
+  line-height: 32px;
+}
+#search-results h3,
+article h3,
+main h3 {
+  padding: 10px 0;
+  margin: 20px 0 10px;
+  font-size: 22px;
+  line-height: 24px;
+}
+#search-results h4,
+#search-results h5,
+article h4,
+article h5,
+main h4,
+main h5 {
+  padding: 10px 0;
+  margin: 10px 0 5px;
+}
+#search-results h4,
+article h4,
+main h4 {
+  font-size: 18px;
+  line-height: 20px;
+}
+#search-results h5,
+article h5,
+article.news h5,
+main h5 {
+  font-size: 16px;
+  line-height: 20px;
+}
+#search-results a.headerlink,
+article a.headerlink,
+main a.headerlink {
+  color: #5e5e5e;
+  font-size: 0.8em;
+  line-height: 1em;
+  margin-left: 5px;
+  border-bottom: none;
+}
+@media (min-width: 870px) {
+  #search-results a.headerlink,
+  article a.headerlink,
+  main a.headerlink {
+    display: none;
+  }
+}
+#search-results a.headerlink:active,
+#search-results a.headerlink:focus,
+#search-results a.headerlink:hover,
+article a.headerlink:active,
+article a.headerlink:focus,
+article a.headerlink:hover,
+main a.headerlink:active,
+main a.headerlink:focus,
+main a.headerlink:hover {
+  border: 0;
+}
+#search-results a.headerlink:hover,
+article a.headerlink:hover,
+main a.headerlink:hover {
+  color: #ccc;
+}
+#search-results a.headerlink:active,
+#search-results a.headerlink:focus,
+article a.headerlink:active,
+article a.headerlink:focus,
+main a.headerlink:active,
+main a.headerlink:focus {
+  color: #fff;
+}
+#search-results blockquote,
+article blockquote,
+main blockquote {
+  background-color: rgba(255, 255, 255, 0.05);
+  margin: 0;
+  padding: 5px 20px 5px 30px;
+  border-left: 10px solid rgba(255, 255, 255, 0.1);
+  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.5);
+  text-shadow: 0 2px 0 rgba(0, 0, 0, 0.25);
+}
+article.news {
+  font-size: 18px;
+  font-family: Helvetica, Arial, "Lucida Grande", sans-serif;
+  line-height: 30px;
+  max-width: 900px;
+  margin: 0 auto;
+  overflow-x: auto;
+}
+@media (max-width: 870px) {
+  article.news {
+    padding: 10px 5px;
+  }
+}
+article.news p:not(:nth-child(2)) {
+  margin-left: auto;
+  margin-right: auto;
+}
+article.news p.metadata {
+  margin: -10px 0 20px;
+  font-size: 16px;
+  color: #bbb;
+}
+article.news blockquote p:not(:last-child) {
+  color: #bbb;
+}
+article.news a > h2:hover {
+  text-decoration: none;
+}
+#tabs-panel .panel,
+#tabs-panel input,
+article.news h2 a,
+article.news h2:hover > a {
+  display: none;
+}
+article.news h2 {
+  margin-top: 20px;
+  font-size: 30px;
+  line-height: 42px;
+  padding: 0;
+}
+article.news h3 {
+  font-size: 22px;
+  line-height: 26px;
+}
+article.news h4 {
+  font-size: 18px;
+  line-height: 22px;
+}
+#search-results a,
+article a {
+  font-weight: 700;
+  color: #8ab4ff;
+}
+#search-results a:hover,
+article a:hover {
+  color: inherit;
+  border-bottom: none;
+  text-decoration: underline;
+}
+#search-results a:hover code,
+article a:hover code {
+  text-decoration: underline;
+}
+#search-results a:active,
+#search-results a:focus,
+article a:active,
+article a:focus {
+  border-bottom: none;
+  text-decoration: underline;
+}
+#search-results h2,
+article h2 {
+  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
+}
+#search-results h3,
+article h3 {
+  border-bottom: 1px solid rgba(255, 255, 255, 0.07);
+}
+main h2,
+main h3 {
+  margin-bottom: 0;
+}
+main h2:not(:first-child) {
+  margin-top: 30px;
+}
+code,
+footer {
+  text-shadow: none;
+}
+code {
+  display: inline-block;
+  background: rgba(0, 0, 0, 0.4);
+  font-size: 0.87em;
+  border-radius: 5px;
+  font-family: Consolas, "Liberation Mono", Menlo, Monaco, Lucida Console,
+    Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New,
+    monospace, serif;
+  -webkit-font-smoothing: subpixel-antialiased;
+  padding: 1px 4px;
+  line-height: 1.4em;
+}
+span.orange,
+span.purple {
+  color: #f68500;
+  font-weight: 400;
+  font-size: 0.95em;
+}
+span.purple {
+  color: #9a64c0;
+}
+span.callout {
+  display: inline-block;
+  background: #fff;
+  color: #000;
+  padding: 2px 15px;
+  font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
+  font-size: 14px;
+  font-weight: 700;
+  border-radius: 5px;
+  border: 1px solid #000;
+  box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.5);
+  margin: 0;
+  text-shadow: none;
+}
+footer {
+  padding: 40px 0 30px;
+  line-height: 32px;
+}
+footer,
+footer a {
+  font-size: 14px;
+  color: #ffb9b9;
+}
+footer h2 {
+  font-size: 36px;
+  font-family: "Proza Libre", "Helvetica Neue", Helvetica, Arial,
+    "Lucida Grande", sans-serif;
+}
+footer h4 {
+  font-size: 18px;
+}
+#tabs-panel {
+  border: 1px solid #3d3d3d;
+  text-shadow: none;
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.5);
+}
+#tabs-panel p:first-child {
+  margin-top: 0;
+}
+#tabs-panel p:last-child {
+  margin-bottom: 0;
+}
+#tabs-panel .tab {
+  display: block;
+  padding: 17px 20px 17px 45px;
+  font: 500 18px "Proza Libre", "Helvetica Neue", Helvetica, Arial,
+    "Lucida Grande", sans-serif;
+  cursor: pointer;
+  color: #464646;
+  background-color: #212121;
+  border-right: 1px solid #3d3d3d;
+  position: relative;
+  margin-right: -1px;
+  box-shadow: inset -1px 1px 3px rgba(0, 0, 0, 0.25);
+}
+#tabs-panel .tab img {
+  margin: auto 0;
+  position: absolute;
+  left: 17px;
+  bottom: 0;
+  right: 0;
+  top: 0;
+  opacity: 0.15;
+  pointer-events: none;
+}
+#tabs-panel .tab:not(:first-child) {
+  border-top: 1px solid #2f2f2f;
+}
+#tabs-panel .tab:hover {
+  background-color: #272727;
+  color: #aaa;
+}
+#tabs-panel .tab:hover img {
+  opacity: 0.5;
+}
+#tabs-panel .tab:focus {
+  background-color: #111;
+}
+#tabs-panel .tab:active {
+  background-color: #2c2c2c;
+}
+#tabs-panel .tabs {
+  flex: 1 1 300px;
+  background-color: #212121;
+  min-width: 220px;
+}
+#tabs-panel .panels {
+  background-color: #323232;
+  width: 100%;
+}
+#tabs-panel .panel {
+  padding: 15px 25px;
+  font: 16px Helvetica, Arial, "Lucida Grande", sans-serif;
+  color: #e0e0e0;
+  line-height: 26px;
+}
+#tabs-panel #dynamic-params-tab img {
+  top: -1px;
+}
+#tabs-panel #handling-data-tab img {
+  left: 18px;
+  top: -1px;
+}
+#tabs-panel #request-guards-tab img {
+  left: 19px;
+  top: -3px;
+}
+#tabs-panel #responders-tab img {
+  top: -3px;
+}
+#tabs-panel #launching-tab img {
+  left: 21px;
+  top: -3px;
+}
+#tabs-panel #dynamic-params:checked ~ .tabs #dynamic-params-tab,
+#tabs-panel #handling-data:checked ~ .tabs #handling-data-tab,
+#tabs-panel #launching:checked ~ .tabs #launching-tab,
+#tabs-panel #request-guards:checked ~ .tabs #request-guards-tab,
+#tabs-panel #responders:checked ~ .tabs #responders-tab,
+#tabs-panel #routing:checked ~ .tabs #routing-tab {
+  text-shadow: 0 2px 0 rgba(0, 0, 0, 0.25);
+  background-color: #323232;
+  cursor: default;
+  color: #fff;
+  border-right: none;
+  box-shadow: none;
+}
+#tabs-panel #dynamic-params:checked ~ .tabs #dynamic-params-tab img,
+#tabs-panel #handling-data:checked ~ .tabs #handling-data-tab img,
+#tabs-panel #launching:checked ~ .tabs #launching-tab img,
+#tabs-panel #request-guards:checked ~ .tabs #request-guards-tab img,
+#tabs-panel #responders:checked ~ .tabs #responders-tab img,
+#tabs-panel #routing:checked ~ .tabs #routing-tab img {
+  opacity: 1;
+}
+#tabs-panel #dynamic-params:checked ~ .panels #dynamic-params-panel,
+#tabs-panel #handling-data:checked ~ .panels #handling-data-panel,
+#tabs-panel #launching:checked ~ .panels #launching-panel,
+#tabs-panel #request-guards:checked ~ .panels #request-guards-panel,
+#tabs-panel #responders:checked ~ .panels #responders-panel,
+#tabs-panel #routing:checked ~ .panels #routing-panel {
+  display: block;
+}
+#logo span,
+#toggle {
+  display: none;
+}
+header .container {
+  padding-top: 35px;
+  z-index: 10;
+}
+header nav.version-select {
+  position: relative;
+  display: inline-block;
+  width: 70px;
+  height: 35px;
+  line-height: 35px;
+  text-align: center;
+  font-size: 15px;
+  font-family: "Proza Libre", "Helvetica Neue", Helvetica, Arial,
+    "Lucida Grande", sans-serif;
+  font-weight: 700;
+  z-index: 20;
+}
+header nav.version-select i {
+  border: solid #fff;
+  border-width: 0 3px 3px 0;
+  display: inline-block;
+  padding: 3px;
+  transform: rotate(45deg);
+  margin-left: 3px;
+  top: -2px;
+}
+header nav.version-select options {
+  display: none;
+  position: absolute;
+  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.25);
+  left: -1px;
+  top: 35px;
+  z-index: 30;
+}
+header nav.version-select options a,
+header nav.version-select options a:hover {
+  border: 1px solid rgba(255, 255, 255, 0.8);
+}
+header nav.version-select options a:hover:not(:first-child),
+header nav.version-select options a:not(:first-child) {
+  border-top: none;
+}
+header nav.version-select options a {
+  color: #fff;
+  font-size: 15px;
+  font-weight: 700;
+  display: block;
+  background-color: rgba(255, 255, 255, 0.1);
+  width: 70px;
+  height: 35px;
+}
+header nav.version-select options a:hover {
+  background-color: rgba(255, 255, 255, 0.8);
+  color: #d33847;
+}
+@media (max-width: 870px) {
+  header nav.version-select options a {
+    background-color: #d44756;
+  }
+  header nav.version-select options a:hover {
+    background-color: #dcdcdc;
+  }
+}
+header .hamburger,
+header nav.main {
+  float: right;
+}
+.circle-container .circle + h4,
+header nav a {
+  font-family: "Proza Libre", "Helvetica Neue", Helvetica, Arial,
+    "Lucida Grande", sans-serif;
+}
+header nav a {
+  font-size: 18px;
+  font-weight: 500;
+}
+a#logo:active,
+a#logo:hover {
+  border: 0;
+  text-decoration: none;
+}
+@media (min-width: 870px) {
+  header nav.main {
+    margin-top: 20px;
+  }
+  header nav.main a {
+    margin-left: 35px;
+  }
+  #logo {
+    height: 60px;
+    width: 180px;
+    background-repeat: no-repeat;
+    display: inline-block;
+    vertical-align: middle;
+  }
+}
+@media (max-width: 870px) {
+  @-webkit-keyframes bugfix {
+    0%,
+    to {
+      padding: 0;
+    }
+  }
+  body {
+    -webkit-animation: bugfix infinite 1s;
+  }
+  #logo {
+    height: 30px;
+    width: 140px;
+    background-repeat: no-repeat;
+    display: inline-block;
+    vertical-align: middle;
+  }
+  header .banner {
+    margin-top: 20px;
+  }
+  header .banner h1 {
+    margin-top: 0;
+  }
+  header nav.main {
+    display: block;
+    color: #000;
+    width: 100%;
+    background-color: rgba(0, 0, 0, 0.2);
+    max-height: 0;
+    transition: max-height 0.25s ease-in-out;
+    margin: 20px 0 0;
+    overflow: hidden;
+    float: none;
+  }
+  header nav.main a {
+    display: block;
+    margin: 0;
+    padding: 15px 35px;
+  }
+  header nav.main a:first-child {
+    padding-top: 30px;
+  }
+  header nav.main a:last-child {
+    padding-bottom: 30px;
+  }
+  header nav.main a:hover {
+    border: 0;
+    background-color: rgba(0, 0, 0, 0.2);
+  }
+  header nav.main a:active,
+  header nav.main a:focus {
+    border: 0;
+    background-color: rgba(0, 0, 0, 0.4);
+  }
+  .hamburger,
+  .hamburger span {
+    display: block;
+    transform: rotate(0deg);
+  }
+  .hamburger {
+    float: right;
+    cursor: pointer;
+    user-select: none;
+    background: rgba(0, 0, 0, 0.2);
+    width: 38px;
+    height: 30px;
+    position: relative;
+  }
+  .hamburger span {
+    position: absolute;
+    height: 14%;
+    width: 60%;
+    background: #fff;
+    border-radius: 9px;
+    opacity: 1;
+    left: 20%;
+    transition: 0.25s ease-in-out;
+  }
+  .hamburger span:nth-child(1) {
+    top: 20%;
+  }
+  #toggle:checked ~ .hamburger span:nth-child(1) {
+    top: 43%;
+    transform: rotate(135deg);
+  }
+  .hamburger span:nth-child(2) {
+    top: 43%;
+  }
+  #toggle:checked ~ .hamburger span:nth-child(2) {
+    opacity: 0;
+    left: -60px;
+  }
+  .hamburger span:nth-child(3) {
+    top: 66%;
+  }
+  #toggle:checked ~ .hamburger span:nth-child(3) {
+    top: 43%;
+    transform: rotate(-135deg);
+  }
+  #toggle:checked ~ nav {
+    max-height: 300px;
+  }
+  .mobile-hide {
+    display: none;
+  }
+}
+.circle-container {
+  flex: 0 0 180px;
+}
+.circle-container .circle {
+  border-radius: 50%;
+  text-shadow: none;
+  width: 60px;
+  height: 60px;
+  font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
+  font-size: 42px;
+  font-weight: 700;
+  color: #1e1e1e;
+  text-align: center;
+  line-height: 60px;
+  margin: 0 auto;
+}
+.circle-container .circle.blue {
+  background: #5daced;
+}
+.circle-container .circle.purple {
+  background: #da74f9;
+}
+.circle-container .circle.red {
+  background: #ff6170;
+}
+.circle-container .circle + h4 {
+  margin: 12px 0 0;
+}
+.work-step {
+  border-top: 1px solid #464646;
+  padding: 25px 0;
+}
+.blocky-code table.code td.linenos {
+  border-radius: 0;
+  border: 1px solid #414141;
+  border-right: none;
+  background-color: #323232;
+  padding-left: 20px;
+}
+.blocky-code table.code td.code {
+  border-radius: 0;
+  border: 1px solid #414141;
+  border-left: none;
+  background-color: #323232;
+  padding-left: 10px;
+}
+.lighter-code table.code {
+  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.25);
+}
+.lighter-code table.code td.linenos {
+  background-color: #434343;
+  border: 1px solid #494949;
+  border-right: none;
+  color: #8e8e8e;
+  padding: 12px;
+}
+.lighter-code table.code td.code {
+  border: 1px solid #494949;
+  border-left: none;
+  background-color: #393939;
+}
+@media (max-width: 870px) {
+  .github-corner {
+    display: none;
+  }
+}
+.github-corner:hover .octo-arm {
+  animation: octocat-wave 560ms ease-in-out;
+}
+input#search-input {
+  max-width: 180px;
+  color: #fff;
+  font-weight: 600;
+  border: 0;
+  margin-bottom: 25px;
+  box-sizing: border-box;
+  padding: 10px 15px 10px 35px;
+  background-color: #000;
+  background-size: 15px 15px;
+  background-repeat: no-repeat;
+  background-position: 10px 11px;
+}
+#hits {
+  color: inherit;
+}
+#hits a {
+  font-size: 22px;
+}
+#hits span {
+  color: #ccc;
+  font-weight: 400;
+  font-size: 14px;
+}
+#hits .hit {
+  margin-bottom: 30px;
+}
+#hits hr {
+  margin: 5px 0;
+}
+#hits p {
+  font-weight: 400;
+  margin: 5px 0 0;
+}
+#hits em {
+  background-color: rgba(117, 97, 0, 0.24);
+  color: #ffc900;
+  font-style: normal;
+  font-weight: 700;
+}
+#pagination .ais-pagination--item__disabled {
+  display: none;
+}
+#hits p,
+#pagination .ais-pagination--item__active a {
+  color: #fff;
+}
+#pagination li a {
+  padding: 6px;
+  background: rgba(0, 0, 0, 0.5);
+  border: 1px solid #000;
+  margin: 0 5px;
+}
+#pagination li a:hover {
+  background: rgba(0, 0, 0, 0.2);
+  border-bottom: 1px solid #000;
+}
+.cancel-search {
+  display: inline-block;
+  width: 20px;
+  height: 20px;
+  cursor: pointer;
+  margin-bottom: -4px;
+  opacity: 0.6;
+  margin-right: 4px;
+}
+.cancel-search:hover {
+  opacity: 1;
+}
+.admonition {
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.5);
+  margin: 15px 0;
+  padding: 0 20px;
+  border-radius: 5px;
+  overflow: auto;
+  position: relative;
+}
+.admonition .title {
+  display: block;
+  margin: 0 -20px;
+  padding: 10px 20px 6px 43px;
+  background-repeat: no-repeat;
+  background-position: 20px 55%;
+  background-size: 17px;
+}
+@media (max-width: 870px) {
+  .admonition .title {
+    padding-left: 55px;
+    background-position: 20px 50%;
+  }
+}
+.admonition.note {
+  border-left: 8px solid #448aff;
+  background-color: rgba(68, 138, 255, 0.05);
+}
+.admonition.note .title {
+  background-color: rgba(68, 138, 255, 0.25);
+  border-bottom: 0.1rem solid rgba(68, 138, 255, 0.1);
+  background-position: 20px 50%;
+}
+.admonition.tip {
+  border-left: 8px solid #00bfa5;
+  background-color: rgba(0, 191, 165, 0.05);
+}
+.admonition.tip .title {
+  background-color: rgba(0, 191, 165, 0.25);
+  border-bottom: 0.1rem solid rgba(0, 191, 165, 0.1);
+}
+.admonition.warning {
+  border-left: 8px solid #ff9100;
+  background-color: rgba(255, 145, 0, 0.05);
+}
+.admonition.warning .title {
+  background-color: rgba(255, 145, 0, 0.25);
+  border-bottom: 0.1rem solid rgba(255, 145, 0, 0.1);
+}

+ 1 - 0
docs/rocketsrchrome_files/sun.svg

@@ -0,0 +1 @@
+<svg width="68" height="69" xmlns="http://www.w3.org/2000/svg"><defs><filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="a"><feOffset dy="1" in="SourceAlpha" result="shadowOffsetOuter1"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1"/><feMerge><feMergeNode in="shadowMatrixOuter1"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs><g filter="url(#a)" fill="#FFF" fill-rule="evenodd"><path d="M1.3 33.8h1.2H2l.5.3a.6.6 0 0 0 .1-.3H2l.5.3-.2-.1.2.2-.2-.2.2.2.4-.3c.5-.3 1.3-.5 2.1-.8 1.3-.4 2.8-.8 4-1.3.7-.2 1.2-.4 1.7-.8l.8-.5a2 2 0 0 0 .5-1.4 2.2 2.2 0 0 0-.1-.8l-.8-1.1-1.8-1.8L6 22.8l-1-1a1.6 1.6 0 0 1-.2-.3l-.4.1H5h-.4.4-.6l.6.3a.7.7 0 0 0 0-.3h-.6l.6.3-.5-.2.3.5a.6.6 0 0 0 .2-.3l-.5-.2.3.5-.2-.2.2.2-.2-.2.2.2A1.2 1.2 0 0 1 5 22h.7c.9 0 2 0 3.2.2l3.4.2 1.5-.1.7-.3.7-.6c.3-.4.3-.9.3-1.2 0-.4 0-.8-.2-1.2-.2-.7-.5-1.4-1-2.2l-1.7-3.3a13.8 13.8 0 0 1-.8-2.1l-.4-.1.4.2a.4.4 0 0 0 0-.1l-.4-.1.4.2-.6-.3.5.5a.7.7 0 0 0 0-.2l-.5-.3.5.5-.5-.5.2.6a.6.6 0 0 0 .3-.1l-.5-.5.2.6-.1-.3v.3h.1l-.1-.3v.3l.5.1 1.8.8 3.4 1.8 1.6.7 1.6.4a2 2 0 0 0 1.2-.4c.3-.2.5-.4.6-.7l.3-1 .1-1.2-.2-3.4a33.6 33.6 0 0 1-.2-4.1v-.1l-.2-.2.2.2-.2-.2.2.2-.5-.4.3.6a.6.6 0 0 0 .2-.2l-.5-.4.3.6-.3-.6V5a.7.7 0 0 0 .3 0l-.3-.6V5v-.4.4-.4.4-.2.2-.2.2l.4.3L23.3 7l2.7 3c.4.5.8 1 1.3 1.3l.7.5 1 .2h.4a2 2 0 0 0 .8-.4c.5-.4.7-.8 1-1.2L32 8l1.3-4 .5-1.2.1-.2-.2-.2.2.3-.2-.3.2.3-.3-.6v.6a.6.6 0 0 0 .3 0l-.3-.6v.6V2l-.3.5a.6.6 0 0 0 .3.1V2l-.3.5.2-.2-.2.2.2-.2-.2.2.3.4.8 2.1c.4 1.3.8 2.8 1.3 4l.7 1.7.6.8a2 2 0 0 0 1.4.5l.8-.1 1.1-.8 1.8-1.8 2.5-3 1-1A1.7 1.7 0 0 1 46 5v-.4.4-.4.4-.6l-.3.6a.7.7 0 0 0 .2 0v-.6l-.2.6.2-.5-.5.3.3.2.2-.5-.5.3.2-.1h-.2.2-.2a1.3 1.3 0 0 1 0 .4l.1.8c0 .8 0 2-.2 3l-.2 3.5.1 1.5c0 .2.1.5.3.7.1.3.3.5.6.7a2 2 0 0 0 1.2.4l1.2-.3 2.2-.9 3.3-1.8a13.8 13.8 0 0 1 2.1-.8v-.4.4-.4.4l.2-.6-.5.5a.7.7 0 0 0 .2.1l.3-.6-.5.5.5-.5-.6.2a.6.6 0 0 0 .1.3l.5-.5-.6.2h.3-.4.4-.4a2 2 0 0 1 0 .4l-.8 1.8-1.8 3.4a16.4 16.4 0 0 0-.7 1.6c-.2.5-.4 1-.4 1.6 0 .3 0 .8.4 1.2.2.3.4.5.7.6.3.2.7.3 1 .3l1.2.1 3.4-.2a33.6 33.6 0 0 1 4.1-.2h.1l.2-.2-.3.2h.1l.2-.2-.3.2.5-.5-.6.3a.6.6 0 0 0 .1.2l.5-.5-.6.3.6-.3h-.7v.3l.7-.3h-.7.5-.4.4-.4.1-.1.1-.1l-.4.4-1.5 1.4-3.2 2.7c-.5.4-.9.8-1.2 1.3l-.5.7a2.3 2.3 0 0 0-.3 1v.4l.5.9c.3.4.7.6 1.1.8l2.6 1 4 1.3 1.2.6h.1l.3-.1H65a.3.3 0 0 0 0 .2l.3-.2H65l.6-.2H65a.6.6 0 0 0 0 .3l.6-.3H65h.5l-.5-.3a.6.6 0 0 0 0 .3h.5l-.5-.3.3.2-.2-.2.2.2-.2-.2-.5.3-2 .8c-1.3.4-2.8.8-4 1.3l-1.8.7-.7.6a2 2 0 0 0-.5 1 1.8 1.8 0 0 0 0 .4l.1.8.7 1.1 1.9 1.8 3 2.6a8.7 8.7 0 0 1 1.2 1.2h.4-.4.4-.4.7l-.6-.3a.7.7 0 0 0 0 .2h.6l-.6-.2.5.2-.3-.5a.6.6 0 0 0-.2.3l.5.2-.3-.5.1.2v-.2h-.1l.1.2v-.2l-.4.1h-.8c-.8 0-2 0-3.1-.2l-3.4-.2-1.5.1a3 3 0 0 0-.7.3 2 2 0 0 0-.7.6 2 2 0 0 0-.4 1.2l.2 1.2 1 2.2 1.7 3.3a13.9 13.9 0 0 1 .8 2.1h.5-.4.4-.4l.6.2-.5-.5a.7.7 0 0 0-.1.2l.6.3-.5-.5.5.5-.2-.6a.6.6 0 0 0-.3.1l.5.5-.2-.6v.3-.3.3-.3a2 2 0 0 1-.5-.1l-1.7-.8-3.4-1.8-1.6-.7c-.5-.2-1-.4-1.6-.4a2 2 0 0 0-1.2.4 2 2 0 0 0-.6.7l-.4 1a8 8 0 0 0 0 1.2c0 1 0 2.2.2 3.4a33.6 33.6 0 0 1 .1 4.1v.1l.3.2-.2-.3v.1l.2.2-.2-.3.4.5-.2-.6a.6.6 0 0 0-.2.1l.4.5-.2-.6.2.6v-.6a.7.7 0 0 0-.2 0l.2.6v-.6.4l.1-.4v.4-.4.1-.1.1-.1a2 2 0 0 1-.4-.3l-1.5-1.6-2.6-3.2-1.3-1.2a4.1 4.1 0 0 0-.8-.5 2.3 2.3 0 0 0-1-.2h-.3a2 2 0 0 0-.9.4c-.4.4-.6.7-.8 1.2-.4.7-.7 1.6-1 2.5l-1.3 4-.6 1.2v.1l.1.3-.1-.3.1.3-.1-.3.2.6V65a.6.6 0 0 0-.2 0l.2.6V65v.5l.3-.5a.6.6 0 0 0-.3 0v.5l.3-.5-.1.3.2-.2-.2.2.2-.2-.3-.5c-.3-.4-.5-1.2-.8-2-.4-1.3-.8-2.8-1.3-4-.2-.7-.5-1.3-.8-1.8a3.4 3.4 0 0 0-.5-.7 2 2 0 0 0-1-.5 1.9 1.9 0 0 0-.4 0 2.2 2.2 0 0 0-.8.1l-1.1.7-1.8 1.9-2.6 3a8.7 8.7 0 0 1-1.3 1.3l.1.3v-.4.4-.4.7l.3-.6a.7.7 0 0 0-.3 0v.6l.3-.6-.2.5.4-.3a.6.6 0 0 0-.2-.2l-.2.5.4-.3-.2.1h.3v-.1l-.3.1h.3a1.3 1.3 0 0 1-.1-.4 5.8 5.8 0 0 1 0-.8c0-.8 0-2 .2-3.1l.2-3.4-.1-1.5a3 3 0 0 0-.3-.7 2 2 0 0 0-.6-.7 2 2 0 0 0-1.2-.4l-1.2.3-2.2.9-3.3 1.7a14.3 14.3 0 0 1-2.2.9v.4l.2-.4a.4.4 0 0 0-.2 0v.4l.2-.4-.3.6.5-.5a.7.7 0 0 0-.2-.1l-.3.6.5-.5-.5.5.6-.2a.6.6 0 0 0-.1-.3l-.5.5.6-.2h-.3.3-.3.3a1.9 1.9 0 0 1 .1-.5l.8-1.7 1.8-3.4.7-1.6c.2-.5.3-1 .3-1.6a2 2 0 0 0-.3-1.2 2 2 0 0 0-.7-.6l-1.1-.4a7.8 7.8 0 0 0-1.1 0c-1 0-2.3 0-3.4.2a34.3 34.3 0 0 1-4.2.2l-.2.2.2-.2-.2.2.2-.2-.4.4.6-.2a.6.6 0 0 0-.2-.2l-.4.4.6-.2-.6.2h.6a.7.7 0 0 0 0-.2l-.6.2h.6-.4l.4.1h-.4.4-.2.2-.2.2l.3-.4 1.6-1.5c1-.8 2.2-1.7 3.1-2.6l1.3-1.3.5-.8a2.3 2.3 0 0 0 .2-1v-.3a2 2 0 0 0-.4-.9c-.4-.4-.8-.6-1.2-.8-.7-.4-1.6-.7-2.5-1l-4-1.3-1.2-.6h-.2l-.2.1.3-.1-.3.1.3-.1-.6.2h.6a.6.6 0 0 0 0-.2l-.6.2h.6H0c0 .4.2.8.3 1l.5.6L2 36l2.4 1c1.3.3 2.8.7 3.8 1.1a6.8 6.8 0 0 1 1.4.7l.1-.2-.2.2.2-.2-.2.2.5-.3h-.5a.6.6 0 0 0 0 .3l.5-.3h-.5.5-.5.5-.5.4l-.4-.1h.4-.4.1-.1.1-.1L9 39l-1.6 1.5-3 2.5-1.3 1.3a4 4 0 0 0-.4.7 2.3 2.3 0 0 0-.2 1 1.8 1.8 0 0 0 .8 1.5c.4.3.8.4 1.2.4l1.2.1 3.4-.2a34 34 0 0 1 4.1-.2h.1l.1-.2-.1.2.1-.2-.1.2.3-.4-.4.3a.6.6 0 0 0 0 .1l.4-.4-.4.3.4-.3-.5.1v.2l.5-.3-.5.1h.2-.2.2-.2l-.1.5-.8 1.8-1.8 3.3-.7 1.6c-.2.6-.3 1-.3 1.6v.7a1.8 1.8 0 0 0 1.2 1.2l.7.1c.5 0 .9 0 1.3-.2a15 15 0 0 0 2.1-1l3.4-1.7a13.9 13.9 0 0 1 2-.8h.1V54l-.2.4a.5.5 0 0 0 .2.1V54l-.2.4.3-.4-.5.3a.5.5 0 0 0 .2.1l.3-.4-.5.3.1.3v.7c0 .9 0 2-.2 3.1l-.2 3.4.1 1.7.4.8.8.7.7.1.9-.1 1-.8c.7-.5 1.2-1.1 1.8-1.8 1-1 1.8-2.2 2.6-3.1a8.7 8.7 0 0 1 1.3-1.2v-.3.3-.3.3-.6l-.2.6h.1v-.6l-.1.6.1-.5-.3.4.2.1.1-.5-.3.4.3.5.8 2.2c.4 1.3.8 2.8 1.3 4 .2.7.5 1.3.8 1.8l.7.7c.3.2.7.3 1.1.3a2 2 0 0 0 1-.2l.6-.5.7-1.2 1-2.4a25 25 0 0 1 1.1-3.8l.6-1.2a1 1 0 0 1 0-.2v-.2.3-.3.3l-.2-.6v.6a.6.6 0 0 0 .2 0l-.2-.6v.6-.6.6-.6.6-.4l-.1.4v-.4.4-.1.1-.1.1l.5.4 1.5 1.6 2.5 3 1.3 1.3.8.5 1 .2a1.8 1.8 0 0 0 1.5-.8l.4-1.2.1-1.3-.2-3.4a33.2 33.2 0 0 1-.2-4v-.1l-.2-.2.2.2-.2-.2.2.2-.4-.4.3.5a.6.6 0 0 0 .1 0l-.4-.5.3.5-.3-.4.1.5a.6.6 0 0 0 .2 0l-.3-.5.1.5v-.3.3-.3.3l.5.1 1.7.8 3.4 1.8 1.6.7c.6.2 1 .3 1.6.3h.7a1.8 1.8 0 0 0 .8-.5l.4-.8.1-.7c0-.4 0-.8-.2-1.2-.2-.7-.5-1.4-1-2.1l-1.7-3.4a14 14 0 0 1-.8-2.1h-.1.1-.1.1-.5l.4.2a.5.5 0 0 0 .1-.2h-.5l.4.2-.4-.3.3.5a.5.5 0 0 0 .1-.2l-.4-.3.3.5.3-.1a5.7 5.7 0 0 1 .7 0c.8 0 2 0 3.1.2l3.4.2c.6 0 1.1 0 1.7-.2l.8-.3.7-.9a1.8 1.8 0 0 0 .1-.7 2.2 2.2 0 0 0-.2-.8c-.1-.4-.4-.8-.7-1a7.7 7.7 0 0 0-1.8-1.8c-1-1-2.2-1.8-3.1-2.6l-1-1a1.7 1.7 0 0 1-.2-.3h-.3.3-.3.3-.6l.6.2v-.1h-.6.6-.5l.4.3a.5.5 0 0 0 .1-.2l-.5-.1.4.3.5-.3c.5-.3 1.3-.5 2.2-.8 1.3-.4 2.8-.8 4-1.3a8 8 0 0 0 1.7-.9l.8-.6c.2-.3.3-.7.3-1.2a1.9 1.9 0 0 0-.2-1 2.5 2.5 0 0 0-.6-.5 5 5 0 0 0-1.1-.7l-2.4-1-3.8-1.1-1.2-.6a1 1 0 0 1-.2-.1l-.2.2.2-.2-.2.2.2-.2-.5.3h.6a.6.6 0 0 0 0-.3l-.6.3h.6-.6.6-.6.6-.4l.4.1h-.4.4-.1.1-.1.1l.4-.5 1.6-1.5 3-2.6c.5-.4 1-.8 1.3-1.3l.5-.7.2-1-.1-.7a1.9 1.9 0 0 0-.7-.8 3 3 0 0 0-1.2-.4 7.7 7.7 0 0 0-1.3-.1l-3.4.2a33.2 33.2 0 0 1-4 .2h-.1l-.2.2.2-.2-.2.2.2-.2-.4.4.5-.3a.6.6 0 0 0-.1-.1l-.4.4.5-.3-.4.3.5-.1a.6.6 0 0 0 0-.2l-.5.3.5-.1h-.3.3-.3.3a2 2 0 0 1 .1-.5l.8-1.8 1.8-3.3.7-1.6c.2-.6.3-1 .3-1.6v-.8a1.8 1.8 0 0 0-.5-.7 1.9 1.9 0 0 0-.8-.4 2.3 2.3 0 0 0-.7-.1c-.4 0-.8 0-1.2.2-.7.2-1.4.5-2.2 1l-3.3 1.7a14 14 0 0 1-2.1.8l-.1.5.3-.4a.5.5 0 0 0-.2-.1l-.1.5.3-.4-.3.4.4-.3a.5.5 0 0 0-.1-.1l-.3.4.4-.3a1.4 1.4 0 0 1 0-.3 5.7 5.7 0 0 1 0-.7c0-.9 0-2 .2-3.2L48 6c0-.6 0-1.2-.2-1.7a2.7 2.7 0 0 0-.3-.8 1.9 1.9 0 0 0-.9-.7 1.8 1.8 0 0 0-.7-.1 2.2 2.2 0 0 0-.8.1l-1.1.8-1.8 1.8c-.8 1-1.7 2.2-2.5 3l-1 1a1.7 1.7 0 0 1-.3.3v.3-.3.3-.3.6l.2-.6h-.1v.6-.6.4l.3-.3a.5.5 0 0 0-.2-.1l-.1.4.3-.3-.3-.5c-.3-.5-.5-1.3-.8-2.2-.4-1.3-.8-2.8-1.3-4a8 8 0 0 0-.9-1.8 3 3 0 0 0-.6-.7 2 2 0 0 0-1.2-.4l-1 .3-.5.5a5 5 0 0 0-.8 1.2l-.9 2.4-1.1 3.8-.6 1.2a1 1 0 0 1-.1.2l.2.2-.2-.3.2.3-.2-.3.3.6-.1-.6a.6.6 0 0 0-.2 0l.3.6-.1-.6.1.5v-.5.5-.5.4l.1-.4v.4-.4.1-.1.1-.1a2.5 2.5 0 0 1-.5-.4l-1.5-1.6-2.6-3a4 4 0 0 0-1.3-1.3 4 4 0 0 0-.7-.5 2.3 2.3 0 0 0-1-.2l-.7.1a1.9 1.9 0 0 0-.8.7 3 3 0 0 0-.4 1.2 7.8 7.8 0 0 0-.1 1.3c0 1 0 2.2.2 3.3a33.6 33.6 0 0 1 .2 4.1v.1l.2.1-.2-.1.2.1-.2-.1.4.3-.3-.4a.6.6 0 0 0-.1 0l.4.4-.3-.4.3.4-.1-.5a.6.6 0 0 0-.2 0l.3.5-.1-.5v.2-.2.2-.2a2 2 0 0 1-.5-.1l-1.8-.8-3.3-1.8a16.4 16.4 0 0 0-1.7-.7c-.5-.2-1-.3-1.6-.3h-.7l-.7.5a1.8 1.8 0 0 0-.4.7 2.2 2.2 0 0 0-.1.8c0 .4 0 .8.2 1.2l.9 2.1 1.8 3.4a14 14 0 0 1 .8 2.1h.5l-.4-.2a.5.5 0 0 0-.1.2h.5l-.4-.2.4.3-.3-.5a.5.5 0 0 0-.1.2l.4.3-.3-.5-.3.1h-.7c-.9 0-2 0-3.2-.2l-3.4-.2-1.6.1a2.7 2.7 0 0 0-.8.4 1.9 1.9 0 0 0-.7.8 1.8 1.8 0 0 0-.1.7l.1.9.8 1c.5.7 1.1 1.2 1.8 1.8 1 1 2.2 1.8 3 2.6a8.6 8.6 0 0 1 1.3 1.3h.3-.3.3-.3.5l-.5-.2v.1h.5-.5.4l-.3-.3a.5.5 0 0 0-.1.2l.4.1-.3-.3-.5.3-2.2.8c-1.3.4-2.8.8-4 1.3A8 8 0 0 0 1 32a3 3 0 0 0-.7.7 2 2 0 0 0-.4 1.1h1.3"/><path d="M16.3 33.8h1.2a16.2 16.2 0 0 1 4.8-11.4 16.2 16.2 0 0 1 11.4-4.8 16 16 0 0 1 11.5 4.8A16.2 16.2 0 0 1 50 33.8c0 4.5-1.9 8.6-4.8 11.5a16.2 16.2 0 0 1-11.5 4.8 16.2 16.2 0 0 1-11.4-4.8 16.2 16.2 0 0 1-4.8-11.5H15a18.7 18.7 0 1 0 37.4 0 18.7 18.7 0 0 0-37.4 0h1.3"/></g></svg>

+ 1 - 0
docs/rocketsrchrome_files/telescope.svg

@@ -0,0 +1 @@
+<svg width="71" height="62" xmlns="http://www.w3.org/2000/svg"><defs><filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="a"><feOffset dy="1" in="SourceAlpha" result="shadowOffsetOuter1"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1"/><feMerge><feMergeNode in="shadowMatrixOuter1"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs><g filter="url(#a)" fill="#FFF" fill-rule="evenodd"><path d="M69.102 15.534l-.176-1.251-17.997 2.504-1.604-11.455 16.742-2.33 1.78 12.707 1.255-.175-.176-1.251.176 1.251 1.256-.174L68.228.15 46.463 3.178l2.305 16.461 21.765-3.029-.175-1.251-1.256.174"/><path d="M48.858 15.387l-.175-1.252-15.082 2.099-.708-5.057 13.825-1.925.884 6.31 1.256-.175-.175-1.252.175 1.252 1.256-.175-1.236-8.813-18.847 2.623 1.41 10.065 18.849-2.623-.176-1.252-1.256.175"/><path d="M33.104 17.58l-.175-1.253-22.666 3.155-.708-5.058 21.41-2.98.884 6.31 1.255-.175-.175-1.252.175 1.252 1.256-.175-1.234-8.812L6.692 12.27l1.41 10.064 26.433-3.678-.175-1.252-1.256.175"/><path d="M9.345 22.071L9.17 20.82l-4.58.637-1.033-7.384 3.322-.462 1.21 8.635 1.256-.175-.175-1.251.175 1.251 1.256-.175-1.56-11.138-8.346 1.161L2.43 24.31l8.347-1.16-.176-1.253-1.256.175m17.914-3.115v39.81c0 .7.567 1.265 1.268 1.265.7 0 1.268-.566 1.268-1.264v-39.81c0-.699-.568-1.264-1.268-1.264-.7 0-1.268.565-1.268 1.263m-3.804 0v39.81c0 .7.568 1.265 1.268 1.265.7 0 1.268-.566 1.268-1.264v-39.81c0-.699-.567-1.264-1.268-1.264-.7 0-1.268.565-1.268 1.263"/><path d="M24.723 60.032h3.804c.7 0 1.268-.566 1.268-1.264 0-.698-.568-1.264-1.268-1.264h-3.804c-.7 0-1.268.566-1.268 1.264 0 .698.568 1.264 1.268 1.264m3.607-31.537l22.559 22.487a1.271 1.271 0 0 0 1.793 0 1.261 1.261 0 0 0 0-1.788L30.123 26.707a1.271 1.271 0 0 0-1.793 0 1.261 1.261 0 0 0 0 1.788m-.144 4.84l20.57 20.504a1.27 1.27 0 0 0 1.792 0 1.26 1.26 0 0 0 0-1.787L29.98 31.548a1.27 1.27 0 0 0-1.793 0 1.26 1.26 0 0 0 0 1.787"/><path d="M50.548 53.839l2.5-2.491a1.261 1.261 0 0 0 0-1.788 1.271 1.271 0 0 0-1.793 0l-2.5 2.492a1.26 1.26 0 0 0 0 1.787 1.27 1.27 0 0 0 1.793 0M23.696 26.707L1.136 49.194a1.261 1.261 0 0 0 0 1.788 1.27 1.27 0 0 0 1.793 0l22.56-22.487a1.261 1.261 0 0 0 0-1.788 1.27 1.27 0 0 0-1.793 0m.142 4.841L3.27 52.052a1.26 1.26 0 0 0 0 1.787 1.271 1.271 0 0 0 1.793 0l20.568-20.504a1.26 1.26 0 0 0 0-1.787 1.271 1.271 0 0 0-1.793 0"/><path d="M5.063 52.052l-2.5-2.492a1.27 1.27 0 0 0-1.793 0 1.261 1.261 0 0 0 0 1.788l2.5 2.491a1.271 1.271 0 0 0 1.793 0 1.26 1.26 0 0 0 0-1.787"/></g></svg>

+ 1 - 0
docs/rocketsrchrome_files/templating-icon.svg

@@ -0,0 +1 @@
+<svg width="101" height="52" xmlns="http://www.w3.org/2000/svg"><g fill="#FFF" fill-rule="evenodd"><path d="M37.102 50.632V26h10.306v-2.737H34.354v27.369h2.748"/><path d="M28.857 52H42.6v-2.737H28.857zm0-4.79H42.6v-2.736H28.857zm39.163 3.422V23.263H54.966V26h10.306v24.632h2.748"/><path d="M59.776 52h13.741v-2.737H59.776zm0-4.79h13.741v-2.736H59.776zM39.163 13h22.674a1.37 1.37 0 0 0 1.374-1.368 1.37 1.37 0 0 0-1.374-1.369H39.163a1.37 1.37 0 0 0-1.374 1.369A1.37 1.37 0 0 0 39.163 13"/><path d="M99.626 15.737v-1.369H63.21v-4.79h35.04v6.159h1.375v-1.369 1.369H101V6.842H60.463v10.263H101v-1.368h-1.374m-60.463-.684v-1.369H2.748v-4.79H37.79v6.159h1.374v-1.369 1.369h1.374V6.158H0V16.42h40.537v-1.368h-1.374"/><path d="M9.619 7.526v6.842a1.37 1.37 0 0 0 1.374 1.369 1.37 1.37 0 0 0 1.374-1.369V7.526a1.37 1.37 0 0 0-1.374-1.368A1.37 1.37 0 0 0 9.62 7.526m15.115 0v6.842a1.37 1.37 0 0 0 1.374 1.369 1.37 1.37 0 0 0 1.374-1.369V7.526a1.37 1.37 0 0 0-1.374-1.368 1.37 1.37 0 0 0-1.374 1.368m63.898 1.369v6.842a1.37 1.37 0 0 0 1.374 1.368 1.37 1.37 0 0 0 1.374-1.368V8.895a1.37 1.37 0 0 0-1.374-1.369 1.37 1.37 0 0 0-1.374 1.369m-15.116 0v6.842a1.37 1.37 0 0 0 1.374 1.368 1.37 1.37 0 0 0 1.374-1.368V8.895a1.37 1.37 0 0 0-1.374-1.369 1.37 1.37 0 0 0-1.374 1.369M55.653 34.21v-1.368h-7.558V2.737h6.184V34.21h1.374v-1.369 1.369h1.374V0h-11.68v35.579h11.68V34.21h-1.374"/></g></svg>

+ 1 - 0
docs/rocketsrchrome_files/testing-icon.svg

@@ -0,0 +1 @@
+<svg width="47" height="54" xmlns="http://www.w3.org/2000/svg"><g fill="#FFF" fill-rule="evenodd"><path d="M38.339 48h-1.08c-.004.12-.029.224-.157.407-.113.155-.314.35-.61.55-.515.352-1.31.71-2.296 1.018-1.48.465-3.389.83-5.498 1.07-2.11.242-4.425.364-6.739.364-4.027.002-8.065-.374-11.006-1.094-1.468-.356-2.662-.808-3.395-1.273-.368-.23-.613-.457-.74-.635-.13-.183-.154-.287-.157-.407a7.28 7.28 0 0 1 1.122-3.897c1.09-1.764 2.98-3.27 5.442-4.328 2.458-1.058 5.473-1.66 8.734-1.66 4.35-.003 8.258 1.075 10.998 2.86 1.371.89 2.45 1.952 3.179 3.128A7.286 7.286 0 0 1 37.259 48h2.16a9.492 9.492 0 0 0-1.452-5.055c-1.395-2.245-3.66-3.987-6.426-5.178-2.77-1.19-6.058-1.833-9.582-1.834-4.697.003-8.978 1.14-12.166 3.207-1.593 1.035-2.913 2.31-3.841 3.805A9.482 9.482 0 0 0 4.5 48c-.004.63.228 1.23.579 1.702.307.42.697.763 1.143 1.066.782.527 1.744.938 2.86 1.29 1.67.524 3.69.901 5.895 1.155 2.205.252 4.593.378 6.982.378 4.163-.002 8.314-.376 11.515-1.156 1.604-.394 2.97-.88 4.028-1.54.528-.333.986-.714 1.338-1.192A2.878 2.878 0 0 0 39.42 48h-1.081"/><path d="M23.394 37.09V36h-2.702V2.182h1.621V37.09h1.08V36v1.09h1.081V0h-5.942v38.182h5.942V37.09h-1.08"/><path d="M45.543 16.003l.496-.969c-1.65-.864-3.33-1.182-4.953-1.18-2.222.003-4.346.566-6.41 1.092-2.066.53-4.07 1.027-6.015 1.024-1.426-.001-2.819-.254-4.26-.95l-.467.983h1.08V2.913h-1.08l-.467.983c1.755.853 3.51 1.167 5.194 1.165 2.304-.002 4.477-.564 6.545-1.091 2.069-.533 4.032-1.028 5.88-1.025 1.354.002 2.643.25 3.961.936l.496-.969h-1.08v13.091h1.08l.496-.969-.496.97h1.08V2.247l-.584-.305c-1.65-.864-3.33-1.182-4.953-1.18-2.222.003-4.346.566-6.41 1.092-2.066.53-4.07 1.027-6.015 1.024-1.426-.001-2.819-.254-4.26-.95l-1.548-.75V16.69l.614.297c1.755.853 3.51 1.167 5.194 1.165 2.304-.003 4.477-.564 6.545-1.091 2.069-.533 4.032-1.028 5.88-1.025 1.354.002 2.643.25 3.961.936l1.576.823v-1.792h-1.08M5.157 14.22l.741.33.029-.055v-.001l-.198-.146.128.206a.244.244 0 0 0 .07-.06l-.198-.146.128.206-.264-.427v.5c.11.001.21-.038.264-.073l-.264-.427v.5-.46l-.315.348a.479.479 0 0 0 .315.112v-.46l-.315.348.133-.147-.151.129.018.018.133-.147-.151.129.029-.025-.03.022v.003l.03-.025-.03.022.028.057.643 1.471c.192.435.51.762.873.996.366.231.788.377 1.25.38.071 0 .143-.005.216-.012l1.583-.174.05-.003h.014l.023-.199-.073.184.05.015.023-.199-.073.184.175-.44-.38.271a.479.479 0 0 0 .205.17l.175-.442-.38.272.412-.295h-.509c-.002.075.027.2.097.295l.412-.295h-.509.277l-.26-.106a.276.276 0 0 0-.017.106h.277l-.26-.106-.006.011-.029.042-.94 1.298a2.33 2.33 0 0 0-.42 1.364c.002.468.122.946.42 1.363L9.546 22l.029.042.005.012.121-.055-.128.031.007.024.121-.055-.128.031.343-.083h-.351l.008.083.343-.083h-.351.498l-.445-.223a.508.508 0 0 0-.053.223h.498l-.445-.223.437.22-.204-.455a.508.508 0 0 0-.233.235l.437.22-.204-.455.109.242-.048-.262-.06.02.108.242-.048-.262.006.037-.003-.038-.003.001.006.037-.003-.038h-.013l-.05-.002-1.583-.174a1.946 1.946 0 0 0-.217-.012 2.35 2.35 0 0 0-1.249.379c-.363.234-.68.56-.873.996l-.643 1.472-.028.055-.001.002.198.145-.127-.206c-.056.036-.07.06-.071.06l.198.146-.127-.206.264.428v-.5a.506.506 0 0 0-.264.072l.264.428v-.5.458l.315-.346a.475.475 0 0 0-.315-.112v.458l.315-.346-.133.146.15-.128-.017-.018-.133.146.15-.128-.028.025.03-.023-.001-.002-.03.025.032-.023-.03-.056-.642-1.472a2.29 2.29 0 0 0-.873-.996 2.349 2.349 0 0 0-1.25-.38c-.071 0-.143.005-.216.013l-1.584.174-.05.003-.013-.001-.024.2.073-.185-.05-.015-.023.2.073-.185-.174.441.379-.272a.476.476 0 0 0-.205-.17l-.174.442.379-.272-.412.295h.509a.528.528 0 0 0-.097-.295l-.412.295h.509-.277l.261.107a.305.305 0 0 0 .016-.107h-.277l.261.107.006-.012.028-.042.94-1.298c.299-.417.418-.895.42-1.363a2.33 2.33 0 0 0-.42-1.364l-.972-1.342.032.044-.028-.042-.007-.012-.12.055.128-.032-.008-.023-.12.055.128-.032-.343.084h.352l-.009-.084-.343.084h.352-.499l.445.223a.52.52 0 0 0 .054-.223h-.499l.445.223-.437-.22.204.455a.511.511 0 0 0 .233-.235l-.437-.22.204.455-.108-.242.048.263.06-.021-.108-.242.048.263-.007-.038.003.038h.004l-.007-.038.003.038h.014l.049.003 1.584.174c.073.007.145.011.216.011a2.351 2.351 0 0 0 1.25-.379c.363-.234.68-.56.873-.996l.642-1.471-.741-.33-.742-.33-.642 1.47a.678.678 0 0 1-.257.274.752.752 0 0 1-.383.126l-.04-.002-1.585-.174a2.069 2.069 0 0 0-.224-.013 1.38 1.38 0 0 0-.827.248 1.115 1.115 0 0 0-.457.91c.006.38.153.662.331.914l.94 1.297c.054.068.11.228.108.398a.705.705 0 0 1-.107.397l-.94 1.297c-.18.252-.326.534-.332.914a1.124 1.124 0 0 0 .665 1.032c.213.097.419.125.619.126.075 0 .15-.004.224-.013l1.584-.174.041-.002a.755.755 0 0 1 .383.126c.132.083.227.2.257.273l.642 1.472c.094.212.213.409.398.582.18.17.461.32.78.318.318.001.6-.147.779-.318.186-.173.305-.37.398-.582l.643-1.472a.678.678 0 0 1 .256-.273.757.757 0 0 1 .383-.126l.042.002 1.583.174c.075.009.15.013.225.013.263-.002.55-.05.827-.248a1.109 1.109 0 0 0 .456-.91c-.006-.38-.152-.661-.33-.913l-.941-1.298a.706.706 0 0 1-.107-.397.706.706 0 0 1 .107-.398l.958-1.32-.017.022c.178-.251.324-.533.33-.913a1.13 1.13 0 0 0-.116-.505 1.126 1.126 0 0 0-.549-.527 1.476 1.476 0 0 0-.618-.126c-.076 0-.15.005-.225.013l-1.583.174-.042.002a.752.752 0 0 1-.383-.126.678.678 0 0 1-.256-.273L6.77 13.89a1.715 1.715 0 0 0-.397-.583 1.15 1.15 0 0 0-.78-.317 1.15 1.15 0 0 0-.78.317c-.185.173-.304.37-.398.583l.742.33"/></g></svg>

+ 4 - 0
examples/Cargo.toml

@@ -41,6 +41,10 @@ path = "common.rs"
 # Examples are manually keyed in
 # ================================
 
+[[example]]
+path = "example_app.rs"
+name = "example_app"
+
 # [[example]]
 # path = "hello_web.rs"
 # name = "hello_web"

+ 48 - 0
examples/example_app.rs

@@ -0,0 +1,48 @@
+//! Example App
+//! --------------
+//!
+//! This example shows how to use the cross-platform abilities of dioxus to generate everything a dioxus app might need.
+//! All of your apps will look like this.
+//!
+//! cargo run --features dioxus/static
+
+fn main() {
+    // DioxusApp::new(launch)
+}
+
+mod launches {
+    #[cfg(feature = "wasm")]
+    fn launch() {
+        // launch the wasm_rednerer
+    }
+
+    #[cfg(feature = "static")]
+    fn launch() {
+        // render the tree to text
+    }
+
+    // #[cfg(features = "server")]
+    // fn launch() {
+    //     // launch the app
+    // }
+
+    // #[cfg(features = "liveview")]
+    // fn launch() {
+    //     // launch the app
+    // }
+
+    // #[cfg(features = "desktop")]
+    // fn launch() {
+    //     // launch the app
+    // }
+
+    // #[cfg(features = "android")]
+    // fn launch() {
+    //     // launch a simulator in dev mode
+    // }
+
+    // #[cfg(features = "ios")]
+    // fn launch() {
+    //     // launch a simulator in dev mode
+    // }
+}