From e52281593befd8d398e20d160b691aeb17ed8cfd Mon Sep 17 00:00:00 2001 From: Jenkins Date: Mon, 23 Sep 2024 12:09:54 +0000 Subject: [PATCH] Update documentation --- 404.html | 8 ++++---- assets/js/8eff6037.4cd33f64.js | 1 + assets/js/8eff6037.543dde6f.js | 1 - assets/js/{main.c9eaf7d2.js => main.1bc4136e.js} | 4 ++-- ...7d2.js.LICENSE.txt => main.1bc4136e.js.LICENSE.txt} | 0 ...ntime~main.59a16814.js => runtime~main.d69b4a24.js} | 2 +- build.json | 10 +++++----- guides/js-waku/configure-discovery/index.html | 8 ++++---- guides/js-waku/debug-waku-dapp/index.html | 8 ++++---- guides/js-waku/faq/index.html | 8 ++++---- guides/js-waku/index.html | 8 ++++---- guides/js-waku/light-send-receive/index.html | 8 ++++---- guides/js-waku/manage-filter/index.html | 8 ++++---- guides/js-waku/message-encryption/index.html | 8 ++++---- guides/js-waku/run-waku-nodejs/index.html | 8 ++++---- guides/js-waku/store-retrieve-messages/index.html | 8 ++++---- guides/js-waku/use-waku-create-app/index.html | 8 ++++---- guides/js-waku/use-waku-react/index.html | 8 ++++---- guides/nwaku/build-source/index.html | 8 ++++---- guides/nwaku/config-methods/index.html | 8 ++++---- guides/nwaku/config-options/index.html | 10 +++++----- guides/nwaku/configure-discovery/index.html | 8 ++++---- guides/nwaku/configure-nwaku/index.html | 8 ++++---- guides/nwaku/faq/index.html | 8 ++++---- guides/nwaku/find-node-address/index.html | 8 ++++---- guides/nwaku/run-docker-compose/index.html | 8 ++++---- guides/nwaku/run-docker/index.html | 8 ++++---- guides/nwaku/run-node/index.html | 8 ++++---- guides/nwaku/upgrade-instructions/index.html | 8 ++++---- index.html | 8 ++++---- learn/concepts/content-topics/index.html | 8 ++++---- learn/concepts/discv5/index.html | 8 ++++---- learn/concepts/dns-discovery/index.html | 8 ++++---- learn/concepts/network-domains/index.html | 8 ++++---- learn/concepts/peer-discovery/index.html | 8 ++++---- learn/concepts/peer-exchange/index.html | 8 ++++---- learn/concepts/protocols/index.html | 8 ++++---- learn/concepts/static-peers/index.html | 8 ++++---- learn/concepts/transports/index.html | 8 ++++---- learn/faq/index.html | 8 ++++---- learn/glossary/index.html | 8 ++++---- learn/research/index.html | 8 ++++---- learn/security-features/index.html | 8 ++++---- learn/waku-network/index.html | 8 ++++---- learn/waku-vs-libp2p/index.html | 8 ++++---- migrations/js-waku/migration_v0.026_0.027/index.html | 8 ++++---- privacy-policy/index.html | 8 ++++---- research/benchmarks/postgres-adoption/index.html | 8 ++++---- research/index.html | 8 ++++---- .../research-and-studies/capped-bandwidth/index.html | 8 ++++---- .../research-and-studies/incentivisation/index.html | 8 ++++---- .../research-and-studies/maximum-bandwidth/index.html | 8 ++++---- .../message-propagation/index.html | 8 ++++---- .../research-and-studies/rln-key-benchmarks/index.html | 8 ++++---- rules-of-engagement/index.html | 8 ++++---- search-index.json | 2 +- security/index.html | 8 ++++---- terms/index.html | 8 ++++---- 58 files changed, 215 insertions(+), 215 deletions(-) create mode 100644 assets/js/8eff6037.4cd33f64.js delete mode 100644 assets/js/8eff6037.543dde6f.js rename assets/js/{main.c9eaf7d2.js => main.1bc4136e.js} (99%) rename assets/js/{main.c9eaf7d2.js.LICENSE.txt => main.1bc4136e.js.LICENSE.txt} (100%) rename assets/js/{runtime~main.59a16814.js => runtime~main.d69b4a24.js} (68%) diff --git a/404.html b/404.html index 339d77d..57eb660 100644 --- a/404.html +++ b/404.html @@ -5,8 +5,8 @@ Page Not Found | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
Skip to main content

Page Not Found

We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/assets/js/8eff6037.4cd33f64.js b/assets/js/8eff6037.4cd33f64.js new file mode 100644 index 0000000..17e29fe --- /dev/null +++ b/assets/js/8eff6037.4cd33f64.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[5844],{3905:(t,e,n)=>{n.d(e,{Zo:()=>m,kt:()=>s});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var o=a.createContext({}),p=function(t){var e=a.useContext(o),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},m=function(t){var e=p(t.components);return a.createElement(o.Provider,{value:e},t.children)},k="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},N=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,o=t.parentName,m=d(t,["components","mdxType","originalType","parentName"]),k=p(n),N=r,s=k["".concat(o,".").concat(N)]||k[N]||u[N]||l;return n?a.createElement(s,i(i({ref:e},m),{},{components:n})):a.createElement(s,i({ref:e},m))}));function s(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,i=new Array(l);i[0]=N;var d={};for(var o in e)hasOwnProperty.call(e,o)&&(d[o]=e[o]);d.originalType=t,d[k]="string"==typeof t?t:r,i[1]=d;for(var p=2;p{n.r(e),n.d(e,{assets:()=>o,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const l={title:"Node Configuration Options",hide_table_of_contents:!0},i=void 0,d={unversionedId:"guides/nwaku/config-options",id:"guides/nwaku/config-options",title:"Node Configuration Options",description:"Here are the available node configuration options, along with their default values and descriptions:",source:"@site/docs/guides/nwaku/config-options.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/config-options",permalink:"/guides/nwaku/config-options",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/config-options.md",tags:[],version:"current",lastUpdatedAt:1727093271,formattedLastUpdatedAt:"23 Sept 2024",frontMatter:{title:"Node Configuration Options",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Node Configuration Methods",permalink:"/guides/nwaku/config-methods"},next:{title:"Node Configuration Examples",permalink:"/guides/nwaku/configure-nwaku"}},o={},p=[{value:"Application-level config",id:"application-level-config",level:2},{value:"Log config",id:"log-config",level:2},{value:"General node config",id:"general-node-config",level:2},{value:"DNS addrs config",id:"dns-addrs-config",level:2},{value:"Relay config",id:"relay-config",level:2},{value:"Store and message store config",id:"store-and-message-store-config",level:2},{value:"Filter config",id:"filter-config",level:2},{value:"Light push config",id:"light-push-config",level:2},{value:"REST HTTP config",id:"rest-http-config",level:2},{value:"Metrics config",id:"metrics-config",level:2},{value:"DNS discovery config",id:"dns-discovery-config",level:2},{value:"Discv5 config",id:"discv5-config",level:2},{value:"Waku peer exchange config",id:"waku-peer-exchange-config",level:2},{value:"WebSocket config",id:"websocket-config",level:2},{value:"Non relay, request-response protocol DOS protection configuration",id:"non-relay-request-response-protocol-dos-protection-configuration",level:2}],m={toc:p},k="wrapper";function u(t){let{components:e,...n}=t;return(0,r.kt)(k,(0,a.Z)({},m,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Here are the available node configuration options, along with their default values and descriptions:"),(0,r.kt)("h2",{id:"application-level-config"},"Application-level config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"config-file")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Loads configuration from a TOML file (cmd-line parameters take precedence)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"protected-topic")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"newSeq[ProtectedTopic](0)")),(0,r.kt)("td",{parentName:"tr",align:null},"Topics and its public key to be used for message validation, topic:pubkey. Argument may be repeated")))),(0,r.kt)("h2",{id:"log-config"},"Log config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"log-level")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"logging.LogLevel.INFO")),(0,r.kt)("td",{parentName:"tr",align:null},"Sets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"log-format")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"logging.LogFormat.TEXT")),(0,r.kt)("td",{parentName:"tr",align:null},"Specifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON")))),(0,r.kt)("h2",{id:"general-node-config"},"General node config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cluster-id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"0")),(0,r.kt)("td",{parentName:"tr",align:null},"Cluster id that the node is running in. Node in a different cluster id is disconnected")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"agent-string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")),(0,r.kt)("td",{parentName:"tr",align:null},"Node agent string which is used as identifier in network")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"nodekey")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"P2P node private key as 64-char hex string")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"listen-address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"defaultListenAddress()")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening address for LibP2P (and Discovery v5, if enabled) traffic")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"tcp-port")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"60000")),(0,r.kt)("td",{parentName:"tr",align:null},"TCP listening port")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ports-shift")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"0")),(0,r.kt)("td",{parentName:"tr",align:null},"Add a shift to all port numbers")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"nat")),(0,r.kt)("td",{parentName:"tr",align:null},"any"),(0,r.kt)("td",{parentName:"tr",align:null},"Specify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip:")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ext-multiaddr")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"External multiaddresses to advertise to the network. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ext-multiaddr-only")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Only announce external multiaddresses")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"max-connections")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"50")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum allowed number of libp2p connections")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"max-relay-peers")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum allowed number of relay peers")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"peer-store-capacity")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum stored peers in the peerstore")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"peer-persistence")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable peer persistence")))),(0,r.kt)("h2",{id:"dns-addrs-config"},"DNS addrs config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns-addrs")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"true")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable resolution of ",(0,r.kt)("inlineCode",{parentName:"td"},"dnsaddr"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"dns4")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"dns6")," multiaddrs")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns-addrs-name-server")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'["1.1.1.1", "1.0.0.1"]')),(0,r.kt)("td",{parentName:"tr",align:null},"DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns4-domain-name")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"The domain name resolving to the node's public IPv4 address")))),(0,r.kt)("h2",{id:"relay-config"},"Relay config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"relay")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"true")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable relay protocol: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"relay-peer-exchange")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable gossipsub peer exchange in relay protocol: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable spam protection through rln-relay: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-cred-path")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"The path for persisting rln-relay credential")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-membership-index")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"The index of the onchain commitment to use")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-dynamic")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable waku-rln-relay with on-chain dynamic group management: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-id-key")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Rln relay identity secret key as a Hex string")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-id-commitment-key")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Rln relay identity commitment key as a Hex string")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-eth-client-address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ws://localhost:8540/")),(0,r.kt)("td",{parentName:"tr",align:null},"WebSocket address of an Ethereum testnet client e.g., ",(0,r.kt)("inlineCode",{parentName:"td"},"ws://localhost:8540/"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-eth-contract-address")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Address of membership contract on an Ethereum testnet")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-eth-private-key")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Private key for broadcasting transactions")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"execute")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Runs the registration function on-chain. By default, a dry-run will occur")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-cred-password")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Password for encrypting RLN credentials")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-tree-path")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Path to the RLN merkle tree sled db (",(0,r.kt)("a",{parentName:"td",href:"https://github.com/spacejam/sled"},"https://github.com/spacejam/sled"),")")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-bandwidth-threshold")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"0 # to maintain backwards compatibility")),(0,r.kt)("td",{parentName:"tr",align:null},"Message rate in bytes/sec after which verification of proofs should happen")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"staticnode")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Peer multiaddr to directly connect with. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"keep-alive")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable keep-alive for idle connections: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"pubsub-topic")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Default pubsub topic to subscribe to. Argument may be repeated. ",(0,r.kt)("strong",{parentName:"td"},"Deprecated!")," Please use ",(0,r.kt)("inlineCode",{parentName:"td"},"shard")," and/or ",(0,r.kt)("inlineCode",{parentName:"td"},"content-topic")," instead")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"shard")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Shard to subscribe to. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"content-topic")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Default content topic to subscribe to. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"reliability")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable experimental reliability protocol true","|","false")))),(0,r.kt)("h2",{id:"store-and-message-store-config"},"Store and message store config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"store")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable/disable waku store protocol")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"storenode")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Peer multiaddress to query for storage")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"store-message-retention-policy")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"time:172800")),(0,r.kt)("td",{parentName:"tr",align:null},"Message store retention policy. Time retention policy: ",(0,r.kt)("inlineCode",{parentName:"td"},"time:"),". Capacity retention policy: ",(0,r.kt)("inlineCode",{parentName:"td"},"capacity:"),". Size retention policy: ",(0,r.kt)("inlineCode",{parentName:"td"},"size:"),". Set to ",(0,r.kt)("inlineCode",{parentName:"td"},"none")," to disable")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"store-message-db-url")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"sqlite://store.sqlite3")),(0,r.kt)("td",{parentName:"tr",align:null},"The database connection URL for persistent storage")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"store-message-db-vacuum")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable database vacuuming at start. Only supported by SQLite database engine")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"store-message-db-migration")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"true")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable database migration at start")))),(0,r.kt)("h2",{id:"filter-config"},"Filter config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"filter")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable filter protocol: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"filternode")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Peer multiaddr to request content filtering of messages")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"filter-subscription-timeout")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"300 # 5 minutes")),(0,r.kt)("td",{parentName:"tr",align:null},"Timeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"filter-max-peers-to-serve")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1000")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum number of peers to serve at a time. Only for v2 filter protocol")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"filter-max-criteria")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1000")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol")))),(0,r.kt)("h2",{id:"light-push-config"},"Light push config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"lightpush")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable lightpush protocol: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"lightpushnode")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Peer multiaddr to request lightpush of published messages")))),(0,r.kt)("h2",{id:"rest-http-config"},"REST HTTP config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable Waku REST HTTP server: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest-address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"127.0.0.1")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening address of the REST HTTP server")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest-port")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"8645")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening port of the REST HTTP server")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest-relay-cache-capacity")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"30")),(0,r.kt)("td",{parentName:"tr",align:null},"Capacity of the Relay REST API message cache")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest-admin")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable access to REST HTTP Admin API: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest-allow-origin")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Allow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,","*",") for defining URLs and ports such as ",(0,r.kt)("inlineCode",{parentName:"td"},"localhost:*"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"127.0.0.1:8080"),", or allow any website with ",(0,r.kt)("inlineCode",{parentName:"td"},"*"))))),(0,r.kt)("h2",{id:"metrics-config"},"Metrics config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"metrics-server")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable the metrics server: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"metrics-server-address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"127.0.0.1")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening address of the metrics server")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"metrics-server-port")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"8008")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening HTTP port of the metrics server")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"metrics-logging")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"true")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable metrics logging: true","|","false")))),(0,r.kt)("h2",{id:"dns-discovery-config"},"DNS discovery config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns-discovery")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable discovering nodes via DNS")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns-discovery-url")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"URL for DNS node list in format 'enrtree://","@","'")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns-discovery-name-server")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'["1.1.1.1", "1.0.0.1"]')),(0,r.kt)("td",{parentName:"tr",align:null},"DNS name server IPs to query. Argument may be repeated")))),(0,r.kt)("h2",{id:"discv5-config"},"Discv5 config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-discovery")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable discovering nodes via Node Discovery v5")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-udp-port")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"9000")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening UDP port for Node Discovery v5")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-bootstrap-node")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Text-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-enr-auto-update")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Discovery can automatically update its ENR with the IP address")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-table-ip-limit")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"10")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum amount of nodes with the same IP in discv5 routing tables")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-bucket-ip-limit")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"2")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum amount of nodes with the same IP in discv5 routing table buckets")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-bits-per-hop")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1")),(0,r.kt)("td",{parentName:"tr",align:null},"Kademlia's b variable, increase for less hops per lookup")))),(0,r.kt)("h2",{id:"waku-peer-exchange-config"},"Waku peer exchange config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"peer-exchange")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable waku peer exchange protocol (responder side): true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"peer-exchange-node")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Peer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)")))),(0,r.kt)("h2",{id:"websocket-config"},"WebSocket config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"websocket-support")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable websocket: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"websocket-port")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"8000")),(0,r.kt)("td",{parentName:"tr",align:null},"WebSocket listening port")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"websocket-secure-support")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable secure websocket: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"websocket-secure-key-path")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Secure websocket key path: '/path/to/key.txt'")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"websocket-secure-cert-path")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Secure websocket Certificate path: '/path/to/cert.txt'")))),(0,r.kt)("h2",{id:"non-relay-request-response-protocol-dos-protection-configuration"},"Non relay, request-response protocol DOS protection configuration"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rate-limit")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"This is a repeatable option. Each one of them can describe spefic rate limit configuration for a particular protocol.",(0,r.kt)("br",null),"\\",":volume/period\\",(0,r.kt)("br",null),"- if protocol is not given, settings will be taken as default for un-set protocols. Ex: ",(0,r.kt)("inlineCode",{parentName:"td"},"80/2s"),(0,r.kt)("br",null),"-Supported protocols are: ",(0,r.kt)("inlineCode",{parentName:"td"},"lightpush"),"|",(0,r.kt)("inlineCode",{parentName:"td"},"filter"),"|",(0,r.kt)("inlineCode",{parentName:"td"},"px"),"|",(0,r.kt)("inlineCode",{parentName:"td"},"store"),"|",(0,r.kt)("inlineCode",{parentName:"td"},"storev2"),"|",(0,r.kt)("inlineCode",{parentName:"td"},"storev3"),(0,r.kt)("br",null),"-volume must be an integer value, representing number of requests over the period of time allowed.",(0,r.kt)("br",null),"-period\\"," must be an integer with defined unit as one of ",(0,r.kt)("inlineCode",{parentName:"td"},"h"),"|",(0,r.kt)("inlineCode",{parentName:"td"},"m"),"|",(0,r.kt)("inlineCode",{parentName:"td"},"s"),"|",(0,r.kt)("inlineCode",{parentName:"td"},"ms"),(0,r.kt)("br",null),"- ",(0,r.kt)("inlineCode",{parentName:"td"},"storev2")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"storev3")," takes precedence over ",(0,r.kt)("inlineCode",{parentName:"td"},"store")," which can easy set both store protocols at once.",(0,r.kt)("br",null),"- In case of multiple set of the same protocol limit, last one will take place.",(0,r.kt)("br",null),"- if config is not set it means unlimited requests are allowed.",(0,r.kt)("br",null),"-filter has a bit different approach. It has a default setting applied if not overridden. Rate limit setting for filter will be applied per subscriber-peers, not globally - it must be considered when changing the setting.",(0,r.kt)("br",null),(0,r.kt)("br",null),"Examples:",(0,r.kt)("br",null),"- ",(0,r.kt)("inlineCode",{parentName:"td"},"100/1s")," - default for all protocols if not set otherwise.",(0,r.kt)("br",null),"-",(0,r.kt)("inlineCode",{parentName:"td"},"lightpush:0/0s")," - lightpush protocol will be not rate limited.",(0,r.kt)("br",null),"-",(0,r.kt)("inlineCode",{parentName:"td"},"store:130/1500ms")," - both store-v3 and store-v2 will apply 130 request per each 1500ms separately.",(0,r.kt)("br",null),"-",(0,r.kt)("inlineCode",{parentName:"td"},"px:10/1h")," PeerExchange will serve only 10 requests in every hour.",(0,r.kt)("br",null),"-",(0,r.kt)("inlineCode",{parentName:"td"},"filter:8/5m")," - will allow 8 subs/unsubs/ping requests for each subscribers within every 5 min.")))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"To configure your node using the provided configuration options, have a look at the ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/config-methods"},"Node Configuration Methods")," guide.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8eff6037.543dde6f.js b/assets/js/8eff6037.543dde6f.js deleted file mode 100644 index 7e188c9..0000000 --- a/assets/js/8eff6037.543dde6f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[5844],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>s});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),p=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},m=function(t){var e=p(t.components);return n.createElement(o.Provider,{value:e},t.children)},k="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},N=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,o=t.parentName,m=d(t,["components","mdxType","originalType","parentName"]),k=p(a),N=r,s=k["".concat(o,".").concat(N)]||k[N]||u[N]||l;return a?n.createElement(s,i(i({ref:e},m),{},{components:a})):n.createElement(s,i({ref:e},m))}));function s(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=N;var d={};for(var o in e)hasOwnProperty.call(e,o)&&(d[o]=e[o]);d.originalType=t,d[k]="string"==typeof t?t:r,i[1]=d;for(var p=2;p{a.r(e),a.d(e,{assets:()=>o,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var n=a(87462),r=(a(67294),a(3905));const l={title:"Node Configuration Options",hide_table_of_contents:!0},i=void 0,d={unversionedId:"guides/nwaku/config-options",id:"guides/nwaku/config-options",title:"Node Configuration Options",description:"Here are the available node configuration options, along with their default values and descriptions:",source:"@site/docs/guides/nwaku/config-options.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/config-options",permalink:"/guides/nwaku/config-options",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/config-options.md",tags:[],version:"current",lastUpdatedAt:1726825111,formattedLastUpdatedAt:"20 Sept 2024",frontMatter:{title:"Node Configuration Options",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Node Configuration Methods",permalink:"/guides/nwaku/config-methods"},next:{title:"Node Configuration Examples",permalink:"/guides/nwaku/configure-nwaku"}},o={},p=[{value:"Application-level config",id:"application-level-config",level:2},{value:"Log config",id:"log-config",level:2},{value:"General node config",id:"general-node-config",level:2},{value:"DNS addrs config",id:"dns-addrs-config",level:2},{value:"Relay config",id:"relay-config",level:2},{value:"Store and message store config",id:"store-and-message-store-config",level:2},{value:"Filter config",id:"filter-config",level:2},{value:"Light push config",id:"light-push-config",level:2},{value:"REST HTTP config",id:"rest-http-config",level:2},{value:"Metrics config",id:"metrics-config",level:2},{value:"DNS discovery config",id:"dns-discovery-config",level:2},{value:"Discv5 config",id:"discv5-config",level:2},{value:"Waku peer exchange config",id:"waku-peer-exchange-config",level:2},{value:"WebSocket config",id:"websocket-config",level:2}],m={toc:p},k="wrapper";function u(t){let{components:e,...a}=t;return(0,r.kt)(k,(0,n.Z)({},m,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Here are the available node configuration options, along with their default values and descriptions:"),(0,r.kt)("h2",{id:"application-level-config"},"Application-level config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"config-file")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Loads configuration from a TOML file (cmd-line parameters take precedence)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"protected-topic")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"newSeq[ProtectedTopic](0)")),(0,r.kt)("td",{parentName:"tr",align:null},"Topics and its public key to be used for message validation, topic:pubkey. Argument may be repeated")))),(0,r.kt)("h2",{id:"log-config"},"Log config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"log-level")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"logging.LogLevel.INFO")),(0,r.kt)("td",{parentName:"tr",align:null},"Sets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"log-format")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"logging.LogFormat.TEXT")),(0,r.kt)("td",{parentName:"tr",align:null},"Specifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON")))),(0,r.kt)("h2",{id:"general-node-config"},"General node config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cluster-id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"0")),(0,r.kt)("td",{parentName:"tr",align:null},"Cluster id that the node is running in. Node in a different cluster id is disconnected")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"agent-string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")),(0,r.kt)("td",{parentName:"tr",align:null},"Node agent string which is used as identifier in network")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"nodekey")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"P2P node private key as 64-char hex string")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"listen-address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"defaultListenAddress()")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening address for LibP2P (and Discovery v5, if enabled) traffic")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"tcp-port")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"60000")),(0,r.kt)("td",{parentName:"tr",align:null},"TCP listening port")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ports-shift")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"0")),(0,r.kt)("td",{parentName:"tr",align:null},"Add a shift to all port numbers")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"nat")),(0,r.kt)("td",{parentName:"tr",align:null},"any"),(0,r.kt)("td",{parentName:"tr",align:null},"Specify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip:")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ext-multiaddr")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"External multiaddresses to advertise to the network. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ext-multiaddr-only")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Only announce external multiaddresses")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"max-connections")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"50")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum allowed number of libp2p connections")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"max-relay-peers")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum allowed number of relay peers")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"peer-store-capacity")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum stored peers in the peerstore")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"peer-persistence")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable peer persistence")))),(0,r.kt)("h2",{id:"dns-addrs-config"},"DNS addrs config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns-addrs")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"true")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable resolution of ",(0,r.kt)("inlineCode",{parentName:"td"},"dnsaddr"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"dns4")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"dns6")," multiaddrs")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns-addrs-name-server")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'["1.1.1.1", "1.0.0.1"]')),(0,r.kt)("td",{parentName:"tr",align:null},"DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns4-domain-name")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"The domain name resolving to the node's public IPv4 address")))),(0,r.kt)("h2",{id:"relay-config"},"Relay config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"relay")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"true")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable relay protocol: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"relay-peer-exchange")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable gossipsub peer exchange in relay protocol: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable spam protection through rln-relay: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-cred-path")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"The path for persisting rln-relay credential")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-membership-index")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"The index of the onchain commitment to use")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-dynamic")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable waku-rln-relay with on-chain dynamic group management: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-id-key")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Rln relay identity secret key as a Hex string")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-id-commitment-key")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Rln relay identity commitment key as a Hex string")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-eth-client-address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ws://localhost:8540/")),(0,r.kt)("td",{parentName:"tr",align:null},"WebSocket address of an Ethereum testnet client e.g., ",(0,r.kt)("inlineCode",{parentName:"td"},"ws://localhost:8540/"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-eth-contract-address")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Address of membership contract on an Ethereum testnet")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-eth-private-key")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Private key for broadcasting transactions")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"execute")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Runs the registration function on-chain. By default, a dry-run will occur")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-cred-password")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Password for encrypting RLN credentials")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-tree-path")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Path to the RLN merkle tree sled db (",(0,r.kt)("a",{parentName:"td",href:"https://github.com/spacejam/sled"},"https://github.com/spacejam/sled"),")")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rln-relay-bandwidth-threshold")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"0 # to maintain backwards compatibility")),(0,r.kt)("td",{parentName:"tr",align:null},"Message rate in bytes/sec after which verification of proofs should happen")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"staticnode")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Peer multiaddr to directly connect with. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"keep-alive")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable keep-alive for idle connections: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"pubsub-topic")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Default pubsub topic to subscribe to. Argument may be repeated. ",(0,r.kt)("strong",{parentName:"td"},"Deprecated!")," Please use ",(0,r.kt)("inlineCode",{parentName:"td"},"shard")," and/or ",(0,r.kt)("inlineCode",{parentName:"td"},"content-topic")," instead")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"shard")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Shard to subscribe to. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"content-topic")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Default content topic to subscribe to. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"reliability")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable experimental reliability protocol true","|","false")))),(0,r.kt)("h2",{id:"store-and-message-store-config"},"Store and message store config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"store")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable/disable waku store protocol")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"storenode")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Peer multiaddress to query for storage")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"store-message-retention-policy")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"time:172800")),(0,r.kt)("td",{parentName:"tr",align:null},"Message store retention policy. Time retention policy: ",(0,r.kt)("inlineCode",{parentName:"td"},"time:"),". Capacity retention policy: ",(0,r.kt)("inlineCode",{parentName:"td"},"capacity:"),". Size retention policy: ",(0,r.kt)("inlineCode",{parentName:"td"},"size:"),". Set to ",(0,r.kt)("inlineCode",{parentName:"td"},"none")," to disable")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"store-message-db-url")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"sqlite://store.sqlite3")),(0,r.kt)("td",{parentName:"tr",align:null},"The database connection URL for persistent storage")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"store-message-db-vacuum")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable database vacuuming at start. Only supported by SQLite database engine")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"store-message-db-migration")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"true")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable database migration at start")))),(0,r.kt)("h2",{id:"filter-config"},"Filter config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"filter")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable filter protocol: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"filternode")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Peer multiaddr to request content filtering of messages")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"filter-subscription-timeout")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"300 # 5 minutes")),(0,r.kt)("td",{parentName:"tr",align:null},"Timeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"filter-max-peers-to-serve")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1000")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum number of peers to serve at a time. Only for v2 filter protocol")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"filter-max-criteria")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1000")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol")))),(0,r.kt)("h2",{id:"light-push-config"},"Light push config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"lightpush")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable lightpush protocol: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"lightpushnode")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Peer multiaddr to request lightpush of published messages")))),(0,r.kt)("h2",{id:"rest-http-config"},"REST HTTP config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable Waku REST HTTP server: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest-address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"127.0.0.1")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening address of the REST HTTP server")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest-port")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"8645")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening port of the REST HTTP server")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest-relay-cache-capacity")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"30")),(0,r.kt)("td",{parentName:"tr",align:null},"Capacity of the Relay REST API message cache")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest-admin")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable access to REST HTTP Admin API: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"rest-allow-origin")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Allow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,","*",") for defining URLs and ports such as ",(0,r.kt)("inlineCode",{parentName:"td"},"localhost:*"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"127.0.0.1:8080"),", or allow any website with ",(0,r.kt)("inlineCode",{parentName:"td"},"*"))))),(0,r.kt)("h2",{id:"metrics-config"},"Metrics config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"metrics-server")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable the metrics server: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"metrics-server-address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"127.0.0.1")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening address of the metrics server")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"metrics-server-port")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"8008")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening HTTP port of the metrics server")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"metrics-logging")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"true")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable metrics logging: true","|","false")))),(0,r.kt)("h2",{id:"dns-discovery-config"},"DNS discovery config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns-discovery")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable discovering nodes via DNS")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns-discovery-url")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"URL for DNS node list in format 'enrtree://","@","'")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dns-discovery-name-server")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'["1.1.1.1", "1.0.0.1"]')),(0,r.kt)("td",{parentName:"tr",align:null},"DNS name server IPs to query. Argument may be repeated")))),(0,r.kt)("h2",{id:"discv5-config"},"Discv5 config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-discovery")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable discovering nodes via Node Discovery v5")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-udp-port")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"9000")),(0,r.kt)("td",{parentName:"tr",align:null},"Listening UDP port for Node Discovery v5")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-bootstrap-node")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Text-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-enr-auto-update")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Discovery can automatically update its ENR with the IP address")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-table-ip-limit")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"10")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum amount of nodes with the same IP in discv5 routing tables")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-bucket-ip-limit")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"2")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum amount of nodes with the same IP in discv5 routing table buckets")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"discv5-bits-per-hop")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1")),(0,r.kt)("td",{parentName:"tr",align:null},"Kademlia's b variable, increase for less hops per lookup")))),(0,r.kt)("h2",{id:"waku-peer-exchange-config"},"Waku peer exchange config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"peer-exchange")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable waku peer exchange protocol (responder side): true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"peer-exchange-node")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Peer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)")))),(0,r.kt)("h2",{id:"websocket-config"},"WebSocket config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"websocket-support")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable websocket: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"websocket-port")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"8000")),(0,r.kt)("td",{parentName:"tr",align:null},"WebSocket listening port")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"websocket-secure-support")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable secure websocket: true","|","false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"websocket-secure-key-path")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Secure websocket key path: '/path/to/key.txt'")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"websocket-secure-cert-path")),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},"Secure websocket Certificate path: '/path/to/cert.txt'")))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"To configure your node using the provided configuration options, have a look at the ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/config-methods"},"Node Configuration Methods")," guide.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.c9eaf7d2.js b/assets/js/main.1bc4136e.js similarity index 99% rename from assets/js/main.c9eaf7d2.js rename to assets/js/main.1bc4136e.js index cc573a0..aa83df2 100644 --- a/assets/js/main.c9eaf7d2.js +++ b/assets/js/main.1bc4136e.js @@ -1,4 +1,4 @@ -/*! For license information please see main.c9eaf7d2.js.LICENSE.txt */ +/*! For license information please see main.1bc4136e.js.LICENSE.txt */ (self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[179],{31665:(e,t,n)=>{"use strict";Object.defineProperty(t,Symbol.toStringTag,{value:"Module"});const r=n(67294),a=n(73935),o=n(70917);function i(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const n in e)if("default"!==n){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}return t.default=e,Object.freeze(t)}const l=i(r);var s=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t2||B(N)>3?"":" "}function V(e,t){for(;--t&&R()&&!(N<48||N>102||N>57&&N<65||N>70&&N<97););return F(e,M()+(t<6&&32==j()&&32==R()))}function q(e){for(;R();)switch(N){case e:return P;case 34:case 39:34!==e&&39!==e&&q(N);break;case 40:41===e&&q(e);break;case 92:R()}return P}function W(e,t){for(;R()&&e+N!==57&&(e+N!==84||47!==j()););return"/*"+F(t,P-1)+"*"+v(47===e?e:R())}function G(e){for(;!B(j());)R();return F(e,P)}function Z(e){return $(Q("",null,null,null,[""],e=z(e),0,[0],e))}function Q(e,t,n,r,a,o,i,l,s){for(var u=0,c=0,d=i,f=0,p=0,h=0,m=1,g=1,b=1,y=0,_="",S=a,D=o,A=r,L=_;g;)switch(h=y,y=R()){case 40:if(108!=h&&58==k(L,d-1)){-1!=x(L+=w(U(y),"&","&\f"),"&\f")&&(b=-1);break}case 34:case 39:case 91:L+=U(y);break;case 9:case 10:case 13:case 32:L+=H(h);break;case 92:L+=V(M()-1,7);continue;case 47:switch(j()){case 42:case 47:C(X(W(R(),M()),t,n),s);break;default:L+="/"}break;case 123*m:l[u++]=E(L)*b;case 125*m:case 59:case 0:switch(y){case 0:case 125:g=0;case 59+c:p>0&&E(L)-d&&C(p>32?K(L+";",r,n,d-1):K(w(L," ","")+";",r,n,d-2),s);break;case 59:L+=";";default:if(C(A=Y(L,t,n,u,c,a,l,_,S=[],D=[],d),o),123===y)if(0===c)Q(L,t,A,A,S,o,d,l,D);else switch(99===f&&110===k(L,3)?100:f){case 100:case 109:case 115:Q(e,A,A,r&&C(Y(e,A,A,0,0,a,l,_,a,S=[],d),D),a,D,d,l,r?S:D);break;default:Q(L,A,A,A,[""],D,0,l,D)}}u=c=p=0,m=b=1,_=L="",d=i;break;case 58:d=1+E(L),p=h;default:if(m<1)if(123==y)--m;else if(125==y&&0==m++&&125==(N=P>0?k(I,--P):0,O--,10===N&&(O=1,T--),N))continue;switch(L+=v(y),y*m){case 38:b=c>0?1:(L+="\f",-1);break;case 44:l[u++]=(E(L)-1)*b,b=1;break;case 64:45===j()&&(L+=U(R())),f=j(),c=d=E(_=L+=G(M())),y++;break;case 45:45===h&&2==E(L)&&(m=0)}}return o}function Y(e,t,n,r,a,o,i,l,s,u,c){for(var d=a-1,f=0===a?o:[""],h=S(f),m=0,v=0,b=0;m0?f[x]+" "+k:w(k,/&\f/g,f[x])))&&(s[b++]=E);return A(e,t,n,0===a?p:l,s,u,c)}function X(e,t,n){return A(e,t,n,f,v(N),_(e,2,-2),0)}function K(e,t,n,r){return A(e,t,n,h,_(e,0,r),_(e,r+1,-1),r)}function J(e,t){for(var n="",r=S(e),a=0;a6)switch(k(e,t+1)){case 109:if(45!==k(e,t+4))break;case 102:return w(e,/(.+:)(.+)-([^]+)/,"$1"+d+"$2-$3$1"+c+(108==k(e,t+3)?"$3":"$2-$3"))+e;case 115:return~x(e,"stretch")?le(w(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==k(e,t+1))break;case 6444:switch(k(e,E(e)-3-(~x(e,"!important")&&10))){case 107:return w(e,":",":"+d)+e;case 101:return w(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+d+(45===k(e,14)?"inline-":"")+"box$3$1"+d+"$2$3$1"+u+"$2box$3")+e}break;case 5936:switch(k(e,t+11)){case 114:return d+e+u+w(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return d+e+u+w(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return d+e+u+w(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return d+e+u+e+e}return e}var se,ue=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case h:e.return=le(e.value,e.length);break;case m:return J([L(e,{value:w(e.value,"@","@"+d)})],r);case p:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return J([L(e,{props:[w(t,/:(read-\w+)/,":"+c+"$1")]})],r);case"::placeholder":return J([L(e,{props:[w(t,/:(plac\w+)/,":"+d+"input-$1")]}),L(e,{props:[w(t,/:(plac\w+)/,":"+c+"$1")]}),L(e,{props:[w(t,/:(plac\w+)/,u+"input-$1")]})],r)}return""}))}}],ce=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var r=e.stylisPlugins||ue;var a,o,i={},l=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=4;++r,a-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(a){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(a)+s,styles:a,next:Se}}(i,void 0,r.useContext(Ne));l+=t.key+"-"+s.name;var u={};for(var c in e)Oe.call(e,c)&&"css"!==c&&c!==Ie&&(u[c]=e[c]);return u.ref=n,u.className=l,r.createElement(r.Fragment,null,r.createElement(Le,{cache:t,serialized:s,isStringTag:"string"==typeof o}),r.createElement(o,u))}));var je,Me,Fe,Be={},ze={};function $e(){if(Me)return je;Me=1;var e=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;return je=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(r,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(r),s=1;s{const[t,n]=r.useState(e.value??e.defaultValue),a=void 0===e.value,o=void 0!==t&&("string"==typeof t?t.length>0:t.toString().length>0);return r.useEffect((()=>{!a&&n(e.value)}),[a,e.value]),{value:t,filled:o,onChange:t=>{if(a){const e=t.target.type,r=t.target["checkbox"===e||"radio"===e?"checked":"value"];n(r)}e.onChange&&e.onChange(t)},setValue:t=>{var n,r,a,o;const i=(null==(n=null==e?void 0:e.ref)?void 0:n.current)??("function"==typeof e.getInput&&e.getInput());if(!i)return;const l=new Event("input",{bubbles:!0});null==(o=null==(a=null==(r=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value"))?void 0:r.set)?void 0:a.call)||o.call(a,i,t),i.dispatchEvent(l)}}};var Xe=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n-1},dt=function(e,t){var n=this.__data__,r=it(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this};function ft(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991},_r=Lt,Er=kr,Sr=sr,Cr={};Cr["[object Float32Array]"]=Cr["[object Float64Array]"]=Cr["[object Int8Array]"]=Cr["[object Int16Array]"]=Cr["[object Int32Array]"]=Cr["[object Uint8Array]"]=Cr["[object Uint8ClampedArray]"]=Cr["[object Uint16Array]"]=Cr["[object Uint32Array]"]=!0,Cr["[object Arguments]"]=Cr["[object Array]"]=Cr["[object ArrayBuffer]"]=Cr["[object Boolean]"]=Cr["[object DataView]"]=Cr["[object Date]"]=Cr["[object Error]"]=Cr["[object Function]"]=Cr["[object Map]"]=Cr["[object Number]"]=Cr["[object Object]"]=Cr["[object RegExp]"]=Cr["[object Set]"]=Cr["[object String]"]=Cr["[object WeakMap]"]=!1;var Tr=function(e){return Sr(e)&&Er(e.length)&&!!Cr[_r(e)]};var Or=function(e){return function(t){return e(t)}},Dr={};!function(e,t){var n=yt,r=t&&!t.nodeType&&t,a=r&&e&&!e.nodeType&&e,o=a&&a.exports===r&&n.process,i=function(){try{var e=a&&a.require&&a.require("util").types;return e||o&&o.binding&&o.binding("util")}catch(t){}}();e.exports=i}({get exports(){return Dr},set exports(e){Dr=e}},Dr);var Pr=Tr,Nr=Or,Ir=Dr&&Dr.isTypedArray,Ar=Ir?Nr(Ir):Pr,Lr=lr,Rr=gr,jr=vr,Mr=br,Fr=xr,Br=Ar,zr=Object.prototype.hasOwnProperty;var $r=function(e,t){var n=jr(e),r=!n&&Rr(e),a=!n&&!r&&Mr(e),o=!n&&!r&&!a&&Br(e),i=n||r||a||o,l=i?Lr(e.length,String):[],s=l.length;for(var u in e)!t&&!zr.call(e,u)||i&&("length"==u||a&&("offset"==u||"parent"==u)||o&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||Fr(u,s))||l.push(u);return l},Ur=Object.prototype;var Hr=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Ur)};var Vr=function(e,t){return function(n){return e(t(n))}},qr=Vr(Object.keys,Object),Wr=Hr,Gr=qr,Zr=Object.prototype.hasOwnProperty;var Qr=Bt,Yr=kr;var Xr=function(e){return null!=e&&Yr(e.length)&&!Qr(e)},Kr=$r,Jr=function(e){if(!Wr(e))return Gr(e);var t=[];for(var n in Object(e))Zr.call(e,n)&&"constructor"!=n&&t.push(n);return t},ea=Xr;var ta=function(e){return ea(e)?Kr(e):Jr(e)},na=ir,ra=ta;var aa=function(e,t){return e&&na(t,ra(t),e)};var oa=Rt,ia=Hr,la=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t},sa=Object.prototype.hasOwnProperty;var ua=$r,ca=function(e){if(!oa(e))return la(e);var t=ia(e),n=[];for(var r in e)("constructor"!=r||!t&&sa.call(e,r))&&n.push(r);return n},da=Xr;var fa=function(e){return da(e)?ua(e,!0):ca(e)},pa=ir,ha=fa;var ma=function(e,t){return e&&pa(t,ha(t),e)},ga={};!function(e,t){var n=kt,r=t&&!t.nodeType&&t,a=r&&e&&!e.nodeType&&e,o=a&&a.exports===r?n.Buffer:void 0,i=o?o.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=i?i(n):new e.constructor(n);return e.copy(r),r}}({get exports(){return ga},set exports(e){ga=e}},ga);var va=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++na?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(a);++r0&&r(s)?n>1?e(s,n-1,r,a,o):wl(o,s):a||(o[o.length]=s)}return o},_l=kl;var El=function(e){return(null==e?0:e.length)?_l(e,1):[]};var Sl=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)},Cl=Math.max;var Tl=function(e,t,n){return t=Cl(void 0===t?e.length-1:t,0),function(){for(var r=arguments,a=-1,o=Cl(r.length-t,0),i=Array(o);++a0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Pl),Al=El,Ll=Tl,Rl=Il;var jl=function(e){return Rl(Ll(e,void 0,Al),e+"")},Ml=Xe,Fl=xi,Bl=il,zl=Zi,$l=ir,Ul=gl,Hl=Ga,Vl=jl((function(e,t){var n={};if(null==e)return n;var r=!1;t=Ml(t,(function(t){return t=zl(t,e),r||(r=t.length>1),t})),$l(e,Hl(e),n),r&&(n=Fl(n,7,Ul));for(var a=t.length;a--;)Bl(n,t[a]);return n})),ql=rr,Wl=Zi,Gl=xr,Zl=Rt,Ql=Yi;var Yl=Ji,Xl=function(e,t,n,r){if(!Zl(e))return e;for(var a=-1,o=(t=Wl(t,e)).length,i=o-1,l=e;null!=l&&++aObject.fromEntries((Array.isArray(e)?e:Object.keys(e)).map(((e,n)=>[e,t(e,n)]))),fs=["xs","sm","md","lg","xl"],ps=["display1","display2","display3","display4","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","subtitle3","subtitle4","body1","body2","body3","label1","label2"],hs={h1:["h1"],h2:["h2"],h3:["h3"],h4:["h4"],h5:["h5"],h6:["h6"],body1:["body"],label1:["label"]},ms=["fontSize","fontWeight","lineHeight"],gs={...ds(ps,(e=>`lsd-typography--${e}`)),root:"lsd-typography",primary:"lsd-typography--primary",secondary:"lsd-typography--secondary",serif:"lsd-typography--serif",sansSerif:"lsd-typography--sans-serif",monospace:"lsd-typography--monospace"},vs=["genericFontFamily"],bs=({genericFontFamily:e})=>({className:Qe("serif"===e&&gs.serif,"monospace"===e&&gs.monospace,"sans-serif"===e&&gs.sansSerif)}),ys=e=>cs(e,vs),ws=e=>Vl(e,vs),xs={root:"lsd-icon",small:"lsd-icon--small",filled:"lsd-icon--filled",stroked:"lsd-icon--stroked",primary:"lsd-icon--primary",secondary:"lsd-icon--secondary"},ks=(e,t)=>{const n=({color:n,size:r="small",className:a,...o})=>{const i=bs(o);return We(e,{className:Qe(i.className,a,xs.root,xs[r],n&&xs[n],(null==t?void 0:t.filled)&&xs.filled,(null==t?void 0:t.stroked)&&xs.stroked),...ws(o)})};return n.displayName=e.displayName,n.classes=xs,n},_s=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.6666 7.58334H7.58325V11.6667H6.41659V7.58334H2.33325V6.41668H6.41659V2.33334H7.58325V6.41668H11.6666V7.58334Z",fill:"black"})})),{filled:!0}),Es=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M10.5 5.66125L9.6775 4.83875L7 7.51041L4.3225 4.83874L3.5 5.66125L7 9.16125L10.5 5.66125Z",fill:"black"})})),{filled:!0}),Ss=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M6.99992 2.33334L6.17742 3.15584L9.43242 6.41668H2.33325V7.58334H9.43242L6.17742 10.8442L6.99992 11.6667L11.6666 7.00001L6.99992 2.33334Z",fill:"black"})})),{filled:!0}),Cs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M3.5 8.33875L4.3225 9.16125L7 6.48959L9.6775 9.16125L10.5 8.33875L7 4.83875L3.5 8.33875Z",fill:"black"})})),{filled:!0}),Ts=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.91667 1.75H11.0833C11.725 1.75 12.25 2.275 12.25 2.91667V11.0833C12.25 11.725 11.725 12.25 11.0833 12.25H2.91667C2.275 12.25 1.75 11.725 1.75 11.0833V2.91667C1.75 2.275 2.275 1.75 2.91667 1.75ZM9.68333 4.43333L10.5 5.25L5.83333 9.91667L3.5 7.58333L4.31667 6.76667L5.83333 8.28333L9.68333 4.43333Z",fill:"black"})})),{filled:!0}),Os=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.0833 2.91667V11.0833H2.91667V2.91667H11.0833ZM11.0833 1.75H2.91667C2.275 1.75 1.75 2.275 1.75 2.91667V11.0833C1.75 11.725 2.275 12.25 2.91667 12.25H11.0833C11.725 12.25 12.25 11.725 12.25 11.0833V2.91667C12.25 2.275 11.725 1.75 11.0833 1.75Z",fill:"black"})})),{filled:!0}),Ds=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M5.25009 9.43247L2.81759 6.99997L1.98926 7.82247L5.25009 11.0833L12.2501 4.0833L11.4276 3.2608L5.25009 9.43247Z",fill:"black"})})),{filled:!0}),Ps=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.0834 3.73916L10.2609 2.91666L7.00008 6.17749L3.73925 2.91666L2.91675 3.73916L6.17758 6.99999L2.91675 10.2608L3.73925 11.0833L7.00008 7.82249L10.2609 11.0833L11.0834 10.2608L7.82258 6.99999L11.0834 3.73916Z",fill:"black"})})),{filled:!0}),Ns=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.00008 1.16666C3.78008 1.16666 1.16675 3.77999 1.16675 6.99999C1.16675 10.22 3.78008 12.8333 7.00008 12.8333C10.2201 12.8333 12.8334 10.22 12.8334 6.99999C12.8334 3.77999 10.2201 1.16666 7.00008 1.16666ZM6.41675 9.91666V8.74999H7.58342V9.91666H6.41675ZM6.41675 4.08332V7.58332H7.58342V4.08332H6.41675Z",fill:"black"})})),{filled:!0}),Is=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M5.34925 3.50001L6.51591 4.66668H11.6667V10.5H2.33341V3.50001H5.34925ZM5.83341 2.33334H2.33341C1.69175 2.33334 1.17258 2.85834 1.17258 3.50001L1.16675 10.5C1.16675 11.1417 1.69175 11.6667 2.33341 11.6667H11.6667C12.3084 11.6667 12.8334 11.1417 12.8334 10.5V4.66668C12.8334 4.02501 12.3084 3.50001 11.6667 3.50001H7.00008L5.83341 2.33334Z",fill:"black"})})),{filled:!0}),As=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.0833 4.08333V6.41667H3.98417L6.0725 4.3225L5.25 3.5L1.75 7L5.25 10.5L6.0725 9.6775L3.98417 7.58333H12.25V4.08333H11.0833Z",fill:"black"})})),{filled:!0}),Ls=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.75 4.66667V3.5H12.25V4.66667H1.75ZM1.75 7.58333H12.25V6.41667H1.75V7.58333ZM1.75 10.5H12.25V9.33333H1.75V10.5Z",fill:"black"})})),{filled:!0}),Rs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M3.49992 5.83334C2.85825 5.83334 2.33325 6.35834 2.33325 7.00001C2.33325 7.64168 2.85825 8.16668 3.49992 8.16668C4.14159 8.16668 4.66659 7.64168 4.66659 7.00001C4.66659 6.35834 4.14159 5.83334 3.49992 5.83334ZM10.4999 5.83334C9.85825 5.83334 9.33325 6.35834 9.33325 7.00001C9.33325 7.64168 9.85825 8.16668 10.4999 8.16668C11.1416 8.16668 11.6666 7.64168 11.6666 7.00001C11.6666 6.35834 11.1416 5.83334 10.4999 5.83334ZM5.83325 7.00001C5.83325 6.35834 6.35825 5.83334 6.99992 5.83334C7.64159 5.83334 8.16659 6.35834 8.16659 7.00001C8.16659 7.64168 7.64159 8.16668 6.99992 8.16668C6.35825 8.16668 5.83325 7.64168 5.83325 7.00001Z",fill:"black"})})),{filled:!0}),js=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M9.16137 4.3225L8.33887 3.5L4.83887 7L8.33887 10.5L9.16137 9.6775L6.4897 7L9.16137 4.3225Z",fill:"black"})})),{filled:!0}),Ms=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M5.66137 3.5L4.83887 4.3225L7.51053 7L4.83887 9.6775L5.66137 10.5L9.16137 7L5.66137 3.5Z",fill:"black"})})),{filled:!0}),Fs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.61 7.74083L11.9525 11.0833L11.0833 11.9525L7.74083 8.61C7.11667 9.05917 6.36417 9.33333 5.54167 9.33333C3.4475 9.33333 1.75 7.63583 1.75 5.54167C1.75 3.4475 3.4475 1.75 5.54167 1.75C7.63583 1.75 9.33333 3.4475 9.33333 5.54167C9.33333 6.36417 9.05917 7.11667 8.61 7.74083ZM5.54167 2.91667C4.08917 2.91667 2.91667 4.08917 2.91667 5.54167C2.91667 6.99417 4.08917 8.16667 5.54167 8.16667C6.99417 8.16667 8.16667 6.99417 8.16667 5.54167C8.16667 4.08917 6.99417 2.91667 5.54167 2.91667Z",fill:"black"})})),{filled:!0}),Bs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.79287 3.5H2.99998V2.5H11.5V11H10.5V4.20711L3.35353 11.3536L2.64642 10.6464L9.79287 3.5Z",fill:"black"})})),{filled:!0}),zs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M7.0013 1.16669C3.7813 1.16669 1.16797 3.78002 1.16797 7.00002C1.16797 10.22 3.7813 12.8334 7.0013 12.8334C10.2213 12.8334 12.8346 10.22 12.8346 7.00002C12.8346 3.78002 10.2213 1.16669 7.0013 1.16669ZM7.0013 11.6667C4.42297 11.6667 2.33464 9.57835 2.33464 7.00002C2.33464 4.42169 4.42297 2.33335 7.0013 2.33335C9.57964 2.33335 11.668 4.42169 11.668 7.00002C11.668 9.57835 9.57964 11.6667 7.0013 11.6667Z",fill:"black"})})),{filled:!0}),$s=ks((e=>Ge("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[We("path",{d:"M7.0013 1.16669C3.7813 1.16669 1.16797 3.78002 1.16797 7.00002C1.16797 10.22 3.7813 12.8334 7.0013 12.8334C10.2213 12.8334 12.8346 10.22 12.8346 7.00002C12.8346 3.78002 10.2213 1.16669 7.0013 1.16669ZM7.0013 11.6667C4.42297 11.6667 2.33464 9.57835 2.33464 7.00002C2.33464 4.42169 4.42297 2.33335 7.0013 2.33335C9.57964 2.33335 11.668 4.42169 11.668 7.00002C11.668 9.57835 9.57964 11.6667 7.0013 11.6667Z",fill:"black"}),We("path",{d:"M7.0013 9.91669C8.61213 9.91669 9.91797 8.61085 9.91797 7.00002C9.91797 5.38919 8.61213 4.08335 7.0013 4.08335C5.39047 4.08335 4.08464 5.38919 4.08464 7.00002C4.08464 8.61085 5.39047 9.91669 7.0013 9.91669Z",fill:"black"})]})),{filled:!0}),Us=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.0833 2.33332H10.5V1.16666H9.33333V2.33332H4.66667V1.16666H3.5V2.33332H2.91667C2.26917 2.33332 1.75 2.85832 1.75 3.49999V11.6667C1.75 12.3083 2.26917 12.8333 2.91667 12.8333H11.0833C11.725 12.8333 12.25 12.3083 12.25 11.6667V3.49999C12.25 2.85832 11.725 2.33332 11.0833 2.33332ZM11.0833 11.6667H2.91667V5.24999H11.0833V11.6667ZM3.79167 7.58332C3.79167 6.77832 4.445 6.12499 5.25 6.12499C6.055 6.12499 6.70833 6.77832 6.70833 7.58332C6.70833 8.38832 6.055 9.04166 5.25 9.04166C4.445 9.04166 3.79167 8.38832 3.79167 7.58332Z",fill:"black"})})),{filled:!0}),Hs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M2.32812 7.58329V6.41663H11.6581V7.58329H2.32812Z",fill:"black"})})),{filled:!0}),Vs=({color:e,variant:t="body1",component:n,className:r,children:a,...o})=>{const i=bs(o);return We(n??{h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",label1:"label",label2:"label"}[t]??"span",{className:Qe(i.className,gs.root,gs[t],e&&gs[e],r),...ws(o),children:a})};Vs.classes=gs;const qs={root:"lsd-dropdown-item",icon:"lsd-dropdown-item__icon",label:"lsd-dropdown-item__label",error:"lsd-dropdown-item--error",disabled:"lsd-dropdown-item--disabled",selected:"lsd-dropdown-item--selected",withIcon:"lsd-dropdown-item--with-icon",small:"lsd-dropdown-item--small",medium:"lsd-dropdown-item--medium",large:"lsd-dropdown-item--large"},Ws=({label:e,size:t="large",withIcon:n,selected:r,disabled:a,className:o,...i})=>{const l=bs(i),s={color:"primary",className:qs.icon};return Ge("div",{role:"option","aria-selected":r?"true":"false",...ws(i),className:Qe(l.className,o,qs.root,qs[t],n&&qs.withIcon,a&&qs.disabled),children:[n&&We(r?Ts:Os,{...s}),We(Vs,{variant:"large"===t?"label1":"label2",component:"span",className:qs.label,children:e})]})};function Gs(e){for(var t=[],n=1;n{const[n,a]=r.useState({});return r.useEffect((()=>{const{width:t,height:n,top:r,left:o}=e.current.getBoundingClientRect();a({left:o+window.scrollX,width:t,top:r+n+window.scrollY})}),[t]),n},ru=({size:e="large",open:t,label:n,handleRef:a,onClose:o,children:i,...l})=>{const s=bs(l),u=r.useRef(null);Ys(u,(e=>{t&&!e.composedPath().includes(a.current)&&o&&o()}));const c=nu(a,t);return We("ul",{...ws(l),ref:u,role:"listbox","aria-label":n,style:{...c,...l.style??{}},className:Qe(s.className,l.className,tu.root,tu[e],t&&tu.open),children:i})};ru.classes=tu;const au=r.createContext({initialized:!1}),ou=()=>{var e;return(null==(e=r.useContext(au))?void 0:e.initialized)??!1},iu=({parentId:e})=>{const t=r.useRef();return"undefined"==typeof window||t.current||(t.current=document.createElement("div")),r.useEffect((()=>{var n;if("undefined"==typeof window||!t.current)return;const r=document.querySelectorAll(`#${e}`);return null==(n=r[r.length-1])||n.appendChild(t.current),()=>{var n;try{null==(n=document.getElementById(e))||n.removeChild(t.current)}catch(r){}}}),[e,t.current]),t.current},lu=({id:e,children:t})=>ou()?We(su,{id:e,children:t}):We(qe,{}),su=({id:e,children:t})=>{const n=iu({parentId:"lsd-presentation"});return n?a.createPortal(t,n,e):We(qe,{})},uu={root:"lsd-autocomplete",label:"lsd-autocomplete__label",inputContainer:"lsd-autocomplete__input-container",input:"lsd-autocomplete__input",icon:"lsd-autocomplete__icon",dropdownItemPlaceholder:"lsd-autocomplete__dropdown-item-placeholder",disabled:"lsd-autocomplete--disabled",error:"lsd-autocomplete--error",large:"lsd-autocomplete--large",medium:"lsd-autocomplete--medium",small:"lsd-autocomplete--small",withIcon:"lsd-autocomplete--with-icon",outlined:"lsd-autocomplete--outlined",underlined:"lsd-autocomplete--underlined"},cu=({label:e,size:t="large",withIcon:n=!1,error:a=!1,disabled:o=!1,children:i,value:l,defaultValue:s,placeholder:u,onChange:c,options:d=[],inputProps:f={},variant:p="outlined",...h})=>{const m=bs(h),g=r.useRef(null),v=r.useRef(null),b=Ye({defaultValue:s,value:l,onChange:c,ref:g}),y=b.value,[w,x]=r.useState(!1),[k,_]=r.useState(),E=e=>{x(!1),_(e),b.setValue(e)},S=r.useMemo((()=>b.filled?d.filter((e=>new RegExp(`^${b.value}.+`,"i").test(e))).map((e=>[e,e.slice(0,y.length),e.slice(y.length)])):d),[b.value,d]);r.useEffect((()=>{!k&&b.filled&&!w&&x(!0)}),[b.value,k,w]);const C=!o&&w&&S.length>0&&b.filled,T=(null==f?void 0:f.id)??(h.id||"autocomplete")+"-input";return Ge("div",{ref:v,...ws(h),className:Qe(h.className,m.className,uu.root,uu[t],o&&uu.disabled,n&&uu.withIcon,"outlined"===p?uu.outlined:uu.underlined),children:[e&&We(Vs,{htmlFor:T,className:uu.label,variant:"label2",component:"label",children:e}),Ge("div",{className:uu.inputContainer,children:[We("input",{id:T,ref:g,value:b.value,placeholder:u,onChange:b.onChange,disabled:o,onFocus:()=>x(!0),...f,className:Qe(f.className,uu.input,a&&uu.error)}),n&&b.value?We("span",{className:uu.icon,onClick:()=>b.setValue(""),children:We(Ps,{color:"primary"})}):n&&!b.value?We("span",{className:uu.icon,children:We(Fs,{color:"primary"})}):null]}),We(lu,{id:"autocomplete",children:We(ru,{handleRef:v,open:C,onClose:()=>x(!1),size:t,...ys(h),children:S.map(((e,n)=>We(Ws,{size:t,tabIndex:0,label:Ge(qe,{children:[e[1],We("span",{className:uu.dropdownItemPlaceholder,children:e[2]})]}),onClick:()=>E(e[0]),onKeyDown:t=>"Enter"===t.key&&E(e[0])},n)))})})]})};cu.classes=uu;const du={root:"lsd-badge",label:"lsd-badge__label",outlined:"lsd-badge--outlined",filled:"lsd-badge--filled",disabled:"lsd-badge--disabled",small:"lsd-badge--small",large:"lsd-badge--large"},fu=({variant:e="outlined",disabled:t,size:n="large",icon:r,iconDirection:a="left",children:o,...i})=>{const l=bs(i);return Ge("div",{"aria-label":o,...ws(i),className:Qe(i.className,l.className,du.root,du[e],t&&du.disabled,du[n]),children:["left"===a&&r,We(Vs,{component:"span",variant:"small"===n?"label2":"label1",className:du.label,children:o}),"right"===a&&r]})};fu.classes=du;const pu={root:"lsd-breadcrumb-item",outlined:"lsd-breadcrumb-item--outlined",itemLink:"lsd-breadcrumb-item__link",large:"lsd-breadcrumb-item--large",small:"lsd-breadcrumb-item--small"},hu=({size:e="large",label:t,link:n,linkComponent:r=(e=>We("a",{...e,children:e.children})),outlined:a,selected:o,ellipsisRef:i,onClick:l,className:s,...u})=>{const c=bs(u);return We("li",{...ws(u),className:Qe(c.className,pu.root,pu[e],s),"aria-selected":o?"true":"false",onClick:l,ref:i,children:We(r,{href:n,className:Qe(pu.itemLink,a&&pu.outlined),children:We(Vs,{color:"primary",component:"span",variant:"large"===e?"label1":"label2",children:t})})})};hu.classes=pu;const mu={root:"lsd-breadcrumb",list:"lsd-breadcrumb__list",listBox:"lsd-breadcrumb__dropdown-menu",open:"lsd-breadcrumb--open",disabled:"lsd-breadcrumb--disabled"},gu=({size:e="large",disabled:t=!1,ellipsis:n=!1,maxItems:a,value:o=[],onChange:i,options:l=[],...s})=>{const u=bs(s),c=r.useRef(null),[d,f]=r.useState(!1);a=Math.max(2,Math.min(a||2,l.length));const[p,...h]=l,[m,g]=n?[h.slice(0,h.length-a+1),h.slice(h.length-a+1)]:[[],h],v=t=>t.map(((t,n)=>We(hu,{outlined:n===g.length-1&&t!==p,label:t.value,link:t.link,linkComponent:null==t?void 0:t.linkComponent,size:e},n)));return r.useEffect((()=>{t&&d&&f(!1)}),[d,t]),Ge("div",{...ws(s),className:Qe(s.className,u.className,mu.root,t&&mu.disabled,d&&mu.open),children:[Ge("ul",{className:mu.list,children:[p&&v([p]),m.length>0&&We(hu,{ellipsisRef:c,label:"...",onClick:()=>{!t&&f((e=>!e))},size:e,...ys(s)}),v(g)]}),null!=(null==c?void 0:c.current)&&n&&a&&We(lu,{id:"breadcrumb",children:We(ru,{handleRef:c,open:d,onClose:()=>f(!1),className:Qe(mu.listBox),size:e,genericFontFamily:s.genericFontFamily,...ys(s),children:m.map(((e,t)=>We(hu,{label:e.value,link:e.link,className:pu.itemLink,linkComponent:null==e?void 0:e.linkComponent},t)))})})]})};gu.classes=mu;const vu=r.createContext(null),bu={root:"lsd-button",disabled:"lsd-button--disabled",large:"lsd-button--large",medium:"lsd-button--medium",small:"lsd-button--small",withIcon:"lsd-button--with-icon",outlined:"lsd-button--outlined",filled:"lsd-button--filled",text:"lsd-button__text",icon:"lsd-button__icon"},yu=({size:e,variant:t,disabled:n,icon:a,children:o,...i})=>{const l=r.useContext(vu),s=bs(i),u=bs(l||{}),c=s.className||u.className,d=e??(null==l?void 0:l.size)??"medium",f=t??(null==l?void 0:l.variant)??"outlined",p=n??(null==l?void 0:l.disabled)??!1;return We(qe,{children:Ge("button",{...ws(i),className:Qe(c,i.className,bu.root,bu[d],bu[f],p&&bu.disabled,a&&bu.withIcon),children:[We(Vs,{component:"span",className:bu.text,variant:"small"===d?"label2":"label1",children:o}),a&&We("span",{className:bu.icon,children:a})]})})};yu.classes=bu;const wu={root:"lsd-button-group",outlined:"lsd-button-group--outlined",filled:"lsd-button-group--filled",disabled:"lsd-button-group--disabled",small:"lsd-button-group--small",medium:"lsd-button-group--medium",large:"lsd-button-group--large"},xu=({size:e="large",disabled:t,variant:n="outlined",children:r,...a})=>{const o=bs(a);return We("div",{...ws(a),className:Qe(o.className,a.className,wu.root,wu[e],wu[n],t&&wu.disabled),children:We(vu.Provider,{value:{size:e,variant:n,disabled:t},children:r})})};xu.classes=wu;var ku={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function _u(e){return function(t){var n=t||{},r=n.width?String(n.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}var Eu={date:_u({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:_u({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:_u({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Su={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function Cu(e){return function(t,n){var r,a=n||{};if("formatting"===(a.context?String(a.context):"standalone")&&e.formattingValues){var o=e.defaultFormattingWidth||e.defaultWidth,i=a.width?String(a.width):o;r=e.formattingValues[i]||e.formattingValues[o]}else{var l=e.defaultWidth,s=a.width?String(a.width):e.defaultWidth;r=e.values[s]||e.values[l]}return r[e.argumentCallback?e.argumentCallback(t):t]}}function Tu(e){return function(t,n){var r=String(t),a=n||{},o=a.width,i=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],l=r.match(i);if(!l)return null;var s,u=l[0],c=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth];return s="[object Array]"===Object.prototype.toString.call(c)?function(e,t){for(var n=0;n0?"in "+r:r+" ago":r},formatLong:Eu,formatRelative:function(e,t,n,r){return Su[e]},localize:{ordinalNumber:function(e,t){var n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:Cu({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:Cu({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:Cu({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:Cu({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:Cu({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(Ou={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}},function(e,t){var n=String(e),r=t||{},a=n.match(Ou.matchPattern);if(!a)return null;var o=a[0],i=n.match(Ou.parsePattern);if(!i)return null;var l=Ou.valueCallback?Ou.valueCallback(i[0]):i[0];return{value:l=r.valueCallback?r.valueCallback(l):l,rest:n.slice(o.length)}}),era:Tu({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:Tu({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:Tu({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:Tu({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:Tu({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function Pu(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function Nu(e,t){if(t.length1?"s":"")+" required, but only "+t.length+" present")}function Iu(e){Nu(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function Au(e,t){return Nu(2,arguments),function(e,t){Nu(2,arguments);var n=Iu(e).getTime(),r=Pu(t);return new Date(n+r)}(e,-Pu(t))}function Lu(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}}function Ru(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}}var ju={p:Ru,P:function(e,t){var n,r=e.match(/(P+)(p+)?/),a=r[1],o=r[2];if(!o)return Lu(e,t);switch(a){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;default:n=t.dateTime({width:"full"})}return n.replace("{{date}}",Lu(a,t)).replace("{{time}}",Ru(o,t))}};function Mu(e){return e.getTime()%6e4}var Fu=["D","DD"],Bu=["YY","YYYY"];function zu(e){if("YYYY"===e)throw new RangeError("Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr");if("YY"===e)throw new RangeError("Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr");if("D"===e)throw new RangeError("Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr");if("DD"===e)throw new RangeError("Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr")}function $u(e,t){Nu(1,arguments);var n=t||{},r=n.locale,a=r&&r.options&&r.options.weekStartsOn,o=null==a?0:Pu(a),i=null==n.weekStartsOn?o:Pu(n.weekStartsOn);if(!(i>=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Iu(e),s=l.getUTCDay(),u=(s=1&&s<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var u=new Date(0);u.setUTCFullYear(r+1,0,s),u.setUTCHours(0,0,0,0);var c=$u(u,t),d=new Date(0);d.setUTCFullYear(r,0,s),d.setUTCHours(0,0,0,0);var f=$u(d,t);return n.getTime()>=c.getTime()?r+1:n.getTime()>=f.getTime()?r:r-1}function Hu(e){Nu(1,arguments);var t=Iu(e),n=t.getUTCDay(),r=(n<1?7:0)+n-1;return t.setUTCDate(t.getUTCDate()-r),t.setUTCHours(0,0,0,0),t}function Vu(e){Nu(1,arguments);var t=Iu(e),n=t.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(n+1,0,4),r.setUTCHours(0,0,0,0);var a=Hu(r),o=new Date(0);o.setUTCFullYear(n,0,4),o.setUTCHours(0,0,0,0);var i=Hu(o);return t.getTime()>=a.getTime()?n+1:t.getTime()>=i.getTime()?n:n-1}function qu(e){Nu(1,arguments);var t=Iu(e),n=Hu(t).getTime()-function(e){Nu(1,arguments);var t=Vu(e),n=new Date(0);return n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0),Hu(n)}(t).getTime();return Math.round(n/6048e5)+1}function Wu(e,t){Nu(1,arguments);var n=Iu(e),r=$u(n,t).getTime()-function(e,t){Nu(1,arguments);var n=t||{},r=n.locale,a=r&&r.options&&r.options.firstWeekContainsDate,o=null==a?1:Pu(a),i=null==n.firstWeekContainsDate?o:Pu(n.firstWeekContainsDate),l=Uu(e,t),s=new Date(0);return s.setUTCFullYear(l,0,i),s.setUTCHours(0,0,0,0),$u(s,t)}(n,t).getTime();return Math.round(r/6048e5)+1}function Gu(e,t){for(var n=e<0?"-":"",r=Math.abs(e).toString();r.length0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});default:return n.era(r,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var r=e.getUTCFullYear(),a=r>0?r:1-r;return n.ordinalNumber(a,{unit:"year"})}return function(e,t){var n=e.getUTCFullYear(),r=n>0?n:1-n;return Gu("yy"===t?r%100:r,t.length)}(e,t)},Y:function(e,t,n,r){var a=Uu(e,r),o=a>0?a:1-a;return"YY"===t?Gu(o%100,2):"Yo"===t?n.ordinalNumber(o,{unit:"year"}):Gu(o,t.length)},R:function(e,t){return Gu(Vu(e),t.length)},u:function(e,t){return Gu(e.getUTCFullYear(),t.length)},Q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return Gu(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return Gu(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n){var r=e.getUTCMonth();switch(t){case"M":case"MM":return function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):Gu(n+1,2)}(e,t);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n){var r=e.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return Gu(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,r){var a=Wu(e,r);return"wo"===t?n.ordinalNumber(a,{unit:"week"}):Gu(a,t.length)},I:function(e,t,n){var r=qu(e);return"Io"===t?n.ordinalNumber(r,{unit:"week"}):Gu(r,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):function(e,t){return Gu(e.getUTCDate(),t.length)}(e,t)},D:function(e,t,n){var r=function(e){Nu(1,arguments);var t=Iu(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var r=n-t.getTime();return Math.floor(r/864e5)+1}(e);return"Do"===t?n.ordinalNumber(r,{unit:"dayOfYear"}):Gu(r,t.length)},E:function(e,t,n){var r=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,r){var a=e.getUTCDay(),o=(a-r.weekStartsOn+8)%7||7;switch(t){case"e":return String(o);case"ee":return Gu(o,2);case"eo":return n.ordinalNumber(o,{unit:"day"});case"eee":return n.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},c:function(e,t,n,r){var a=e.getUTCDay(),o=(a-r.weekStartsOn+8)%7||7;switch(t){case"c":return String(o);case"cc":return Gu(o,t.length);case"co":return n.ordinalNumber(o,{unit:"day"});case"ccc":return n.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(a,{width:"narrow",context:"standalone"});case"cccccc":return n.day(a,{width:"short",context:"standalone"});default:return n.day(a,{width:"wide",context:"standalone"})}},i:function(e,t,n){var r=e.getUTCDay(),a=0===r?7:r;switch(t){case"i":return String(a);case"ii":return Gu(a,t.length);case"io":return n.ordinalNumber(a,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){var r=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(e,t,n){var r,a=e.getUTCHours();switch(r=12===a?"noon":0===a?"midnight":a/12>=1?"pm":"am",t){case"b":case"bb":case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){var r,a=e.getUTCHours();switch(r=a>=17?"evening":a>=12?"afternoon":a>=4?"morning":"night",t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var r=e.getUTCHours()%12;return 0===r&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return function(e,t){return Gu(e.getUTCHours()%12||12,t.length)}(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):function(e,t){return Gu(e.getUTCHours(),t.length)}(e,t)},K:function(e,t,n){var r=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(r,{unit:"hour"}):Gu(r,t.length)},k:function(e,t,n){var r=e.getUTCHours();return 0===r&&(r=24),"ko"===t?n.ordinalNumber(r,{unit:"hour"}):Gu(r,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):function(e,t){return Gu(e.getUTCMinutes(),t.length)}(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):function(e,t){return Gu(e.getUTCSeconds(),t.length)}(e,t)},S:function(e,t){return function(e,t){var n=t.length,r=e.getUTCMilliseconds();return Gu(Math.floor(r*Math.pow(10,n-3)),t.length)}(e,t)},X:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();if(0===a)return"Z";switch(t){case"X":return Yu(a);case"XXXX":case"XX":return Xu(a);default:return Xu(a,":")}},x:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();switch(t){case"x":return Yu(a);case"xxxx":case"xx":return Xu(a);default:return Xu(a,":")}},O:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Qu(a,":");default:return"GMT"+Xu(a,":")}},z:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Qu(a,":");default:return"GMT"+Xu(a,":")}},t:function(e,t,n,r){var a=r._originalDate||e;return Gu(Math.floor(a.getTime()/1e3),t.length)},T:function(e,t,n,r){return Gu((r._originalDate||e).getTime(),t.length)}};function Qu(e,t){var n=e>0?"-":"+",r=Math.abs(e),a=Math.floor(r/60),o=r%60;if(0===o)return n+String(a);var i=t||"";return n+String(a)+i+Gu(o,2)}function Yu(e,t){return e%60==0?(e>0?"-":"+")+Gu(Math.abs(e)/60,2):Xu(e,t)}function Xu(e,t){var n=t||"",r=e>0?"-":"+",a=Math.abs(e);return r+Gu(Math.floor(a/60),2)+n+Gu(a%60,2)}var Ku=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Ju=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ec=/^'([^]*?)'?$/,tc=/''/g,nc=/[a-zA-Z]/;function rc(e,t,n){Nu(2,arguments);var r=String(t),a=n||{},o=a.locale||Du,i=o.options&&o.options.firstWeekContainsDate,l=null==i?1:Pu(i),s=null==a.firstWeekContainsDate?l:Pu(a.firstWeekContainsDate);if(!(s>=1&&s<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var u=o.options&&o.options.weekStartsOn,c=null==u?0:Pu(u),d=null==a.weekStartsOn?c:Pu(a.weekStartsOn);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!o.localize)throw new RangeError("locale must contain localize property");if(!o.formatLong)throw new RangeError("locale must contain formatLong property");var f=Iu(e);if(!function(e){Nu(1,arguments);var t=Iu(e);return!isNaN(t)}(f))throw new RangeError("Invalid time value");var p=function(e){var t=new Date(e.getTime()),n=Math.ceil(t.getTimezoneOffset());return t.setSeconds(0,0),6e4*n+(n>0?(6e4+Mu(t))%6e4:Mu(t))}(f),h=Au(f,p),m={firstWeekContainsDate:s,weekStartsOn:d,locale:o,_originalDate:f},g=r.match(Ju).map((function(e){var t=e[0];return"p"===t||"P"===t?(0,ju[t])(e,o.formatLong,m):e})).join("").match(Ku).map((function(e){if("''"===e)return"'";var t=e[0];if("'"===t)return function(e){return e.match(ec)[1].replace(tc,"'")}(e);var n=Zu[t];if(n)return!a.useAdditionalWeekYearTokens&&function(e){return-1!==Bu.indexOf(e)}(e)&&zu(e),!a.useAdditionalDayOfYearTokens&&function(e){return-1!==Fu.indexOf(e)}(e)&&zu(e),n(h,e,o.localize,m);if(t.match(nc))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return e})).join("");return g}function ac(e,t){Nu(2,arguments);var n=Iu(e),r=Pu(t);return isNaN(r)?new Date(NaN):r?(n.setDate(n.getDate()+r),n):n}function oc(e,t){Nu(1,arguments);var n=e||{},r=Iu(n.start),a=Iu(n.end).getTime();if(!(r.getTime()<=a))throw new RangeError("Invalid interval");var o=[],i=r;i.setHours(0,0,0,0);var l=t&&"step"in t?Number(t.step):1;if(l<1||isNaN(l))throw new RangeError("`options.step` must be a number greater than 1");for(;i.getTime()<=a;)o.push(Iu(i)),i.setDate(i.getDate()+l),i.setHours(0,0,0,0);return o}function ic(e,t){Nu(1,arguments);var n=t||{},r=n.locale,a=r&&r.options&&r.options.weekStartsOn,o=null==a?0:Pu(a),i=null==n.weekStartsOn?o:Pu(n.weekStartsOn);if(!(i>=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Iu(e),s=l.getDay(),u=6+(s=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Iu(e),s=l.getDay(),u=(s=a?u-a:6-a+u+1).keys()).fill(0),oc({start:s,end:c}).map((function(e){return{date:e,dayLabel:i(e)}})))}({year:t,month:n,firstDayOfWeek:o,dayLabelFormat:l})}),[t,n,o,l]),weekdayLabels:r.useMemo((function(){return function(e){var t=void 0===e?{}:e,n=t.firstDayOfWeek,r=void 0===n?1:n,a=t.weekdayLabelFormat,o=void 0===a?function(e){return rc(e,"iiiiii")}:a,i=new Date;return oc({start:ac(sc(i),r),end:ac(ic(i),r)}).reduce((function(e,t){return e.push(o(t)),e}),[])}({firstDayOfWeek:o,weekdayLabelFormat:u})}),[o,u]),monthLabel:d(new Date(t,n))}}function pc(e,t){Nu(2,arguments);var n=Iu(e),r=Iu(t);return n.getTime()r.getTime()}function mc(e,t){Nu(2,arguments);var n=t||{},r=Iu(e).getTime(),a=Iu(n.start).getTime(),o=Iu(n.end).getTime();if(!(a<=o))throw new RangeError("Invalid interval");return r>=a&&r<=o}function gc(e){Nu(1,arguments);var t=Iu(e);return t.setHours(0,0,0,0),t}function vc(e,t){Nu(2,arguments);var n=gc(e),r=gc(t);return n.getTime()===r.getTime()}function bc(e,t){Nu(2,arguments);var n=Iu(e),r=Pu(t);if(isNaN(r))return new Date(NaN);if(!r)return n;var a=n.getDate(),o=new Date(n.getTime());return o.setMonth(n.getMonth()+r+1,0),a>=o.getDate()?o:(n.setFullYear(o.getFullYear(),o.getMonth(),a),n)}var yc=function(e,t){return void 0===e&&(e=[]),e.some((function(e){return vc(t,e)}))};function wc(e){var t=lc(e);return{year:function(e){return Nu(1,arguments),Iu(e).getFullYear()}(t),month:function(e){return Nu(1,arguments),Iu(e).getMonth()}(t),date:t}}function xc(e,t){var n=wc(t||gc(Date.now())),r=n.date,a=[n];return e>1&&(a=Array.from(Array(e-1).keys()).reduce((function(e){return r=bc(e[e.length-1].date,1),e.concat([wc(r)])}),a)),a}function kc(e,t,n,r){var a=e[r?n>0?0:e.length-r:n>0?e.length-1:0].date;return Array.from(Array(t).keys()).reduce((function(e){return a=0===e.length?bc(a,n):bc(a,n>=0?1:-1),n>0?e.concat([wc(a)]):[wc(a)].concat(e)}),[])}function _c(e){var t=e.startDate,n=e.endDate,r=e.isDateBlocked,a=e.minBookingDays,o=e.exactMinBookingDays,i=e.minBookingDate,l=e.maxBookingDate,s=!i||!pc(t,ac(i,-1)),u=!l||!hc(ac(t,a-1),l);return!((!t||1!==a||n||r(t))&&(t&&a>1&&!n&&!o||t&&a>0&&o&&s&&u||t&&a>0&&o&&!i&&!l?oc({start:t,end:ac(t,a-1)}).some((function(e){return r(e)})):!t||!n||o||pc(n,ac(t,a-1))||oc({start:t,end:n}).some((function(e){return r(e)}))))}function Ec(e){var t=e.startDate,n=e.endDate,a=e.focusedInput,o=e.minBookingDate,i=e.maxBookingDate,l=e.onDatesChange,s=e.initialVisibleMonth,u=e.exactMinBookingDays,c=void 0!==u&&u,d=e.minBookingDays,f=void 0===d?1:d,p=e.numberOfMonths,h=void 0===p?2:p,m=e.firstDayOfWeek,g=void 0===m?1:m,v=e.isDateBlocked,b=void 0===v?function(){return!1}:v,y=e.unavailableDates,w=void 0===y?[]:y,x=e.changeActiveMonthOnSelect,k=void 0===x||x,_=r.useState((function(){return xc(h,t||s||null)})),E=_[0],S=_[1],C=r.useState(null),T=C[0],O=C[1],D=r.useState(t),P=D[0],N=D[1];r.useEffect((function(){return"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("keydown",R),function(){window.removeEventListener&&window.removeEventListener("keydown",R)}}));var I=function(e){return yc(w,e)||b(e)},A=function(e){N(e),(!P||P&&!vc(e,P))&&S(xc(h,e))},L=function(e){return function(e){var t=e.date,n=e.minBookingDate,r=e.maxBookingDate,a=e.isDateBlockedFn,o=e.startDate,i=e.endDate,l=e.minBookingDays,s=void 0===l?1:l,u=e.unavailableDates,c=void 0===u?[]:u,d=n?new Date(n.getFullYear(),n.getMonth(),n.getDate(),0,0,0):n,f=r?new Date(r.getFullYear(),r.getMonth(),r.getDate(),0,0,0):r;return!!(yc(c,t)||d&&pc(t,d)||f&&hc(t,f)||o&&!i&&s>1&&mc(t,{start:o,end:ac(o,s-2)})||a&&a(t))}({date:e,minBookingDate:o,maxBookingDate:i,startDate:t,endDate:n,minBookingDays:f,isDateBlockedFn:I})};function R(e){if(("ArrowRight"===e.key||"ArrowLeft"===e.key||"ArrowDown"===e.key||"ArrowUp"===e.key)&&!P){var t=E[0];A(t.date),S(xc(h,t.date))}}var j=r.useCallback((function(){S(kc(E,h,-1)),N(null)}),[E,h]),M=r.useCallback((function(){S(kc(E,h,-1,1)),N(null)}),[E,h]),F=r.useCallback((function(){S(kc(E,h,1)),N(null)}),[E,h]),B=r.useCallback((function(){S(kc(E,h,1,1)),N(null)}),[E,h]),z=r.useCallback((function(e){S(xc(h,e)),N(null)}),[h]),$=r.useCallback((function(e){void 0===e&&(e=1),S(kc(E,h,-(12*e-h+1))),N(null)}),[E,h]),U=r.useCallback((function(e){void 0===e&&(e=1),S(kc(E,h,12*e-h+1)),N(null)}),[E,h]);return{firstDayOfWeek:g,activeMonths:E,isDateSelected:function(e){return function(e,t,n){return!(!t||!n)&&mc(e,{start:t,end:n})}(e,t,n)},isDateHovered:function(e){return a=(r={date:e,hoveredDate:T,startDate:t,endDate:n,minBookingDays:f,exactMinBookingDays:c,isDateBlocked:I}).date,o=r.startDate,i=r.endDate,l=r.isDateBlocked,u=r.minBookingDays,(s=r.hoveredDate)&&u>1&&r.exactMinBookingDays&&mc(a,{start:s,end:ac(s,u-1)})?!oc({start:s,end:ac(s,u-1)}).some((function(e){return l(e)})):o&&!i&&s&&mc(a,{start:o,end:ac(o,u-1)})&&vc(o,s)&&u>1?!oc({start:o,end:ac(o,u-1)}).some((function(e){return l(e)})):!(!o||i||!s||pc(s,o)||!mc(a,{start:o,end:s})||oc({start:o,end:s}).some((function(e){return l(e)})));var r,a,o,i,l,s,u},isFirstOrLastSelectedDate:function(e){return function(e,t,n){return!!(t&&vc(e,t)||n&&vc(e,n))}(e,t,n)},isStartDate:function(e){return function(e,t){return!(!t||!vc(e,t))}(e,t)},isEndDate:function(e){return function(e,t){return!(!t||!vc(e,t))}(e,n)},isDateBlocked:L,numberOfMonths:h,isDateFocused:function(e){return!!P&&vc(e,P)},focusedDate:P,hoveredDate:T,onResetDates:function(){l({startDate:null,endDate:null,focusedInput:"startDate"})},onDateHover:function(e){if(e){if(e){var r=!L(e)||t&&vc(e,t),a=!o||!pc(e,ac(o,-1)),l=!i||!hc(e,i),s=ac(e,f-1),u=!o||!pc(s,o),d=!i||!hc(s,i),p=c&&f>1&&a&&l&&u&&d,h=t&&!n&&!c&&a&&l,m=!(f>1&&t)||mc(e,{start:t,end:ac(t,f-2)}),g=t&&vc(e,t)&&m;r&&(p||h||g)?O(e):null!==T&&O(null)}}else O(null)},onDateSelect:function(e){("endDate"===a||"startDate"===a)&&f>0&&c&&_c({minBookingDays:f,exactMinBookingDays:c,minBookingDate:o,maxBookingDate:i,isDateBlocked:I,startDate:e,endDate:null})?l({startDate:e,endDate:ac(e,f-1),focusedInput:null}):("endDate"===a&&t&&pc(e,t)||"startDate"===a&&n&&hc(e,n))&&!c&&_c({minBookingDays:f,isDateBlocked:I,startDate:e,endDate:null})?l({endDate:null,startDate:e,focusedInput:"endDate"}):"startDate"===a&&!c&&_c({minBookingDays:f,isDateBlocked:I,endDate:n,startDate:e})?l({endDate:n,startDate:e,focusedInput:"endDate"}):"startDate"===a&&!c&&_c({minBookingDays:f,isDateBlocked:I,endDate:null,startDate:e})?l({endDate:null,startDate:e,focusedInput:"endDate"}):"endDate"===a&&t&&!pc(e,t)&&!c&&_c({minBookingDays:f,isDateBlocked:I,startDate:t,endDate:e})&&l({startDate:t,endDate:e,focusedInput:null}),"endDate"!==a&&(!P||P&&!vc(e,P))&&k&&S(xc(h,e))},onDateFocus:A,goToPreviousMonths:j,goToPreviousMonthsByOneMonth:M,goToNextMonths:F,goToNextMonthsByOneMonth:B,goToDate:z,goToPreviousYear:$,goToNextYear:U}}const Sc={root:"lsd-calendar",container:"lsd-calendar-container",small:"lsd-calendar--small",medium:"lsd-calendar--medium",large:"lsd-calendar--large",open:"lsd-calendar--open",disabled:"lsd-calendar--disabled",header:"lsd-calendar-header",weekDay:"lsd-calendar__week_day",button:"lsd-calendar__button",changeYear:"lsd-calendar__change-year",changeYearActive:"lsd-calendar__change-year--active",changeYearIconContainer:"lsd-calendar__change-year-icon-container",year:"lsd-calendar-year",month:"lsd-calendar-month",day:"lsd-calendar-day",yearAndIcon:"lsd-calendar__year-and-icon",monthAndYear:"lsd-calendar__month-and-year",dayContainer:"lsd-calendar-day__container",dayRange:"lsd-calendar-day--range",daySelected:"lsd-calendar-day--selected",dayDisabled:"lsd-calendar-day--disabled",dayIsToday:"lsd-calendar-day--today",dayBorderLeft:"lsd-calendar-day--border-left",dayBorderRight:"lsd-calendar-day--border-right",dayBorderLeftAndRight:"lsd-calendar-day--border-left-and-right",dayBorderTopAndBottom:"lsd-calendar-day--border-top-and-bottom",todayIndicator:"lsd-calendar-day__today_indicator",monthTable:"lsd-calendar__month-table",nextMonthButton:"lsd-calendar__next-month-button",previousMonthButton:"lsd-calendar__previous-month-button",yearDropdown:"lsd-calendar__year-dropdown",yearDropdownHidden:"lsd-calendar__year-dropdown--hidden"},Cc=r.createContext(null),Tc=()=>r.useContext(Cc),Oc=(e,t,n)=>{if(!e)return{isValid:!1,date:null};const r=new Date(e+"T00:00:00");return{isValid:!Number.isNaN(+r)&&r>=t&&r<=n,date:r}},Dc=e=>new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().split("T")[0],Pc=e=>e.setHours(0,0,0,0),Nc=(e,t,n)=>!!(e&&t&&n)&&(Pc(t)<=Pc(e)&&Pc(n)>=Pc(e)),Ic=(e,t)=>{if(!e||!t)return!1;return Dc(e)===Dc(t)},Ac=e=>{const t=(e=>{const t=e.find((e=>"number"!=typeof e));return t?new Date(t.date):new Date})(e),n=new Date(t);n.setDate(n.getDate()-t.getDay());const r=[];for(let a=0;a<42;a++){const e=new Date(n);e.setDate(e.getDate()+a),r.push(e)}return r},Lc=(e,t)=>e&&e===t?null:t;function Rc(e,t){if(!e||!t)return!0;let n=new Date(Dc(new Date(e)));return new Date(Dc(new Date(t)))>n}const jc=(e,t)=>"large"===t?"startDate"===e?130:291:"medium"===t?"startDate"===e?120:267:"small"===t?"startDate"===e?107:239:0,Mc=({day:e,index:t,fullMonthDays:n,disabled:a=!1})=>{const o=n[t],{mode:i,startDate:l,endDate:s,onDateSelect:u}=Tc(),c=r.useRef(null),d=Pc(o)===Pc(new Date),f="range"===i&&Nc(o,l,s),p=r.useCallback((()=>u(o)),[o,u]),h=Ic(o,l),m="range"===i&&Ic(o,s),g=h||m||f;if(!e)return null;const v=((e,t,n,r,a)=>{if(!n)return"";if(!r||!a)return Sc.dayBorderLeftAndRight;const{prevIndex:o,nextIndex:i}=((e,t)=>{const n=e-1,r=e+1;return{prevIndex:n>=0?n:null,nextIndex:r{const o=r.useRef(null),i=r.useRef(null),{goToDate:l,changeYearMode:s,setChangeYearMode:u}=Tc(),c=r.useRef(null),{y:d}=eu(c),[f,p]=r.useState((()=>parseInt(e)-a)),[h,m]=r.useState((()=>parseInt(e)+a)),g=Array.from({length:h-f+1},((e,t)=>f+t));Ys(o,(()=>{u(!1)}));return r.useEffect((()=>{if(s&&i.current&&c.current){const e=i.current.offsetTop,t=i.current.offsetHeight,n=e-c.current.clientHeight/2+t/2;c.current.scrollTop=n}}),[s]),r.useEffect((()=>{var e,t;const n=null==(e=null==c?void 0:c.current)?void 0:e.scrollHeight,r=null==(t=null==c?void 0:c.current)?void 0:t.clientHeight;if(!n||!r)return;const o=d/(n-r)*100;o>90&&m((e=>Math.min(e+a,Gc))),o<10&&p((e=>Math.max(e-a,Wc)))}),[d,a]),Ge("div",{ref:o,className:Qe(Sc.changeYear,s&&Sc.changeYearActive),onClick:()=>{u(!s)},children:[Ge("div",{className:Qe(Sc.year,Sc.yearAndIcon),children:[We(Vs,{component:"span",variant:"large"===n?"label1":"label2",children:e}),We("div",{className:Sc.changeYearIconContainer,children:We(s?Cs:Es,{color:"primary"})})]}),We("div",{className:Qe(Sc.yearDropdown,!s&&Sc.yearDropdownHidden),ref:c,children:g.map((r=>We("div",{className:Sc.year,onClick:()=>(e=>{const n=new Date(e,t,1);l(n),u(!1)})(r),ref:r===parseInt(e)?i:null,children:We(Vs,{component:"span",variant:"large"===n?"label1":"label2",children:r})},r)))})]})},Bc=({direction:e,onClick:t,className:n})=>{const r="previous"===e?js:Ms;return We("button",{className:Qe(Sc.button,n),type:"button",onClick:t,children:We(r,{color:"primary"})})},zc=({monthLabel:e,monthNumber:t,size:n})=>{const{goToPreviousMonths:r,goToNextMonths:a}=Tc(),[o,i]=e.split(" ");return Ge("div",{className:Sc.header,children:[We(Bc,{direction:"previous",onClick:r,className:Sc.previousMonthButton}),Ge("div",{className:Sc.monthAndYear,children:[We(Vs,{className:Sc.month,component:"span",variant:"large"===n?"label1":"label2",children:o}),We(Fc,{year:i,monthNumber:t,size:n})]}),We(Bc,{direction:"next",onClick:a,className:Sc.nextMonthButton})]})},$c=({weekdayLabels:e})=>We("tr",{children:e.map(((e,t)=>We("th",{children:We("div",{className:Sc.weekDay,children:We(Vs,{variant:"label2",children:e[0]})})},t)))}),Uc=({days:e})=>{const t=Ac(e),n=new Date(t[15]).getMonth();return We(qe,{children:Array.from({length:6}).map(((e,r)=>We("tr",{children:Array.from({length:7}).map(((e,a)=>{const o=7*r+a,i=t[o];return We(Mc,{index:o,day:i.getDate().toString(),fullMonthDays:t,disabled:i.getMonth()!==n},`day-${o}`)}))},`week-${r}`)))})},Hc=({size:e="large",year:t,month:n,firstDayOfWeek:r})=>{const a=Tc(),o=(null==a?void 0:a.size)??e,{days:i,weekdayLabels:l,monthLabel:s}=fc({year:t,month:n,firstDayOfWeek:r});return Ge(qe,{children:[We(zc,{monthLabel:s,monthNumber:n,size:o}),Ge("table",{className:Sc.monthTable,children:[We("thead",{children:We($c,{weekdayLabels:l})}),We("tbody",{children:We(Uc,{days:i})})]})]})},Vc={root:"lsd-tooltip-base",arrowTip:"lsd-tooltip-base__arrow-tip",content:"lsd-tooltip-base__content"},qc=({children:e,arrowOffset:t,arrowPosition:n="top",arrowSize:r=10,rootRef:a,...o})=>{const i=bs(o),l={width:`${r}px`,height:`${r}px`,transform:"rotate(45deg)"};return["top","bottom"].includes(n)?(l.left=`${t}px`,l[n]=`-${r/2}px`):(l.top=`${t}px`,l[n]=`-${r/2}px`),We("div",{ref:a,...ws(o),className:Qe(i.className,o.className,Vc.root),children:t?Ge(qe,{children:[We("div",{className:Vc.arrowTip,style:l}),We("div",{className:Vc.content,children:e})]}):e})};qc.classes=Vc;const Wc=1850,Gc=2100,Zc=({open:e,handleRef:t,size:n="large",mode:a="date",disabled:o=!1,onStartDateChange:i,onEndDateChange:l,onClose:s,onCalendarClickaway:u,startDate:c,endDate:d,calendarType:f="startDate",minDate:p=new Date(Wc,0,1),maxDate:h=new Date(Gc,0,1),tooltipArrowOffset:m,...g})=>{const v=bs(g),b=r.useRef(null),[y,w]=r.useState(c?Oc(c,p,h).date:null),[x,k]=r.useState(d?Oc(d,p,h).date:null),[_,E]=r.useState(!1);Ys(b,(t=>{e&&(u&&u(t),void 0===e&&s&&s())}));const{activeMonths:S,onDateFocus:C,onDateSelect:T,goToPreviousMonths:O,goToNextMonths:D,goToDate:P}=Ec({startDate:y,endDate:x,focusedInput:"startDate",onDatesChange:e=>{const t=((e,t,n,r)=>{let a=t,o=n;const i=r.startDate;return i?("startDate"===e?(!o||o&&i.getTime()<=o.getTime())&&(a=i):"endDate"===e&&(!a||a&&i.getTime()>=a.getTime())&&(o=i),{newStartDate:a,newEndDate:o}):{newStartDate:a,newEndDate:o}})(f,y,x,e),{newStartDate:n,newEndDate:r}=t;n!==y&&(null==i||i(n??new Date),w(n)),r!==x&&"range"===a&&(null==l||l(r??new Date),k(r))},numberOfMonths:1});r.useEffect((()=>{const e=Oc(c,p,h);if(Ic(e.date,y)||w(e.isValid?e.date:null),"range"===a){const e=Oc(d,p,h);Ic(e.date,x)||k(e.isValid?e.date:null)}}),[c,d,a,p,h,y,x]),r.useEffect((()=>{y&&C(y)}),[y]),r.useEffect((()=>{x&&C(x)}),[x]);const N=nu(t,e);return We(Cc.Provider,{value:{size:n,mode:a,startDate:y,endDate:x,onDateFocus:C,onDateSelect:T,goToPreviousMonths:O,goToNextMonths:D,goToDate:P,changeYearMode:_,setChangeYearMode:E},children:We(qc,{...g,className:Qe({...ws(g)},v.className,g.className,Sc.root,Sc[n],e&&Sc.open,o&&Sc.disabled),rootRef:b,style:{...N,...g.style??{}},arrowOffset:m,children:We("div",{className:Qe(Sc.container),children:S.map(((e,t)=>We(Hc,{year:e.year,month:e.month,firstDayOfWeek:0,size:n},`${e.year}-${e.month}-${t}`)))})})})};Zc.classes=Sc;const Qc={root:"lsd-card",small:"lsd-card--small",medium:"lsd-card--medium",large:"lsd-card--large"},Yc=r.createContext(null),Xc=({size:e="large",children:t,...n})=>{const r=bs(n);return We(Yc.Provider,{value:{size:e},children:We("div",{...ws(n),className:Qe(r.className,Qc.root,Qc[e]),children:t})})};Xc.classes=Qc;const Kc={root:"lsd-card-body"},Jc=({children:e,...t})=>{const n=bs(t);return We("div",{...ws(t),className:Qe(n.className,t.className,Kc.root),children:e})};Jc.classes=Kc;const ed={root:"lsd-card-header",title:"lsd-card-header__title",small:"lsd-card-header--small",medium:"lsd-card-header--medium",large:"lsd-card-header--large"},td=({size:e="large",children:t,...n})=>{const a=bs(n),o=r.useContext(Yc),i=(null==o?void 0:o.size)??e;return We("div",{...ws(n),className:Qe(a.className,n.className,ed.root,ed[i]),children:We(Vs,{className:ed.title,component:"div",variant:"large"===i?"label1":"label2",children:t})})};td.classes=ed;const nd=r.createContext(null),rd=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.91667 1.75C2.27233 1.75 1.75 2.27233 1.75 2.91667V11.0833C1.75 11.7277 2.27233 12.25 2.91667 12.25H11.0833C11.7277 12.25 12.25 11.7277 12.25 11.0833V2.91667C12.25 2.27233 11.7277 1.75 11.0833 1.75H2.91667ZM9.91667 6.41667H4.08333V7.58333H9.91667V6.41667Z",fill:"black"})})),{filled:!0}),ad={root:"lsd-checkbox",input:"lsd-checkbox__input",icon:"lsd-checkbox__icon",label:"lsd-checkbox__label",focused:"lsd-checkbox--focused",disabled:"lsd-checkbox--disabled",indeterminate:"lsd-checkbox--indeterminate",large:"lsd-checkbox--large",medium:"lsd-checkbox--medium",small:"lsd-checkbox--small"},od=({name:e,size:t="large",onChange:n,checked:a,defaultChecked:o,disabled:i=!1,indeterminate:l=!1,inputProps:s={},children:u,...c})=>{const d=bs(c),f=r.useRef(null),[p,h]=r.useState(!1),m=Ye({value:a,defaultValue:o??!1,onChange:n,ref:f}),g=r.useContext(nd),v=(null==g?void 0:g.size)??t;return r.useEffect((()=>{if(!f.current)return;const e=()=>h(!0),t=()=>h(!1);return f.current.addEventListener("focus",e),f.current.addEventListener("blur",t),()=>{var n,r;null==(n=f.current)||n.removeEventListener("focus",e),null==(r=f.current)||r.removeEventListener("blur",t)}}),[f.current]),Ge(Vs,{color:"primary",variant:"large"===v?"label1":"label2",component:"label","aria-disabled":i?"true":"false",...ws(c),className:Qe(d.className,c.className,ad.root,ad[v],p&&ad.focused,i&&ad.disabled,l&&ad.indeterminate),children:[We("input",{ref:f,name:e,type:"checkbox",disabled:i,checked:m.value,onChange:m.onChange,defaultChecked:o,className:Qe(s.className,ad.input),...s}),l?We(rd,{color:"primary",focusable:!1}):m.value?We(Ts,{color:"primary",focusable:!1}):We(Os,{color:"primary",focusable:!1}),We("span",{className:ad.label,children:u})]})};od.classes=ad;const id={root:"lsd-checkbox-group",label:"lsd-checkbox-group__label"},ld=({size:e="large",label:t,children:n,...r})=>{const a=bs(r);return We(nd.Provider,{value:{size:e},children:Ge("div",{...ws(r),className:Qe(a.className,r.className,id.root),children:[We(Vs,{component:"span",variant:"small"===e?"label2":"label1",className:id.label,...ys(r),children:t}),n]})})};ld.classes=id;const sd={root:"lsd-collapse-header",trigger:"lsd-collapse-header__trigger",label:"lsd-collapse-header__label",icons:"lsd-collapse-header__icons",icon:"lsd-collapse-header__icon",menuIcon:"lsd-collapse-header__menu-icon",open:"lsd-collapse-header--open",disabled:"lsd-collapse-header--disabled",small:"lsd-collapse-header--small",medium:"lsd-collapse-header--medium",large:"lsd-collapse-header--large"},ud=({label:e,disabled:t=!1,open:n,setOpen:r,size:a="large",onTrigger:o,...i})=>{const l=bs(i);return We("div",{...ws(i),className:Qe(l.className,i.className,sd.root,sd[a],t&&sd.disabled,n&&sd.open),children:Ge("button",{className:Qe(sd.trigger),onClick:o,children:[We(Vs,{color:"primary",component:"label",variant:"small"===a?"label2":"label1",className:sd.label,children:e}),We("div",{className:sd.icons,children:We(n?Cs:Es,{color:"primary",className:sd.menuIcon})})]})})};ud.classes=sd;const cd={root:"lsd-collapse",content:"lsd-collapse__content",open:"lsd-collapse--open",disabled:"lsd-collapse--disabled"},dd=({label:e,disabled:t=!1,size:n="large",open:a,children:o,...i})=>{const l=bs(i),s=r.useRef(null),[u,c]=r.useState(a??!1),d=e=>{if(void 0===a)return c(e);i.onChange&&i.onChange(e)};return r.useEffect((()=>{t&&u&&d(!1)}),[t,u,d]),r.useEffect((()=>{void 0!==a&&c(a)}),[a]),Ge("div",{...ws(i),ref:s,className:Qe(l.className,i.className,cd.root,t&&cd.disabled,u&&cd.open),children:[We(ud,{label:e,open:u,setOpen:c,size:n,onTrigger:()=>!t&&d(!u),disabled:t,...ys(i)}),u&&We("div",{className:cd.content,children:o})]})};dd.classes=cd;const fd={root:"lsd-date-field",label:"lsd-date-field__label",inputContainer:"lsd-date-field__input-container",input:"lsd-date-field__input-container__input",inputFilled:"lsd-date-field__input-container__input--filled",icon:"lsd-date-field__input-container__icon",noIcon:"lsd-date-field__input-container__no-icon",iconButton:"lsd-date-field__input-container__icon-button",supportingText:"lsd-date-field__supporting-text",disabled:"lsd-date-field--disabled",error:"lsd-date-field--error",large:"lsd-date-field--large",medium:"lsd-date-field--medium",small:"lsd-date-field--small",outlined:"lsd-date-field--outlined",underlined:"lsd-date-field--underlined"},pd=({label:e,size:t="large",error:n=!1,errorIcon:a=!1,clearButton:o,supportingText:i,children:l,value:s,placeholder:u,defaultValue:c,disabled:d,onChange:f,icon:p,onIconClick:h,inputProps:m={},calendarIconRef:g,variant:v="underlined",...b})=>{const y=bs(b),w=r.useRef(null),x=Ye({defaultValue:c,value:s,onChange:f,ref:w}),k=(null==m?void 0:m.id)??(b.id||"date-field")+"-input";return Ge("div",{"aria-disabled":d?"true":"false",...b,className:Qe({...ws(b)},b.className,y.className,fd.root,fd[t],d&&fd.disabled,n&&fd.error),children:[e&&We(Vs,{htmlFor:k,className:fd.label,variant:"label2",component:"label",children:e}),Ge("div",{className:Qe(fd.inputContainer,"outlined"===v?fd.outlined:fd.underlined),children:[We("input",{id:k,type:"date",placeholder:u,...m,ref:w,value:x.value||"",onChange:x.onChange,className:Qe(m.className,fd.input,x.filled&&fd.inputFilled),max:m.max||"9999-12-31"}),p?We("span",{className:fd.icon,onClick:()=>!d&&h&&h(),ref:g,children:p}):n&&a?We("span",{className:fd.icon,children:We(Ns,{color:"primary"})}):o&&x.filled?We("span",{onClick:()=>!d&&x.setValue(""),className:fd.icon,children:We(Ps,{color:"primary"})}):We("span",{className:fd.noIcon})]}),i&&We("div",{className:Qe(fd.supportingText),children:We(Vs,{variant:"label2",component:"p",children:i})}),l]})};pd.classes=fd;const hd={root:"lsd-date-picker",calendar:"lsd-date-picker__calendar",large:"lsd-date-picker--large",medium:"lsd-date-picker--medium",small:"lsd-date-picker--small"},md=(e,t)=>t&&(null==e?void 0:e.composedPath().includes(t))||!1,gd=({label:e,size:t="large",value:n,onChange:a,withCalendar:o=!0,variant:i="underlined",...l})=>{const s=bs(l),u=r.useRef(null),c=r.useRef(null),[d,f]=r.useState(!1),p=void 0!==n,h=Ye({value:n,defaultValue:"",onChange:a,getInput:()=>{var e;return null==(e=u.current)?void 0:e.querySelector(`input.${pd.classes.input}`)}});return We("div",{id:(l.id||"date-picker")+"-input",ref:u,className:Qe({...ws(l)},l.className,s.className,hd.root,hd[t]),children:We(pd,{label:e,size:t,variant:i,icon:o&&We(Us,{color:"primary"}),onIconClick:()=>f((e=>!e)),value:p||d?h.value:void 0,onChange:h.onChange,calendarIconRef:c,...l,children:We(lu,{id:"calendar",children:o&&We(Zc,{...ys(l),onStartDateChange:e=>(e=>h.setValue(Dc(e)))(e),open:d,onCalendarClickaway:e=>{md(e,c.current)||f(!1)},handleRef:u,startDate:h.value,disabled:l.disabled,className:hd.calendar})})})})};gd.classes=hd;const vd={root:"lsd-date-range-picker",calendar:"lsd-date-picker__calendar",withCalendar:"lsd-date-range-picker--with-calendar",openCalendar:"lsd-date-range-picker--calendar-open",disabled:"lsd-date-range-picker--disabled",inputContainer:"lsd-date-range-picker__input-container",icon:"lsd-date-range-picker__icon",large:"lsd-date-range-picker--large",medium:"lsd-date-range-picker--medium",small:"lsd-date-range-picker--small",label:"lsd-date-range-picker__label",supportingText:"lsd-date-range-picker__supporting-text",outlined:"lsd-date-range-picker--outlined",separator:"lsd-date-range-picker__separator"},bd=({startValue:e,endValue:t,onStartDateChange:n,onEndDateChange:a,size:o="large",variant:i="underlined",withCalendar:l=!0,label:s,supportingText:u,disabled:c,...d})=>{const f=bs(d),p=r.useRef(null),h=r.useRef(null),m=r.useRef(null),[g,v]=r.useState(null),b=void 0!==e,y=void 0!==t,w=Ye({value:e,defaultValue:"",onChange:n,getInput:()=>{var e;return null==(e=p.current)?void 0:e.querySelectorAll(`input.${pd.classes.input}`)[0]}}),x=Ye({value:t,defaultValue:"",onChange:a,getInput:()=>{var e;return null==(e=p.current)?void 0:e.querySelectorAll(`input.${pd.classes.input}`)[1]}}),k={...d,size:o,label:void 0,supportingText:void 0},_="startDate"===g||"endDate"===g;return Ge("div",{ref:p,className:Qe({...ws(d)},f.className,d.className,vd.root,vd[o],l&&vd.withCalendar,_&&vd.openCalendar,c&&vd.disabled),children:[s&&We(Vs,{className:vd.label,variant:"label2",component:"label",children:s}),Ge("div",{className:Qe(d.className,vd.inputContainer,"outlined"===i&&vd.outlined),children:[We(pd,{variant:i,calendarIconRef:m,icon:l&&We(Us,{color:"primary"}),value:b||_?w.value:void 0,onIconClick:()=>v((e=>Lc(e,"startDate"))),onChange:e=>{x.value&&!Rc(e.target.value,x.value)||w.onChange(e)},...k}),We("div",{className:vd.separator}),We(pd,{variant:i,calendarIconRef:h,icon:l&&We(Us,{color:"primary"}),value:y||_?x.value:void 0,onIconClick:()=>v((e=>Lc(e,"endDate"))),onChange:e=>{w.value&&!Rc(w.value,e.target.value)||x.onChange(e)},...k})]}),u&&We("div",{className:Qe(vd.supportingText),children:We(Vs,{variant:"label2",component:"p",children:u})}),l&&We(lu,{id:"calendar",children:We(Zc,{...ys(d),onStartDateChange:e=>{w.setValue(Dc(e)),v("endDate")},onEndDateChange:e=>x.setValue(Dc(e)),onCalendarClickaway:e=>{md(e,h.current)||md(e,m.current)||v(null)},calendarType:g,open:_,onClose:()=>v(null),handleRef:p,mode:"range",disabled:c,startDate:w.value,endDate:x.value,className:vd.calendar,tooltipArrowOffset:jc(g,o),size:o})})]})};bd.classes=vd;const yd={root:"lsd-dropdown",label:"lsd-dropdown__label",buttonContainer:"lsd-dropdown__button-container",trigger:"lsd-dropdown__trigger",optionLabel:"lsd-dropdown__option-label",icons:"lsd-dropdown__icons",icon:"lsd-dropdown__icon",menuIcon:"lsd-dropdown__menu-icon",supportingText:"lsd-dropdown__supporting-text",open:"lsd-dropdown--open",error:"lsd-dropdown--error",disabled:"lsd-dropdown--disabled",small:"lsd-dropdown--small",medium:"lsd-dropdown--medium",large:"lsd-dropdown--large",outlined:"lsd-dropdown--outlined",underlined:"lsd-dropdown--underlined"},wd=({label:e,size:t="large",error:n=!1,disabled:a=!1,supportingText:o,triggerLabel:i,value:l=[],onChange:s,options:u=[],multi:c=!1,variant:d="outlined",isOpen:f,onToggle:p,menuProps:h={},...m})=>{const g=bs(m),v=r.useRef(null),b=void 0!==f,[y,w]=r.useState(!1);b&&f!==y&&w(f);const{select:x,isSelected:k,selected:_}=((e,t,{onDone:n,onChange:a,multi:o=!1}={})=>{const i=r.useMemo((()=>Object.fromEntries(e.map((e=>[e.value,e])))),[e]),[l,s]=r.useState(Array.isArray(t)?t:t?[t]:[]),u=r.useMemo((()=>ds(l,(()=>!0))),[l]),c=r.useMemo((()=>l.map((e=>i[e]))),[l,i]);r.useEffect((()=>{a&&s(Array.isArray(t)?t:t?[t]:[])}),[t,a]);const d=e=>"string"==typeof e?e:e.value;return{selected:c,isSelected:e=>!!u[d(e)],select:e=>{const t=d(e),r=o?u[t]?l.filter((e=>e!==t)):[...l,t]:[t];a?a(o?r:r[0]):s(r),!o&&n&&n(o?r:r[0])}}})(u,l,{multi:c,onChange:s,onDone:()=>{w(!1)}}),E=e=>{b?p&&p(e):w(e)};r.useEffect((()=>{a&&y&&!b&&w(!1)}),[y,a,b]);const S=(null==m?void 0:m.id)??(m.id||"dropdown")+"-input";return Ge("div",{ref:v,...ws(m),className:Qe(g.className,m.className,yd.root,yd[t],n&&yd.error,a&&yd.disabled,y&&yd.open,"outlined"===d?yd.outlined:yd.underlined),children:[e&&We(Vs,{htmlFor:S,className:yd.label,variant:"label2",component:"label",children:e}),We("div",{className:yd.buttonContainer,children:Ge("button",{id:S,className:Qe(yd.trigger),onClick:()=>{a||E(!y)},children:[We(Vs,{color:"primary",component:"label",variant:"large"===t?"label1":"label2",className:yd.optionLabel,children:_.length>0?_.map((e=>e.name)).join(", "):i}),Ge("div",{className:yd.icons,children:[n&&We(Ns,{color:"primary",className:yd.icon}),We(y?Cs:Es,{color:"primary",className:yd.menuIcon})]})]})}),o&&We(Vs,{variant:"large"===t?"label1":"label2",component:"p",className:yd.supportingText,children:o}),We(lu,{id:"dropdown",children:We(ru,{handleRef:v,open:y,onClose:()=>E(!1),size:t,genericFontFamily:m.genericFontFamily,...h,children:u.map((e=>We(Ws,{size:t,tabIndex:0,onClick:x.bind(null,e),withIcon:c,label:e.name,selected:k(e),onKeyDown:t=>"Enter"===t.key&&x(e)},e.value)))})})]})};wd.classes=yd;const xd=r.createContext(null),kd={root:"lsd-icon-button",outlined:"lsd-icon-button--outlined",filled:"lsd-icon-button--filled",disabled:"lsd-icon-button--disabled",small:"lsd-icon-button--small",medium:"lsd-icon-button--medium",large:"lsd-icon-button--large"},_d=({size:e,disabled:t,variant:n,children:a,...o})=>{const i=bs(o),l=r.useContext(xd),s=e??(null==l?void 0:l.size)??"large",u=n??(null==l?void 0:l.variant)??"outlined",c=t??(null==l?void 0:l.disabled)??!1;return We("button",{...ws(o),className:Qe(i.className,o.className,kd.root,kd[s],kd[u],c&&kd.disabled),children:a})};_d.classes=kd;const Ed={root:"lsd-icon-button-group",outlined:"lsd-icon-button-group--outlined",filled:"lsd-icon-button-group--filled",disabled:"lsd-icon-button-group--disabled",small:"lsd-icon-button-group--small",medium:"lsd-icon-button-group--medium",large:"lsd-icon-button-group--large"},Sd=({size:e="large",disabled:t,variant:n="outlined",children:r,...a})=>{const o=bs(a);return We("div",{...ws(a),className:Qe(o.className,a.className,Ed.root,Ed[e],Ed[n],t&&Ed.disabled),children:We(xd.Provider,{value:{size:e,variant:n,disabled:t},children:r})})};Sd.classes=Ed;const Cd={root:"lsd-modal",small:"lsd-modal--small",medium:"lsd-modal--medium",large:"lsd-modal--large",xsmall:"lsd-modal--extra-small",modalContainer:"lsd-modal__container",header:"lsd-modal__header",title:"lsd-modal__title",subtitle:"lsd-modal__subtitle",titleAndSubtitleContainer:"lsd-modal__title-and-subtitle-container",closeIcon:"lsd-modal__close-icon"},Td=({isOpen:e,size:t="large",title:n,subtitle:r,onClose:a,children:o,...i})=>{const l=bs(i);return e?We("div",{...ws(i),className:Qe(l.className,Cd.root,Cd[t]),onClick:e=>{e.target===e.currentTarget&&a&&a()},children:Ge("div",{className:Qe(Cd.modalContainer),children:[Ge("div",{className:Cd.header,children:[Ge("div",{className:Cd.titleAndSubtitleContainer,children:[!!n&&We(Vs,{className:Cd.title,component:"div",variant:"small"===t?"h6":"h5",children:n}),!!r&&We(Vs,{className:Cd.subtitle,variant:"small"===t?"label2":"label1",component:"div",children:r})]}),We(_d,{onClick:a,className:Cd.closeIcon,size:"medium",children:We(Ps,{color:"primary"})})]}),o]})}):null};Td.classes=Cd;const Od={root:"lsd-modal-body"},Dd=({children:e,...t})=>{const n=bs(t);return We("div",{...ws(t),className:Qe(n.className,Od.root),children:e})};Dd.classes=Od;const Pd={root:"lsd-modal-footer"},Nd=({children:e,...t})=>{const n=bs(t);return We("div",{...ws(t),className:Qe(n.className,Pd.root),children:e})};Nd.classes=Pd;const Id={root:"lsd-number-input",label:"lsd-number-input__label",mainContainer:"lsd-number-input__main-container",inputContainer:"lsd-number-input__input-container",input:"lsd-number-input__input",errorIcon:"lsd-number-input__error-icon",plusMinusIcons:"lsd-number-input__plus-minus-icons",supportingText:"lsd-number-input__supporting-text",disabled:"lsd-number-input--disabled",error:"lsd-number-input--error",large:"lsd-number-input--large",medium:"lsd-number-input--medium",small:"lsd-number-input--small"},Ad=({label:e,size:t="large",error:n=!1,errorIcon:a=!1,supportingText:o,value:i,placeholder:l,defaultValue:s,disabled:u,onChange:c,icon:d,inputProps:f={},id:p="number-input",min:h=Number.MIN_SAFE_INTEGER,max:m=Number.MAX_SAFE_INTEGER,step:g=1,...v})=>{const b=r.useRef(null),y=bs(v),w=Ye({defaultValue:s,value:i,onChange:c,ref:b});return Ge("div",{"aria-disabled":u?"true":"false",...ws(v),className:Qe(v.className,y.className,Id.root,Id[t],u&&Id.disabled,n&&Id.error),children:[e&&We(Vs,{htmlFor:p,className:Id.label,variant:"label2",component:"label",children:e}),Ge("div",{className:Id.mainContainer,children:[We(_d,{onClick:()=>{if(u)return;const e=Math.max(h,Number(w.value||"0")-g);w.setValue(e.toString())},className:Id.plusMinusIcons,children:We(Hs,{color:"primary"})}),Ge("div",{className:Id.inputContainer,children:[We("input",{id:p,type:"number",placeholder:l,ref:b,className:Qe(f.className,Id.input),value:w.value||"",onChange:w.onChange,min:h,max:m,step:g,disabled:u,...f}),n&&!!a&&We("span",{className:Id.errorIcon,children:We(Ns,{color:"primary"})})]}),We(_d,{onClick:()=>{if(u)return;const e=Math.min(m,Number(w.value||"0")+g);w.setValue(e.toString())},className:Id.plusMinusIcons,children:We(_s,{color:"primary"})})]}),o&&We("div",{className:Qe(Id.supportingText),children:We(Vs,{variant:"label2",component:"p",children:o})})]})};Ad.classes=Id;const Ld=e=>{try{return[e(),void 0]}catch(t){return[void 0,t]}},Rd=({children:e})=>{const[t,n]=r.useState(!1);return r.useEffect((()=>{if("undefined"==typeof window)return;const e=document.querySelector("body");let t=e.querySelector("#lsd-presentation");return t||(t=document.createElement("div"),t.id="lsd-presentation"),e.appendChild(t),n(!0),()=>{Ld((()=>e.removeChild(t)))}}),[]),We(au.Provider,{value:{initialized:t},children:e})},jd={root:"lsd-quote",indentedInline:"lsd-quote--indented-inline",parentheses:"lsd-quote--parentheses",text:"lsd-quote__text"},Md=({mode:e="indented-line",children:t,...n})=>{const r=bs(n);return We(qe,{children:We("div",{...ws(n),className:Qe(r.className,n.className,jd.root,e&&"parentheses"===e?jd.parentheses:jd.indentedInline),children:We(Vs,{color:"primary",component:"label",variant:"label1",children:t})})})};Md.classes=jd;const Fd=r.createContext(null),Bd={root:"lsd-radio-button",input:"lsd-radio-button__input",label:"lsd-radio-button__label",disabled:"lsd-radio-button--disabled",large:"lsd-radio-button--large",medium:"lsd-radio-button--medium",small:"lsd-radio-button--small"},zd=({size:e="large",onChange:t,checked:n,defaultChecked:a,disabled:o=!1,value:i,name:l,inputProps:s={},children:u,...c})=>{const d=bs(c),f=r.useRef(null),p=r.useContext(Fd),h=(null==p?void 0:p.size)??e,m=(null==p?void 0:p.name)??l??"",g=p?p.value===i:n,v=Ye({value:g,defaultValue:a??!1,onChange:t,ref:f});return Ge(Vs,{color:"primary",variant:"large"===h?"label1":"label2",component:"label","aria-disabled":o?"true":"false",...ws(c),className:Qe(d.className,c.className,Bd.root,Bd[h],o&&Bd.disabled),children:[We("input",{ref:f,name:m,value:i,type:"radio",checked:v.value,onChange:e=>{p?p.setActiveRadioButton(e.target.value):v.onChange(e)},defaultChecked:a,className:Qe(s.className,Bd.input),...s}),v.value?We($s,{color:"primary",focusable:!1}):We(zs,{color:"primary",focusable:!1}),We("span",{className:Bd.label,children:u})]})};zd.classes=Bd;const $d={root:"lsd-radio-button-group",label:"lsd-radio-button-group__label"},Ud=({size:e="large",label:t,value:n,name:a,onChange:o,children:i,...l})=>{const s=bs(l),u=r.useRef(null),[c,d]=r.useState(n);return r.useEffect((()=>d(n)),[n]),We(Fd.Provider,{value:{value:c,setActiveRadioButton:e=>{o?o(e):d(e)},name:a,size:e},children:Ge("div",{ref:u,...ws(l),className:Qe(s.className,l.className,$d.root),children:[We(Vs,{component:"span",variant:"small"===e?"label2":"label1",className:$d.label,children:t&&t}),i]})})};Ud.classes=$d;const Hd=r.createContext(null),Vd={root:"lsd-tab-item",text:"lsd-tab-item--text",icon:"lsd-tab-item--icon",disabled:"lsd-tab-item--disabled",selected:"lsd-tab-item--selected",small:"lsd-tab-item--small",medium:"lsd-tab-item--medium",large:"lsd-tab-item--large",withIcon:"lsd-tab-item--with-icon"},qd=({name:e,size:t="large",selected:n=!1,inactive:a=!1,icon:o,children:i,...l})=>{const s=bs(l),u=r.useContext(Hd),c=(null==u?void 0:u.size)??t,d=u?u.activeTab===e:n;return Ge("button",{...ws(l),className:Qe(s.className,l.className,Vd.root,Vd[c],d&&Vd.selected,l.disabled&&Vd.disabled,!!o&&Vd.withIcon),onClick:t=>{l.onClick&&l.onClick(t),a||(null==u?void 0:u.setActiveTab)&&u.setActiveTab(e)},children:[We(Vs,{component:"span",className:Vd.text,variant:"small"===c?"label2":"label1",children:i}),o&&We("span",{className:Vd.icon,children:o})]})};qd.classes=Vd;const Wd={root:"lsd-table-body",toolbar:"lsd-table-body__toolbar",row:"lsd-table-body__row"},Gd=({options:e=[],size:t="large",buttonLabel:n="Button",toolbar:r,children:a,...o})=>{const i=bs(o);return Ge("div",{...ws(o),className:Qe(i.className,o.className,Wd.root),children:[r&&We("div",{className:Qe(Wd.toolbar),children:r}),We("table",{children:a})]})};Gd.classes=Wd;const Zd={root:"lsd-table-header"},Qd=({size:e="large",children:t,...n})=>{const r=bs(n);return We("div",{...ws(n),className:Qe(r.className,n.className,Zd.root),children:t})};Qd.classes=Zd;const Yd={root:"lsd-table",small:"lsd-table--small",medium:"lsd-table--medium",large:"lsd-table--large"},Xd=r.createContext(null),Kd=()=>r.useContext(Xd),Jd=({size:e="large",type:t="default",headerOptions:n,header:r,toolbar:a,children:o,...i})=>{const l=bs(i);return We(Xd.Provider,{value:{size:e,type:t,headerOptions:n},children:Ge("div",{...ws(i),className:Qe(l.className,Yd.root,Yd[e]),children:[We(Qd,{children:r}),We(Gd,{toolbar:a,options:n,children:o})]})})};Jd.classes=Yd;const ef={root:"lsd-table-item",large:"lsd-table-item--large",medium:"lsd-table-item--medium",small:"lsd-table-item--small"},tf=({size:e="large",children:t,...n})=>{const r=bs(n),a=Kd(),o=(null==a?void 0:a.size)??e;return We("td",{...ws(n),className:Qe(r.className,n.className,ef.root,ef[o]),children:t})};tf.classes=ef;const nf={root:"lsd-table-row"},rf=({size:e="large",type:t="default",children:n,...r})=>{const a=bs(r),o=Kd(),i=(null==o?void 0:o.type)??t;return Ge("tr",{...ws(r),className:Qe(a.className,r.className,nf.root),children:["checkbox"===i&&We("td",{className:ef.root,children:We(od,{})}),"radio"===i&&We("td",{className:ef.root,children:We(zd,{value:"1"})}),n]})};rf.classes=nf;const af=r.createContext(null),of=(e=0)=>{let t=e-1;return()=>(t++,t)},lf="undefined"==typeof DOMRectReadOnly?null:new DOMRectReadOnly(0,0,0,0),sf=of(),uf=(e,t)=>{const n=(()=>{const{observe:e,unobserve:t,ready:n}=r.useContext(af)??{};return r.useMemo((()=>({observe:e,unobserve:t,ready:n})),[e,t,n])})(),a=r.useMemo((()=>t??sf().toString()),[t]),o=((e,t)=>{var n;const a=r.useContext(af);return(null==(n=null==a?void 0:a.rect)?void 0:n[e])??t})(a)??lf;return r.useEffect((()=>{if(n&&n.ready)return e.current&&n.observe(a,e),()=>{n.unobserve(a)}}),[n.ready,e.current]),o},cf=(e,t,n,r)=>-1===e?t:n-(r+t),df=(e,t)=>{var n;const a=uf(e),[o,i]=r.useState((null==(n=null==e?void 0:e.current)?void 0:n.scrollLeft)??0),[l,s]=r.useState(0),[u,c]=r.useState(0),d=r.useRef(null);((e,t,n,a,o)=>{const i=r.useMemo((()=>"string"==typeof e?e:e()),[]),l=r.useMemo((()=>"function"==typeof t?t():t),[t]);r.useEffect((()=>{if((null==l?void 0:l.addEventListener)&&(null==l?void 0:l.removeEventListener))return l.addEventListener(i,n,a),()=>{l.removeEventListener(i,n,a)}}),[i,l])})("scroll",e.current,(e=>{i(e.target.scrollLeft)}),{passive:!0});r.useEffect((()=>{if(d.current&&clearTimeout(d.current),!e.current)return;const{scrollLeft:t,scrollWidth:n,clientWidth:r}=e.current;c(cf(1,t,n,r)),s(cf(-1,t,n,r))}),[a,o,null==t?void 0:t.deps]);const f=(n,r)=>{const{clientWidth:a,scrollLeft:o}=e.current,i=Array.from(e.current.childNodes).find((e=>e.getBoundingClientRect().x>=0)),l=Math.max(r??a/3,i?i.clientWidth:0);e.current.scrollTo({behavior:(null==t?void 0:t.scrollBehavior)??"smooth",left:o+l*n})};return r.useMemo((()=>({right:u,left:l,toRight:f.bind(null,1),toLeft:f.bind(null,-1)})),[u,l])},ff={root:"lsd-tabs",fullWidth:"lsd-tabs--full-width",withScrollControls:"lsd-tabs--with-scroll-controls",leftScrollControl:"lsd-tabs__left-scroll-control",rightScrollControl:"lsd-tabs__right-scroll-control"},pf=({size:e="large",fullWidth:t=!1,scrollControls:n=!1,onChange:a,activeTab:o,children:i,...l})=>{const s=bs(l),u=r.useRef(null),[c,d]=r.useState(o);r.useEffect((()=>d(o)),[o]);const f=df(u,{scrollBehavior:"smooth",deps:[i]}),p=0!==f.left||0!==f.right;return We(Hd.Provider,{value:{activeTab:c,setActiveTab:e=>{a?a(e):d(e)},size:e},children:Ge("div",{ref:u,...ws(l),className:Qe(s.className,l.className,ff.root,t&&ff.fullWidth,n&&p&&ff.withScrollControls),children:[n&&p&&We(qd,{inactive:!0,name:"Prev",disabled:0===f.left,onClick:()=>f.toLeft(),className:ff.leftScrollControl,children:We(js,{color:"primary"})}),i,n&&p&&We(qd,{inactive:!0,name:"Next",disabled:0===f.right,onClick:()=>f.toRight(),className:ff.rightScrollControl,children:We(Ms,{color:"primary"})})]})})};pf.classes=ff;const hf={root:"lsd-tag",label:"lsd-tag__label",outlined:"lsd-tag--outlined",filled:"lsd-tag--filled",disabled:"lsd-tag--disabled",small:"lsd-badge--small",large:"lsd-badge--large"},mf=({variant:e="outlined",disabled:t,icon:n,iconDirection:r="left",children:a,size:o="large",...i})=>{const l=bs(i);return Ge("div",{"aria-label":a,...ws(i),className:Qe(l.className,i.className,hf.root,hf[e],t&&hf.disabled,hf[o]),children:["left"===r&&n,We(Vs,{variant:"small"===o?"label2":"label1",className:hf.label,component:"span",children:a}),"right"===r&&n]})};mf.classes=hf;var gf=Hi,vf=0;var bf=function(e){var t=++vf;return gf(e)+t};const yf={root:"lsd-text-field",inputContainer:"lsd-text-field__input-container",label:"lsd-text-field__label",input:"lsd-text-field__input",icon:"lsd-text-field__icon",clearButton:"lsd-text-field__clear-button",supportingText:"lsd-text-field__supporting-text",disabled:"lsd-text-field--disabled",error:"lsd-text-field--error",large:"lsd-text-field--large",medium:"lsd-text-field--medium",small:"lsd-text-field--small",outlined:"lsd-text-field--outlined",underlined:"lsd-text-field--underlined"},wf=({size:e="large",label:t,icon:n,error:a=!1,errorIcon:o=!1,clearButton:i,supportingText:l,children:s,value:u,placeholder:c,defaultValue:d,disabled:f,onChange:p,inputProps:h={},labelProps:m={},variant:g="underlined",...v})=>{const b=bs(v),y=r.useRef(null),w=Ye({defaultValue:d,value:u,onChange:p,ref:y}),x=h.id||bf("TextField-");return Ge("div",{"aria-disabled":f?"true":"false",...ws(v),className:Qe(b.className,v.className,yf.root,yf[e],f&&yf.disabled,a&&yf.error,"outlined"===g?yf.outlined:yf.underlined),children:[t&&We(Vs,{variant:"label2",component:"label",htmlFor:x,...m,className:Qe(yf.label,m.className),children:t}),Ge("div",{className:yf.inputContainer,children:[We("input",{id:x,placeholder:c,ref:y,value:w.value,onChange:w.onChange,...h,className:Qe(h.className,yf.input)}),a&&o?We(Ns,{color:"primary",className:yf.icon}):i&&w.filled?We(_d,{disabled:f,onClick:()=>!f&&w.setValue(""),"aria-label":"clear",className:yf.clearButton,children:We(Ps,{color:"primary",className:yf.icon})}):n]}),l&&We("div",{className:Qe(yf.supportingText),children:We(Vs,{variant:"large"===e?"label1":"label2",component:"p",children:l})})]})};wf.classes=yf;const xf={vars:{lsd:(...e)=>`--${["lsd",...e].join("-")}`,typography:(e,t)=>xf.vars.lsd(e,t),color:(e,t)=>xf.vars.lsd(e,t),wrap:e=>`var(${e})`},define:(e,t)=>`${e}: ${t};`},kf=(()=>{const e={};return t=>{const n=t.name;return e[n]&&"undefined"!=typeof window||(e[n]=(e=>{const t=[],n=[],r=fs.map((()=>[])),a=fs.map((()=>[]));ps.forEach((n=>{ms.forEach((r=>{var a;const o=(null==(a=e.typography[n][r])?void 0:a.toString())??"unset";t.push(xf.define(xf.vars.typography(n,r),o))}))})),t.push(xf.define(xf.vars.lsd("typography","generic-font-family"),e.typographyGlobal.genericFontFamily)),fs.forEach(((t,n)=>{ps.forEach((r=>{ms.forEach((o=>{var i,l,s,u;const c=e.breakpoints[t].typography[r][o],d=n>0?null==(u=null==(s=null==(l=null==(i=e.breakpoints)?void 0:i[fs[n-1]])?void 0:l.typography)?void 0:s[r])?void 0:u[o]:e.typography[r][o];c&&c!==d&&a[n].push(xf.define(xf.vars.typography(r,o),c.toString()))}))}))}));{const{primary:n,secondary:r,...a}=e.palette,o=a;t.push(xf.define(xf.vars.color("theme","primary"),n),xf.define(xf.vars.color("theme","secondary"),r),...Object.keys(o).flatMap((e=>Object.keys(o[e]).map((t=>xf.define(xf.vars.color(e,t),o[e][t]))))))}e.spacing.map((e=>{const n=xf.vars.lsd("spacing",e.toString());t.push(xf.define(n,`${e}px`))})),fs.map(((t,o)=>{n.push(`@media (min-width: ${e.breakpoints[t].width}px) {\n :root {\n ${a[o].join("\n")}\n }\n\n ${r[o]}\n }`)}));const i=`\n ${t.join("\n")} \n\n ${n.join("\n")}\n `;return{cssVars:i,globalStyles:o.css(":root{",i,";}","")}})(t)),e[n]}})(),_f={name:"LSD",breakpoints:{xs:{width:0,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},label2:{},subtitle1:{},subtitle2:{},subtitle3:{},subtitle4:{}}},sm:{width:400,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}},md:{width:768,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}},lg:{width:1024,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}},xl:{width:1205,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}}},typography:{display1:{fontSize:"5.5rem",fontWeight:"normal",lineHeight:"6rem"},display2:{fontSize:"4rem",fontWeight:"normal",lineHeight:"4.5rem"},display3:{fontSize:"3.5rem",fontWeight:"normal",lineHeight:"4rem"},display4:{fontSize:"3rem",fontWeight:"normal",lineHeight:"3.5rem"},h1:{fontSize:"2.5rem",fontWeight:"normal",lineHeight:"3rem"},h2:{fontSize:"2rem",fontWeight:"normal",lineHeight:"2.5rem"},h3:{fontSize:"1.75rem",fontWeight:"normal",lineHeight:"2.25rem"},h4:{fontSize:"1.5rem",fontWeight:"normal",lineHeight:"2rem"},h5:{fontSize:"1.25rem",fontWeight:"normal",lineHeight:"1.75rem"},h6:{fontSize:"1rem",fontWeight:"normal",lineHeight:"1.5rem"},subtitle1:{fontSize:"1.125rem",fontWeight:"normal",lineHeight:"1.5rem"},subtitle2:{fontSize:"1rem",fontWeight:"normal",lineHeight:"1.5rem"},subtitle3:{fontSize:"0.875rem",fontWeight:"normal",lineHeight:"1.25rem"},subtitle4:{fontSize:"0.75rem",fontWeight:"normal",lineHeight:"1rem"},body1:{fontSize:"1rem",fontWeight:"normal",lineHeight:"1.5rem"},body2:{fontSize:"0.875rem",fontWeight:"normal",lineHeight:"1.25rem"},body3:{fontSize:"0.75rem",fontWeight:"normal",lineHeight:"1rem"},label1:{fontSize:"0.875rem",fontWeight:"normal",lineHeight:"1.25rem"},label2:{fontSize:"0.75rem",fontWeight:"normal",lineHeight:"1rem"}},typographyGlobal:{genericFontFamily:"sans-serif"},palette:{primary:"0, 0, 0",secondary:"255, 255, 255",surface:{primary:"255, 255, 255",secondary:"0, 0, 0"},text:{primary:"0, 0, 0",secondary:"255, 255, 255",tertiary:"0, 0, 0, 0.34"},border:{primary:"0, 0, 0",secondary:"255, 255, 255"},icon:{primary:"0, 0, 0",secondary:"255, 255, 255"}},spacing:[4,8,16,24,32,40,64,80,96,120],globalStyles:o.css("",""),cssVars:""},{cssVars:Ef,globalStyles:Sf}=kf(_f);_f.cssVars=Ef,_f.globalStyles=Sf;const Cf=of(),Tf=(e,t)=>ds(ps,(n=>({...t.typography[n],...e.typography[n]??{}}))),Of=(e,t)=>({...t.typographyGlobal,...e.typographyGlobal}),Df=(e,t)=>{const n=new Map;return Object.fromEntries(fs.reduce(((r,a,o)=>[...r,{...t.breakpoints[a],...e.breakpoints[a],...ds(["typography"],(a=>((e,t,n,r,a,o)=>"typography"===e?ds(a[e],(i=>{var l,s,u,c,d,f,p,h,m,g,v;const b=`${e}.${i}`,y=!0===o.get(b);return Object.keys((null==(u=null==(s=null==(l=r.breakpoints)?void 0:l[fs[n]])?void 0:s[e])?void 0:u[i])??{}).length>0&&o.set(b,!0),{...a[e][i],...r[e][i],...y?(null==(d=null==(c=null==t?void 0:t[n-1])?void 0:c[e])?void 0:d[i])??{}:null==(h=null==(p=null==(f=a.breakpoints)?void 0:f[fs[n]])?void 0:p[e])?void 0:h[i],...(null==(v=null==(g=null==(m=r.breakpoints)?void 0:m[fs[n]])?void 0:g[e])?void 0:v[i])??{}}})):{})(a,r,o,e,t,n)))}]),[]).map(((e,t)=>[fs[t],e])))},Pf=(e,t)=>{var n,r,a,o,i,l,s,u,c;const d=e.palette.primary??t.palette.primary,f=e.palette.secondary??t.palette.secondary;return{primary:d,secondary:f,surface:{primary:(null==(n=e.palette.surface)?void 0:n.primary)??f,secondary:(null==(r=e.palette.surface)?void 0:r.secondary)??d},border:{primary:(null==(a=e.palette.border)?void 0:a.primary)??d,secondary:(null==(o=e.palette.border)?void 0:o.secondary)??f},icon:{primary:(null==(i=e.palette.icon)?void 0:i.primary)??d,secondary:(null==(l=e.palette.icon)?void 0:l.secondary)??f},text:{primary:(null==(s=e.palette.text)?void 0:s.primary)??d,secondary:(null==(u=e.palette.text)?void 0:u.secondary)??f,tertiary:(null==(c=e.palette.text)?void 0:c.tertiary)??`${d}, 0.34`}}},Nf=(e,t=_f)=>{const n={name:e.name??(r=t.name,`${r}-${Cf()}`),typography:Tf(e,t),typographyGlobal:Of(e,t),breakpoints:Df(e,t),palette:Pf(e,t),globalStyles:o.css("",""),cssVars:"",spacing:e.spacing.length?e.spacing:t.spacing};var r;const{cssVars:a,globalStyles:i}=kf(n);return n.cssVars=a,n.globalStyles=i,n},If=Nf({name:"Light",breakpoints:{},typography:{},typographyGlobal:{},palette:{},spacing:[]},_f),Af={light:If,dark:Nf({name:"Dark",breakpoints:{},typography:{},typographyGlobal:{},palette:{primary:"255, 255, 255",secondary:"0, 0, 0"},spacing:[]},If)},Lf=o.css(".",uu.root,"{box-sizing:border-box;}.",uu.label,"{display:block;}.",uu.inputContainer,"{display:flex;justify-content:space-between;}.",uu.disabled,"{opacity:0.34;}.",uu.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;width:100%;}.",uu.input,":hover{outline:none;}.",uu.input,"::placeholder{color:rgb(var(--lsd-text-primary));opacity:0.3;}.",uu.icon,"{cursor:pointer;display:flex;align-items:center;}.",uu.error,"{text-decoration:line-through;}.",uu.large,"{width:208px;.",uu.label,"{margin:0 0 6px 18px;}.",uu.inputContainer,"{height:40px;}.",uu.input,"{padding:9px 17px;}.",uu.icon,"{padding:12px 13px;}}.",uu.medium,"{width:188px;.",uu.label,"{margin:0 0 6px 14px;}.",uu.inputContainer,"{height:32px;}.",uu.input,"{padding:5px 13px;}.",uu.icon,"{padding:8px 11px;}}.",uu.small,"{width:164px;.",uu.label,"{margin:0 0 6px 12px;}.",uu.inputContainer,"{height:28px;}.",uu.input,"{padding:5px 11px;}.",uu.icon,"{padding:6px 9px;}}.",uu.withIcon,"{}.",uu.outlined," .",uu.inputContainer,"{border:1px solid rgb(var(--lsd-border-primary));}.",uu.underlined," .",uu.inputContainer,"{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}.",uu.dropdownItemPlaceholder,"{opacity:0.5;white-space:pre;}",""),Rf=o.css(".",du.root,"{width:fit-content;box-sizing:border-box;display:flex;flex-direction:row;align-items:center;justify-content:center;border:1px solid rgb(var(--lsd-icon-primary));border-radius:20px;&:hover,&:focus{text-decoration:underline;cursor:pointer;}}.",du.large,"{padding:3px 11px;gap:12px;height:28px;}.",du.small,"{padding:3px 7px;gap:8px;height:24px;}.",du.filled,"{background-color:rgb(var(--lsd-icon-primary));.",du.label,"{color:rgb(var(--lsd-text-secondary));}svg{--lsd-icon-primary:var(--lsd-icon-secondary);}}.",du.outlined,"{color:rgb(var(--lsd-text-primary));}.",du.disabled,"{opacity:0.3;cursor:initial;pointer-events:none;}",""),jf=o.css(".",mu.root,"{}.",mu.list,"{display:flex;flex-direction:row;align-items:center;list-style-type:none;margin:0;padding:0;}.",mu.disabled,"{.",mu.list,"{opacity:0.34;cursor:initial;pointer-events:none;}}.",mu.listBox,"{display:flex;flex-direction:column;overflow:auto;border:1px solid rgb(var(--lsd-border-primary));margin-top:10px;position:absolute;width:auto!important;}.",mu.listBox,">li{cursor:pointer;&:not(:last-child){border-bottom:1px solid rgb(var(--lsd-border-primary));}&:hover,&:focus{text-decoration:underline;text-decoration-color:rgb(var(--lsd-border-primary));}}.",mu.listBox," li>a{width:164px;padding:5px 11px;}",""),Mf=o.css(".",pu.root,"{list-style-type:none;display:flex;align-items:center;}.",mu.list,">li:not(:last-child)::after{display:inline-block;margin-inline:12px;content:'/';}.",pu.itemLink,"{text-decoration:none;cursor:pointer;}.",pu.outlined,"{padding:3px 11px;border:1px solid rgb(var(--lsd-border-primary));}",pu.large,"{}",pu.small,"{}.",mu.root,":not(.",mu.disabled,"){.",pu.itemLink,"{&:hover,&:focus{text-decoration:underline;text-decoration-color:rgb(var(--lsd-border-primary));}}}",""),Ff=o.css(".",bu.root,"{width:auto;cursor:pointer;padding:6px 24px;}.",bu.disabled,"{cursor:default;opacity:0.34;}.",bu.large,"{padding:10px 40px;}.",bu.medium,"{padding:6px 24px;}.",bu.small,"{padding:6px 12px;}.",bu.root,":hover{&:not(.",bu.disabled,"){.",bu.text,"{text-decoration:underline;}}}.",bu.withIcon,"{display:flex;align-items:center;}.",bu.icon,"{display:flex;justify-content:center;align-items:center;height:100%;}.",bu.large,".",bu.withIcon,"{padding:10px 0px 10px 18px;.",bu.icon,"{width:42px;}}.",bu.medium,".",bu.withIcon,"{padding:6px 0px 6px 14px;.",bu.icon,"{width:38px;}}.",bu.small,".",bu.withIcon,"{padding:6px 0px 6px 12px;.",bu.icon,"{width:34px;}}.",bu.outlined,"{background:none;border:1px solid rgb(var(--lsd-border-primary));.",bu.text,"{color:rgb(var(--lsd-text-primary));}}.",bu.filled,"{background:rgb(var(--lsd-surface-secondary));border:1px solid rgb(var(--lsd-border-primary));.",bu.text,"{color:rgb(var(--lsd-text-secondary));}}",""),Bf=o.css(".",Sc.root,"{border:1px solid rgb(var(--lsd-border-primary));visibility:hidden;position:absolute!important;top:0;left:0;opacity:0;visibility:hidden;margin:0;padding:0;box-sizing:border-box;background:rgb(var(--lsd-surface-primary));user-select:none;}.",Sc.container,"{display:flex;flex-direction:column;padding:8px;}.",Sc.open,"{opacity:1;visibility:visible;}.",Sc.header,"{display:flex;justify-content:center;align-items:center;height:32px;margin-bottom:8px;}.",Sc.weekDay,"{display:flex;justify-content:center;align-items:center;aspect-ratio:1/1;margin-bottom:4px;}.",Sc.changeYear,"{position:relative;display:flex;justify-content:center;align-items:center;padding:2px 0xp 2px 8px;gap:6px;border:1px solid transparent;}.",Sc.changeYearActive,"{.",Sc.yearAndIcon,"{border:1px solid rgb(var(--lsd-border-primary));}}.",Sc.changeYearIconContainer,"{display:flex;justify-content:center;align-items:center;cursor:pointer;border:none;}.",Sc.month,"{margin-right:8px;}.",Sc.monthAndYear,"{display:flex;align-items:center;justify-content:center;}.",Sc.dayContainer,"{cursor:pointer;background:transparent;position:relative;box-sizing:border-box;border:1px solid transparent;}.",Sc.day,"{aspect-ratio:1/1;display:flex;justify-content:center;align-items:center;}.",Sc.day,":hover{cursor:pointer;text-decoration:underline;text-decoration-color:rgb(var(--lsd-border-primary));}.",Sc.day," label:hover{cursor:pointer;}.",Sc.daySelected,"{border:1px solid rgb(var(--lsd-border-primary));}.",Sc.dayDisabled,"{opacity:0.3;cursor:default;}.",Sc.todayIndicator,"{position:absolute;left:50%;transform:translateX(-50%);bottom:2px;}.",Sc.disabled,"{pointer-events:none;border:1px solid rgba(var(--lsd-border-primary), 0.3);label{opacity:0.3;}.",Sc.button,"{opacity:0.3;}.",Sc.daySelected,"{opacity:0.3;}}.",Sc.button,"{border:1px solid rgb(var(--lsd-border-primary));cursor:pointer;background:transparent;width:32px;height:32px;display:flex;align-items:center;justify-content:center;position:absolute;}.",Sc.nextMonthButton,"{top:8px;right:8px;}.",Sc.previousMonthButton,"{top:8px;left:8px;}.",Sc.dayBorderLeft,"{border-left:1px double rgb(var(--lsd-border-primary));}.",Sc.dayBorderRight,"{border-right:1px double rgb(var(--lsd-border-primary));}.",Sc.dayBorderLeftAndRight,"{border-left:1px double rgb(var(--lsd-border-primary));border-right:1px double rgb(var(--lsd-border-primary));}.",Sc.dayBorderTopAndBottom,"{border-top:1px double rgb(var(--lsd-border-primary));border-bottom:1px double rgb(var(--lsd-border-primary));}.",Sc.monthTable,"{border-collapse:collapse;}.",Sc.yearDropdown,"{box-sizing:border-box;position:absolute;top:100%;left:0;max-height:200px;overflow-y:auto;width:100%;border:1px solid rgb(var(--lsd-border-primary));border-top:none;z-index:1;.",Sc.year,"{border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",Sc.yearDropdownHidden,"{visibility:hidden;}.",Sc.year,"{display:flex;cursor:pointer;transition:background-color 0.2s;align-items:center;background:rgb(var(--lsd-surface-primary));:hover{text-decoration:underline;}}.",Sc.yearAndIcon,"{border:1px solid rgb(var(--lsd-border-primary));}.",Sc.large,"{.",Sc.year,"{padding:6px 0px 6px 14px;}.",Sc.changeYearIconContainer,"{width:32px;}}.",Sc.medium,"{.",Sc.year,"{padding:6px 0px 6px 12px;}.",Sc.changeYearIconContainer,"{width:28px;}}.",Sc.small,"{.",Sc.year,"{padding:6px 0px 6px 12px;}.",Sc.changeYearIconContainer,"{width:28px;}}",""),zf=o.css(".",Qc.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",Qc.root,">.",ed.root,"{margin-bottom:-1px;}.",Qc.large,"{}.",Qc.medium,"{}.",Qc.small,"{}",""),$f=o.css(".",Kc.root,"{box-sizing:border-box;padding:14px 22px;border:1px solid rgb(var(--lsd-border-primary));}",""),Uf=o.css(".",ed.root,"{box-sizing:border-box;padding:10px 18px;text-align:center;border:1px solid rgb(var(--lsd-border-primary));}.",ed.title,"{overflow:hidden;word-break:break-all;}.",ed.large,"{padding:10px 18px;}.",ed.medium,"{padding:6px 14px;}.",ed.small,"{padding:6px 12px;}",""),Hf=o.css(".",ad.root,"{position:relative;display:flex;flex-direction:row;align-items:center;}.",ad.input,"{opacity:0;position:absolute;left:0;top:0;padding:0;margin:0;width:100%;height:100%;}.",ad.root,":not(.",ad.disabled,"){&:hover,&.",ad.focused,"{text-decoration:underline;}.",ad.input,"{cursor:pointer;}}.",ad.disabled,"{opacity:0.34;}.",ad.label,"{margin-left:18px;}.",ad.large,"{.",ad.label,"{margin-left:18px;}}.",ad.medium,"{.",ad.label,"{margin-left:14px;}}.",ad.small,"{.",ad.label,"{margin-left:12px;}}",""),Vf=o.css(".",id.root,"{display:flex;flex-direction:column;gap:6px;width:fit-content;}.",id.label,"{margin-bottom:6px;}",""),qf=o.css(".",cd.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",cd.open,"{.",cd.content,"{border-top:1px solid transparent;}}.",cd.content,"{border:1px solid rgb(var(--lsd-border-primary));}",""),Wf=o.css(".",sd.root,"{box-sizing:border-box;}.",sd.root,":not(.",sd.disabled,"){.",sd.trigger,"{&:hover{.",sd.label,"{text-decoration:underline;}}}}.",sd.trigger,"{width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;cursor:pointer;background:none;border:1px solid rgb(var(--lsd-border-primary));&:focus{outline:none;}}.",sd.label,"{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:auto;}.",sd.icons,"{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;}.",sd.icon,"{margin-right:8px;}.",sd.menuIcon,"{}.",sd.disabled,"{.",sd.trigger,"{opacity:0.34;cursor:initial;}}.",sd.large,"{.",sd.trigger,"{width:299px;height:40px;padding:9px 17px;}}.",sd.medium,"{.",sd.trigger,"{width:270px;height:32px;padding:5px 13px;}}.",sd.small,"{.",sd.trigger,"{width:235px;height:28px;padding:5px 11px;}}",""),Gf=o.css(".",fd.root,"{width:auto;box-sizing:border-box;}.",fd.label,"{display:block;}.",fd.icon,"{position:absolute;right:0;cursor:pointer;display:flex;align-items:center;background-color:rgb(var(--lsd-surface-primary));}.",fd.icon,":focus{background:blue;background-color:pink;border:1px solid rgb(var(--lsd-border-primary));}.",fd.noIcon,"{position:absolute;right:0;background-color:rgb(var(--lsd-surface-primary));padding:12px;}.",fd.outlined,"{border:1px solid rgb(var(--lsd-border-primary));}.",fd.underlined,"{border-bottom:1px solid rgb(var(--lsd-border-primary));}.",fd.inputContainer,"{position:relative;display:flex;align-items:center;justify-content:space-between;}.",fd.disabled,"{opacity:0.34;}.",fd.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;width:100%;opacity:0.4;transition:opacity 0.2s ease-in-out;}.",fd.input,"::-webkit-inner-spin-button,.",fd.input,"::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;}.",fd.input,":hover{outline:none;}.",fd.supportingText,"{position:absolute;}.",fd.large,"{width:208px;.",fd.label,"{margin:0 0 6px 18px;}.",fd.inputContainer,"{height:40px;}.",fd.input,"{padding:9px 0px 9px 17px;}.",fd.icon,"{padding:12px 13px;}.",fd.supportingText,"{margin:6px 18px 0 18px;}}.",fd.medium,"{width:188px;.",fd.label,"{margin:0 0 6px 14px;}.",fd.inputContainer,"{height:32px;}.",fd.input,"{padding:5px 11px 5px 13px;}.",fd.icon,"{padding:8px 11px;}.",fd.supportingText,"{margin:6px 14px 0 14px;}}.",fd.small,"{width:164px;.",fd.label,"{margin:0 0 6px 12px;}.",fd.inputContainer,"{height:28px;}.",fd.input,"{padding:5px 9px 5px 11px;font-size:12px;}.",fd.icon,"{padding:6px 9px;}.",fd.supportingText,"{margin:6px 12px 0 12px;}}.",fd.input,":invalid,.",fd.inputFilled,"{color:rgb(var(--lsd-border-primary));opacity:1;}.",fd.error," .",fd.input,"::-webkit-datetime-edit-year-field,.",fd.error," .",fd.input,"::-webkit-datetime-edit-month-field,.",fd.error," .",fd.input,"::-webkit-datetime-edit-day-field{text-decoration:line-through;}@supports not selector(::-webkit-datetime-edit-day-field){.",fd.error," .",fd.input,"{text-decoration:line-through;}}",""),Zf=o.css(".",hd.root,"{width:fit-content;}.",hd.calendar,"{border-top:none!important;}.",hd.large,"{.",fd.large,"{width:318px;}}.",hd.medium,"{.",fd.medium,"{width:290px;}}.",hd.small,"{.",fd.small,"{width:262px;}}",""),Qf=o.css(".",yd.root,"{}.",yd.root,":not(.",yd.disabled,"):not(\n .",yd.error,"\n ){.",yd.trigger,"{&:hover,&:focus{.",yd.optionLabel,"{text-decoration:underline;}}}}.",yd.label,"{display:block;}.",yd.buttonContainer,"{display:flex;justify-content:space-between;}.",yd.trigger,"{width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;border:none;cursor:pointer;background:none;&:focus{outline:none;}}.",yd.optionLabel,"{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.",yd.icons,"{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;}.",yd.icon,"{display:flex;align-items:center;}.",yd.menuIcon,"{}.",yd.supportingText,"{margin:6px 14px;}.",yd.error,"{.",yd.optionLabel,"{text-decoration:line-through;}}.",yd.disabled,"{opacity:0.34;cursor:initial;}.",yd.large,"{width:208px;&.",yd.error,"{width:230px;}.",yd.label,"{margin:0 0 6px 18px;}.",yd.buttonContainer,"{height:40px;}.",yd.trigger,"{padding:10px 0px 10px 18px;}.",yd.icons,"{padding:0px 14px;}}.",yd.medium,"{width:188px;&.",yd.error,"{width:210px;}.",yd.label,"{margin:0 0 6px 14px;}.",yd.buttonContainer,"{height:32px;}.",yd.trigger,"{padding:6px 0px 6px 14px;}.",yd.icons,"{padding:0px 12px;}}.",yd.small,"{width:164px;&.",yd.error,"{width:186px;}.",yd.label,"{margin:0 0 6px 12px;}.",yd.buttonContainer,"{height:28px;}.",yd.trigger,"{padding:6px 0px 6px 12px;}.",yd.icons,"{padding:0px 10px;}}.",yd.outlined,"{.",yd.buttonContainer,"{border:1px solid rgb(var(--lsd-border-primary));}}.",yd.underlined,"{.",yd.buttonContainer,"{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}}",""),Yf=o.css(".",qs.root,"{width:100%;box-sizing:border-box;display:flex;flex-direction:row;align-items:center;border:1px solid rgb(var(--lsd-border-primary));:not(.",qs.disabled,"){cursor:pointer;&:hover,&:focus{outline:none;.",qs.label,"{text-decoration:underline;}}}}.",qs.label,"{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.",qs.disabled,"{opacity:0.34;}.",qs.icon,"{margin-right:18px;flex-shrink:0;}.",qs.small,"{padding:5px 9px;height:28px;}.",qs.medium,"{padding:5px 11px;height:32px;}.",qs.large,"{padding:5px 13px;height:40px;}",""),Xf=o.css(".",kd.root,"{display:flex;flex-direction:row;align-items:center;justify-content:center;cursor:pointer;background:none;padding:0;border:1px solid rgb(var(--lsd-border-primary));}.",kd.filled,"{background-color:rgb(var(--lsd-icon-primary));svg{--lsd-icon-primary:var(--lsd-icon-secondary);}}.",kd.outlined,"{}.",kd.disabled,"{opacity:0.34;cursor:default;}.",kd.large,"{width:40px;height:40px;}.",kd.medium,"{width:32px;height:32px;}.",kd.small,"{width:28px;height:28px;}",""),Kf=o.css(".",Ed.root,"{display:flex;flex-direction:row;}.",Ed.outlined," .",kd.root,":not(:last-child){border-right:none;}",""),Jf=o.css(".",xs.root,"{}.",xs.primary,"{&.",xs.filled,"{&,*{fill:rgb(var(--lsd-icon-primary));}}$.",xs.stroked,"{&,*{fill:rgb(var(--lsd-icon-primary));}}}.",xs.secondary,"{&.",xs.filled,"{&,*{fill:rgb(var(--lsd-icon-secondary));}}$.",xs.stroked,"{&,*{fill:rgb(var(--lsd-icon-secondary));}}}",""),ep=o.css(".",tu.root,"{position:absolute;top:0;left:0;opacity:0;visibility:hidden;margin:0;padding:0;box-sizing:border-box;background:rgb(var(--lsd-surface-primary));overflow:auto;border:1px solid rgb(var(--lsd-border-primary));border-top:0;}.",tu.root,">div{border:0;&:not(:last-child){border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",tu.open,"{opacity:1;visibility:visible;}.",tu.large,"{max-height:220px;}.",tu.medium,"{max-height:176px;}.",tu.small,"{max-height:154px;}",""),tp=o.css(".",jd.root,"{color:rgb(var(--lsd-text-primary));white-space:pre-wrap;}.",jd.indentedInline,"{border-left:1px solid rgb(var(--lsd-border-primary));padding:4px 8px 4px 28px;}.",jd.parentheses,"{padding:0px;text-align:center;}.",jd.parentheses,"::before{content:'***';}.",jd.parentheses,"::after{content:'***';}",""),np=o.css(".",Bd.root,"{position:relative;display:flex;flex-direction:row;align-items:center;}.",Bd.input,"{opacity:0;position:absolute;left:0;top:0;padding:0;margin:0;width:100%;height:100%;}.",Bd.root,":not(.",Bd.disabled,"){&:hover{text-decoration:underline;}.",Bd.input,"{cursor:pointer;}}.",Bd.disabled,"{opacity:0.34;}.",Bd.label,"{margin-left:18px;}.",Bd.large,"{.",Bd.label,"{margin-left:18px;}}.",Bd.medium,"{.",Bd.label,"{margin-left:14px;}}.",Bd.small,"{.",Bd.label,"{margin-left:12px;}}",""),rp=o.css(".",$d.root,"{display:flex;flex-direction:column;gap:6px;width:fit-content;}.",$d.label,"{margin-bottom:6px;}",""),ap=o.css(".",Vd.root,"{background:rgb(var(--lsd-surface-primary));border:1px solid transparent;cursor:pointer;display:flex;flex-direction:row;align-items:center;justify-content:center;box-sizing:border-box;&:hover{text-decoration:underline;}&:not(",Vd.selected,"){border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",Vd.text,"{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.",Vd.icon,"{margin-left:14px;}.",Vd.selected,"{border:1px solid rgb(var(--lsd-border-primary));&:hover{text-decoration:none;}}.",Vd.withIcon,"{justify-content:space-between;}.",Vd.disabled,"{cursor:default;opacity:0.34;&:hover{text-decoration:none;}}.",Vd.small,"{padding:6px 12px;.",Vd.icon,"{margin-left:10px;}}.",Vd.medium,"{padding:6px 14px;.",Vd.icon,"{margin-left:12px;}}.",Vd.large,"{padding:10px 18px;.",Vd.icon,"{margin-left:14px;}}",""),op=o.css(".",Yd.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",Yd.root,">.",Zd.root,"{margin-bottom:-1px;}.",Yd.large,"{}.",Yd.medium,"{}.",Yd.small,"{}",""),ip=o.css(".",Wd.root,"{table{border-collapse:collapse;text-align:center;table-layout:fixed;width:100%;height:auto;}table tr:first-of-type td label:has(input[type='radio']){display:none;}}.",Wd.toolbar,"{box-sizing:border-box;padding:10px;border:1px solid rgb(var(--lsd-border-primary));border-bottom:none;display:flex;justify-content:space-between;}",""),lp=o.css(".",Zd.root,"{box-sizing:border-box;border:1px solid rgb(var(--lsd-border-primary));}",""),sp=o.css(".",ef.root,"{border:1px solid rgb(var(--lsd-border-primary));}.",ef.root,":has(> label){width:40px;input{position:relative;width:14px;height:14px;margin:auto;}span{margin-left:14px!important;}}.",ef.large,"{padding:10px;}.",ef.medium,"{padding:6px 8px;}.",ef.small,"{padding:6px;}",""),up=o.css(".",nf.root,"{align-items:center;}",""),cp=o.css(".",ff.root,"{display:flex;flex-direction:row;overflow:auto;width:fit-content;max-width:100%;border-bottom:1px solid rgb(var(--lsd-border-primary));&>*{flex-shrink:0;}.",Vd.root,"{border-bottom:none;}}.",ff.fullWidth,"{width:100%;justify-content:stretch;&>*{width:100%;flex:1 0;}}.",ff.root,"{-ms-overflow-style:none;scrollbar-width:none;&::-webkit-scrollbar{display:none;}}.",ff.leftScrollControl,"{left:0;}.",ff.rightScrollControl,"{right:0;}.",ff.rightScrollControl,",.",ff.leftScrollControl,"{top:0;flex:0 1;position:sticky;}",""),dp=o.css(".",hf.root,"{width:fit-content;display:flex;flex-direction:row;align-items:center;justify-content:center;box-sizing:border-box;border:1px solid rgb(var(--lsd-icon-primary));&:hover,&:focus{text-decoration:underline;cursor:pointer;}}.",hf.large,"{padding:3px 11px;gap:12px;height:28px;}.",hf.small,"{padding:3px 7px;gap:8px;height:24px;}.",hf.filled,"{background-color:rgb(var(--lsd-icon-primary));.",hf.label,"{color:rgb(var(--lsd-text-secondary));}svg{--lsd-icon-primary:var(--lsd-icon-secondary);}}.",hf.outlined,"{color:rgb(var(--lsd-text-primary));}.",hf.disabled,"{opacity:0.3;cursor:initial;pointer-events:none;}",""),fp=o.css(".",yf.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",yf.inputContainer,"{display:flex;align-items:center;justify-content:space-between;}.",yf.disabled,"{opacity:0.34;}.",yf.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;width:100%;}.",yf.input,":hover{outline:none;}.",yf.input,"::placeholder{color:rgb(var(--lsd-text-primary));opacity:0.3;}.",yf.error," .",yf.input,"{text-decoration:line-through;}.",yf.supportingText,"{width:fit-content;}.",yf.large,"{width:208px;&>*{padding:10px 14px 10px 18px;}}.",yf.medium,"{width:188px;&>*{padding:6px 12px 6px 14px;}}.",yf.small,"{width:164px;&>*{padding:6px 10px 6px 12px;}}.",yf.label,"{padding-top:0;padding-bottom:6px;}.",yf.supportingText,"{padding-bottom:0;padding-top:6px;}.",yf.outlined," .",yf.inputContainer,"{border:1px solid rgb(var(--lsd-border-primary));}.",yf.underlined," .",yf.inputContainer,"{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}.",yf.clearButton,"{padding:0;width:auto;height:auto;margin:0;border:0;}.",yf.icon,"{}",""),pp=o.css("body *{font-family:var(--lsd-typography-generic-font-family);}.",gs.root,"{color:rgb(var(--lsd-text-primary));}.",gs.sansSerif,"{&,*{font-family:sans-serif;}}.",gs.serif,"{&,*{font-family:serif;}}.",gs.monospace,"{&,*{font-family:monospace;}}",ps.map((e=>o.css((e=>[...hs[e]??[],`.${gs[e]}`].join(", "))(e),"{color:rgb(var(--lsd-text-primary));font-weight:var(--lsd-",e,"-fontWeight);font-size:var(--lsd-",e,"-fontSize);line-height:var(--lsd-",e,"-lineHeight);}","")))," .",gs.primary,"{color:rgb(var(--lsd-text-primary));}.",gs.secondary,"{color:rgb(var(--lsd-text-secondary));}input{color:rgb(var(--lsd-text-primary));font-size:var(--lsd-body1-fontSize);font-weight:var(--lsd-body1-fontWeight);}h1,h2,h3,h4,h5,h6,p,span{margin:0;}",""),hp={root:"lsd-toast",inlineContainer:"lsd-toast__inline-container",columnContainer:"lsd-toast__column-container",large:"lsd-toast--large",medium:"lsd-toast--medium",small:"lsd-toast--small",icon:"lsd-toast__icon",textContainer:"lsd-toast__text-container",columnIconContainer:"lsd-toast__column-icon-container",inlineIconContainer:"lsd-toast__inline-icon-container",title:"lsd-toast__title",information:"lsd-toast__information",inlineButtonContainer:"lsd-toast__inline-button-container",columnButtonContainer:"lsd-toast__column-button-container",buttonContainer:"lsd-toast__button-container",closeButton:"lsd-toast__close-button"},mp={toastContainer:"lsd-toast-provider__toast-container",topLeft:"lsd-toast-provider__toast--top-left",topCenter:"lsd-toast-provider__toast--top-center",topRight:"lsd-toast-provider__toast--top-right",bottomLeft:"lsd-toast-provider__toast--bottom-left",bottomCenter:"lsd-toast-provider__toast--bottom-center",bottomRight:"lsd-toast-provider__toast--bottom-right"},gp=[Ff,Xf,Kf,pp,Jf,ap,cp,ep,Qf,Yf,jf,Mf,zf,Uf,$f,dp,fp,Hf,Lf,tp,qf,Wf,Vf,Rf,np,rp,op,lp,ip,sp,up,o.css(".",Id.root,"{width:auto;box-sizing:border-box;}.",Id.mainContainer,":hover{text-decoration:underline;}.",Id.error,"{.",Id.mainContainer,"{text-decoration:line-through;}}.",Id.label,"{display:block;}.",Id.plusMinusIcons,"{display:flex;flex-shrink:0;}.",Id.inputContainer,"{box-sizing:border-box;border:1px solid rgb(var(--lsd-border-primary));border-left:0px;border-right:0px;}.",Id.errorIcon,"{cursor:pointer;display:flex;align-items:center;padding:10px 8px;}.",Id.inputContainer,"{display:flex;align-items:center;justify-content:space-between;}.",Id.disabled,"{opacity:0.34;}.",Id.mainContainer,"{display:flex;align-items:center;}.",Id.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;text-align:center;padding:0 4px;}.",Id.input,"::-webkit-inner-spin-button{display:none;-webkit-appearance:none;}.",Id.input,":hover{outline:none;}.",Id.supportingText,"{position:absolute;}.",Id.large,"{.",Id.label,"{margin:0 0 6px 18px;}.",Id.inputContainer,"{height:40px;}.",Id.input,"{width:62px;}.",Id.plusMinusIcons,"{height:40px;width:40px;}.",Id.supportingText,"{margin:6px 18px 0 18px;}}.",Id.medium,"{.",Id.label,"{margin:0 0 6px 14px;}.",Id.inputContainer,"{height:32px;}.",Id.input,"{width:58px;}.",Id.plusMinusIcons,"{height:32px;width:32px;}.",Id.supportingText,"{margin:6px 14px 0 14px;}}.",Id.small,"{.",Id.label,"{margin:0 0 6px 12px;}.",Id.inputContainer,"{height:28px;}.",Id.input,"{width:50px;}.",Id.plusMinusIcons,"{height:28px;width:28px;}.",Id.supportingText,"{margin:6px 12px 0 12px;}}",""),o.css(".",Cd.root,"{box-sizing:border-box;display:flex;flex-direction:column;position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0, 0, 0, 0.5);display:flex;justify-content:center;align-items:center;z-index:9999;}.",Cd.modalContainer,"{position:relative;background:rgb(var(--lsd-surface-primary));padding:20px;max-width:90%;box-sizing:border-box;border:1px solid rgb(var(--lsd-border-primary));}.",Cd.header,"{display:flex;justify-content:space-between;align-items:center;}.",Cd.title,"{}.",Cd.subtitle,"{}.",Cd.closeIcon,"{position:absolute;top:8px;right:8px;cursor:pointer;}.",Cd.titleAndSubtitleContainer,"{display:flex;flex-direction:column;}.",Cd.large,"{.",Cd.modalContainer,"{min-width:960px;}}.",Cd.medium,"{.",Cd.modalContainer,"{min-width:768px;}}.",Cd.small,"{.",Cd.modalContainer,"{min-width:614px;}}.",Cd.xsmall,"{.",Cd.modalContainer,"{min-width:490px;}}",""),o.css(".",Pd.root,"{display:flex;}",""),o.css(".",Od.root,"{margin:18px 0;}",""),Zf,Gf,Bf,o.css(".",hp.root,"{box-sizing:border-box;display:inline-flex;align-items:center;background:rgb(var(--lsd-surface-primary));border:1px solid rgb(var(--lsd-border-primary));padding:8px;height:fit-content;}.",hp.inlineButtonContainer,"{flex-shrink:0;}.",hp.columnButtonContainer,"{margin-top:18px;margin-bottom:6px;}.",hp.inlineContainer,"{display:flex;align-items:center;justify-content:space-between;flex-grow:1;}.",hp.columnContainer,"{display:flex;flex-direction:column;justify-content:space-between;}.",hp.textContainer,"{display:flex;flex-direction:column;color:rgb(var(--lsd-text-secondary));padding-left:12px;}.",hp.title,"{position:relative;}.",hp.information,"{margin-top:4px;}.",hp.buttonContainer,"{min-height:28px;min-width:60px;width:fit-content;padding:0px 12px;}.",hp.closeButton,"{margin-bottom:auto;flex-shrink:0;height:28px;width:28px;margin-left:auto;}.",hp.columnIconContainer,"{display:flex;justify-content:center;margin-bottom:auto;position:relative;top:4px;padding-left:4px;}.",hp.inlineIconContainer,"{display:flex;align-items:center;justify-content:center;padding-left:4px;}.",hp.icon,"{position:relative;}.",hp.large,"{width:364px;}.",hp.medium,"{width:336px;}.",hp.small,"{width:296px;.",hp.icon,"{top:0px;}}",""),o.css(".",mp.toastContainer,"{position:fixed;transition:all 230ms cubic-bezier(0.21, 1.02, 0.73, 1);z-index:9999;}.",mp.topLeft,",.",mp.topCenter,",.",mp.topRight,"{top:0;}.",mp.bottomLeft,",.",mp.bottomCenter,",.",mp.bottomRight,"{bottom:0;}.",mp.topCenter,",.",mp.bottomCenter,"{left:50%;}.",mp.topRight,",.",mp.bottomRight,"{right:0;}",""),o.css(".",wu.root,"{display:flex;flex-direction:row;>*:not(:last-child){&.",bu.outlined,",.",bu.outlined,"{border-right:none;}}}",""),o.css(".",vd.root,"{box-sizing:border-box;.",fd.outlined,"{border:none;}.",fd.icon,"{padding:8px;}}.",vd.label,"{display:block;}.",vd.inputContainer,"{box-sizing:border-box;display:flex;align-items:center;border:1px solid transparent;}.",vd.calendar,"{border-top:none!important;.",Vc.arrowTip,"{transition:left 0.2s ease-in-out;}}.",vd.openCalendar,"{.",vd.inputContainer,"{border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",vd.icon,"{cursor:pointer;display:flex;align-items:center;justify-content:center;flex-grow:1;padding:0 10px;}.",vd.disabled,"{opacity:0.3;}.",vd.supportingText,"{position:absolute;}.",vd.large,"{width:318px;.",fd.large,"{width:156px;}.",fd.input,"{padding-right:0;}.",fd.icon,"{padding:11px 12px;}.",vd.label,"{margin:0 0 6px 18px;}.",vd.inputContainer,"{height:40px;}.",vd.supportingText,"{margin:6px 18px 0 18px;}}.",vd.medium,"{width:290px;.",fd.medium,"{width:142px;}.",fd.input,"{padding-right:0;}.",fd.icon,"{padding:7px 8px;}.",vd.label,"{margin:0 0 6px 14px;}.",vd.inputContainer,"{height:32px;}.",vd.supportingText,"{margin:6px 14px 0 14px;}}.",vd.small,"{width:262px;.",fd.small,"{width:128px;}.",fd.input,"{padding-right:0;}.",fd.icon,"{padding:5px 7px;}.",vd.label,"{margin:0 0 6px 12px;}.",vd.inputContainer,"{height:28px;}.",vd.supportingText,"{margin:6px 12px 0 12px;}}.",vd.separator,"{margin-left:3px;width:1px;height:100%;}.",vd.separator,"{border-left:1px solid transparent;}.",vd.outlined,"{border:1px solid rgb(var(--lsd-border-primary));.",vd.separator,"{border-left:1px solid rgb(var(--lsd-border-primary));}}",""),o.css(".",Vc.root,"{border:1px solid rgb(var(--lsd-border-primary));position:relative;}.",Vc.arrowTip,"{border:1px solid rgb(var(--lsd-border-primary));position:absolute;background:rgb(var(--lsd-surface-primary));}.",Vc.content,"{background:rgb(var(--lsd-surface-primary));width:100%;height:100%;position:relative;z-index:1;}","")],vp=({theme:e=Af.light})=>{const t=r.useMemo((()=>gp.map((t=>"function"==typeof t?t(e):t)).map((e=>We(o.Global,{styles:e},e.name)))),[e]);return We(qe,{children:t})},bp=({children:e})=>{const t=r.useRef(),n=r.useRef({}),[a,o]=r.useState({}),[i,l]=r.useState(!1),s=e=>{const t=n.current[e];t&&t.current&&Ld((()=>{o((n=>({...n,[e]:t.current.getBoundingClientRect()})))}))};r.useEffect((()=>{if("undefined"!=typeof window&&"undefined"!=typeof ResizeObserver)return t.current=new ResizeObserver((e=>{Ld((()=>{const t=Object.entries(n.current);e.map((e=>t.find((([t,n])=>n.current===e.target)))).forEach((e=>{if(e&&2===e.length){const[t]=e;s(t)}}))}))})),l(!0),()=>{var e;null==(e=t.current)||e.disconnect()}}),[]);return We(af.Provider,{value:{observe:(e,r)=>{t.current&&(n.current[e]=r,s(e),r.current instanceof Element&&t.current.observe(r.current))},unobserve:e=>{if(!t.current)return;const r=n.current[e];r&&(r.current instanceof Element&&t.current.unobserve(r.current),delete n.current[e],o((t=>Vl(t,e))))},rect:a,ready:i},children:e})},yp=r.createContext({theme:null}),wp=({title:e,information:t,onClose:n,size:r="large",toastRef:a,children:o,icon:i,actions:l,...s})=>{const u=bs(s),c=!t,d=void 0===i?Ns:i;return Ge("div",{ref:a,...ws(s),className:Qe(s.className,u.className,hp.root,hp[r]),children:[We("div",{className:Qe(c?hp.inlineIconContainer:hp.columnIconContainer),children:d&&We(d,{color:"primary",className:hp.icon})}),Ge("div",{className:c?hp.inlineContainer:hp.columnContainer,children:[Ge("div",{className:Qe(hp.textContainer),children:[!!e&&We(Vs,{className:hp.title,component:"div",variant:"small"===r?"label2":"label1",children:e}),!!t&&We(Vs,{className:hp.information,component:"div",variant:"small"===r?"label2":"label1",children:t})]}),!!l&&We("div",{className:Qe(hp.buttonContainer,c?hp.inlineButtonContainer:hp.columnButtonContainer),children:l})]}),We(_d,{onClick:n,className:hp.closeButton,size:"medium",children:We(Ps,{color:"primary"})})]})};wp.classes=hp;var xp=(e,t)=>(e=>"function"==typeof e)(e)?e(t):e,kp=(()=>{let e=0;return()=>(++e).toString()})(),_p=new Map,Ep=e=>{if(_p.has(e))return;let t=setTimeout((()=>{_p.delete(e),Op({type:4,toastId:e})}),1e3);_p.set(e,t)},Sp=(e,t)=>{switch(t.type){case 0:return{...e,toasts:[t.toast,...e.toasts].slice(0,20)};case 1:return t.toast.id&&(e=>{let t=_p.get(e);t&&clearTimeout(t)})(t.toast.id),{...e,toasts:e.toasts.map((e=>e.id===t.toast.id?{...e,...t.toast}:e))};case 2:let{toast:n}=t;return e.toasts.find((e=>e.id===n.id))?Sp(e,{type:1,toast:n}):Sp(e,{type:0,toast:n});case 3:let{toastId:r}=t;return r?Ep(r):e.toasts.forEach((e=>{Ep(e.id)})),{...e,toasts:e.toasts.map((e=>e.id===r||void 0===r?{...e,visible:!1}:e))};case 4:return void 0===t.toastId?{...e,toasts:[]}:{...e,toasts:e.toasts.filter((e=>e.id!==t.toastId))};case 5:return{...e,pausedAt:t.time};case 6:let a=t.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map((e=>({...e,pauseDuration:e.pauseDuration+a})))}}},Cp=[],Tp={toasts:[],pausedAt:void 0},Op=e=>{Tp=Sp(Tp,e),Cp.forEach((e=>{e(Tp)}))},Dp={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},Pp=e=>(t,n)=>{let r=((e,t="blank",n)=>({createdAt:Date.now(),visible:!0,type:t,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...n,id:(null==n?void 0:n.id)||kp()}))(t,e,n);return Op({type:2,toast:r}),r.id},Np=(e,t)=>Pp("blank")(e,t);Np.error=Pp("error"),Np.success=Pp("success"),Np.loading=Pp("loading"),Np.custom=Pp("custom"),Np.dismiss=e=>{Op({type:3,toastId:e})},Np.remove=e=>Op({type:4,toastId:e}),Np.promise=(e,t,n)=>{let r=Np.loading(t.loading,{...n,...null==n?void 0:n.loading});return e.then((e=>(Np.success(xp(t.success,e),{id:r,...n,...null==n?void 0:n.success}),e))).catch((e=>{Np.error(xp(t.error,e),{id:r,...n,...null==n?void 0:n.error})})),e};var Ip=(e,t)=>{Op({type:1,toast:{id:e,height:t}})},Ap=()=>{Op({type:5,time:Date.now()})},Lp=e=>{let{toasts:t,pausedAt:n}=((e={})=>{let[t,n]=r.useState(Tp);r.useEffect((()=>(Cp.push(n),()=>{let e=Cp.indexOf(n);e>-1&&Cp.splice(e,1)})),[t]);let a=t.toasts.map((t=>{var n,r;return{...e,...e[t.type],...t,duration:t.duration||(null==(n=e[t.type])?void 0:n.duration)||(null==e?void 0:e.duration)||Dp[t.type],style:{...e.style,...null==(r=e[t.type])?void 0:r.style,...t.style}}}));return{...t,toasts:a}})(e);r.useEffect((()=>{if(n)return;let e=Date.now(),r=t.map((t=>{if(t.duration===1/0)return;let n=(t.duration||0)+t.pauseDuration-(e-t.createdAt);if(!(n<0))return setTimeout((()=>Np.dismiss(t.id)),n);t.visible&&Np.dismiss(t.id)}));return()=>{r.forEach((e=>e&&clearTimeout(e)))}}),[t,n]);let a=r.useCallback((()=>{n&&Op({type:6,time:Date.now()})}),[n]),o=r.useCallback(((e,n)=>{let{reverseOrder:r=!1,gutter:a=8,defaultPosition:o}=n||{},i=t.filter((t=>(t.position||o)===(e.position||o)&&t.height)),l=i.findIndex((t=>t.id===e.id)),s=i.filter(((e,t)=>te.visible)).slice(...r?[s+1]:[0,s]).reduce(((e,t)=>e+(t.height||0)+a),0)}),[t]);return{toasts:t,handlers:{updateHeight:Ip,startPause:Ap,endPause:a,calculateOffset:o}}};const Rp=r.createContext(null),jp=({toastsPropsMap:e,className:t,...n})=>{const{toasts:r,handlers:a}=Lp(),{startPause:o,endPause:i,calculateOffset:l,updateHeight:s}=a;return We(lu,{id:"toast",children:r.map((r=>{const a=e.get(r.id);if(!a)return console.warn("Could not find toast with id",r.id),null;const{position:u,duration:c,...d}=a,f=l(r,{reverseOrder:!1,gutter:8,defaultPosition:u}),{transform:p,positionClassName:h}=((e,t)=>{if(!e)return{positionClassName:"",transform:`translateY(${t}px)`};let n="";const r=e.includes("center"),a=e.includes("bottom");return"top-left"===e?n=mp.topLeft:"top-center"===e?n=mp.topCenter:"top-right"===e?n=mp.topRight:"bottom-left"===e?n=mp.bottomLeft:"bottom-center"===e?n=mp.bottomCenter:"bottom-right"===e&&(n=mp.bottomRight),{positionClassName:n,transform:`translateY(${a?-t:t}px) translateX(${r?"-50%":"0"})`}})(u,f);return We("div",{onMouseEnter:o,onMouseLeave:i,...n,className:Qe(mp.toastContainer,h,t),style:{transform:p,...n.style},children:We(wp,{className:Qe(d.className),toastRef:e=>{if(e&&"number"!=typeof r.height){const t=e.getBoundingClientRect().height;s(r.id,t)}},...d,style:{opacity:r.visible?1:0,...d.style},onClose:()=>{var e;Np.dismiss(r.id),null==(e=d.onClose)||e.call(d)}},r.id)},`container-${r.id}`)}))})};t.AddIcon=_s,t.ArrowForwardIcon=Ss,t.Autocomplete=cu,t.Badge=fu,t.Breadcrumb=gu,t.BreadcrumbItem=hu,t.Button=yu,t.ButtonGroup=xu,t.CALENDAR_MAX_YEAR=Gc,t.CALENDAR_MIN_YEAR=Wc,t.Calendar=Zc,t.CalendarIcon=Us,t.Card=Xc,t.CardBody=Jc,t.CardHeader=td,t.CheckIcon=Ds,t.Checkbox=od,t.CheckboxGroup=ld,t.CheckboxIcon=Ts,t.CheckboxOutlineBlankIcon=Os,t.ChevronDownIcon=Es,t.ChevronLeftIcon=js,t.ChevronRightIcon=Ms,t.ChevronUpIcon=Cs,t.CloseIcon=Ps,t.Collapse=dd,t.CollapseHeader=ud,t.DateField=pd,t.DatePicker=gd,t.DateRangePicker=bd,t.Dropdown=wd,t.DropdownItem=Ws,t.DropdownMenu=ru,t.ErrorIcon=Ns,t.FolderIcon=Is,t.IconButton=_d,t.IconButtonGroup=Sd,t.KeyboardReturnIcon=As,t.LSD_NAMESPACE="lsd",t.LsdIcon=ks,t.MenuIcon=Ls,t.Modal=Td,t.ModalBody=Dd,t.ModalFooter=Nd,t.MoreIcon=Rs,t.NumberInput=Ad,t.PickIcon=Bs,t.Portal=lu,t.PortalContext=au,t.PortalProvider=Rd,t.Quote=Md,t.RadioButton=zd,t.RadioButtonCheckedIcon=$s,t.RadioButtonGroup=Ud,t.RadioButtonIcon=zs,t.RemoveIcon=Hs,t.SearchIcon=Fs,t.THEME_BREAKPOINTS=fs,t.THEME_TYPOGRAPHY_PROPERTIES=ms,t.THEME_TYPOGRAPHY_VARIANTS=ps,t.THEME_VARIANT_PROPERTIES=["typography"],t.TabItem=qd,t.Table=Jd,t.TableBody=Gd,t.TableHeader=Qd,t.TableItem=tf,t.TableRow=rf,t.Tabs=pf,t.Tag=mf,t.TextField=wf,t.ThemeProvider=({theme:e,children:t,injectCssVars:n=!0})=>We(bp,{children:We(Rd,{children:Ge(yp.Provider,{value:{theme:e},children:[We(vp,{theme:e}),n&&We(o.Global,{styles:e.globalStyles}),We(o.ThemeProvider,{theme:e,children:t})]})})}),t.Toast=wp,t.ToastContext=Rp,t.ToastProvider=({providerToastOptions:e,children:t,...n})=>{const[a,o]=r.useState(new Map);return Ge(Rp.Provider,{value:(t,n)=>{const r={...e,...n},a=Np("",{duration:null==r?void 0:r.duration});t&&o((e=>{const n=new Map(e);return n.set(a,{...t,...r}),n}))},children:[t,We(jp,{toastsPropsMap:a,...n})]})},t.TooltipBase=qc,t.Typography=Vs,t.createTheme=Nf,t.createThemeGlobalStyles=kf,t.defaultThemes=Af,t.useCanUsePortal=ou,t.usePortal=iu,t.useTheme=()=>r.useContext(yp).theme??Af.light,t.useToast=function(){const e=r.useContext(Rp);if(!e)throw new Error("useToast must be used within a ToastProvider");return e},t.withTheme=e=>t=>e(t)},90602:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ae});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?c(w,--b):0,g--,10===y&&(g=1,m--),y}function E(){return y=b2||O(y)>3?"":" "}function A(e,t){for(;--t&&E()&&!(y<48||y>102||y>57&&y<65||y>70&&y<97););return T(e,C()+(t<6&&32==S()&&32==E()))}function L(e){for(;E();)switch(y){case e:return b;case 34:case 39:34!==e&&39!==e&&L(y);break;case 40:41===e&&L(e);break;case 92:E()}return b}function R(e,t){for(;E()&&e+y!==57&&(e+y!==84||47!==S()););return"/*"+T(t,b-1)+"*"+o(47===e?e:E())}function j(e){for(;!O(S());)E();return T(e,b)}var M="-ms-",F="-moz-",B="-webkit-",z="comm",$="rule",U="decl",H="@keyframes";function V(e,t){for(var n="",r=p(e),a=0;a0&&f(F)-v&&h(y>32?Y(F+";",r,n,v-1):Y(s(F," ","")+";",r,n,v-2),p);break;case 59:F+=";";default:if(h(M=Z(F,t,n,m,g,a,d,D,P=[],L=[],v),i),123===O)if(0===g)G(F,t,M,M,P,i,v,d,L);else switch(99===b&&110===c(F,3)?100:b){case 100:case 108:case 109:case 115:G(e,M,M,r&&h(Z(e,M,M,0,0,a,d,D,a,P=[],v),L),a,L,v,d,r?P:L);break;default:G(F,M,M,M,[""],L,0,d,L)}}m=g=y=0,x=T=1,D=F="",v=l;break;case 58:v=1+f(F),y=w;default:if(x<1)if(123==O)--x;else if(125==O&&0==x++&&125==_())continue;switch(F+=o(O),O*x){case 38:T=g>0?1:(F+="\f",-1);break;case 44:d[m++]=(f(F)-1)*T,T=1;break;case 64:45===S()&&(F+=N(E())),b=S(),g=v=f(D=F+=j(C())),O++;break;case 45:45===w&&2==f(F)&&(x=0)}}return i}function Z(e,t,n,r,o,i,u,c,f,h,m){for(var g=o-1,v=0===o?i:[""],b=p(v),y=0,w=0,k=0;y0?v[_]+" "+E:s(E,/&\f/g,v[_])))&&(f[k++]=S);return x(e,t,n,0===o?$:c,f,h,m)}function Q(e,t,n){return x(e,t,n,z,o(y),d(e,2,-2),0)}function Y(e,t,n,r){return x(e,t,n,U,d(e,0,r),d(e,r+1,-1),r)}var X=function(e,t,n){for(var r=0,a=0;r=a,a=S(),38===r&&12===a&&(t[n]=1),!O(a);)E();return T(e,b)},K=function(e,t){return P(function(e,t){var n=-1,r=44;do{switch(O(r)){case 0:38===r&&12===S()&&(t[n]=1),e[n]+=X(b-1,t,n);break;case 2:e[n]+=N(r);break;case 4:if(44===r){e[++n]=58===S()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=o(r)}}while(r=E());return e}(D(e),t))},J=new WeakMap,ee=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||J.get(n))&&!r){J.set(e,!0);for(var a=[],o=K(t,a),i=n.props,l=0,s=0;l6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return s(e,/(.+:)(.+)-([^]+)/,"$1"+B+"$2-$3$1"+F+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~u(e,"stretch")?ne(s(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,f(e)-3-(~u(e,"!important")&&10))){case 107:return s(e,":",":"+B)+e;case 101:return s(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+B+(45===c(e,14)?"inline-":"")+"box$3$1"+B+"$2$3$1"+M+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return B+e+M+s(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return B+e+M+s(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return B+e+M+s(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return B+e+M+e+e}return e}var re=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case U:e.return=ne(e.value,e.length);break;case H:return V([k(e,{value:s(e.value,"@","@"+B)})],r);case $:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return V([k(e,{props:[s(t,/:(read-\w+)/,":"+F+"$1")]})],r);case"::placeholder":return V([k(e,{props:[s(t,/:(plac\w+)/,":"+B+"input-$1")]}),k(e,{props:[s(t,/:(plac\w+)/,":"+F+"$1")]}),k(e,{props:[s(t,/:(plac\w+)/,M+"input-$1")]})],r)}return""}))}}],ae=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var a=e.stylisPlugins||re;var o,i,l={},s=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n{"use strict";function r(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}n.d(t,{Z:()=>r})},80123:(e,t,n)=>{"use strict";n.d(t,{C:()=>g,E:()=>T,T:()=>y,_:()=>v,a:()=>k,b:()=>_,c:()=>S,h:()=>h,i:()=>p,u:()=>w,w:()=>b});var r=n(67294),a=n(90602);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{"use strict";n.r(t),n.d(t,{CacheProvider:()=>r.C,ClassNames:()=>h,Global:()=>u,ThemeContext:()=>r.T,ThemeProvider:()=>r.a,__unsafe_useEmotionCache:()=>r._,createElement:()=>s,css:()=>c,jsx:()=>s,keyframes:()=>d,useTheme:()=>r.u,withEmotionCache:()=>r.w,withTheme:()=>r.b});var r=n(80123),a=n(67294),o=n(70444),i=n(27278),l=n(48137),s=(n(90602),n(8679),function(e,t){var n=arguments;if(null==t||!r.h.call(t,"css"))return a.createElement.apply(void 0,n);var o=n.length,i=new Array(o);i[0]=r.E,i[1]=(0,r.c)(e,t);for(var l=2;l{"use strict";n.d(t,{O:()=>h});var r={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},a=n(45042),o=/[A-Z]|^ms/g,i=/_EMO_([^_]+?)_([^]*?)_EMO_/g,l=function(e){return 45===e.charCodeAt(1)},s=function(e){return null!=e&&"boolean"!=typeof e},u=(0,a.Z)((function(e){return l(e)?e:e.replace(o,"-$&").toLowerCase()})),c=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(i,(function(e,t,n){return f={name:t,styles:n,next:f},t}))}return 1===r[e]||l(e)||"number"!=typeof t||0===t?t:t+"px"};function d(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return f={name:n.name,styles:n.styles,next:f},n.name;if(void 0!==n.styles){var r=n.next;if(void 0!==r)for(;void 0!==r;)f={name:r.name,styles:r.styles,next:f},r=r.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var a=0;a=4;++r,a-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(a){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(a)+s;return{name:u,styles:a,next:f}}},27278:(e,t,n)=>{"use strict";var r;n.d(t,{L:()=>i,j:()=>l});var a=n(67294),o=!!(r||(r=n.t(a,2))).useInsertionEffect&&(r||(r=n.t(a,2))).useInsertionEffect,i=o||function(e){return e()},l=o||a.useLayoutEffect},70444:(e,t,n)=>{"use strict";n.d(t,{My:()=>o,fp:()=>r,hC:()=>a});function r(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]+";"):r+=n+" "})),r}var a=function(e,t,n){var r=e.key+"-"+t.name;!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles)},o=function(e,t,n){a(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+r:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}}},19044:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{stroke:"#fff",d:"M9 17.5V.5M.5 9h17"})))}},80255:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M11.764 5.294 7.06 10l4.705 4.706",stroke:"#000",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})))}},67146:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M11.667 6.417h-7.1l3.261-3.261L7 2.333 2.333 7 7 11.667l.823-.823-3.255-3.26h7.099V6.417Z",fill:"#fff"})))}},68425:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("rect",{width:20,height:20,rx:10,fill:"#000"})),a||(a=o.createElement("path",{d:"m9 8 2 2-2 2",stroke:"#fff",strokeWidth:1.2,strokeLinecap:"round",strokeLinejoin:"round"})))}},88121:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m7 2.333-.823.823 3.255 3.26H2.333v1.167h7.1l-3.256 3.261.823.823L11.667 7 7 2.333Z",fill:"#fff"})))}},62082:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"M20 20a3.21 3.21 0 0 1-2.354-.98 3.21 3.21 0 0 1-.98-2.353c0-.917.327-1.702.98-2.355A3.21 3.21 0 0 1 20 13.333a3.21 3.21 0 0 1 2.354.98 3.21 3.21 0 0 1 .98 2.354 3.21 3.21 0 0 1-.98 2.354A3.21 3.21 0 0 1 20 20Zm-6.666 6.667v-2.334c0-.472.121-.906.364-1.302.244-.396.567-.698.969-.906.86-.43 1.736-.754 2.625-.97A11.418 11.418 0 0 1 20 20.834c.917 0 1.82.108 2.709.324.888.215 1.763.538 2.625.968.402.208.725.51.969.907.243.396.364.83.364 1.301v2.334H13.333ZM15 25h10v-.667a.817.817 0 0 0-.417-.708 10.844 10.844 0 0 0-2.27-.843 9.652 9.652 0 0 0-4.625 0c-.764.187-1.521.468-2.271.843a.815.815 0 0 0-.303.292.776.776 0 0 0-.114.416V25Zm5-6.667c.459 0 .851-.163 1.178-.49.326-.326.49-.719.489-1.176 0-.459-.164-.851-.49-1.178A1.602 1.602 0 0 0 20 15c-.458 0-.85.164-1.177.49-.327.328-.49.72-.49 1.178 0 .458.164.85.49 1.177.327.327.72.49 1.177.49Z",fill:"#fff"})),a||(a=o.createElement("rect",{x:.5,y:.5,width:39,height:39,rx:19.5,stroke:"#fff"})))}},80469:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m12.667 4.273-.94-.94L8.001 7.06 4.274 3.333l-.94.94L7.061 8l-3.727 3.727.94.94L8.001 8.94l3.726 3.727.94-.94L8.941 8l3.726-3.727Z",fill:"#fff",opacity:.6})))}},94793:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M2.917 12.833c-.321 0-.596-.114-.825-.343a1.121 1.121 0 0 1-.342-.823V3.5h1.167v8.167h6.416v1.166H2.917ZM5.25 10.5c-.32 0-.596-.114-.824-.343a1.121 1.121 0 0 1-.343-.824v-7c0-.32.115-.595.343-.824.229-.229.504-.343.824-.342h5.25c.32 0 .596.114.824.343.229.228.343.503.343.823v7c0 .321-.115.596-.343.825a1.121 1.121 0 0 1-.824.342H5.25Zm0-1.167h5.25v-7H5.25v7Z",fill:"#fff"})))}},14607:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M14.2 23.077c-1.733 0-3.147-1.575-3.147-3.504 0-1.926 1.379-3.5 3.149-3.5 1.75 0 3.183 1.574 3.148 3.5 0 1.929-1.398 3.504-3.15 3.504Zm11.623 0c-1.733 0-3.15-1.575-3.15-3.504 0-1.926 1.382-3.5 3.15-3.5 1.75 0 3.184 1.574 3.15 3.5 0 1.929-1.381 3.504-3.15 3.504ZM16.875 7.205l-.513-.938-1.057.175a27.255 27.255 0 0 0-6.93 2.133l-.38.177-.237.348C3.403 15.523 2.208 21.847 2.8 28.06l.065.677.55.4a28.181 28.181 0 0 0 8.463 4.238l1.317.403 1.855-4.528c3.183.787 6.717.788 9.898 0l1.845 4.53 1.317-.405a28.033 28.033 0 0 0 8.467-4.24l.545-.397.066-.67c.727-7.2-1.161-13.473-4.93-18.975l-.236-.345-.38-.173a27.625 27.625 0 0 0-6.924-2.133l-1.03-.172-.523.902c-.155.27-.301.544-.438.823a26.463 26.463 0 0 0-5.439 0c-.133-.266-.27-.53-.413-.79Zm-5.683 20.478c.328.19.675.377 1.016.547l-.748 1.827a25.041 25.041 0 0 1-5.713-2.964c-.375-5.231.688-10.508 4.273-15.95a24.256 24.256 0 0 1 4.707-1.521c.1.208.193.411.27.593l.455 1.072 1.153-.169a23.508 23.508 0 0 1 6.817 0l1.15.167.453-1.07c.078-.187.17-.39.267-.593a24.71 24.71 0 0 1 4.713 1.525c3.125 4.7 4.702 9.943 4.243 15.945a24.841 24.841 0 0 1-5.716 2.963l-.742-1.823c.343-.172.69-.359 1.022-.549.816-.47 1.695-1.056 2.255-1.616l-2.134-2.134c-.271.274-.871.7-1.628 1.137-.74.427-1.475.772-1.945.927-3.338 1.105-7.38 1.105-10.72 0-.468-.155-1.203-.5-1.943-.927-.757-.435-1.357-.863-1.63-1.137l-2.134 2.134c.562.56 1.442 1.146 2.259 1.616Z",fill:"#fff"})))}},50437:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:71,height:55,viewBox:"0 0 71 55",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("g",{clipPath:"url(#a)"},o.createElement("path",{d:"M60.105 4.898A58.55 58.55 0 0 0 45.653.415a.22.22 0 0 0-.233.11 40.784 40.784 0 0 0-1.8 3.697c-5.456-.817-10.886-.817-16.23 0-.485-1.164-1.201-2.587-1.828-3.697a.228.228 0 0 0-.233-.11 58.386 58.386 0 0 0-14.451 4.483.207.207 0 0 0-.095.082C1.578 18.73-.944 32.144.293 45.39a.244.244 0 0 0 .093.167c6.073 4.46 11.955 7.167 17.729 8.962a.23.23 0 0 0 .249-.082 42.08 42.08 0 0 0 3.627-5.9.225.225 0 0 0-.123-.312 38.772 38.772 0 0 1-5.539-2.64.228.228 0 0 1-.022-.378c.372-.279.744-.569 1.1-.862a.22.22 0 0 1 .23-.03c11.619 5.304 24.198 5.304 35.68 0a.219.219 0 0 1 .233.027c.356.293.728.586 1.103.865a.228.228 0 0 1-.02.378 36.384 36.384 0 0 1-5.54 2.637.227.227 0 0 0-.121.315 47.249 47.249 0 0 0 3.624 5.897.225.225 0 0 0 .249.084c5.801-1.794 11.684-4.502 17.757-8.961a.228.228 0 0 0 .092-.164c1.48-15.315-2.48-28.618-10.497-40.412a.18.18 0 0 0-.093-.084Zm-36.38 32.427c-3.497 0-6.38-3.211-6.38-7.156 0-3.944 2.827-7.156 6.38-7.156 3.583 0 6.438 3.24 6.382 7.156 0 3.945-2.827 7.156-6.381 7.156Zm23.593 0c-3.498 0-6.38-3.211-6.38-7.156 0-3.944 2.826-7.156 6.38-7.156 3.582 0 6.437 3.24 6.38 7.156 0 3.945-2.798 7.156-6.38 7.156Z",fill:"#23272A"}))),a||(a=o.createElement("defs",null,o.createElement("clipPath",{id:"a"},o.createElement("path",{fill:"#fff",d:"M0 0h71v55H0z"})))))}},23179:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),void 0===t?a.createElement("title",{id:n},"Discourse"):t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M12.103 0C18.666 0 24 5.485 24 11.997c0 6.51-5.33 11.99-11.9 11.99L0 24V11.79C0 5.28 5.532 0 12.103 0zm.116 4.563a7.395 7.395 0 0 0-6.337 3.57 7.247 7.247 0 0 0-.148 7.22L4.4 19.61l4.794-1.074a7.424 7.424 0 0 0 8.136-1.39 7.256 7.256 0 0 0 1.737-7.997 7.375 7.375 0 0 0-6.84-4.585h-.008z"})))}},7744:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M9.334 1.333H4c-.733 0-1.326.6-1.326 1.334l-.007 10.666c0 .734.593 1.334 1.327 1.334H12c.734 0 1.334-.6 1.334-1.334v-8l-4-4ZM4 13.333V2.667h4.667V6H12v7.333H4Z",fill:"#fff"})))}},19818:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("circle",{cx:10,cy:10,r:8.333,fill:"#fff"})))}},38981:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M7 9.333 4.083 6.417 4.9 5.57l1.517 1.517V2.333h1.166v4.755L9.1 5.57l.817.846L7 9.333Zm-3.5 2.334c-.32 0-.596-.115-.824-.343a1.121 1.121 0 0 1-.343-.824V8.75H3.5v1.75h7V8.75h1.167v1.75c0 .32-.115.596-.343.824a1.121 1.121 0 0 1-.824.343h-7Z",fill:"#fff"})))}},28487:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:12,height:12,viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m2 4 4 4 4-4",stroke:"#909091",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"})))}},94177:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m12.707 2.393.9.9c.526.52.526 1.367 0 1.887L4.787 14H2v-2.787l6.933-6.94 1.887-1.88c.52-.52 1.367-.52 1.887 0ZM3.333 12.667l.94.04 6.547-6.554-.94-.94-6.547 6.547v.907Z",fill:"#fff"})))}},96867:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M14.667 2.667H1.34l-.007 10.667h13.334V2.667ZM13.333 12H2.667V5.334L8 8.667l5.333-3.333V12ZM8 7.334 2.667 4h10.666L8 7.334Z",fill:"#fff"})))}},58611:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.192 4H3.428V2.857h9.715v9.715H12V4.808l-8.167 8.168-.809-.808L11.192 4Z",fill:"#fff"})))}},13042:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M1.804 16.292a.836.836 0 0 0 .696.374H15a.832.832 0 0 0 .766-.505l2.5-5.833a.833.833 0 0 0-.766-1.162h-.833v-2.5C16.667 5.747 15.919 5 15 5H9.454l-2.13-1.667h-3.99c-.92 0-1.667.748-1.667 1.667v10.833h.006a.834.834 0 0 0 .131.46ZM15 6.666v2.5H5a.832.832 0 0 0-.766.505l-.9 2.103V6.666H15Z",fill:"#000"})))}},96367:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M4.667 11.083v-1.75h-1.75V8.166h2.916v2.917H4.667Zm3.5 0V8.166h2.916v1.167h-1.75v1.75H8.167Zm-5.25-5.25V4.666h1.75v-1.75h1.166v2.917H2.917Zm5.25 0V2.916h1.166v1.75h1.75v1.167H8.167Z",fill:"#fff"})))}},6907:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M1.75 2.917V5.25h1.167V2.917H5.25V1.75H2.917A1.17 1.17 0 0 0 1.75 2.917ZM2.917 8.75H1.75v2.333a1.17 1.17 0 0 0 1.167 1.167H5.25v-1.167H2.917V8.75Zm8.166 2.333H8.75v1.167h2.333a1.17 1.17 0 0 0 1.167-1.167V8.75h-1.167v2.333Zm0-9.333H8.75v1.167h2.333V5.25h1.167V2.917a1.17 1.17 0 0 0-1.167-1.167Z",fill:"#fff"})))}},59570:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M20 4.4a16 16 0 0 0-16 16c0 7.072 4.592 13.072 10.944 15.2.8.128 1.056-.368 1.056-.8v-2.704c-4.432.96-5.376-2.144-5.376-2.144-.736-1.856-1.776-2.352-1.776-2.352-1.456-.992.112-.96.112-.96 1.6.112 2.448 1.648 2.448 1.648C12.8 30.72 15.152 30 16.064 29.616c.144-1.04.56-1.744 1.008-2.144-3.552-.4-7.28-1.776-7.28-7.872 0-1.776.608-3.2 1.648-4.336-.16-.4-.72-2.064.16-4.224 0 0 1.344-.432 4.4 1.632a15.075 15.075 0 0 1 4-.528c1.36 0 2.736.176 4 .528 3.056-2.064 4.4-1.632 4.4-1.632.88 2.16.32 3.824.16 4.224 1.04 1.136 1.648 2.56 1.648 4.336 0 6.112-3.744 7.456-7.312 7.856.576.496 1.104 1.472 1.104 2.96V34.8c0 .432.256.944 1.072.8C31.424 33.456 36 27.472 36 20.4a16.001 16.001 0 0 0-16-16Z",fill:"#fff"})))}},26890:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"M256 411.12 0 202.667 256 0zM256 411.12l256-208.453L256 0z"})),a||(a=o.createElement("circle",{cx:256,cy:362.667,r:149.333})))}},42924:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m4 13.333.667-2.666H2.333l.334-1.334H5l.667-2.666H3l.333-1.334H6l.667-2.666H8l-.667 2.666H10l.667-2.666H12l-.667 2.666h2.334l-.334 1.334H11l-.667 2.666H13l-.333 1.334H10l-.667 2.666H8l.667-2.666H6l-.667 2.666H4Zm2.333-4H9l.667-2.666H7l-.667 2.666Z",fill:"#fff"})))}},74297:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M8 14c-1.533 0-2.87-.508-4.009-1.525-1.139-1.017-1.791-2.287-1.958-3.808H3.4c.156 1.155.67 2.11 1.542 2.866.872.756 1.892 1.134 3.058 1.134 1.3 0 2.403-.453 3.309-1.359.905-.906 1.358-2.008 1.358-3.308 0-1.3-.453-2.403-1.359-3.309C10.402 3.786 9.3 3.333 8 3.333a4.5 4.5 0 0 0-2.15.534 4.954 4.954 0 0 0-1.683 1.466H6v1.334H2v-4h1.333v1.566A5.954 5.954 0 0 1 8 2c.833 0 1.614.158 2.342.475a6.107 6.107 0 0 1 1.9 1.283c.539.54.966 1.172 1.283 1.9C13.842 6.386 14 7.166 14 8c0 .833-.158 1.614-.475 2.342a6.108 6.108 0 0 1-1.283 1.9 6.11 6.11 0 0 1-1.9 1.283A5.793 5.793 0 0 1 8 14Zm1.867-3.2L7.333 8.267v-3.6h1.334v3.066L10.8 9.867l-.933.933Z",fill:"#fff"})))}},33336:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M12.667 2A1.333 1.333 0 0 1 14 3.333v9.334A1.334 1.334 0 0 1 12.667 14H3.333A1.334 1.334 0 0 1 2 12.667V3.333A1.333 1.333 0 0 1 3.333 2h9.334Zm-.334 10.333V8.8a2.173 2.173 0 0 0-2.173-2.173c-.567 0-1.227.346-1.547.866v-.74h-1.86v5.58h1.86V9.047a.93.93 0 1 1 1.86 0v3.286h1.86ZM4.587 5.707a1.12 1.12 0 0 0 1.12-1.12 1.124 1.124 0 1 0-1.12 1.12Zm.926 6.626v-5.58H3.667v5.58h1.846Z",fill:"#fff"})))}},78951:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{stroke:"#fff",d:"M.5 9h17"})))}},84629:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("g",{clipPath:"url(#a)"},o.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.79 6.75a4.979 4.979 0 1 1 9.957 0 4.979 4.979 0 0 1-9.957 0ZM6.768.572a6.179 6.179 0 1 0 3.817 11.037l5.146 5.146a1 1 0 0 0 1.414-1.414l-5.207-5.207A6.179 6.179 0 0 0 6.768.571Z",fill:"#000"}))),a||(a=o.createElement("defs",null,o.createElement("clipPath",{id:"a"},o.createElement("path",{fill:"#fff",d:"M0 0h18v18H0z"})))))}},23816:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:179,height:178,viewBox:"0 0 179 178",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M104.512 88.178c-10.667.615-17.352-1.87-28.02-1.254a44.732 44.732 0 0 0-7.853 1.146c1.575-19.73 15.538-36.988 34.525-38.085 11.652-.672 23.298 6.522 23.93 18.2.621 11.479-8.131 19.158-22.58 19.992l-.002.001Zm-28.645 40.355c-11.162.631-22.317-6.104-22.923-17.033-.596-10.742 7.79-17.93 21.633-18.71 10.218-.575 16.623 1.751 26.84 1.174a43.776 43.776 0 0 0 7.522-1.073c-1.506 18.464-14.881 34.617-33.072 35.642ZM89.5.001C40.346 0 .5 39.846.5 89c0 49.154 39.846 89 89 89s89-39.847 89-89-39.846-89-89-89",fill:"#000"})))}},35245:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.906 17.987c9.395-4.094 15.66-6.792 18.795-8.096 8.95-3.723 10.81-4.37 12.022-4.39.267-.005.863.06 1.249.374.326.264.416.622.459.873.043.25.096.822.053 1.268-.485 5.097-2.583 17.463-3.65 23.171-.453 2.415-1.342 3.225-2.203 3.304-1.872.172-3.293-1.237-5.106-2.425-2.836-1.86-4.439-3.017-7.192-4.831-3.182-2.097-1.12-3.25.694-5.133.475-.493 8.72-7.993 8.88-8.674.02-.085.039-.402-.15-.57-.188-.167-.466-.11-.667-.064-.284.064-4.816 3.06-13.594 8.985-1.286.883-2.451 1.314-3.495 1.29-1.15-.024-3.364-.65-5.01-1.185-2.018-.656-3.622-1.003-3.483-2.117.073-.58.872-1.174 2.398-1.78Z",fill:"#fff"})))}},68902:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:24,height:24,xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinejoin:"round",strokeMiterlimit:1.41421},"aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M12 0C5.374 0 0 5.372 0 12c0 6.627 5.374 12 12 12 6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12Zm3.224 17.871c.188.133.43.166.646.085a.678.678 0 0 0 .422-.491c.507-2.382 1.737-8.412 2.198-10.578a.457.457 0 0 0-.151-.443.47.47 0 0 0-.465-.082c-2.446.906-9.979 3.732-13.058 4.871a.484.484 0 0 0-.316.467.483.483 0 0 0 .346.445c1.381.413 3.193.988 3.193.988s.847 2.558 1.288 3.858a.512.512 0 0 0 .352.336.505.505 0 0 0 .474-.121l1.805-1.704s2.084 1.527 3.266 2.369Zm-6.423-5.062.98 3.231.218-2.046 5.941-5.358a.162.162 0 0 0 .019-.22.165.165 0 0 0-.219-.037l-6.939 4.43Z"})))}},86089:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:17,height:14,viewBox:"0 0 17 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M16.557 1.597a6.802 6.802 0 0 1-1.95.534A3.406 3.406 0 0 0 16.1.251a6.782 6.782 0 0 1-2.157.824 3.398 3.398 0 0 0-5.788 3.1A9.647 9.647 0 0 1 1.153.624a3.395 3.395 0 0 0-.059 3.31c.264.494.645.915 1.11 1.225a3.389 3.389 0 0 1-1.538-.425v.044a3.398 3.398 0 0 0 2.725 3.33c-.5.136-1.025.156-1.534.06a3.399 3.399 0 0 0 3.173 2.357A6.817 6.817 0 0 1 0 11.934a9.607 9.607 0 0 0 5.207 1.526c6.249 0 9.665-5.176 9.665-9.665 0-.146-.004-.293-.01-.439A6.905 6.905 0 0 0 16.556 1.6l.001-.002Z",fill:"#000"})))}},92358:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M22.62 19.134 32.63 7.5h-2.373l-8.69 10.102L14.627 7.5H6.62l10.496 15.275-10.496 12.2h2.372l9.177-10.668 7.33 10.668h8.005L22.62 19.134Zm-3.248 3.776-1.063-1.521L9.847 9.285h3.643l6.829 9.768 1.063 1.521 8.877 12.697h-3.643l-7.244-10.36v-.001Z",fill:"#fff"})))}},4074:(e,t,n)=>{"use strict";n.r(t),n.d(t,{HOSTNAMES:()=>o,SCRIPT_URL:()=>a,SITE_ID:()=>r});const r="FUTMI",a="https://fathom.status.im/tracker.js",o=[]},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(67294),a=n(87462),o=n(68356),i=n.n(o),l=n(16887);const s={"0444839e":[()=>n.e(175).then(n.bind(n,62093)),"@site/docs/guides/js-waku/manage-filter.md",62093],"0f1b9a4a":[()=>n.e(5158).then(n.bind(n,36280)),"@site/docs/guides/js-waku/run-waku-nodejs.md",36280],"1067bd84":[()=>Promise.all([n.e(532),n.e(4881),n.e(5447)]).then(n.bind(n,45173)),"@site/docs/learn/faq.md",45173],"1236ce69":[()=>n.e(3235).then(n.bind(n,64180)),"@site/docs/research/research-and-studies/rln-key-benchmarks.md",64180],17896441:[()=>Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,18652)),"@theme/DocItem",18652],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,93717)),"@theme/DocPage",93717],"1f1f54c7":[()=>n.e(2285).then(n.bind(n,55345)),"@site/docs/guides/js-waku/store-retrieve-messages.md",55345],20987266:[()=>Promise.all([n.e(532),n.e(4881),n.e(7442)]).then(n.bind(n,26820)),"@site/docs/guides/nwaku/faq.md",26820],"2f51beae":[()=>n.e(231).then(n.bind(n,59043)),"@site/docs/learn/concepts/discv5.md",59043],"3b0eafbc":[()=>n.e(6167).then(n.t.bind(n,83769,19)),"/home/jenkins/workspace/website/dev-docs.waku.org/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",83769],"3b240eda":[()=>Promise.all([n.e(532),n.e(3178)]).then(n.bind(n,68458)),"@site/docs/guides/js-waku/use-waku-react.md",68458],"3fbcf129":[()=>n.e(8173).then(n.bind(n,71899)),"@site/docs/research/research-and-studies/message-propagation.md",71899],"406e0176":[()=>Promise.all([n.e(532),n.e(3855)]).then(n.bind(n,89472)),"@site/docs/guides/nwaku/run-node.md",89472],"41a4e09e":[()=>n.e(9169).then(n.bind(n,68518)),"@site/docs/learn/waku-vs-libp2p.md",68518],"488ca57d":[()=>Promise.all([n.e(532),n.e(6839)]).then(n.bind(n,76201)),"@site/docs/guides/js-waku/index.md",76201],"4aba8864":[()=>n.e(357).then(n.bind(n,19034)),"@site/docs/learn/glossary.md",19034],"4bb5c570":[()=>n.e(161).then(n.bind(n,46771)),"@site/docs/guides/js-waku/configure-discovery.md",46771],"4e726341":[()=>n.e(2588).then(n.bind(n,82493)),"@site/docs/research/research-and-studies/incentivisation.md",82493],"500a151f":[()=>n.e(4545).then(n.bind(n,41725)),"@site/docs/terms.md",41725],"5277fe18":[()=>Promise.all([n.e(532),n.e(1374)]).then(n.bind(n,48153)),"@site/docs/guides/js-waku/use-waku-create-app.md",48153],"606377f0":[()=>n.e(5832).then(n.bind(n,89955)),"@site/docs/learn/security-features.md",89955],60832973:[()=>n.e(7304).then(n.bind(n,40259)),"@site/docs/guides/nwaku/configure-nwaku.md",40259],"63c569e1":[()=>n.e(1160).then(n.bind(n,45557)),"@site/docs/migrations/js-waku/migration_v0.026_0.027.md",45557],"6778e957":[()=>n.e(3292).then(n.bind(n,82844)),"@site/docs/learn/concepts/peer-discovery.md",82844],"6c6e315a":[()=>n.e(8319).then(n.bind(n,40029)),"@site/docs/learn/research.md",40029],"6e8bfb6f":[()=>n.e(6512).then(n.bind(n,16783)),"@site/docs/guides/nwaku/run-docker.md",16783],"7c28fd94":[()=>n.e(906).then(n.bind(n,17217)),"@site/docs/guides/nwaku/run-docker-compose.md",17217],"80a3009a":[()=>n.e(3116).then(n.bind(n,67868)),"@site/docs/learn/concepts/peer-exchange.md",67868],"80ec2a43":[()=>n.e(3634).then(n.bind(n,69399)),"@site/docs/guides/nwaku/config-methods.md",69399],"8a655033":[()=>n.e(1385).then(n.bind(n,45948)),"@site/docs/guides/nwaku/configure-discovery.md",45948],"8c5da4da":[()=>n.e(1923).then(n.bind(n,88006)),"@site/docs/privacy-policy.md",88006],"8eff6037":[()=>n.e(5844).then(n.bind(n,64985)),"@site/docs/guides/nwaku/config-options.md",64985],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"97983a7b":[()=>n.e(1937).then(n.bind(n,56055)),"@site/docs/research/research-and-studies/capped-bandwidth.md",56055],a44b8792:[()=>n.e(5787).then(n.bind(n,33447)),"@site/docs/learn/concepts/dns-discovery.md",33447],a494bfbc:[()=>Promise.all([n.e(532),n.e(4881),n.e(2675)]).then(n.bind(n,43815)),"@site/docs/guides/js-waku/faq.md",43815],b54b2767:[()=>n.e(727).then(n.bind(n,12381)),"@site/docs/learn/concepts/network-domains.md",12381],b551b2b5:[()=>n.e(101).then(n.bind(n,46645)),"@site/docs/guides/nwaku/find-node-address.md",46645],b99d0044:[()=>n.e(1201).then(n.bind(n,34765)),"@site/docs/learn/waku-network.md",34765],c57f3997:[()=>n.e(7683).then(n.bind(n,56804)),"@site/docs/guides/js-waku/light-send-receive.md",56804],c764ec94:[()=>n.e(3076).then(n.bind(n,73979)),"@site/docs/learn/concepts/content-topics.md",73979],c9ea0dcf:[()=>n.e(2941).then(n.bind(n,22103)),"@site/docs/guides/getting-started.md",22103],d3c3b3be:[()=>Promise.all([n.e(532),n.e(4881),n.e(8824)]).then(n.bind(n,46442)),"@site/docs/guides/nwaku/upgrade-instructions.md",46442],d53fc737:[()=>n.e(6471).then(n.bind(n,57704)),"@site/docs/rules-of-engagement.md",57704],db32d859:[()=>n.e(6653).then(n.bind(n,47215)),"@site/docs/security.md",47215],df0a719b:[()=>n.e(6059).then(n.bind(n,61131)),"@site/docs/research/research-and-studies/maximum-bandwidth.md",61131],df28445d:[()=>Promise.all([n.e(532),n.e(2355)]).then(n.bind(n,30282)),"@site/docs/guides/js-waku/message-encryption.md",30282],e168415d:[()=>n.e(5306).then(n.bind(n,96608)),"@site/docs/research/benchmarks/postgres-adoption.md",96608],e610d71e:[()=>n.e(617).then(n.bind(n,92247)),"@site/docs/guides/js-waku/debug-waku-dapp.md",92247],e63bb37c:[()=>n.e(6321).then(n.bind(n,77362)),"@site/docs/learn/concepts/static-peers.md",77362],ef85d46a:[()=>n.e(6618).then(n.bind(n,63351)),"@site/docs/learn/concepts/transports.md",63351],f2470003:[()=>Promise.all([n.e(532),n.e(2811)]).then(n.bind(n,43733)),"@site/docs/guides/nwaku/build-source.md",43733],f7974e9c:[()=>n.e(5838).then(n.bind(n,34602)),"@site/docs/research/index.md",34602],fb5ea66b:[()=>n.e(5740).then(n.bind(n,898)),"@site/docs/learn/concepts/protocols.md",898]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(99670),d=n(30226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>Promise.all([n.e(532),n.e(2568)]).then(n.bind(n,92568)),modules:["@theme/NotFound"],webpack:()=>[92568],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],h=[],m=(0,c.Z)(o);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),h.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>h,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/",component:f("/","d04"),routes:[{path:"/",component:f("/","0f1"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/",component:f("/guides/js-waku/","9af"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/configure-discovery",component:f("/guides/js-waku/configure-discovery","dfe"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/debug-waku-dapp",component:f("/guides/js-waku/debug-waku-dapp","c0d"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/faq",component:f("/guides/js-waku/faq","1ad"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/light-send-receive",component:f("/guides/js-waku/light-send-receive","77b"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/manage-filter",component:f("/guides/js-waku/manage-filter","d72"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/message-encryption",component:f("/guides/js-waku/message-encryption","d96"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/run-waku-nodejs",component:f("/guides/js-waku/run-waku-nodejs","30f"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/store-retrieve-messages",component:f("/guides/js-waku/store-retrieve-messages","1c5"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/use-waku-create-app",component:f("/guides/js-waku/use-waku-create-app","76f"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/use-waku-react",component:f("/guides/js-waku/use-waku-react","ed9"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/build-source",component:f("/guides/nwaku/build-source","995"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/config-methods",component:f("/guides/nwaku/config-methods","c44"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/config-options",component:f("/guides/nwaku/config-options","def"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/configure-discovery",component:f("/guides/nwaku/configure-discovery","a6b"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/configure-nwaku",component:f("/guides/nwaku/configure-nwaku","a95"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/faq",component:f("/guides/nwaku/faq","ad1"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/find-node-address",component:f("/guides/nwaku/find-node-address","786"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/run-docker",component:f("/guides/nwaku/run-docker","d03"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/run-docker-compose",component:f("/guides/nwaku/run-docker-compose","ca4"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/run-node",component:f("/guides/nwaku/run-node","9f1"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/upgrade-instructions",component:f("/guides/nwaku/upgrade-instructions","8ee"),exact:!0,sidebar:"guides"},{path:"/learn/concepts/content-topics",component:f("/learn/concepts/content-topics","45b"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/discv5",component:f("/learn/concepts/discv5","01f"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/dns-discovery",component:f("/learn/concepts/dns-discovery","c5b"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/network-domains",component:f("/learn/concepts/network-domains","5d8"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/peer-discovery",component:f("/learn/concepts/peer-discovery","913"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/peer-exchange",component:f("/learn/concepts/peer-exchange","e58"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/protocols",component:f("/learn/concepts/protocols","13a"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/static-peers",component:f("/learn/concepts/static-peers","9c6"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/transports",component:f("/learn/concepts/transports","6fb"),exact:!0,sidebar:"learn"},{path:"/learn/faq",component:f("/learn/faq","74d"),exact:!0,sidebar:"learn"},{path:"/learn/glossary",component:f("/learn/glossary","cf5"),exact:!0,sidebar:"learn"},{path:"/learn/research",component:f("/learn/research","13c"),exact:!0,sidebar:"learn"},{path:"/learn/security-features",component:f("/learn/security-features","72b"),exact:!0,sidebar:"learn"},{path:"/learn/waku-network",component:f("/learn/waku-network","f0c"),exact:!0,sidebar:"learn"},{path:"/learn/waku-vs-libp2p",component:f("/learn/waku-vs-libp2p","c45"),exact:!0,sidebar:"learn"},{path:"/migrations/js-waku/migration_v0.026_0.027",component:f("/migrations/js-waku/migration_v0.026_0.027","949"),exact:!0},{path:"/privacy-policy",component:f("/privacy-policy","4cd"),exact:!0},{path:"/research/",component:f("/research/","e8b"),exact:!0,sidebar:"research"},{path:"/research/benchmarks/postgres-adoption",component:f("/research/benchmarks/postgres-adoption","563"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/capped-bandwidth",component:f("/research/research-and-studies/capped-bandwidth","ee6"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/incentivisation",component:f("/research/research-and-studies/incentivisation","d49"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/maximum-bandwidth",component:f("/research/research-and-studies/maximum-bandwidth","80a"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/message-propagation",component:f("/research/research-and-studies/message-propagation","46a"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/rln-key-benchmarks",component:f("/research/research-and-studies/rln-key-benchmarks","5d8"),exact:!0,sidebar:"research"},{path:"/rules-of-engagement",component:f("/rules-of-engagement","0fc"),exact:!0},{path:"/security",component:f("/security","2fb"),exact:!0},{path:"/terms",component:f("/terms","37d"),exact:!0}]},{path:"*",component:f("*")}]},26724:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.onRouteDidUpdate=void 0;const r=n(70655),a=n(4074);r.__importDefault(n(10412)).default.canUseDOM&&(()=>{if(a.HOSTNAMES.length>0?!a.HOSTNAMES.includes(window.location.hostname):"localhost"===window.location.hostname)return;!function(e,t,n,r){t[r]=t[r]||function(){(t[r].q=t[r].q||[]).push(arguments)};const a=e.createElement("script"),o=e.getElementsByTagName("script")[0];a.async=1,a.src=n,a.id="fathom-script",o.parentNode.insertBefore(a,o)}(document,window,a.SCRIPT_URL,"fathom");const{fathom:e}=window;e("set","siteId",a.SITE_ID),e("trackPageview")})();t.onRouteDidUpdate=e=>{let{location:t,previousLocation:n}=e;window.fathom&&t.pathname!==n?.pathname&&window.fathom("trackPageview")}},85711:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createPromise=t.ResultType=void 0;const r=n(70655),a=n(90022),o=n(91073),i=n(67133),l=n(98202),s=r.__importStar(n(61029)),u=e=>{let{versionUrl:t,searchContextByPaths:n}=e,r=window.location.pathname;if(r=r.endsWith("/")?r:r+"/",!Array.isArray(n)||!r.startsWith(t))return"";const a=r.substring(t.length);return n.find((e=>a===e||a.startsWith(`${e}/`)))??""};class c{constructor(e){this.config=e,this.loading=!1,this.source=null,this.init=async()=>{this.loading=!0;const{wrappedIndexes:e,zhDictionary:t}=await(async e=>{const{wrappedIndexes:t,zhDictionary:n}=await(0,a.fetchIndexes)(e.versionUrl,e.searchContext);return{wrappedIndexes:t,zhDictionary:n}})({versionUrl:this.baseUrl,searchContext:u({versionUrl:this.baseUrl,searchContextByPaths:this.searchContextByPaths})});this.source=(0,l.SearchSourceFactory)(e,t,this.config.resultsLimit)},this.query=async e=>{if(!this.source)throw new Error("Not initialized");const{promise:n,callback:r}=(0,t.createPromise)();return this.source&&this.source(e,r),{results:(await n).map((e=>this.formatResult(e)))}},this.formatResult=e=>({...e,type:this.resultTypeToString(e.type),page:e.page?this.formatDocument(e.page):null,document:e.document?this.formatDocument(e.document):null,highlighted:(0,i.highlightStemmed)(e.document.t,(0,o.getStemmedPositions)(e.metadata,"t"),e.tokens)}),this.resultTypeToString=e=>({0:d.Title,1:d.Heading,2:d.Paragraph}[e]),this.formatDocument=e=>({id:e.i,title:e.t,url:e.u,hash:e.h,parentId:e.p,breadcrumb:e.b,sectionTitle:e.s}),this.baseUrl=e.preferredVersionPath,this.searchContextByPaths=e.searchContextByPaths??""}}var d;!function(e){e.Title="title",e.Heading="heading",e.Paragraph="paragraph"}(d=t.ResultType||(t.ResultType={}));t.createPromise=()=>{let e,t;const n=new Promise(((n,r)=>{e=n,t=r}));return{reject:t,resolve:e,promise:n,callback:(n,r)=>{r?t(r):e(n)}}};(async()=>{if("undefined"==typeof window)return;const e=window;e.getProxiedGeneratedData=()=>s,e.createSearchInstance=async e=>new c(e)})()},55061:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IconEmail=t.IconRemove=t.IconAdd=t.IconDownload=t.IconAvatar=t.IconX=t.IconTelegramWhite=t.IconDiscordWhite=t.IconExternalLink=t.IconFullscreenExit=t.IconFullscreen=t.IconEdit=t.IconClose=t.IconHistory=t.IconCopy=t.IconGScholar=t.IconDropdown=t.IconSearch=t.IconFolderFilled=t.IconDot=t.IconLinkedin=t.IconDiscourse=t.IconTelegram=t.IconTwitter=t.IconStatus=t.IconDiscord=t.IconGithub=t.IconFolder=t.IconArrowLeft=t.IconArrowRight=t.IconArrowLeftCircle=t.IconArrowRightCircle=t.Icon=void 0;const r=n(70655),a=n(86010),o=r.__importDefault(n(67294)),i=r.__importDefault(n(27861)),l=r.__importDefault(n(19044)),s=r.__importDefault(n(80255)),u=r.__importDefault(n(67146)),c=r.__importDefault(n(68425)),d=r.__importDefault(n(88121)),f=r.__importDefault(n(62082)),p=r.__importDefault(n(80469)),h=r.__importDefault(n(94793)),m=r.__importDefault(n(14607)),g=r.__importDefault(n(50437)),v=r.__importDefault(n(23179)),b=r.__importDefault(n(19818)),y=r.__importDefault(n(38981)),w=r.__importDefault(n(28487)),x=r.__importDefault(n(94177)),k=r.__importDefault(n(58611)),_=r.__importDefault(n(13042)),E=r.__importDefault(n(96367)),S=r.__importDefault(n(6907)),C=r.__importDefault(n(59570)),T=r.__importDefault(n(26890)),O=r.__importDefault(n(74297)),D=r.__importDefault(n(33336)),P=r.__importDefault(n(78951)),N=r.__importDefault(n(84629)),I=r.__importDefault(n(23816)),A=r.__importDefault(n(35245)),L=r.__importDefault(n(68902)),R=r.__importDefault(n(86089)),j=r.__importDefault(n(92358)),M=r.__importDefault(n(96867));t.Icon=e=>{const{children:t,size:n="m"}=e;return o.default.createElement("div",{className:(0,a.clsx)(i.default.icon,i.default[n],e.stroke&&i.default.stroke,e.fill&&i.default.fill,e.className&&e.className)},t)};t.IconArrowRightCircle=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(c.default,null));t.IconArrowLeftCircle=e=>o.default.createElement(t.Icon,null,o.default.createElement(s.default,null));t.IconArrowRight=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(d.default,null));t.IconArrowLeft=e=>o.default.createElement(t.Icon,null,o.default.createElement(u.default,null));t.IconFolder=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(_.default,null));t.IconGithub=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(C.default,null));t.IconDiscord=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(g.default,null));t.IconStatus=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(I.default,null));t.IconTwitter=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(R.default,null));t.IconTelegram=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(L.default,null));t.IconDiscourse=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(v.default,null));t.IconLinkedin=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(D.default,null));t.IconDot=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(b.default,null));t.IconFolderFilled=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(_.default,null));t.IconSearch=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(N.default,null));t.IconDropdown=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(w.default,null));t.IconGScholar=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(T.default,null));t.IconCopy=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(h.default,null));t.IconHistory=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(O.default,null));t.IconClose=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(p.default,null));t.IconEdit=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(x.default,null));t.IconFullscreen=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(S.default,null));t.IconFullscreenExit=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(E.default,null));t.IconExternalLink=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(k.default,null));t.IconDiscordWhite=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(m.default,null));t.IconTelegramWhite=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(A.default,null));t.IconX=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(j.default,null));t.IconAvatar=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(f.default,null));t.IconDownload=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(y.default,null));t.IconAdd=e=>o.default.createElement(t.Icon,{...e,stroke:!0},o.default.createElement(l.default,null));t.IconRemove=e=>o.default.createElement(t.Icon,{...e,stroke:!0},o.default.createElement(P.default,null));t.IconEmail=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(M.default,null))},78870:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(55061),t)},40466:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Modal=void 0;const r=n(70655),a=r.__importDefault(n(86010)),o=r.__importDefault(n(67294)),i=n(89164),l=n(96507),s=n(38954);n(22473);t.Modal=e=>{let{open:t=!1,onClose:n,keepMounted:r=!1,className:u,children:c,...d}=e;const f=(0,l.useHydrated)(),p=()=>{n&&n()};return(0,i.useKeyPressEvent)((e=>"Escape"===e.code),(e=>{p()})),f&&(t||r)?o.default.createElement(s.Portal,{containerId:"lsd-presentation",id:d.id},o.default.createElement("div",{className:(0,a.default)(u,"l-modal",t&&"l-modal--open"),...d},o.default.createElement("div",{className:"l-modal__container"},o.default.createElement("div",{className:"l-modal__content"},c),o.default.createElement("div",{className:"l-modal__backdrop",onClick:p})))):o.default.createElement(o.default.Fragment,null)}},38954:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Portal=void 0;const r=n(70655).__importDefault(n(67294)),a=n(73935),o=n(40653);t.Portal=e=>{let{children:t,containerId:n,id:i}=e;if("undefined"==typeof window)return r.default.createElement(r.default.Fragment,null);const l=(0,o.usePortal)({parentId:n});return(0,a.createPortal)(t,l,i)}},40653:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.usePortal=void 0;const r=n(67294),a=n(89321);t.usePortal=e=>{let{parentId:t}=e;const n=(0,r.useRef)();return n.current||(n.current=document.createElement("div")),(0,r.useEffect)((()=>{if(n.current)return document.getElementById(t)?.appendChild(n.current),()=>{const e=n.current;e&&(0,a.settleSync)((()=>document.getElementById(t)?.removeChild(e)))}}),[t,n.current]),n.current}},19843:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LightBoxWrapper=t.useLightBox=t.LightBoxContext=t.LightBoxProvider=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(29785)),i=r.__importDefault(n(86010)),l=r.__importStar(n(67294)),s=r.__importStar(n(33199)),u=n(89164),c=n(55061),d=n(38954),f=n(96507),p=n(53708),h=r.__importDefault(n(10153));t.LightBoxProvider=e=>{let{children:n}=e;const r=(0,f.useHydrated)(),s=(0,u.useWindowScroll)(),[m,g]=(0,l.useState)(null),[v,b]=(0,l.useState)({opacity:"0.5"}),y=(0,p.useIsMobile)(),w=(0,l.useMemo)((()=>({opacity:1,transform:"scale(1) translate(0px, 0px)",transition:"0.3s"})),[m]),x=e=>{g(e);const t=document.body.clientWidth,n=window.innerHeight,r=window.innerWidth>768?.9375*t:t-32,a=n-128,o=e.getBoundingClientRect(),i=Math.min(a/o.height,r/o.width),l=[o.left+o.width/2,o.top+o.height/2],s=[t/2,n/2].map(((e,t)=>(e-l[t])/i));b({zIndex:202,transform:`scale(${i}) translate(${s[0]}px, ${s[1]}px)`,position:"relative"})},k=()=>{g(null)};return(0,l.useEffect)((()=>{m&&window.innerWidth>768&&k()}),[s]),(0,l.useEffect)((()=>{if(y&&m){document.querySelector("html").style.overflow="hidden"}else{document.querySelector("html").style.overflow="initial"}}),[y,m]),l.default.createElement(t.LightBoxContext.Provider,{value:{active:m,style:w,activeStyle:v,display:x,close:k,toggle:e=>{const t=m;k(),t!==e&&x(e)}}},n,r&&l.default.createElement(d.Portal,{containerId:"lsd-presentation"},l.default.createElement(l.default.Fragment,null,l.default.createElement("div",{className:(0,i.default)(h.default.backdrop,m&&h.default.visible)}),l.default.createElement("div",{className:(0,i.default)(h.default.navWrapper,m&&h.default.visible)},l.default.createElement("nav",{className:(0,i.default)(h.default.nav,"navbar",m&&h.default.visible)},l.default.createElement(o.default,null),l.default.createElement(a.IconButton,{size:"medium",onClick:k},l.default.createElement(c.IconFullscreenExit,null)))))))},t.LightBoxContext=l.default.createContext({style:{},activeStyle:{},active:null,close:null,toggle:null,display:null});t.useLightBox=()=>{const e=(0,l.useContext)(t.LightBoxContext);return{getStyle:t=>({...e.style,...t===e.active?e.activeStyle:{}}),style:e.style,activeStyle:e.activeStyle,active:e.active,isActive:!!e.active,close:e.close,toggle:e.toggle,display:e.display,isActiveElement:t=>e.active===t}};t.LightBoxWrapper=e=>{let{children:n}=e;const r=(0,l.useRef)(null),o=(0,l.useRef)(null),{getStyle:u,display:d,isActiveElement:f}=(0,t.useLightBox)(),m=(0,p.useIsMobile)(),g=(0,l.useCallback)((e=>{let{x:t,y:n,scale:r}=e;const{current:a}=o;if(a){const e=(0,s.make3dTransformValue)({x:t,y:n,scale:r});a.style.setProperty("transform",e)}}),[]),v=m&&r.current&&f(r.current)?l.default.createElement(s.default,{onUpdate:g,doubleTapZoomOutOnMaxScale:!0,maxZoom:3},l.default.createElement("div",{ref:o},n)):l.default.createElement(l.default.Fragment,null,n,l.default.createElement(a.IconButton,{className:h.default.fullscreenButton,size:"medium",onClick:()=>r.current&&d(r.current)},l.default.createElement(c.IconFullscreen,null)));return l.default.createElement(l.default.Fragment,null,l.default.createElement("div",{className:(0,i.default)(h.default.wrapper,f(r.current)&&h.default.active),ref:r,style:r.current?u(r.current):{}},v))}},78991:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeProvider=void 0;const r=n(70655),a=n(31665),o=n(70917),i=r.__importDefault(n(67294)),l=n(92198);t.ThemeProvider=e=>{let{children:t}=e;const n=(0,l.useTheme)();return i.default.createElement(a.ThemeProvider,{theme:n.current,injectCssVars:!1},i.default.createElement(o.Global,{styles:n.cssVars}),t)}},27967:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(78991),t)},89321:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.settleSync=t.settle=void 0;t.settle=async e=>{try{return["function"==typeof e?await e():await e,void 0]}catch(t){return[void 0,t]}};t.settleSync=e=>{try{return[e(),void 0]}catch(t){return[void 0,t]}}},28097:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ensureTrailingSlash=t.ensureTrailingString=void 0;t.ensureTrailingString=(e,t)=>e.endsWith(t)?e:e+t;t.ensureTrailingSlash=e=>(0,t.ensureTrailingString)(e,"/")},92198:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useTheme=void 0;const r=n(31665),a=n(82818),o=n(70917),i=n(67294),l=n(54400);t.useTheme=()=>{const e=(0,a.useColorMode)(),{typography:t}=(0,l.useThemeOptions)(),n=t?.genericFontFamily??"sans-serif",s=r.defaultThemes,u=(0,i.useMemo)((()=>{const e={breakpoints:{},palette:{},typography:{},typographyGlobal:{genericFontFamily:n},spacing:[]};return{light:(0,r.createTheme)(e,s.light),dark:(0,r.createTheme)(e,s.dark)}}),[s,n]);return{dark:u.dark,light:u.light,current:u[e.colorMode],colorMode:e.colorMode,cssVars:(c=u.light,d=u.dark,f=u.light,(0,i.useMemo)((()=>o.css` html:not([data-theme]) { ${f.cssVars} @@ -11,4 +11,4 @@ html[data-theme='dark'] { ${d.cssVars} } - `),[d,c]))};var c,d,f}},55873:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useEventListener=void 0;const r=n(67294);t.useEventListener=(e,t,n,a,o)=>{const i=(0,r.useMemo)((()=>"string"==typeof e?e:e()),[]),l=(0,r.useMemo)((()=>"function"==typeof t?t():t),[t]);(0,r.useEffect)((()=>{if(l?.addEventListener&&l?.removeEventListener)return l.addEventListener(i,n,a),()=>{l.removeEventListener(i,n,a)}}),[i,l])}},96507:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useHydrated=void 0;const r=n(67294);t.useHydrated=()=>{const[e,t]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{t(!0)}),[]),e}},53708:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useIsMobile=void 0;const r=n(89164);t.useIsMobile=()=>(0,r.useMedia)("(max-width: 1199px)")},81803:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.usePersistedHistory=void 0;const r=n(89164);t.usePersistedHistory=(e,t)=>{const n=t?.unique??!1,a=t?.equals??((e,t)=>e===t),o=t?.maxItems??null,[i,l]=(0,r.useLocalStorage)("logos-docusaurus-theme-"+e,[]),s=e=>{l((i??[]).filter(((t,n)=>!e(t,n))))};return{add:e=>{const t=i??[],r=[e,...n?t.filter((t=>!a(t,e))):t];l(o?r.slice(0,o):r)},clear:()=>{l([])},remove:s,removeByIndex:e=>{s(((t,n)=>n===e))},list:i}}},54400:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useDocThemeOptions=t.useThemeOptions=void 0;const r=n(70655),a=n(80143),o=r.__importDefault(n(52263));t.useThemeOptions=()=>{const{siteConfig:{customFields:e={}}}=(0,o.default)();return e["logos-docusaurus-theme"]??{}};t.useDocThemeOptions=()=>{const e=(0,a.useActivePlugin)(),n=(0,t.useThemeOptions)();return e?n?.docs?.[e?.pluginId]??{}:{}}},521:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useWindowEventListener=void 0;const r=n(55873);t.useWindowEventListener=function(e,t,n,a){void 0===a&&(a=[]),(0,r.useEventListener)(e,(()=>"undefined"!=typeof window&&window),t,n,a)}},66354:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(95999),i=r.__importDefault(n(72389)),l=r.__importDefault(n(55211)),s=r.__importDefault(n(67080)),u=r.__importDefault(n(86010)),c=r.__importDefault(n(67294)),d=r.__importDefault(n(8633));t.Z=c.default.memo((function(e){let{className:t,buttonClassName:n,value:r,onChange:f}=e;const p=(0,i.default)(),h=(0,o.translate)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,o.translate)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,o.translate)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return c.default.createElement(a.IconButton,{className:(0,u.default)("clean-btn",d.default.toggle,t,!p&&d.default.toggleButtonDisabled,n),type:"button",onClick:()=>f("dark"===r?"light":"dark"),disabled:!p,title:h,"aria-label":h,"aria-live":"polite"},c.default.createElement(s.default,{className:(0,u.default)(d.default.toggleIcon,d.default.lightToggleIcon)}),c.default.createElement(l.default,{className:(0,u.default)(d.default.toggleIcon,d.default.darkToggleIcon)}))}))},52601:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(79762));t.Z=function(e){let{style:t,links:n,logo:r,copyright:s}=e;const[u,c]=(e=>{const t=[],n=[];for(const r of e)"title"in r&&"string"==typeof r.title&&r.title.startsWith("shared:")?n.push({...r,title:r.title.slice(7)}):t.push(r);return[t,n]})(n.props.links);return i.default.createElement("footer",{className:(0,o.default)("footer",{"footer--dark":"dark"===t})},i.default.createElement("div",{className:(0,o.default)("container","container-fluid",l.default.firstRow)},(r||s)&&i.default.createElement(i.default.Fragment,null,i.default.createElement("div",{className:"footer__bottom text--center"},r&&i.default.createElement("div",{className:"margin-bottom--sm"},r),s)),i.default.cloneElement(n,{links:u})),i.default.createElement("div",{className:(0,o.default)(l.default.secondRow)},i.default.createElement("span",{className:(0,o.default)("footer__bottom text--center")},"Built by"," ",i.default.createElement("a",{href:"https://free.technology/",target:"_blank",className:(0,o.default)(l.default.footerLink)},"IFT")),i.default.cloneElement(n,{links:c})),i.default.createElement(a.Button,{className:l.default.backToTop,size:"small",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},"Back to top \u2191"))}},90988:(e,t,n)=>{"use strict";const r=n(70655).__importDefault(n(67294)),a=n(82818),o=n(91338),i=(0,a.composeProviders)([o.AnnouncementBarProvider,o.ScrollControllerProvider,o.DocsPreferredVersionContextProvider,o.PluginHtmlClassNameProvider,o.NavbarProvider]);t.Z=function(e){let{children:t}=e;return r.default.createElement(i,null,t)}},16853:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(39960)),i=r.__importDefault(n(44996)),l=r.__importDefault(n(52263)),s=n(82818),u=r.__importDefault(n(16019));function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.default)(t.src),dark:(0,i.default)(t.srcDark||t.src)},l=a.default.createElement(u.default,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.default.createElement("div",{className:r},l):l}t.default=function(e){const{siteConfig:{title:t}}=(0,l.default)(),{navbar:{title:n,logo:r}}=(0,s.useThemeConfig)(),{imageClassName:u,titleClassName:d,...f}=e,p=(0,i.default)(r?.href||"/"),h=n?"":t,m=r?.alt??h;return a.default.createElement(o.default,{to:p,...f,...r?.target&&{target:r.target}},r&&a.default.createElement(c,{logo:r,alt:m,imageClassName:u}),null!=n&&a.default.createElement("b",{className:d},n))}},10428:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(2101)),s=r.__importDefault(n(29785)),u=r.__importDefault(n(29865)),c=r.__importDefault(n(4710)),d=r.__importDefault(n(33760)),f=r.__importDefault(n(86010)),p=r.__importDefault(n(67294)),h=n(96507),m=r.__importDefault(n(90826));function g(e){let{items:t}=e;return p.default.createElement(p.default.Fragment,null,t.map(((e,t)=>p.default.createElement(o.ErrorCauseBoundary,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},p.default.createElement(c.default,{...e})))))}t.Z=function(){const e=(0,h.useHydrated)(),t=(0,i.useNavbarMobileSidebar)(),n=(0,o.useThemeConfig)().navbar.items,[r,c]=(0,i.splitNavbarItems)(n.filter((e=>!["search"].includes(e.type??"")))),v=n.find((e=>"search"===e.type));return p.default.createElement("div",{className:"navbar__inner"},p.default.createElement("div",{className:"navbar__left"},p.default.createElement(s.default,null)),p.default.createElement("div",{className:"navbar__left-items"},p.default.createElement(g,{items:r})),p.default.createElement("div",{className:"navbar__right-items"},p.default.createElement(g,{items:c}),p.default.createElement(a.IconButtonGroup,{className:m.default.iconButtonGroup,size:"medium"},p.default.createElement(l.default,{key:"color-toggle",className:(0,f.default)(m.default.colorModeToggle,"navbar__color-mode-toggle")}),e&&p.default.createElement(p.default.Fragment,{key:"search"},v&&p.default.createElement(d.default,null)),p.default.createElement(p.default.Fragment,{key:"mobile-sidebar-toggle"},!t.disabled&&p.default.createElement(u.default,null)))))}},4818:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=n(82818),l=n(91338),s=n(95999),u=r.__importDefault(n(2203)),c=r.__importDefault(n(97087));function d(e){return a.default.createElement("div",{role:"presentation",...e,className:(0,o.default)("navbar-sidebar__backdrop",e.className)})}t.Z=function(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:r}}=(0,i.useThemeConfig)(),f=(0,l.useNavbarMobileSidebar)(),{navbarRef:p,isNavbarVisible:h}=(0,l.useHideableNavbar)(n);return a.default.createElement("nav",{ref:p,"aria-label":(0,s.translate)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.default)("navbar","navbar--fixed-top",n&&[c.default.navbarHideable,!h&&c.default.navbarHidden],{"navbar--dark":"dark"===r,"navbar--primary":"primary"===r,"navbar-sidebar--show":f.shown})},t,a.default.createElement(d,{onClick:f.toggle}),a.default.createElement(u.default,null))}},29785:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(16853));t.default=function(){return a.default.createElement(o.default,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}},42977:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=n(91338),i=n(95999),l=r.__importDefault(n(2101)),s=r.__importDefault(n(29785)),u=n(31665),c=r.__importDefault(n(33760));function d(){const e=(0,o.useNavbarMobileSidebar)();return a.default.createElement("button",{type:"button","aria-label":(0,i.translate)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},a.default.createElement(u.CloseIcon,null))}t.Z=function(){return a.default.createElement("div",{className:"navbar-sidebar__brand"},a.default.createElement(s.default,null),a.default.createElement(l.default,{className:"margin-right--md"}),a.default.createElement(c.default,null),a.default.createElement(d,null))}},82892:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=n(91338),l=r.__importDefault(n(88507));t.Z=function(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:s}=(0,i.useNavbarSecondaryMenu)();return a.default.createElement("div",{className:(0,o.default)("navbar-sidebar",s&&"navbar-sidebar--show-secondary")},t,a.default.createElement("div",{className:(0,o.default)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":s})},a.default.createElement("div",{className:"navbar-sidebar__item menu"},n,!s&&a.default.createElement(l.default,null)),a.default.createElement("div",{className:"navbar-sidebar__item menu"},r)))}},38732:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(95999)),s=n(78870),u=r.__importDefault(n(67294));function c(e){return u.default.createElement("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back"},u.default.createElement(s.IconArrowLeft,null),u.default.createElement(a.Typography,null,u.default.createElement(l.default,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"Back to main menu")))}t.Z=function(){const e=0===(0,o.useThemeConfig)().navbar.items.length,t=(0,i.useNavbarSecondaryMenu)();return u.default.createElement(u.default.Fragment,null,!e&&u.default.createElement(c,{onClick:()=>t.hide()}),t.content)}},27654:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(4710)),s=r.__importDefault(n(51125)),u=r.__importDefault(n(86010)),c=r.__importStar(n(67294)),d=r.__importDefault(n(83244));function f(e,t){return e.some((e=>function(e,t){return!!(0,i.isSamePath)(e.to,t)||!!(0,o.isRegexpStringMatch)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function p(e){let{items:t,position:n,className:r,onClick:o,...i}=e;const f=(0,c.useRef)(null),[p,h]=(0,c.useState)(!1);return(0,c.useEffect)((()=>{const e=e=>{f.current&&!f.current.contains(e.target)&&h(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[f]),c.default.createElement("div",{ref:f,className:(0,u.default)("navbar__item",d.default.dropdownNavbarItem,"dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":p})},c.default.createElement(s.default,{"aria-haspopup":"true","aria-expanded":p,role:"button",href:i.to?void 0:"#",className:(0,u.default)("navbar__link",r),...i,onClick:i.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),h(!p))}},i.children??i.label),c.default.createElement(a.ChevronDownIcon,{className:(0,u.default)("margin-left-8","cursor-pointer")}),c.default.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>c.default.createElement(l.default,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))))}function h(e){let{items:t,className:n,position:r,onClick:d,...p}=e;const h=(0,i.useLocalPathname)(),m=f(t,h),{collapsed:g,toggleCollapsed:v,setCollapsed:b}=(0,o.useCollapsible)({initialState:()=>!m});return(0,c.useEffect)((()=>{m&&b(!m)}),[h,m,b]),c.default.createElement("li",{className:(0,u.default)("menu__list-item",{"menu__list-item--collapsed":g})},c.default.createElement(s.default,{role:"button",className:(0,u.default)("menu__link menu__link--sublist menu__link--sublist-caret",n),...p,onClick:e=>{e.preventDefault(),v()}},c.default.createElement(a.Typography,{variant:"body1"},p.children??p.label)),c.default.createElement(o.Collapsible,{lazy:!0,as:"ul",className:"menu__list",collapsed:g},t.map(((e,t)=>c.default.createElement(l.default,{mobile:!0,isDropdownItem:!0,onClick:d,activeClassName:"menu__link--active",...e,key:t})))))}t.default=function(e){let{mobile:t=!1,...n}=e;const r=t?h:p;return c.default.createElement(r,{...n})}},12197:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(52263)),i=n(91338),l=n(95999),s=n(28143),u=r.__importDefault(n(27654));t.Z=function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,...c}=e;const{i18n:{currentLocale:d,locales:f,localeConfigs:p}}=(0,o.default)(),h=(0,i.useAlternatePageUtils)(),{search:m,hash:g}=(0,s.useLocation)(),v=[...n,...f.map((e=>{const n=`${`pathname://${h.createUrl({locale:e,fullyQualified:!1})}`}${m}${g}`;return{label:p[e]?.label,lang:p[e]?.htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===d?t?"menu__link--active":"dropdown__link--active":""}})),...r],b=t?(0,l.translate)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):p[d]?.label.substring(0,2).toUpperCase();return a.default.createElement(u.default,{...c,mobile:t,label:a.default.createElement(a.default.Fragment,null,b),items:v})}},51125:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=n(31665),o=r.__importDefault(n(13919)),i=r.__importDefault(n(39960)),l=n(82818),s=r.__importDefault(n(44996)),u=r.__importDefault(n(67294)),c=n(55061),d=r.__importDefault(n(88822));t.default=function(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:f,label:p,html:h,isDropdownLink:m,prependBaseUrlToHref:g,...v}=e;const b=(0,s.default)(r),y=(0,s.default)(t),w=(0,s.default)(f,{forcePrependBaseUrl:!0}),x=p&&f&&!(0,o.default)(f),k=h?{dangerouslySetInnerHTML:{__html:h}}:{children:u.default.createElement(a.Typography,{component:"div",variant:"body2",className:d.default.linkContent},p,x&&u.default.createElement(c.IconExternalLink,{className:d.default.externalLinkIcon}))};return f?u.default.createElement(i.default,{href:g?w:f,...v,...k}):u.default.createElement(i.default,{to:b,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,l.isRegexpStringMatch)(n,t.pathname):t.pathname.startsWith(y)},...v,...k})}},85140:(e,t,n)=>{"use strict";const r=n(70655),a=n(91338),o=r.__importDefault(n(67294)),i=n(19843),l=n(27967),s=n(54400),u=r.__importDefault(n(36459));t.Z=function(e){let{children:t}=e;const n=(0,s.useDocThemeOptions)(),r=n?.sidebar?.hide;return o.default.createElement(a.ColorModeProvider,null,o.default.createElement(l.ThemeProvider,null,o.default.createElement(i.LightBoxProvider,null,o.default.createElement("div",{className:u.default.root,"data-hidden-doc-sidebar":r},t))))}},7020:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchBar=void 0;const r=n(70655),a=n(31665),o=r.__importStar(n(67294)),i=n(40466),l=n(81803),s=n(521),u=n(71044),c=r.__importDefault(n(31259)),d=n(19323),f=n(72997),p=n(43110);t.SearchBar=e=>{let{}=e;const t=(0,l.usePersistedHistory)("search",{unique:!0,equals:(e,t)=>e.title===t.title&&e.href===t.href,maxItems:10}),n=(0,u.useSearch)(),r=(0,o.useRef)(null),[h,m]=(0,o.useState)(""),[g,v]=(0,o.useState)([]),[b,y]=(0,o.useState)(!1);(0,o.useEffect)((()=>{h.length>0?(async e=>{const{results:t}=await n.query(e);v(t)})(h):v([])}),[h]),(0,o.useEffect)((()=>{b?(()=>{const e=r.current;if(!e)return;const t=e.querySelector("input");t&&setTimeout((()=>{t.focus()}),50)})():m("")}),[b]);return(0,s.useWindowEventListener)("keydown",(e=>{(e.ctrlKey||e.metaKey)&&"KeyK"===e.code&&(e.preventDefault(),y(!0))}),{},[]),o.default.createElement(o.default.Fragment,null,o.default.createElement(a.IconButton,{onClick:()=>y(!0),size:"medium"},o.default.createElement(a.SearchIcon,null)),o.default.createElement(i.Modal,{keepMounted:!0,id:"search-modal",open:b,onClose:()=>y(!1),className:c.default.modal},o.default.createElement("div",{className:c.default.header},o.default.createElement(f.SearchInput,{containerRef:r,onClear:()=>{m("")},value:h,onChange:e=>{m(e.target.value)}}),o.default.createElement(a.IconButton,{className:c.default.closeButton,size:"medium",onClick:()=>y(!1)},o.default.createElement(a.CloseIcon,{color:"primary"}))),h.length>0&&o.default.createElement(p.SearchResults,{results:g,onNavigate:(e,n)=>{e.preventDefault(),y(!1),t.add(n),window.location.href=n.href}}),0===h.length&&o.default.createElement(d.SearchHistory,{history:t.list??[],onRemove:t.removeByIndex,onClose:()=>y(!1)})))}},19323:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchHistory=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=n(55061),s=n(33493),u=r.__importDefault(n(61699));t.SearchHistory=e=>{let{history:t=[],onRemove:n,onClose:r,className:c,children:d,...f}=e;return i.default.createElement("div",{className:(0,o.default)(c,u.default.root,0===t.length&&u.default.empty),...f},0===t.length?i.default.createElement(s.SearchResultMessage,null,"No recent searches"):i.default.createElement(i.default.Fragment,null,i.default.createElement(a.Typography,{className:u.default.title,variant:"subtitle2",component:"div"},"Recent"),t.map(((e,t)=>i.default.createElement("div",{key:t,className:u.default.item},i.default.createElement(l.IconHistory,null),i.default.createElement(a.Typography,{variant:"subtitle2",component:"a",href:e.href,className:u.default.itemTitle,dangerouslySetInnerHTML:{__html:e.title},onClick:()=>r&&r()}),i.default.createElement("button",{className:"clean-btn",onClick:()=>n(t)},i.default.createElement(l.IconClose,null)))))))}},72997:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchInput=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=n(89164),s=r.__importDefault(n(9592));t.SearchInput=e=>{let{value:t="",active:n,onChange:r,onClear:u,onFocus:c,onCancel:d,className:f,inputProps:{ref:p,...h}={placeholder:""},containerRef:m,...g}=e;const v=(0,l.useMedia)("(max-width: 996px)"),b=n||t?.length>0;return i.default.createElement("div",{ref:m,className:(0,o.default)(s.default.root,b&&s.default.expanded,f),onKeyDown:e=>{"Escape"===e.code&&t.length>0&&(e.stopPropagation(),u&&u())},...g},i.default.createElement(a.TextField,{className:s.default.textField,value:t,placeholder:b||v?h.placeholder:"",onChange:r,onFocus:e=>{c&&c()},clearButton:!0,icon:i.default.createElement(a.SearchIcon,{color:"primary"}),...h}))}},49067:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultGroup=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(1443));t.SearchResultGroup=e=>{let{className:t,title:n="",children:r,...s}=e;return i.default.createElement("div",{className:(0,o.default)(l.default.root,t),...s},i.default.createElement("div",null,i.default.createElement(a.Typography,{variant:"subtitle2"},n)),i.default.createElement("ul",null,r))}},38594:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(49067),t)},51105:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultItem=void 0;const r=n(70655),a=r.__importDefault(n(39960)),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(7744)),s=r.__importDefault(n(42924)),u=n(95571),c=n(36301),d=r.__importDefault(n(18589)),f={[c.SearchDocumentType.Title]:i.default.createElement(l.default,{className:(0,o.default)(d.default.icon,d.default.fill)}),[c.SearchDocumentType.Heading]:i.default.createElement(s.default,{className:(0,o.default)(d.default.icon,d.default.fill)}),[c.SearchDocumentType.Paragraph]:i.default.createElement(s.default,{className:(0,o.default)(d.default.icon,d.default.fill)})};t.SearchResultItem=e=>{let{type:t,level:n=0,href:r,title:l,content:s,className:c,linkProps:{className:p,...h}={},...m}=e;const g=f[t];return i.default.createElement(a.default,{href:r,className:(0,o.default)(d.default.root,d.default[`level${n}`],p),...h},i.default.createElement(u.SearchResultItemBase,{title:l,content:s,icon:g,...m}))}},13383:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(51105),t)},86704:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultItemBase=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(86620));t.SearchResultItemBase=e=>{let{icon:t,title:n,content:r,className:s,...u}=e;return i.default.createElement("li",{className:(0,o.default)(l.default.root,s),...u},i.default.createElement("span",null,t),i.default.createElement("div",null,n&&i.default.createElement(a.Typography,{variant:"subtitle2",component:"span",dangerouslySetInnerHTML:{__html:n}})))}},95571:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(86704),t)},33493:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultMessage=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(38076));t.SearchResultMessage=e=>{let{className:t,children:n,...r}=e;return i.default.createElement(a.Typography,{className:(0,o.default)(t,l.default.root),variant:"subtitle2",component:"div",...r},i.default.createElement("span",null,n))}},43110:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResults=void 0;const r=n(70655),a=r.__importDefault(n(86010)),o=r.__importStar(n(67294)),i=n(38594),l=n(13383),s=n(33493),u=n(81104),c=r.__importDefault(n(20550));t.SearchResults=e=>{let{results:t,className:n,onNavigate:r,...d}=e;const f=t.length,p=(0,o.useMemo)((()=>(0,u.groupSearchResult)(t)),[t]);return o.default.createElement("div",{className:(0,a.default)(c.default.root,0===f&&c.default.noResults)},0===f&&o.default.createElement(s.SearchResultMessage,null,"No result."),o.default.createElement("div",{className:(0,a.default)(c.default.groups)},p.map(((e,t)=>{let[n,a]=e;return o.default.createElement(o.default.Fragment,{key:t},o.default.createElement(i.SearchResultGroup,{className:c.default.group,title:n},a.map(((e,t)=>o.default.createElement(l.SearchResultItem,{key:t,type:e.type,level:e.level,href:e.href,title:e.title,content:e.content,linkProps:r?{onClick:t=>r(t,e)}:{}})))))}))))}},71044:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useSearch=void 0;const r=n(67294),a=n(36043);t.useSearch=()=>{const{createSearchInstance:e}=window,t=(0,a.useSearchContextPath)(),[n,o]=(0,r.useState)(!1),i=(0,r.useRef)(null);return(0,r.useEffect)((()=>{o(!1),(async()=>{i.current=await e({resultsLimit:50,preferredVersionPath:t[0],searchContextByPaths:t[1]}),await i.current.init(),o(!0)})()}),[t[0],t[1]]),{loaded:n,query:async e=>await i.current.query(e)}}},36043:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useSearchContextPath=void 0;const r=n(80143),a=n(28097),o=()=>window.getProxiedGeneratedData().searchContextByPaths;t.useSearchContextPath=()=>{const e=o(),t=(0,r.useActivePluginAndVersion)();if(!t)return["/",""];const{activePlugin:{pluginData:{path:n}},activeVersion:i}=t;return i?[n!==i.path?(0,a.ensureTrailingSlash)(i.path):"/",e]:["/",""]}},33760:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(44763)),o=r.__importDefault(n(67294)),i=n(7020);t.default=()=>"undefined"==typeof window?o.default.createElement(o.default.Fragment,null):o.default.createElement(a.default,{fallback:()=>o.default.createElement(o.default.Fragment,null)},o.default.createElement(i.SearchBar,null))},36301:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchDocumentType=void 0,function(e){e.Title="title",e.Heading="heading",e.Paragraph="paragraph"}(t.SearchDocumentType||(t.SearchDocumentType={}))},81104:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.groupSearchResult=void 0;const r=n(70655),a=r.__importDefault(n(7739)),o=r.__importDefault(n(57557)),i=n(36301);t.groupSearchResult=e=>Object.entries((0,a.default)(e.map((e=>(e=>{const{type:t,document:n,page:r,highlighted:a,score:o}=e,{url:l,hash:s=""}=n,u=l+s;switch(t){case i.SearchDocumentType.Title:return{type:t,level:0,url:l,hash:s,href:u,score:o,title:a,content:"",category:n.breadcrumb?.[1]??n.title};case i.SearchDocumentType.Heading:{const e=r;return{type:t,level:1,url:l,hash:s,href:u,score:o,title:a,content:"",category:e?.breadcrumb?.[1]??e?.title??""}}case i.SearchDocumentType.Paragraph:{const e=r;return{type:t,level:2,url:l,hash:s,href:u,score:o,title:n.sectionTitle||n.title||"",content:a,category:e?.breadcrumb?.[1]??e?.title??""}}}})(e))),"category")).map((e=>{let[t,n]=e;return[t,n.map((e=>(0,o.default)(e,"category"))).sort(((e,t)=>e.score>t.score?-1:1))]})).sort(((e,t)=>(e[1][0]?.score??0)>(t[1][0]?.score??0)?-1:1)).map((e=>{let[t,n]=e;return[t,Object.entries((0,a.default)(n,"url")).map((e=>{let[t,n]=e,r=[...n].sort(((e,t)=>e.type===i.SearchDocumentType.Title||e.score>t.score?-1:1));const a=r[0]?.type===i.SearchDocumentType.Title;return r=a?r.filter((e=>!(e.type===i.SearchDocumentType.Heading&&""===e.hash))):r,r=r.map(((e,t)=>({...e,level:a?0===t?0:1:0}))),[t,r]})).sort(((e,t)=>(e[1][0]?.score??0)>(t[1][0]?.score??0)?-1:1)).flatMap((e=>{let[t,n]=e;return n}))]}))},16019:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=r.__importDefault(n(72389)),l=n(82818),s=r.__importDefault(n(65787));t.default=function(e){const t=(0,i.default)(),{colorMode:n}=(0,l.useColorMode)(),{sources:r,className:u,alt:c,...d}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.default.createElement(a.default.Fragment,null,f.map((e=>a.default.createElement("img",{key:e,src:r[e],alt:c,className:(0,o.default)(s.default.themedImage,s.default[`themedImage--${e}`],u),...d}))))}},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(67294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},91091:(e,t,n)=>{"use strict";var r=n(67294),a=n(73935),o=n(73727),i=n(70405),l=n(10412);const s=[n(85711),n(32497),n(3310),n(18320),n(11057),n(93878),n(26724)];var u=n(723),c=n(16550),d=n(18790),f=n(85140),p=n(87462),h=n(35742),m=n(52263),g=n(44996),v=n(86668),b=n(10833),y=n(94711),w=n(19727),x=n(43320),k=n(90197);function _(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,m.default)(),n=(0,y.l)();return r.createElement(h.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.default)(),a=function(){const{siteConfig:{url:e}}=(0,m.default)(),{pathname:t}=(0,c.TH)();return e+(0,g.default)(t)}(),o=t?`${n}${t}`:a;return r.createElement(h.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function S(){const{i18n:{currentLocale:e}}=(0,m.default)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(h.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(b.d,{image:n}),r.createElement(E,null),r.createElement(_,null),r.createElement(k.Z,{tag:x.HX,locale:e}),r.createElement(h.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var O=n(98934),D=n(58940);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const N=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),P("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function I(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class A extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.default.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),I(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(N,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const L=A,R="__docusaurus-base-url-issue-banner-container",j="__docusaurus-base-url-issue-banner",M="__docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${R}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.default.canUseDOM&&r.createElement(h.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:R}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,m.default)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,m.default)(),i=(0,g.default)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(h.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var H=n(44763);function V(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(H.default,null,r.createElement(D.M,null,r.createElement(O.t,null,r.createElement(f.Z,null,r.createElement(U,null),r.createElement(S,null),r.createElement($,null),r.createElement(L,{location:T(t)},e)))))}var q=n(16887);const W=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var G=n(99670);const Z=new Set,Q=new Set,Y=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,X={prefetch(e){if(!(e=>!Y()&&!Q.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,G.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?W(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!Y()&&!Q.has(e))(e)&&(Q.add(e),I(e))},K=Object.freeze(X);if(l.default.canUseDOM){window.docusaurus=K;const e=a.hydrate;I(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(V,null))),document.getElementById("__docusaurus"))}))}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(67294),a=n(36809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"guides/getting-started","docs":[{"id":"guides/getting-started","path":"/","sidebar":"guides"},{"id":"guides/js-waku/configure-discovery","path":"/guides/js-waku/configure-discovery","sidebar":"guides"},{"id":"guides/js-waku/debug-waku-dapp","path":"/guides/js-waku/debug-waku-dapp","sidebar":"guides"},{"id":"guides/js-waku/faq","path":"/guides/js-waku/faq","sidebar":"guides"},{"id":"guides/js-waku/index","path":"/guides/js-waku/","sidebar":"guides"},{"id":"guides/js-waku/light-send-receive","path":"/guides/js-waku/light-send-receive","sidebar":"guides"},{"id":"guides/js-waku/manage-filter","path":"/guides/js-waku/manage-filter","sidebar":"guides"},{"id":"guides/js-waku/message-encryption","path":"/guides/js-waku/message-encryption","sidebar":"guides"},{"id":"guides/js-waku/run-waku-nodejs","path":"/guides/js-waku/run-waku-nodejs","sidebar":"guides"},{"id":"guides/js-waku/store-retrieve-messages","path":"/guides/js-waku/store-retrieve-messages","sidebar":"guides"},{"id":"guides/js-waku/use-waku-create-app","path":"/guides/js-waku/use-waku-create-app","sidebar":"guides"},{"id":"guides/js-waku/use-waku-react","path":"/guides/js-waku/use-waku-react","sidebar":"guides"},{"id":"guides/nwaku/build-source","path":"/guides/nwaku/build-source","sidebar":"guides"},{"id":"guides/nwaku/config-methods","path":"/guides/nwaku/config-methods","sidebar":"guides"},{"id":"guides/nwaku/config-options","path":"/guides/nwaku/config-options","sidebar":"guides"},{"id":"guides/nwaku/configure-discovery","path":"/guides/nwaku/configure-discovery","sidebar":"guides"},{"id":"guides/nwaku/configure-nwaku","path":"/guides/nwaku/configure-nwaku","sidebar":"guides"},{"id":"guides/nwaku/faq","path":"/guides/nwaku/faq","sidebar":"guides"},{"id":"guides/nwaku/find-node-address","path":"/guides/nwaku/find-node-address","sidebar":"guides"},{"id":"guides/nwaku/run-docker","path":"/guides/nwaku/run-docker","sidebar":"guides"},{"id":"guides/nwaku/run-docker-compose","path":"/guides/nwaku/run-docker-compose","sidebar":"guides"},{"id":"guides/nwaku/run-node","path":"/guides/nwaku/run-node","sidebar":"guides"},{"id":"guides/nwaku/upgrade-instructions","path":"/guides/nwaku/upgrade-instructions","sidebar":"guides"},{"id":"learn/concepts/content-topics","path":"/learn/concepts/content-topics","sidebar":"learn"},{"id":"learn/concepts/discv5","path":"/learn/concepts/discv5","sidebar":"learn"},{"id":"learn/concepts/dns-discovery","path":"/learn/concepts/dns-discovery","sidebar":"learn"},{"id":"learn/concepts/network-domains","path":"/learn/concepts/network-domains","sidebar":"learn"},{"id":"learn/concepts/peer-discovery","path":"/learn/concepts/peer-discovery","sidebar":"learn"},{"id":"learn/concepts/peer-exchange","path":"/learn/concepts/peer-exchange","sidebar":"learn"},{"id":"learn/concepts/protocols","path":"/learn/concepts/protocols","sidebar":"learn"},{"id":"learn/concepts/static-peers","path":"/learn/concepts/static-peers","sidebar":"learn"},{"id":"learn/concepts/transports","path":"/learn/concepts/transports","sidebar":"learn"},{"id":"learn/faq","path":"/learn/faq","sidebar":"learn"},{"id":"learn/glossary","path":"/learn/glossary","sidebar":"learn"},{"id":"learn/research","path":"/learn/research","sidebar":"learn"},{"id":"learn/security-features","path":"/learn/security-features","sidebar":"learn"},{"id":"learn/waku-network","path":"/learn/waku-network","sidebar":"learn"},{"id":"learn/waku-vs-libp2p","path":"/learn/waku-vs-libp2p","sidebar":"learn"},{"id":"migrations/js-waku/migration_v0.026_0.027","path":"/migrations/js-waku/migration_v0.026_0.027"},{"id":"privacy-policy","path":"/privacy-policy"},{"id":"research/benchmarks/postgres-adoption","path":"/research/benchmarks/postgres-adoption","sidebar":"research"},{"id":"research/index","path":"/research/","sidebar":"research"},{"id":"research/research-and-studies/capped-bandwidth","path":"/research/research-and-studies/capped-bandwidth","sidebar":"research"},{"id":"research/research-and-studies/incentivisation","path":"/research/research-and-studies/incentivisation","sidebar":"research"},{"id":"research/research-and-studies/maximum-bandwidth","path":"/research/research-and-studies/maximum-bandwidth","sidebar":"research"},{"id":"research/research-and-studies/message-propagation","path":"/research/research-and-studies/message-propagation","sidebar":"research"},{"id":"research/research-and-studies/rln-key-benchmarks","path":"/research/research-and-studies/rln-key-benchmarks","sidebar":"research"},{"id":"rules-of-engagement","path":"/rules-of-engagement"},{"id":"security","path":"/security"},{"id":"terms","path":"/terms"}],"draftIds":[],"sidebars":{"guides":{"link":{"path":"/","label":"guides/getting-started"}},"learn":{"link":{"path":"/learn/waku-network","label":"learn/waku-network"}},"research":{"link":{"path":"/research/","label":"research/index"}}}}],"breadcrumbs":false}}}'),i=JSON.parse('{"defaultLocale":"en-GB","locales":["en-GB"],"path":"i18n","currentLocale":"en-GB","localeConfigs":{"en-GB":{"label":"British English","direction":"ltr","htmlLang":"en-GB","calendar":"gregory","path":"en-GB"}}}');var l=n(57529);const s=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.3"},"logos-docusaurus-search-local":{"type":"package","name":"@acid-info/logos-docusaurus-search-local","version":"1.0.0-alpha.111"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"2.4.1"},"logos-docusaurus-theme":{"type":"package","name":"@acid-info/logos-docusaurus-theme","version":"1.0.0-alpha.143"},"docusaurus-fathom":{"type":"package","name":"@acid-info/docusaurus-fathom","version":"1.0.0-alpha.111"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},44763:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var r=n(67294),a=n(10412),o=n(35742),i=n(18780),l=n(59351);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.default,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.default.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(70405);function o(e){return r.createElement(a.ql,e)}},39960:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(87462),a=n(67294),o=n(73727),i=n(18780),l=n(52263),s=n(13919),u=n(10412);const c=a.createContext({collectLink:()=>{}});var d=n(44996);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:h,isActive:m,"data-noBrokenLinkCheck":g,autoAddBaseUrl:v=!0,...b}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.default)(),{withBaseUrl:x}=(0,d.useBaseUrlUtils)(),k=(0,a.useContext)(c),_=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>_.current));const E=f||p;const S=(0,s.default)(E),C=E?.replace("pathname://","");let T=void 0!==C?(O=C,v&&(e=>e.startsWith("/"))(O)?x(O):O):void 0;var O;T&&S&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const D=(0,a.useRef)(!1),P=n?o.OL:o.rU,N=u.default.canUseIntersectionObserver,I=(0,a.useRef)(),A=()=>{D.current||null==T||(window.docusaurus.preload(T),D.current=!0)};(0,a.useEffect)((()=>(!N&&S&&null!=T&&window.docusaurus.prefetch(T),()=>{N&&I.current&&I.current.disconnect()})),[I,T,N,S]);const L=T?.startsWith("#")??!1,R=!T||!S||L;return R||g||k.collectLink(T),R?a.createElement("a",(0,r.Z)({ref:_,href:T},E&&!S&&{target:"_blank",rel:"noopener noreferrer"},b)):a.createElement(P,(0,r.Z)({},b,{onMouseEnter:A,onTouchStart:A,innerRef:e=>{_.current=e,N&&e&&S&&(I.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(I.current.unobserve(e),I.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),I.current.observe(e))},to:T},n&&{isActive:m,activeClassName:h}))}const p=a.forwardRef(f)},95999:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s,translate:()=>l});var r=n(67294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(57529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},13919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.r(t),n.d(t,{default:()=>a,hasProtocol:()=>r})},28143:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Redirect:()=>r.l_,matchPath:()=>r.LX,useHistory:()=>r.k6,useLocation:()=>r.TH});var r=n(16550)},44996:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l,useBaseUrlUtils:()=>i});var r=n(67294),a=n(52263),o=n(13919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.default)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.hasProtocol)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},52263:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294),a=n(58940);function o(){return(0,r.useContext)(a._)}},72389:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294),a=n(98934);function o(){return(0,r.useContext)(a._)}},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(67294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},80143:(e,t,n)=>{"use strict";n.r(t),n.d(t,{useActiveDocContext:()=>b,useActivePlugin:()=>p,useActivePluginAndVersion:()=>h,useActiveVersion:()=>v,useAllDocsData:()=>d,useDocVersionSuggestions:()=>y,useDocsData:()=>f,useLatestVersion:()=>g,useVersions:()=>m});var r=n(16550),a=n(52263),o=n(29935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.default)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function u(e,t){const n=s(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const c={},d=()=>i("docusaurus-plugin-content-docs")??c,f=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function h(e){void 0===e&&(e={});const t=p(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function m(e){return f(e).versions}function g(e){const t=f(e);return l(t)}function v(e){const t=f(e),{pathname:n}=(0,r.TH)();return s(t,n)}function b(e){const t=f(e),{pathname:n}=(0,r.TH)();return u(t,n)}function y(e){const t=f(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:u(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(74865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(87410),a=n(36809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},88507:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>T});var r=n(67294),a=n(86668),o=n(42489),i=n(87462),l=n(39960),s=n(44996),u=n(13919),c=n(39471);function d(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:d,...f}=t,p=(0,s.default)(n),h=(0,s.default)(a,{forcePrependBaseUrl:!0});return r.createElement(l.default,(0,i.Z)({className:"footer__link-item"},a?{href:d?h:a}:{to:p},f),o,a&&!(0,u.default)(a)&&r.createElement(c.Z,null))}function f(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(d,{item:t}))}function p(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(f,{key:t,item:e})))))}function h(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(p,{key:t,column:e}))))}function m(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function g(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(d,{item:t})}function v(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(g,{item:e}),t.length!==n+1&&r.createElement(m,null))))))}function b(e){let{links:t}=e;return(0,o.a)(t)?r.createElement(h,{columns:t}):r.createElement(v,{links:t})}var y=n(86010),w=n(16019);const x={footerLogoLink:"footerLogoLink_BH7S"};function k(e){let{logo:t}=e;const{withBaseUrl:n}=(0,s.useBaseUrlUtils)(),a={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(w.default,{className:(0,y.default)("footer__logo",t.className),alt:t.alt,sources:a,width:t.width,height:t.height,style:t.style})}function _(e){let{logo:t}=e;return t.href?r.createElement(l.default,{href:t.href,className:x.footerLogoLink,target:t.target},r.createElement(k,{logo:t})):r.createElement(k,{logo:t})}function E(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}var S=n(52601);function C(){const{footer:e}=(0,a.L)();if(!e)return null;const{copyright:t,links:n,logo:o,style:i}=e;return r.createElement(S.Z,{style:i,links:n&&n.length>0&&r.createElement(b,{links:n}),logo:o&&r.createElement(_,{logo:o}),copyright:t&&r.createElement(E,{copyright:t})})}const T=r.memo(C)},55211:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(87462),a=n(67294);function o(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},67080:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(87462),a=n(67294);function o(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}},59351:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>N});var r=n(67294),a=n(86010),o=n(44763),i=n(10833),l=n(55225),s=n(35281),u=n(19727);const c={skipToContent:"skipToContent_fXgn"};function d(){return r.createElement(l.l,{className:c.skipToContent})}var f=n(86668),p=n(59689),h=n(87462),m=n(95999);function g(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...l}=e;return r.createElement("svg",(0,h.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const v={closeButton:"closeButton_CVFx"};function b(e){return r.createElement("button",(0,h.Z)({type:"button","aria-label":(0,m.translate)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.default)("clean-btn close",v.closeButton,e.className)}),r.createElement(g,{width:14,height:14,strokeWidth:3.1}))}const y={content:"content_knG7"};function w(e){const{announcementBar:t}=(0,f.L)(),{content:n}=t;return r.createElement("div",(0,h.Z)({},e,{className:(0,a.default)(y.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const x={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function k(){const{announcementBar:e}=(0,f.L)(),{isActive:t,close:n}=(0,p.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:x.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:x.announcementBarPlaceholder}),r.createElement(w,{className:x.announcementBarContent}),i&&r.createElement(b,{onClick:n,className:x.announcementBarClose}))}var _=n(4818),E=n(10428);function S(){return r.createElement(_.Z,null,r.createElement(E.Z,null))}var C=n(88507),T=n(90988),O=n(69690);function D(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(m.default,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(O.Cw,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(O.aG,{error:t})))))}const P={mainWrapper:"mainWrapper_z2l0"};function N(e){const{children:t,noFooter:n,wrapperClassName:c,title:f,description:p}=e;return(0,u.t)(),r.createElement(T.Z,null,r.createElement(i.d,{title:f,description:p}),r.createElement(d,null),r.createElement(k,null),r.createElement(S,null),r.createElement("div",{id:l.u,className:(0,a.default)(s.k.wrapper.main,P.mainWrapper,c)},r.createElement(o.default,{fallback:e=>r.createElement(D,e)},t)),!n&&r.createElement(C.default,null))}},2101:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),a=n(86668),o=n(92949),i=n(66354);const l={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function s(e){let{className:t}=e;const n=(0,a.L)().navbar.style,s=(0,a.L)().colorMode.disableSwitch,{colorMode:u,setColorMode:c}=(0,o.I)();return s?null:r.createElement(i.Z,{className:t,buttonClassName:"dark"===n?l.darkNavbarColorModeToggle:void 0,value:u,onChange:c})}},29865:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),a=n(93163),o=n(95999),i=n(87462);function l(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,i.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function s(){const{toggle:e,shown:t}=(0,a.e)();return r.createElement("button",{onClick:e,"aria-label":(0,o.translate)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(l,null))}},2203:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(67294),a=n(93163),o=n(69800),i=n(82892),l=n(42977),s=n(87462),u=n(86668),c=n(4710);function d(){const e=(0,a.e)(),t=(0,u.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(c.default,(0,s.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}var f=n(38732);function p(){const e=(0,a.e)();return(0,o.N)(e.shown),e.shouldRender?r.createElement(i.Z,{header:r.createElement(l.Z,null),primaryMenu:r.createElement(d,null),secondaryMenu:r.createElement(f.Z,null)}):null}},4710:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>k});var r=n(67294),a=n(87462),o=n(86010),i=n(51125);function l(e){let{className:t,isDropdownItem:n=!1,...l}=e;const s=r.createElement(i.default,(0,a.Z)({className:(0,o.default)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},l));return n?r.createElement("li",null,s):s}function s(e){let{className:t,isDropdownItem:n,...l}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(i.default,(0,a.Z)({className:(0,o.default)("menu__link",t)},l)))}function u(e){let{mobile:t=!1,position:n,...o}=e;const i=t?s:l;return r.createElement(i,(0,a.Z)({},o,{activeClassName:o.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var c=n(27654),d=n(12197),f=n(33760);const p={searchBox:"searchBox_ZlJk"};function h(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,o.default)(n,p.searchBox)},t)}var m=n(80143),g=n(53438);var v=n(60373),b=n(95999),y=n(16550);const w=e=>e.docs.find((t=>t.id===e.mainDocId));const x={default:u,localeDropdown:d.Z,search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(h,{className:n},r.createElement(f.default,null))},dropdown:c.default,html:function(e){let{value:t,className:n,mobile:a=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,o.default)({navbar__item:!a&&!i,"menu__list-item":a},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:o,...i}=e;const{activeDoc:l}=(0,m.useActiveDocContext)(o),s=(0,g.vY)(t,o);return null===s?null:r.createElement(u,(0,a.Z)({exact:!0},i,{isActive:()=>l?.path===s.path||!!l?.sidebar&&l.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:o,...i}=e;const{activeDoc:l}=(0,m.useActiveDocContext)(o),s=(0,g.oz)(t,o).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(u,(0,a.Z)({exact:!0},i,{isActive:()=>l?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:o,...i}=e;const l=(0,g.lO)(o)[0],s=t??l.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(l).path;return r.createElement(u,(0,a.Z)({},i,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:o,dropdownItemsBefore:i,dropdownItemsAfter:l,...s}=e;const{search:d,hash:f}=(0,y.TH)(),p=(0,m.useActiveDocContext)(n),h=(0,m.useVersions)(n),{savePreferredVersionName:x}=(0,v.J)(n),k=[...i,...h.map((e=>{const t=p.alternateDocVersions[e.name]??w(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>x(e.name)}})),...l],_=(0,g.lO)(n)[0],E=t&&k.length>1?(0,b.translate)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):_.label,S=t&&k.length>1?void 0:w(_).path;return k.length<=1?r.createElement(u,(0,a.Z)({},s,{mobile:t,label:E,to:S,isActive:o?()=>!1:void 0})):r.createElement(c.default,(0,a.Z)({},s,{mobile:t,label:E,to:S,items:k,isActive:o?()=>!1:void 0}))}};function k(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=x[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(35742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>p});var r=n(67294),a=n(72389),o=n(50012),i=n(902),l=n(86668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.default)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>m});var r=n(67294),a=n(10412),o=n(902),i=n(50012),l=n(86668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.default.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{c.set(f(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},65130:(e,t,n)=>{"use strict";n.d(t,{b:()=>i,k:()=>l});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,content:n}=e;const a=function(e){return(0,r.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return r.createElement(o.Provider,{value:a},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocProvider");return e}},14353:(e,t,n)=>{"use strict";n.d(t,{D:()=>l,f:()=>s});var r=n(67294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t}=e;const[n,a]=(0,r.useState)(null),o=(0,r.useMemo)((()=>({expandedItem:n,setExpandedItem:a})),[n]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocSidebarItemsExpandedStateProvider");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>b,L5:()=>g,Oh:()=>y});var r=n(67294),a=n(80143),o=n(29935),i=n(86668),l=n(53438),s=n(902),u=n(50012);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function h(){const e=(0,a.useAllDocsData)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=h();return r.createElement(p.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(m,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=o.m);const t=(0,a.useDocsData)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function y(){const e=(0,a.useAllDocsData)(),[t]=v();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(67294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},93163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>f});var r=n(67294),a=n(13102),o=n(87524),i=n(91980),l=n(86668),s=n(902);const u=r.createContext(void 0);function c(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function d(e){let{children:t}=e;const n=c();return r.createElement(u.Provider,{value:n},t)}function f(){const e=r.useContext(u);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},2730:(e,t,n)=>{"use strict";n.d(t,{a:()=>i});var r=n(67294),a=n(12466),o=n(85936);function i(e){let{threshold:t}=e;const[n,i]=(0,r.useState)(!1),l=(0,r.useRef)(!1),{startScroll:s,cancelScroll:u}=(0,a.Ct)();return(0,a.RF)(((e,n)=>{let{scrollY:r}=e;const a=n?.scrollY;a&&(l.current?l.current=!1:r>=a?(u(),i(!1)):r{e.location.hash&&(l.current=!0,i(!1))})),{shown:n,scrollToTop:()=>s(0)}}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(67294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},69800:(e,t,n)=>{"use strict";n.d(t,{N:()=>a});var r=n(67294);function a(e){void 0===e&&(e=!0),(0,r.useEffect)((()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[e])}},66412:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(92949),a=n(86668);function o(){const{prism:e}=(0,a.L)(),{colorMode:t}=(0,r.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}},96841:(e,t,n)=>{"use strict";n.d(t,{S:()=>s});var r=n(67294),a=n(86668);function o(e){const t=e.getBoundingClientRect();return t.top===t.bottom?o(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const r=e.find((e=>o(e).top>=n));if(r){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function s(e){const t=(0,r.useRef)(void 0),n=l();(0,r.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:r,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:l}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(r),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const r=[];for(let a=t;a<=n;a+=1)r.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:o,maxHeadingLevel:l}),u=i(s,{anchorTopOffset:n.current}),c=e.find((e=>u&&u.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===c)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(67294),a=n(10412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.default.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},82818:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Collapsible:()=>C,ErrorBoundaryError:()=>G.aG,ErrorBoundaryTryAgainButton:()=>G.Cw,ErrorCauseBoundary:()=>G.QW,HtmlClassNameProvider:()=>D.FG,NavbarSecondaryMenuFiller:()=>N.Zo,PageMetadata:()=>D.d,ReactContextError:()=>O.i6,SkipToContentFallbackId:()=>W.u,SkipToContentLink:()=>W.l,ThemeClassNames:()=>T.k,composeProviders:()=>O.Qc,createStorageSlot:()=>a.WA,duplicates:()=>U.l,filterDocCardListItems:()=>i.MN,isMultiColumnFooterLinks:()=>z.a,isRegexpStringMatch:()=>$,listStorageKeys:()=>a._f,listTagsByLetters:()=>R,prefersReducedMotion:()=>g.n,processAdmonitionProps:()=>q,translateTagsPageTitle:()=>L,uniq:()=>U.j,useCollapsible:()=>b,useColorMode:()=>P.I,useContextualSearchFilters:()=>o._q,useCurrentSidebarCategory:()=>i.jA,useDocsPreferredVersion:()=>V.J,useEvent:()=>O.zX,useIsomorphicLayoutEffect:()=>O.LI,usePluralForm:()=>p,usePrevious:()=>O.D9,usePrismTheme:()=>H.p,useSearchLinkCreator:()=>B,useSearchQueryString:()=>F,useStorageSlot:()=>a.Nk,useThemeConfig:()=>r.L,useWindowSize:()=>I.i});var r=n(86668),a=n(50012),o=n(43320),i=n(53438),l=n(67294),s=n(52263);const u=["zero","one","two","few","many","other"];function c(e){return u.filter((t=>e.includes(t)))}const d={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function f(){const{i18n:{currentLocale:e}}=(0,s.default)();return(0,l.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),d}}),[e])}function p(){const e=f();return{selectMessage:(t,n)=>function(e,t,n){const r=e.split("|");if(1===r.length)return r[0];r.length>n.pluralForms.length&&console.error(`For locale=${n.locale}, a maximum of ${n.pluralForms.length} plural forms are expected (${n.pluralForms.join(",")}), but the message contains ${r.length}: ${e}`);const a=n.select(t),o=n.pluralForms.indexOf(a);return r[Math.min(o,r.length-1)]}(n,t,e)}}var h=n(87462),m=n(10412),g=n(91442);const v="ease-in-out";function b(e){let{initialState:t}=e;const[n,r]=(0,l.useState)(t??!1),a=(0,l.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const y={display:"none",overflow:"hidden",height:"0px"},w={display:"block",overflow:"visible",height:"auto"};function x(e,t){const n=t?y:w;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function k(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,l.useRef)(!1);(0,l.useEffect)((()=>{const e=t.current;function o(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,g.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??v}`,height:`${t}px`}}function i(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return x(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=y.height,e.style.overflow=y.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function _(e){if(!m.default.canUseDOM)return e?y:w}function E(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:o,className:i,disableSSRStyle:s}=e;const u=(0,l.useRef)(null);return k({collapsibleRef:u,collapsed:n,animation:a}),l.createElement(t,{ref:u,style:s?void 0:_(n),onTransitionEnd:e=>{"height"===e.propertyName&&(x(u.current,n),o?.(n))},className:i},r)}function S(e){let{collapsed:t,...n}=e;const[r,a]=(0,l.useState)(!t),[o,i]=(0,l.useState)(t);return(0,l.useLayoutEffect)((()=>{t||a(!0)}),[t]),(0,l.useLayoutEffect)((()=>{r&&i(t)}),[r,t]),r?l.createElement(E,(0,h.Z)({},n,{collapsed:o})):null}function C(e){let{lazy:t,...n}=e;const r=t?S:E;return l.createElement(r,n)}var T=n(35281),O=n(902),D=n(10833),P=n(92949),N=n(13102),I=n(87524),A=n(95999);const L=()=>(0,A.translate)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});function R(e){const t={};return Object.values(e).forEach((e=>{const n=function(e){return e[0].toUpperCase()}(e.label);t[n]??=[],t[n].push(e)})),Object.entries(t).sort(((e,t)=>{let[n]=e,[r]=t;return n.localeCompare(r)})).map((e=>{let[t,n]=e;return{letter:t,tags:n.sort(((e,t)=>e.label.localeCompare(t.label)))}}))}var j=n(91980);const M="q";function F(){return(0,j.Nc)(M)}function B(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,s.default)(),{algolia:{searchPagePath:n}}=t;return(0,l.useCallback)((t=>`${e}${n}?${M}=${encodeURIComponent(t)}`),[e,n])}var z=n(42489);function $(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var U=n(67392),H=n(66412),V=n(60373);function q(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=l.Children.toArray(e),n=t.find((e=>l.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),r=l.createElement(l.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n?.props.children,rest:r}}(e.children),r=e.title??t;return{...e,...r&&{title:r},children:n}}var W=n(55225),G=n(69690)},91338:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AnnouncementBarProvider:()=>h.pl,BlogPostProvider:()=>d,Collapsible:()=>r.Collapsible,ColorModeProvider:()=>k.S,DEFAULT_SEARCH_TAG:()=>S.HX,DocProvider:()=>l.b,DocSidebarItemsExpandedStateProvider:()=>a.D,DocsPreferredVersionContextProvider:()=>p.L5,DocsSidebarProvider:()=>i.b,DocsVersionProvider:()=>o.q,ErrorBoundaryError:()=>r.ErrorBoundaryError,ErrorBoundaryTryAgainButton:()=>r.ErrorBoundaryTryAgainButton,ErrorCauseBoundary:()=>r.ErrorCauseBoundary,HtmlClassNameProvider:()=>r.HtmlClassNameProvider,NavbarProvider:()=>B,NavbarSecondaryMenuFiller:()=>r.NavbarSecondaryMenuFiller,PageMetadata:()=>r.PageMetadata,PluginHtmlClassNameProvider:()=>j.VC,ReactContextError:()=>r.ReactContextError,ScrollControllerProvider:()=>L.OC,SkipToContentFallbackId:()=>r.SkipToContentFallbackId,SkipToContentLink:()=>r.SkipToContentLink,ThemeClassNames:()=>r.ThemeClassNames,composeProviders:()=>r.composeProviders,containsLineNumbers:()=>E.nt,createStorageSlot:()=>r.createStorageSlot,docVersionSearchTag:()=>S.os,duplicates:()=>r.duplicates,filterDocCardListItems:()=>r.filterDocCardListItems,findFirstCategoryLink:()=>C.Wl,findSidebarCategory:()=>C.em,getPrismCssVariables:()=>E.QC,isActiveSidebarItem:()=>C._F,isDocsPluginEnabled:()=>C.cE,isMultiColumnFooterLinks:()=>r.isMultiColumnFooterLinks,isRegexpStringMatch:()=>r.isRegexpStringMatch,isSamePath:()=>R.Mg,keyboardFocusedClassName:()=>U.h,listStorageKeys:()=>r.listStorageKeys,listTagsByLetters:()=>r.listTagsByLetters,parseCodeBlockTitle:()=>E.bc,parseLanguage:()=>E.Vo,parseLines:()=>E.nZ,prefersReducedMotion:()=>r.prefersReducedMotion,processAdmonitionProps:()=>r.processAdmonitionProps,splitNavbarItems:()=>F,translateTagsPageTitle:()=>r.translateTagsPageTitle,uniq:()=>r.uniq,useAlternatePageUtils:()=>_.l,useAnnouncementBar:()=>h.nT,useBackToTopButton:()=>G.a,useBlogPost:()=>f,useCodeWordWrap:()=>W,useCollapsible:()=>r.useCollapsible,useColorMode:()=>r.useColorMode,useContextualSearchFilters:()=>r.useContextualSearchFilters,useCurrentSidebarCategory:()=>r.useCurrentSidebarCategory,useDoc:()=>l.k,useDocById:()=>C.xz,useDocRouteMetadata:()=>C.hI,useDocSidebarItemsExpandedState:()=>a.f,useDocsPreferredVersion:()=>r.useDocsPreferredVersion,useDocsPreferredVersionByPluginId:()=>p.Oh,useDocsSidebar:()=>i.V,useDocsVersion:()=>o.E,useDocsVersionCandidates:()=>C.lO,useEvent:()=>r.useEvent,useFilteredAndTreeifiedTOC:()=>A.b,useHideableNavbar:()=>$,useHistoryPopHandler:()=>I.Rb,useHistorySelector:()=>I.xL,useHomePageRoute:()=>R.Ns,useIsomorphicLayoutEffect:()=>r.useIsomorphicLayoutEffect,useKeyboardNavigation:()=>U.t,useLayoutDoc:()=>C.vY,useLayoutDocsSidebar:()=>C.oz,useLocalPathname:()=>N,useLocationChange:()=>O.S,useLockBodyScroll:()=>H.N,useNavbarMobileSidebar:()=>g.e,useNavbarSecondaryMenu:()=>x,usePluralForm:()=>r.usePluralForm,usePrevious:()=>r.usePrevious,usePrismTheme:()=>r.usePrismTheme,useQueryStringValue:()=>I._X,useScrollController:()=>L.sG,useScrollPosition:()=>L.RF,useScrollPositionBlocker:()=>L.o5,useSearchLinkCreator:()=>r.useSearchLinkCreator,useSearchQueryString:()=>r.useSearchQueryString,useSidebarBreadcrumbs:()=>C.s1,useSmoothScrollTo:()=>L.Ct,useStorageSlot:()=>r.useStorageSlot,useTOCHighlight:()=>z.S,useTabs:()=>m.Y,useThemeConfig:()=>r.useThemeConfig,useTitleFormatter:()=>T.p,useTreeifiedTOC:()=>A.a,useWindowSize:()=>r.useWindowSize});var r=n(82818),a=n(14353),o=n(74477),i=n(1116),l=n(65130),s=n(67294),u=n(902);const c=s.createContext(null);function d(e){let{children:t,content:n,isBlogPostPage:r=!1}=e;const a=function(e){let{content:t,isBlogPostPage:n}=e;return(0,s.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:n})),[t,n])}({content:n,isBlogPostPage:r});return s.createElement(c.Provider,{value:a},t)}function f(){const e=(0,s.useContext)(c);if(null===e)throw new u.i6("BlogPostProvider");return e}var p=n(60373),h=n(59689),m=n(70989),g=n(93163),v=n(13102);const b=s.createContext(null);function y(e){let{children:t}=e;const n=function(){const e=(0,g.e)(),t=(0,v.HY)(),[n,r]=(0,s.useState)(!1),a=null!==t.component,o=(0,u.D9)(a);return(0,s.useEffect)((()=>{a&&!o&&r(!0)}),[a,o]),(0,s.useEffect)((()=>{a?e.shown||r(!0):r(!1)}),[e.shown,a]),(0,s.useMemo)((()=>[n,r]),[n])}();return s.createElement(b.Provider,{value:n},t)}function w(e){if(e.component){const t=e.component;return s.createElement(t,e.props)}}function x(){const e=(0,s.useContext)(b);if(!e)throw new u.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,r=(0,s.useCallback)((()=>n(!1)),[n]),a=(0,v.HY)();return(0,s.useMemo)((()=>({shown:t,hide:r,content:w(a)})),[r,a,t])}var k=n(92949),_=n(94711),E=n(37016),S=n(43320),C=n(53438),T=n(82128),O=n(85936),D=n(16550),P=n(52263);function N(){const{siteConfig:{baseUrl:e}}=(0,P.default)(),{pathname:t}=(0,D.TH)();return t.replace(e,"/")}var I=n(91980),A=n(39665),L=n(12466),R=n(48596),j=n(10833);const M="right";function F(e){function t(e){return"left"===(e.position??M)}return[e.filter(t),e.filter((e=>!t(e)))]}function B(e){let{children:t}=e;return s.createElement(v.n2,null,s.createElement(g.M,null,s.createElement(y,null,t)))}var z=n(96841);function $(e){const[t,n]=(0,s.useState)(e),r=(0,s.useRef)(!1),a=(0,s.useRef)(0),o=(0,s.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,L.RF)(((t,o)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const a=t.location.hash;if(a?document.getElementById(a.substring(1)):void 0)return r.current=!0,void n(!1);n(!0)})),{navbarRef:o,isNavbarVisible:t}}var U=n(19727),H=n(69800);const V={attributes:!0,characterData:!0,childList:!0,subtree:!0};function q(e,t){const[n,r]=(0,s.useState)(),a=(0,s.useCallback)((()=>{r(e.current?.closest("[role=tabpanel][hidden]"))}),[e,r]);(0,s.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=V);const r=(0,u.zX)(t),a=(0,u.Ql)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(r);return e&&t.observe(e,a),()=>t.disconnect()}),[e,r,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}function W(){const[e,t]=(0,s.useState)(!1),[n,r]=(0,s.useState)(!1),a=(0,s.useRef)(null),o=(0,s.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),i=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return q(a,i),(0,s.useEffect)((()=>{i()}),[e,i]),(0,s.useEffect)((()=>(window.addEventListener("resize",i,{passive:!0}),()=>{window.removeEventListener("resize",i)})),[i]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:o}}var G=n(2730)},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},91442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},37016:(e,t,n)=>{"use strict";n.d(t,{QC:()=>p,Vo:()=>d,bc:()=>u,nZ:()=>f,nt:()=>c});var r=n(87594),a=n.n(r);const o=/title=(?["'])(?.*?)\1/,i=/\{(?<range>[\d,-]+)\}/,l={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function s(e,t){const n=e.map((e=>{const{start:n,end:r}=l[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${r})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function u(e){return e?.match(o)?.groups.title??""}function c(e){return Boolean(e?.includes("showLineNumbers"))}function d(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}function f(e,t){let n=e.replace(/\n$/,"");const{language:r,magicComments:o,metastring:u}=t;if(u&&i.test(u)){const e=u.match(i).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${u}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,r=a()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(r),code:n}}if(void 0===r)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return s(["js","jsBlock"],t);case"jsx":case"tsx":return s(["js","jsBlock","jsx"],t);case"html":return s(["js","jsBlock","html"],t);case"python":case"py":case"bash":return s(["bash"],t);case"markdown":case"md":return s(["html","jsx","bash"],t);default:return s(Object.keys(l),t)}}(r,o),d=n.split("\n"),f=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),p=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),h=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let a=0;a<d.length;){const e=d[a].match(c);if(!e){a+=1;continue}const t=e.slice(1).find((e=>void 0!==e));p[t]?f[p[t]].range+=`${a},`:h[t]?f[h[t]].start=a:m[t]&&(f[m[t]].range+=`${f[m[t]].start}-${a-1},`),d.splice(a,1)}n=d.join("\n");const g={};return Object.entries(f).forEach((e=>{let[t,{range:n}]=e;a()(n).forEach((e=>{g[e]??=[],g[e].push(t)}))})),{lineClassNames:g,code:n}}function p(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[r,a]=e;const o=t[r];o&&"string"==typeof a&&(n[o]=a)})),n}},53438:(e,t,n)=>{"use strict";n.d(t,{MN:()=>C,Wl:()=>m,_F:()=>y,cE:()=>f,em:()=>h,hI:()=>S,jA:()=>g,lO:()=>k,oz:()=>_,s1:()=>x,vY:()=>E,xz:()=>p});var r=n(67294),a=n(16550),o=n(18790),i=n(80143),l=n(60373),s=n(74477),u=n(1116),c=n(67392),d=n(48596);const f=!!i.useAllDocsData;function p(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function h(e,t){for(const n of e)if("category"===n.type){if(t(n))return n;const e=h(n.items,t);if(e)return e}}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function g(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=w({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const v=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>y(e,t)));function y(e,t){return"link"===e.type?v(e.href,t):"category"===e.type&&(v(e.href,t)||b(e.items,t))}function w(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function x(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.useActivePlugin)()?.pluginData.breadcrumbs;return!1!==n&&e?w({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.useActiveDocContext)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.useLatestVersion)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function _(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function S(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}function C(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},69690:(e,t,n)=>{"use strict";n.d(t,{aG:()=>u,Cw:()=>s,QW:()=>c});var r=n(87462),a=n(67294),o=n(95999),i=n(18780);const l={errorBoundaryError:"errorBoundaryError_a6uf"};function s(e){return a.createElement("button",(0,r.Z)({type:"button"},e),a.createElement(o.default,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return a.createElement("p",{className:l.errorBoundaryError},n)}class c extends a.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},42489:(e,t,n)=>{"use strict";function r(e){return"title"in e[0]}n.d(t,{a:()=>r})},82128:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(52263);function a(e){const{siteConfig:t}=(0,r.default)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},91980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>c,Rb:()=>l,_X:()=>u,xL:()=>s});var r=n(67294),a=n(16550),o=n(61688),i=n(902);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}function u(e){return s((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function c(e){const t=u(e)??"",n=function(){const e=(0,a.k6)();return(0,r.useCallback)(((t,n,r)=>{const a=new URLSearchParams(e.location.search);n?a.set(t,n):a.delete(t),(r?.push?e.push:e.replace)({search:a.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},67392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},10833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(67294),a=n(86010),o=n(35742),i=n(30226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(44996),u=n(82128);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=(0,u.p)(t),{withBaseUrl:d}=(0,s.useBaseUrlUtils)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.default)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.default)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,LI:()=>a,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(67294);const a=n(10412).default.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(67294),a=n(723),o=n(52263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.default)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d,o5:()=>f,sG:()=>u});var r=n(67294),a=n(10412),o=n(72389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.default.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=u(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function p(){const e=(0,r.useRef)(null),t=(0,o.default)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>l});var r=n(80143),a=n(52263),o=n(60373);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,a.default)(),t=(0,r.useAllDocsData)(),n=(0,r.useActivePluginAndVersion)(),s=(0,o.Oh)();const u=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,a=s[e],o=t[e].versions.find((e=>e.isLast));return l(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:u}}},55225:(e,t,n)=>{"use strict";n.d(t,{l:()=>f,u:()=>s});var r=n(87462),a=n(67294),o=n(16550),i=n(95999),l=n(85936);const s="__docusaurus_skipToContent_fallback";function u(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function c(){const e=(0,a.useRef)(null),{action:t}=(0,o.k6)(),n=(0,a.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(s);t&&u(t)}),[]);return(0,l.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&u(e.current)})),{containerRef:e,onClick:n}}const d=(0,i.translate)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function f(e){const t=e.children??d,{containerRef:n,onClick:o}=c();return a.createElement("div",{ref:n,role:"region","aria-label":d},a.createElement("a",(0,r.Z)({},e,{href:`#${s}`,onClick:o}),t))}},50012:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>c,_f:()=>f});var r=n(67294),a=n(61688);const o="localStorage";function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=l(t?.persistence);return null===n?u:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}function f(e){void 0===e&&(e=o);const t=l(e);if(!t)return[];const n=[];for(let r=0;r<t.length;r+=1){const e=t.key(r);null!==e&&n.push(e)}return n}},70989:(e,t,n)=>{"use strict";n.d(t,{Y:()=>f});var r=n(67294),a=n(16550),o=n(91980),i=n(67392),l=n(50012);function s(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function u(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??s(n);return function(e){const t=(0,i.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function c(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function d(e){let{queryString:t=!1,groupId:n}=e;const i=(0,a.k6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(i.location.search);t.set(l,e),i.replace({...i.location,search:t.toString()})}),[l,i])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,o=u(e),[i,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!c({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:o}))),[f,p]=d({queryString:n,groupId:a}),[h,m]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,l.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&o.set(e)}),[n,o])]}({groupId:a}),g=(()=>{const e=f??h;return c({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{g&&s(g)}),[g]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!c({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);s(e),p(e),m(e)}),[p,m,o]),tabValues:o}}},39665:(e,t,n)=>{"use strict";n.d(t,{a:()=>o,b:()=>l});var r=n(67294);function a(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const r=n.slice(2,e.level);e.parentIndex=Math.max(...r),n[e.level]=t}));const r=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):r.push(a)})),r}function o(e){return(0,r.useMemo)((()=>a(e)),[e])}function i(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:r}=e;return t.flatMap((e=>{const t=i({toc:e.children,minHeadingLevel:n,maxHeadingLevel:r});return function(e){return e.level>=n&&e.level<=r}(e)?[{...e,children:t}]:t}))}function l(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,r.useMemo)((()=>i({toc:a(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(52263),a=n(16550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.default)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(67294),a=n(16550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){return(0,r.default)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},54143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},18780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(54143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},90022:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fetchIndexes:()=>l,legacyFetchIndexes:()=>s});var r=n(31336),a=n.n(r),o=n(61029);const i=new Map;function l(e,t){const n=`${e}${t}`;let r=i.get(n);return r||(r=s(e,t),i.set(n,r)),r}async function s(e,t){{const n=`${e}${o.searchIndexUrl.replace("{dir}",t?`-${t.replace(/\//g,"-")}`:"")}`;if(new URL(n,location.origin).origin!==location.origin)throw new Error("Unexpected version url");const r=await(await fetch(n)).json(),i=r.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:a().Index.load(r)}})),l=r.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:i,zhDictionary:Array.from(l)}}}},98202:(e,t,n)=>{"use strict";n.r(t),n.d(t,{SearchSourceFactory:()=>s});var r=n(31336),a=n.n(r);var o=n(61029);function i(e){return l(e).concat(l(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function l(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:a().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?a().Query.wildcard.TRAILING:a().Query.wildcard.NONE})))})))}function s(e,t,n){return function(r,l){const s=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return a()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,o.language);if(0===s.length)return void l([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,a){if(0===r.length)return void n.push(a);const o=r[0];if(/\p{Unified_Ideograph}/u.test(o)){const n=function(e,t){const n=[];return function e(r,a){let o=0,i=!1;for(const l of t)if(r.substr(0,l.length)===l){const t={missed:a.missed,term:a.term.concat({value:l})};r.length>l.length?e(r.substr(l.length),t):n.push(t),i=!0}else for(let t=l.length-1;t>o;t-=1){const s=l.substr(0,t);if(r.substr(0,t)===s){o=t;const l={missed:a.missed,term:a.term.concat({value:s,trailing:!0})};r.length>t?e(r.substr(t),l):n.push(l),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:a.missed+1,term:a.term}):a.term.length>0&&n.push(a))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(o,t);for(const t of n){const n=a.concat(...t);e(r.slice(1),n)}}else{const t=a.concat({value:o});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:a().Query.presence.REQUIRED,wildcard:a().Query.wildcard.LEADING|a().Query.wildcard.TRAILING})))}];for(const a of n)a[a.length-1].maybeTyping=!0;const r=[];for(const i of o.language)if("en"===i)o.removeDefaultStopWordFilter||r.unshift(a().stopWordFilter);else{const e=a()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let l;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);l=[];const t=[];for(const r of n){const n=e(r);l.push(n),n.length<r.length&&n.length>0&&t.push(n)}n.push(...t)}else l=n.slice();const s=[];for(const a of l)if(a.length>2)for(let e=a.length-1;e>=0;e-=1)s.push(a.slice(0,e).concat(a.slice(e+1)));return i(n).concat(i(s))}(s,t),c=[];e:for(const{term:t,tokens:a}of u)for(const{documents:r,index:o,type:i}of e)if(c.push(...o.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!c.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-c.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:a,score:t.score}}))),c.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,a=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(c),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n<e.length-1&&e[n+1].page===t.page?t.isInterOfTree=!0:t.isLastOfTree=!0)}))}(c),l(c)}}},91073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.r(t),n.d(t,{getStemmedPositions:()=>r})},67133:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function a(e,t,n){const o=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&o.push(a(e.substr(0,n),t)),o.push(`<mark>${r(e.substr(n,i.length))}</mark>`);const l=n+i.length;l<e.length&&o.push(a(e.substr(l),t));break}}return 0===o.length?n?`<mark>${r(e)}</mark>`:r(e):o.join("")}n.r(t),n.d(t,{highlightStemmed:()=>s,splitIntoChunks:()=>u});const o=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substring(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substring(n)}return t}var l=n(61029);function s(e,t,n,r){void 0===r&&(r=l.searchResultContextMaxLength);const{chunkIndex:a,chunks:o}=u(e,t,n),i=o.slice(0,a),s=o[a],c=[s.html],d=o.slice(a+1);let f=s.textLength,p=0,h=0,m=!1,g=!1;for(;f<r;)if((p<=h||0===d.length)&&i.length>0){const e=i.pop();f+e.textLength<=r?(c.unshift(e.html),p+=e.textLength,f+=e.textLength):(m=!0,i.length=0)}else{if(!(d.length>0))break;{const e=d.shift();f+e.textLength<=r?(c.push(e.html),h+=e.textLength,f+=e.textLength):(g=!0,d.length=0)}}return(m||i.length>0)&&c.unshift("\u2026"),(g||d.length>0)&&c.push("\u2026"),c.join("")}function u(e,t,n){const o=[];let l=0,s=0,u=-1;for(;l<t.length;){const[c,d]=t[l];if(l+=1,!(c<s)){if(c>s){const t=i(e.substring(s,c)).map((e=>({html:r(e),textLength:e.length})));for(const e of t)o.push(e)}-1===u&&(u=o.length),s=c+d,o.push({html:a(e.substring(c,s),n,!0),textLength:d})}}if(s<e.length){const t=i(e.substring(s)).map((e=>({html:r(e),textLength:e.length})));for(const e of t)o.push(e)}return{chunkIndex:u,chunks:o}}},61029:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Mark:()=>i,docsPluginIdForPreferredVersion:()=>h,explicitSearchResultPath:()=>c,hideSearchBarWithNoSearchContext:()=>v,indexDocs:()=>m,language:()=>r,removeDefaultStemmer:()=>o,removeDefaultStopWordFilter:()=>a,searchBarPosition:()=>p,searchBarShortcut:()=>d,searchBarShortcutHint:()=>f,searchContextByPaths:()=>g,searchIndexUrl:()=>l,searchResultContextMaxLength:()=>u,searchResultLimits:()=>s});n(31336);const r=["en"],a=!1,o=!1,i=null,l="search-index{dir}.json?_=2c70cdee",s=8,u=50,c=!1,d=!0,f=!0,p="right",h=void 0,m=!0,g=null,v=!1},86010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}function a(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}n.r(t),n.d(t,{clsx:()=>a,default:()=>o});const o=a},20640:(e,t,n)=>{"use strict";var r=n(11742),a={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,o,i,l,s,u,c=!1;t||(t={}),n=t.debug||!1;try{if(i=r(),l=document.createRange(),s=document.getSelection(),(u=document.createElement("span")).textContent=e,u.ariaHidden="true",u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),void 0===r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=a[t.format]||a.default;window.clipboardData.setData(o,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(u),l.selectNodeContents(u),s.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");c=!0}catch(d){n&&console.error("unable to copy using execCommand: ",d),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),c=!0}catch(d){n&&console.error("unable to copy using clipboardData: ",d),n&&console.error("falling back to prompt"),o=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(o,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(l):s.removeAllRanges()),u&&document.body.removeChild(u),i()}return c}},38252:e=>{"use strict";e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,a,o;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(a=r;0!=a--;)if(!e(t[a],n[a]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(o=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(a=r;0!=a--;)if(!Object.prototype.hasOwnProperty.call(n,o[a]))return!1;for(a=r;0!=a--;){var i=o[a];if(("_owner"!==i||!t.$$typeof)&&!e(t[i],n[i]))return!1}return!0}return t!=t&&n!=n}},99376:(e,t)=>{var n=Object.keys;t.D=function(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;for(var r=n(e),a=r.length,o=0;o<a;o++)if(!(r[o]in t))return!1;for(o=0;o<a;o++)if(e[r[o]]!==t[r[o]])return!1;return a===n(t).length}},42358:(e,t,n)=>{"use strict";n.d(t,{lX:()=>_,q_:()=>D,ob:()=>m,PP:()=>N,Ep:()=>h,Hp:()=>g});var r=n(87462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const s=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=l(t),a=l(n);return r!==t||a!==n?e(r,a):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var u=n(38776);function c(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function f(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function m(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&s(e.state,t.state)}function v(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var b=!("undefined"==typeof window||!window.document||!window.document.createElement);function y(e,t){t(window.confirm(e))}var w="popstate",x="hashchange";function k(){try{return window.history.state||{}}catch(e){return{}}}function _(e){void 0===e&&(e={}),b||(0,u.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,l=i.forceRefresh,s=void 0!==l&&l,d=i.getUserConfirmation,g=void 0===d?y:d,_=i.keyLength,E=void 0===_?6:_,S=e.basename?p(c(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return S&&(o=f(o,S)),m(o,r,n)}function T(){return Math.random().toString(36).substr(2,E)}var O=v();function D(e){(0,r.Z)($,e),$.length=n.length,O.notifyListeners($.location,$.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||A(C(e.state))}function N(){A(C(k()))}var I=!1;function A(e){if(I)I=!1,D();else{O.confirmTransitionTo(e,"POP",g,(function(t){t?D({action:"POP",location:e}):function(e){var t=$.location,n=R.indexOf(t.key);-1===n&&(n=0);var r=R.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(I=!0,M(a))}(e)}))}}var L=C(k()),R=[L.key];function j(e){return S+h(e)}function M(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(w,P),o&&window.addEventListener(x,N)):0===F&&(window.removeEventListener(w,P),o&&window.removeEventListener(x,N))}var z=!1;var $={length:n.length,action:"POP",location:L,createHref:j,push:function(e,t){var r="PUSH",o=m(e,t,T(),$.location);O.confirmTransitionTo(o,r,g,(function(e){if(e){var t=j(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),s)window.location.href=t;else{var u=R.indexOf($.location.key),c=R.slice(0,u+1);c.push(o.key),R=c,D({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=m(e,t,T(),$.location);O.confirmTransitionTo(o,r,g,(function(e){if(e){var t=j(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),s)window.location.replace(t);else{var u=R.indexOf($.location.key);-1!==u&&(R[u]=o.key),D({action:r,location:o})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=O.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=O.appendListener(e);return B(1),function(){B(-1),t()}}};return $}var E="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+d(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:d,decodePath:c},slash:{encodePath:c,decodePath:c}};function C(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function T(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function O(e){window.location.replace(C(window.location.href)+"#"+e)}function D(e){void 0===e&&(e={}),b||(0,u.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?y:a,i=n.hashType,l=void 0===i?"slash":i,s=e.basename?p(c(e.basename)):"",d=S[l],g=d.encodePath,w=d.decodePath;function x(){var e=w(T());return s&&(e=f(e,s)),m(e)}var k=v();function _(e){(0,r.Z)(z,e),z.length=t.length,k.notifyListeners(z.location,z.action)}var D=!1,P=null;function N(){var e,t,n=T(),r=g(n);if(n!==r)O(r);else{var a=x(),i=z.location;if(!D&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(P===h(a))return;P=null,function(e){if(D)D=!1,_();else{var t="POP";k.confirmTransitionTo(e,t,o,(function(n){n?_({action:t,location:e}):function(e){var t=z.location,n=R.lastIndexOf(h(t));-1===n&&(n=0);var r=R.lastIndexOf(h(e));-1===r&&(r=0);var a=n-r;a&&(D=!0,j(a))}(e)}))}}(a)}}var I=T(),A=g(I);I!==A&&O(A);var L=x(),R=[h(L)];function j(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(E,N):0===M&&window.removeEventListener(E,N)}var B=!1;var z={length:t.length,action:"POP",location:L,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=C(window.location.href)),n+"#"+g(s+h(e))},push:function(e,t){var n="PUSH",r=m(e,void 0,void 0,z.location);k.confirmTransitionTo(r,n,o,(function(e){if(e){var t=h(r),a=g(s+t);if(T()!==a){P=t,function(e){window.location.hash=e}(a);var o=R.lastIndexOf(h(z.location)),i=R.slice(0,o+1);i.push(t),R=i,_({action:n,location:r})}else _()}}))},replace:function(e,t){var n="REPLACE",r=m(e,void 0,void 0,z.location);k.confirmTransitionTo(r,n,o,(function(e){if(e){var t=h(r),a=g(s+t);T()!==a&&(P=t,O(a));var o=R.indexOf(h(z.location));-1!==o&&(R[o]=t),_({action:n,location:r})}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=k.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=k.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function P(e,t,n){return Math.min(Math.max(e,t),n)}function N(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=v();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function f(){return Math.random().toString(36).substr(2,u)}var p=P(l,0,o.length-1),g=o.map((function(e){return m(e,void 0,"string"==typeof e?f():e.key||f())})),b=h;function y(e){var t=P(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:g.length,action:"POP",location:g[p],index:p,entries:g,createHref:b,push:function(e,t){var r="PUSH",a=m(e,t,f(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=m(e,t,f(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(59864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=p(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g<i.length;++g){var v=i[g];if(!(o[v]||r&&r[v]||m&&m[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},41143:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},36808:(e,t,n)=>{var r,a;!function(o){if(void 0===(a="function"==typeof(r=o)?r.call(t,n,t,e):r)||(e.exports=a),!0,e.exports=o(),!!0){var i=window.Cookies,l=window.Cookies=o();l.noConflict=function(){return window.Cookies=i,l}}}((function(){function e(){for(var e=0,t={};e<arguments.length;e++){var n=arguments[e];for(var r in n)t[r]=n[r]}return t}function t(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function n(r){function a(){}function o(t,n,o){if("undefined"!=typeof document){"number"==typeof(o=e({path:"/"},a.defaults,o)).expires&&(o.expires=new Date(1*new Date+864e5*o.expires)),o.expires=o.expires?o.expires.toUTCString():"";try{var i=JSON.stringify(n);/^[\{\[]/.test(i)&&(n=i)}catch(u){}n=r.write?r.write(n,t):encodeURIComponent(String(n)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),t=encodeURIComponent(String(t)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var l="";for(var s in o)o[s]&&(l+="; "+s,!0!==o[s]&&(l+="="+o[s].split(";")[0]));return document.cookie=t+"="+n+l}}function i(e,n){if("undefined"!=typeof document){for(var a={},o=document.cookie?document.cookie.split("; "):[],i=0;i<o.length;i++){var l=o[i].split("="),s=l.slice(1).join("=");n||'"'!==s.charAt(0)||(s=s.slice(1,-1));try{var u=t(l[0]);if(s=(r.read||r)(s,u)||t(s),n)try{s=JSON.parse(s)}catch(c){}if(a[u]=s,e===u)break}catch(c){}}return e?a[e]:a}}return a.set=o,a.get=function(e){return i(e,!1)},a.getJSON=function(e){return i(e,!0)},a.remove=function(t,n){o(t,"",e(n,{expires:-1}))},a.defaults={},a.withConverter=n,a}((function(){}))}))},18552:(e,t,n)=>{var r=n(10852)(n(55639),"DataView");e.exports=r},1989:(e,t,n)=>{var r=n(51789),a=n(80401),o=n(57667),i=n(21327),l=n(81866);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},38407:(e,t,n)=>{var r=n(27040),a=n(14125),o=n(82117),i=n(67518),l=n(54705);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},57071:(e,t,n)=>{var r=n(10852)(n(55639),"Map");e.exports=r},83369:(e,t,n)=>{var r=n(24785),a=n(11285),o=n(96e3),i=n(49916),l=n(95265);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},53818:(e,t,n)=>{var r=n(10852)(n(55639),"Promise");e.exports=r},58525:(e,t,n)=>{var r=n(10852)(n(55639),"Set");e.exports=r},88668:(e,t,n)=>{var r=n(83369),a=n(90619),o=n(72385);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}i.prototype.add=i.prototype.push=a,i.prototype.has=o,e.exports=i},46384:(e,t,n)=>{var r=n(38407),a=n(37465),o=n(63779),i=n(67599),l=n(44758),s=n(34309);function u(e){var t=this.__data__=new r(e);this.size=t.size}u.prototype.clear=a,u.prototype.delete=o,u.prototype.get=i,u.prototype.has=l,u.prototype.set=s,e.exports=u},62705:(e,t,n)=>{var r=n(55639).Symbol;e.exports=r},11149:(e,t,n)=>{var r=n(55639).Uint8Array;e.exports=r},70577:(e,t,n)=>{var r=n(10852)(n(55639),"WeakMap");e.exports=r},96874:e=>{e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},44174:e=>{e.exports=function(e,t,n,r){for(var a=-1,o=null==e?0:e.length;++a<o;){var i=e[a];t(r,i,n(i),e)}return r}},77412:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},34963:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=0,o=[];++n<r;){var i=e[n];t(i,n,e)&&(o[a++]=i)}return o}},14636:(e,t,n)=>{var r=n(22545),a=n(35694),o=n(1469),i=n(44144),l=n(65776),s=n(36719),u=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),c=!n&&a(e),d=!n&&!c&&i(e),f=!n&&!c&&!d&&s(e),p=n||c||d||f,h=p?r(e.length,String):[],m=h.length;for(var g in e)!t&&!u.call(e,g)||p&&("length"==g||d&&("offset"==g||"parent"==g)||f&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||l(g,m))||h.push(g);return h}},29932:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n<r;)a[n]=t(e[n],n,e);return a}},62488:e=>{e.exports=function(e,t){for(var n=-1,r=t.length,a=e.length;++n<r;)e[a+n]=t[n];return e}},82908:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},34865:(e,t,n)=>{var r=n(89465),a=n(77813),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];o.call(e,t)&&a(i,n)&&(void 0!==n||t in e)||r(e,t,n)}},18470:(e,t,n)=>{var r=n(77813);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},81119:(e,t,n)=>{var r=n(89881);e.exports=function(e,t,n,a){return r(e,(function(e,r,o){t(a,e,n(e),o)})),a}},44037:(e,t,n)=>{var r=n(98363),a=n(3674);e.exports=function(e,t){return e&&r(t,a(t),e)}},63886:(e,t,n)=>{var r=n(98363),a=n(81704);e.exports=function(e,t){return e&&r(t,a(t),e)}},89465:(e,t,n)=>{var r=n(38777);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},85990:(e,t,n)=>{var r=n(46384),a=n(77412),o=n(34865),i=n(44037),l=n(63886),s=n(64626),u=n(278),c=n(18805),d=n(1911),f=n(58234),p=n(46904),h=n(64160),m=n(43824),g=n(29148),v=n(38517),b=n(1469),y=n(44144),w=n(56688),x=n(13218),k=n(72928),_=n(3674),E=n(81704),S="[object Arguments]",C="[object Function]",T="[object Object]",O={};O[S]=O["[object Array]"]=O["[object ArrayBuffer]"]=O["[object DataView]"]=O["[object Boolean]"]=O["[object Date]"]=O["[object Float32Array]"]=O["[object Float64Array]"]=O["[object Int8Array]"]=O["[object Int16Array]"]=O["[object Int32Array]"]=O["[object Map]"]=O["[object Number]"]=O[T]=O["[object RegExp]"]=O["[object Set]"]=O["[object String]"]=O["[object Symbol]"]=O["[object Uint8Array]"]=O["[object Uint8ClampedArray]"]=O["[object Uint16Array]"]=O["[object Uint32Array]"]=!0,O["[object Error]"]=O[C]=O["[object WeakMap]"]=!1,e.exports=function e(t,n,D,P,N,I){var A,L=1&n,R=2&n,j=4&n;if(D&&(A=N?D(t,P,N,I):D(t)),void 0!==A)return A;if(!x(t))return t;var M=b(t);if(M){if(A=m(t),!L)return u(t,A)}else{var F=h(t),B=F==C||"[object GeneratorFunction]"==F;if(y(t))return s(t,L);if(F==T||F==S||B&&!N){if(A=R||B?{}:v(t),!L)return R?d(t,l(A,t)):c(t,i(A,t))}else{if(!O[F])return N?t:{};A=g(t,F,L)}}I||(I=new r);var z=I.get(t);if(z)return z;I.set(t,A),k(t)?t.forEach((function(r){A.add(e(r,n,D,r,t,I))})):w(t)&&t.forEach((function(r,a){A.set(a,e(r,n,D,a,t,I))}));var $=M?void 0:(j?R?p:f:R?E:_)(t);return a($||t,(function(r,a){$&&(r=t[a=r]),o(A,a,e(r,n,D,a,t,I))})),A}},3118:(e,t,n)=>{var r=n(13218),a=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(a)return a(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},89881:(e,t,n)=>{var r=n(47816),a=n(99291)(r);e.exports=a},21078:(e,t,n)=>{var r=n(62488),a=n(37285);e.exports=function e(t,n,o,i,l){var s=-1,u=t.length;for(o||(o=a),l||(l=[]);++s<u;){var c=t[s];n>0&&o(c)?n>1?e(c,n-1,o,i,l):r(l,c):i||(l[l.length]=c)}return l}},28483:(e,t,n)=>{var r=n(25063)();e.exports=r},47816:(e,t,n)=>{var r=n(28483),a=n(3674);e.exports=function(e,t){return e&&r(e,t,a)}},97786:(e,t,n)=>{var r=n(71811),a=n(40327);e.exports=function(e,t){for(var n=0,o=(t=r(t,e)).length;null!=e&&n<o;)e=e[a(t[n++])];return n&&n==o?e:void 0}},68866:(e,t,n)=>{var r=n(62488),a=n(1469);e.exports=function(e,t,n){var o=t(e);return a(e)?o:r(o,n(e))}},44239:(e,t,n)=>{var r=n(62705),a=n(89607),o=n(2333),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?a(e):o(e)}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},9454:(e,t,n)=>{var r=n(44239),a=n(37005);e.exports=function(e){return a(e)&&"[object Arguments]"==r(e)}},90939:(e,t,n)=>{var r=n(2492),a=n(37005);e.exports=function e(t,n,o,i,l){return t===n||(null==t||null==n||!a(t)&&!a(n)?t!=t&&n!=n:r(t,n,o,i,e,l))}},2492:(e,t,n)=>{var r=n(46384),a=n(67114),o=n(18351),i=n(16096),l=n(64160),s=n(1469),u=n(44144),c=n(36719),d="[object Arguments]",f="[object Array]",p="[object Object]",h=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,g,v){var b=s(e),y=s(t),w=b?f:l(e),x=y?f:l(t),k=(w=w==d?p:w)==p,_=(x=x==d?p:x)==p,E=w==x;if(E&&u(e)){if(!u(t))return!1;b=!0,k=!1}if(E&&!k)return v||(v=new r),b||c(e)?a(e,t,n,m,g,v):o(e,t,w,n,m,g,v);if(!(1&n)){var S=k&&h.call(e,"__wrapped__"),C=_&&h.call(t,"__wrapped__");if(S||C){var T=S?e.value():e,O=C?t.value():t;return v||(v=new r),g(T,O,n,m,v)}}return!!E&&(v||(v=new r),i(e,t,n,m,g,v))}},25588:(e,t,n)=>{var r=n(64160),a=n(37005);e.exports=function(e){return a(e)&&"[object Map]"==r(e)}},2958:(e,t,n)=>{var r=n(46384),a=n(90939);e.exports=function(e,t,n,o){var i=n.length,l=i,s=!o;if(null==e)return!l;for(e=Object(e);i--;){var u=n[i];if(s&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++i<l;){var c=(u=n[i])[0],d=e[c],f=u[1];if(s&&u[2]){if(void 0===d&&!(c in e))return!1}else{var p=new r;if(o)var h=o(d,f,c,e,t,p);if(!(void 0===h?a(f,d,3,o,p):h))return!1}}return!0}},28458:(e,t,n)=>{var r=n(23560),a=n(15346),o=n(13218),i=n(80346),l=/^\[object .+?Constructor\]$/,s=Function.prototype,u=Object.prototype,c=s.toString,d=u.hasOwnProperty,f=RegExp("^"+c.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||a(e))&&(r(e)?f:l).test(i(e))}},29221:(e,t,n)=>{var r=n(64160),a=n(37005);e.exports=function(e){return a(e)&&"[object Set]"==r(e)}},38749:(e,t,n)=>{var r=n(44239),a=n(41780),o=n(37005),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&a(e.length)&&!!i[r(e)]}},67206:(e,t,n)=>{var r=n(91573),a=n(16432),o=n(6557),i=n(1469),l=n(39601);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?i(e)?a(e[0],e[1]):r(e):l(e)}},280:(e,t,n)=>{var r=n(25726),a=n(86916),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return a(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},10313:(e,t,n)=>{var r=n(13218),a=n(25726),o=n(33498),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=a(e),n=[];for(var l in e)("constructor"!=l||!t&&i.call(e,l))&&n.push(l);return n}},91573:(e,t,n)=>{var r=n(2958),a=n(1499),o=n(42634);e.exports=function(e){var t=a(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},16432:(e,t,n)=>{var r=n(90939),a=n(27361),o=n(79095),i=n(15403),l=n(89162),s=n(42634),u=n(40327);e.exports=function(e,t){return i(e)&&l(t)?s(u(e),t):function(n){var i=a(n,e);return void 0===i&&i===t?o(n,e):r(t,i,3)}}},40371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},79152:(e,t,n)=>{var r=n(97786);e.exports=function(e){return function(t){return r(t,e)}}},56560:(e,t,n)=>{var r=n(75703),a=n(38777),o=n(6557),i=a?function(e,t){return a(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=i},14259:e=>{e.exports=function(e,t,n){var r=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(a);++r<a;)o[r]=e[r+t];return o}},22545:e=>{e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},80531:(e,t,n)=>{var r=n(62705),a=n(29932),o=n(1469),i=n(33448),l=r?r.prototype:void 0,s=l?l.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return a(t,e)+"";if(i(t))return s?s.call(t):"";var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n}},7518:e=>{e.exports=function(e){return function(t){return e(t)}}},57406:(e,t,n)=>{var r=n(71811),a=n(10928),o=n(40292),i=n(40327);e.exports=function(e,t){return t=r(t,e),null==(e=o(e,t))||delete e[i(a(t))]}},74757:e=>{e.exports=function(e,t){return e.has(t)}},71811:(e,t,n)=>{var r=n(1469),a=n(15403),o=n(55514),i=n(79833);e.exports=function(e,t){return r(e)?e:a(e,t)?[e]:o(i(e))}},74318:(e,t,n)=>{var r=n(11149);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},64626:(e,t,n)=>{e=n.nmd(e);var r=n(55639),a=t&&!t.nodeType&&t,o=a&&e&&!e.nodeType&&e,i=o&&o.exports===a?r.Buffer:void 0,l=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=l?l(n):new e.constructor(n);return e.copy(r),r}},57157:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},93147:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},40419:(e,t,n)=>{var r=n(62705),a=r?r.prototype:void 0,o=a?a.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},77133:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},278:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},98363:(e,t,n)=>{var r=n(34865),a=n(89465);e.exports=function(e,t,n,o){var i=!n;n||(n={});for(var l=-1,s=t.length;++l<s;){var u=t[l],c=o?o(n[u],e[u],u,n,e):void 0;void 0===c&&(c=e[u]),i?a(n,u,c):r(n,u,c)}return n}},18805:(e,t,n)=>{var r=n(98363),a=n(99551);e.exports=function(e,t){return r(e,a(e),t)}},1911:(e,t,n)=>{var r=n(98363),a=n(51442);e.exports=function(e,t){return r(e,a(e),t)}},14429:(e,t,n)=>{var r=n(55639)["__core-js_shared__"];e.exports=r},55189:(e,t,n)=>{var r=n(44174),a=n(81119),o=n(67206),i=n(1469);e.exports=function(e,t){return function(n,l){var s=i(n)?r:a,u=t?t():{};return s(n,e,o(l,2),u)}}},99291:(e,t,n)=>{var r=n(98612);e.exports=function(e,t){return function(n,a){if(null==n)return n;if(!r(n))return e(n,a);for(var o=n.length,i=t?o:-1,l=Object(n);(t?i--:++i<o)&&!1!==a(l[i],i,l););return n}}},25063:e=>{e.exports=function(e){return function(t,n,r){for(var a=-1,o=Object(t),i=r(t),l=i.length;l--;){var s=i[e?l:++a];if(!1===n(o[s],s,o))break}return t}}},60696:(e,t,n)=>{var r=n(68630);e.exports=function(e){return r(e)?void 0:e}},38777:(e,t,n)=>{var r=n(10852),a=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=a},67114:(e,t,n)=>{var r=n(88668),a=n(82908),o=n(74757);e.exports=function(e,t,n,i,l,s){var u=1&n,c=e.length,d=t.length;if(c!=d&&!(u&&d>c))return!1;var f=s.get(e),p=s.get(t);if(f&&p)return f==t&&p==e;var h=-1,m=!0,g=2&n?new r:void 0;for(s.set(e,t),s.set(t,e);++h<c;){var v=e[h],b=t[h];if(i)var y=u?i(b,v,h,t,e,s):i(v,b,h,e,t,s);if(void 0!==y){if(y)continue;m=!1;break}if(g){if(!a(t,(function(e,t){if(!o(g,t)&&(v===e||l(v,e,n,i,s)))return g.push(t)}))){m=!1;break}}else if(v!==b&&!l(v,b,n,i,s)){m=!1;break}}return s.delete(e),s.delete(t),m}},18351:(e,t,n)=>{var r=n(62705),a=n(11149),o=n(77813),i=n(67114),l=n(68776),s=n(21814),u=r?r.prototype:void 0,c=u?u.valueOf:void 0;e.exports=function(e,t,n,r,u,d,f){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!d(new a(e),new a(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var p=l;case"[object Set]":var h=1&r;if(p||(p=s),e.size!=t.size&&!h)return!1;var m=f.get(e);if(m)return m==t;r|=2,f.set(e,t);var g=i(p(e),p(t),r,u,d,f);return f.delete(e),g;case"[object Symbol]":if(c)return c.call(e)==c.call(t)}return!1}},16096:(e,t,n)=>{var r=n(58234),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,i,l){var s=1&n,u=r(e),c=u.length;if(c!=r(t).length&&!s)return!1;for(var d=c;d--;){var f=u[d];if(!(s?f in t:a.call(t,f)))return!1}var p=l.get(e),h=l.get(t);if(p&&h)return p==t&&h==e;var m=!0;l.set(e,t),l.set(t,e);for(var g=s;++d<c;){var v=e[f=u[d]],b=t[f];if(o)var y=s?o(b,v,f,t,e,l):o(v,b,f,e,t,l);if(!(void 0===y?v===b||i(v,b,n,o,l):y)){m=!1;break}g||(g="constructor"==f)}if(m&&!g){var w=e.constructor,x=t.constructor;w==x||!("constructor"in e)||!("constructor"in t)||"function"==typeof w&&w instanceof w&&"function"==typeof x&&x instanceof x||(m=!1)}return l.delete(e),l.delete(t),m}},99021:(e,t,n)=>{var r=n(85564),a=n(45357),o=n(30061);e.exports=function(e){return o(a(e,void 0,r),e+"")}},31957:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},58234:(e,t,n)=>{var r=n(68866),a=n(99551),o=n(3674);e.exports=function(e){return r(e,o,a)}},46904:(e,t,n)=>{var r=n(68866),a=n(51442),o=n(81704);e.exports=function(e){return r(e,o,a)}},45050:(e,t,n)=>{var r=n(37019);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},1499:(e,t,n)=>{var r=n(89162),a=n(3674);e.exports=function(e){for(var t=a(e),n=t.length;n--;){var o=t[n],i=e[o];t[n]=[o,i,r(i)]}return t}},10852:(e,t,n)=>{var r=n(28458),a=n(47801);e.exports=function(e,t){var n=a(e,t);return r(n)?n:void 0}},85924:(e,t,n)=>{var r=n(5569)(Object.getPrototypeOf,Object);e.exports=r},89607:(e,t,n)=>{var r=n(62705),a=Object.prototype,o=a.hasOwnProperty,i=a.toString,l=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,l),n=e[l];try{e[l]=void 0;var r=!0}catch(s){}var a=i.call(e);return r&&(t?e[l]=n:delete e[l]),a}},99551:(e,t,n)=>{var r=n(34963),a=n(70479),o=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,l=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return o.call(e,t)})))}:a;e.exports=l},51442:(e,t,n)=>{var r=n(62488),a=n(85924),o=n(99551),i=n(70479),l=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,o(e)),e=a(e);return t}:i;e.exports=l},64160:(e,t,n)=>{var r=n(18552),a=n(57071),o=n(53818),i=n(58525),l=n(70577),s=n(44239),u=n(80346),c="[object Map]",d="[object Promise]",f="[object Set]",p="[object WeakMap]",h="[object DataView]",m=u(r),g=u(a),v=u(o),b=u(i),y=u(l),w=s;(r&&w(new r(new ArrayBuffer(1)))!=h||a&&w(new a)!=c||o&&w(o.resolve())!=d||i&&w(new i)!=f||l&&w(new l)!=p)&&(w=function(e){var t=s(e),n="[object Object]"==t?e.constructor:void 0,r=n?u(n):"";if(r)switch(r){case m:return h;case g:return c;case v:return d;case b:return f;case y:return p}return t}),e.exports=w},47801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},222:(e,t,n)=>{var r=n(71811),a=n(35694),o=n(1469),i=n(65776),l=n(41780),s=n(40327);e.exports=function(e,t,n){for(var u=-1,c=(t=r(t,e)).length,d=!1;++u<c;){var f=s(t[u]);if(!(d=null!=e&&n(e,f)))break;e=e[f]}return d||++u!=c?d:!!(c=null==e?0:e.length)&&l(c)&&i(f,c)&&(o(e)||a(e))}},51789:(e,t,n)=>{var r=n(94536);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},80401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},57667:(e,t,n)=>{var r=n(94536),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return a.call(t,e)?t[e]:void 0}},21327:(e,t,n)=>{var r=n(94536),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:a.call(t,e)}},81866:(e,t,n)=>{var r=n(94536);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},43824:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,r=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},29148:(e,t,n)=>{var r=n(74318),a=n(57157),o=n(93147),i=n(40419),l=n(77133);e.exports=function(e,t,n){var s=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new s(+e);case"[object DataView]":return a(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return l(e,n);case"[object Map]":case"[object Set]":return new s;case"[object Number]":case"[object String]":return new s(e);case"[object RegExp]":return o(e);case"[object Symbol]":return i(e)}}},38517:(e,t,n)=>{var r=n(3118),a=n(85924),o=n(25726);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:r(a(e))}},37285:(e,t,n)=>{var r=n(62705),a=n(35694),o=n(1469),i=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||a(e)||!!(i&&e&&e[i])}},65776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e<n}},15403:(e,t,n)=>{var r=n(1469),a=n(33448),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!a(e))||(i.test(e)||!o.test(e)||null!=t&&e in Object(t))}},37019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},15346:(e,t,n)=>{var r,a=n(14429),o=(r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},25726:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},89162:(e,t,n)=>{var r=n(13218);e.exports=function(e){return e==e&&!r(e)}},27040:e=>{e.exports=function(){this.__data__=[],this.size=0}},14125:(e,t,n)=>{var r=n(18470),a=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():a.call(t,n,1),--this.size,!0)}},82117:(e,t,n)=>{var r=n(18470);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},67518:(e,t,n)=>{var r=n(18470);e.exports=function(e){return r(this.__data__,e)>-1}},54705:(e,t,n)=>{var r=n(18470);e.exports=function(e,t){var n=this.__data__,a=r(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this}},24785:(e,t,n)=>{var r=n(1989),a=n(38407),o=n(57071);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||a),string:new r}}},11285:(e,t,n)=>{var r=n(45050);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},96e3:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).get(e)}},49916:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).has(e)}},95265:(e,t,n)=>{var r=n(45050);e.exports=function(e,t){var n=r(this,e),a=n.size;return n.set(e,t),this.size+=n.size==a?0:1,this}},68776:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},42634:e=>{e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},24523:(e,t,n)=>{var r=n(88306);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},94536:(e,t,n)=>{var r=n(10852)(Object,"create");e.exports=r},86916:(e,t,n)=>{var r=n(5569)(Object.keys,Object);e.exports=r},33498:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},31167:(e,t,n)=>{e=n.nmd(e);var r=n(31957),a=t&&!t.nodeType&&t,o=a&&e&&!e.nodeType&&e,i=o&&o.exports===a&&r.process,l=function(){try{var e=o&&o.require&&o.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(t){}}();e.exports=l},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},45357:(e,t,n)=>{var r=n(96874),a=Math.max;e.exports=function(e,t,n){return t=a(void 0===t?e.length-1:t,0),function(){for(var o=arguments,i=-1,l=a(o.length-t,0),s=Array(l);++i<l;)s[i]=o[t+i];i=-1;for(var u=Array(t+1);++i<t;)u[i]=o[i];return u[t]=n(s),r(e,this,u)}}},40292:(e,t,n)=>{var r=n(97786),a=n(14259);e.exports=function(e,t){return t.length<2?e:r(e,a(t,0,-1))}},55639:(e,t,n)=>{var r=n(31957),a="object"==typeof self&&self&&self.Object===Object&&self,o=r||a||Function("return this")();e.exports=o},90619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},72385:e=>{e.exports=function(e){return this.__data__.has(e)}},21814:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},30061:(e,t,n)=>{var r=n(56560),a=n(21275)(r);e.exports=a},21275:e=>{var t=Date.now;e.exports=function(e){var n=0,r=0;return function(){var a=t(),o=16-(a-r);if(r=a,o>0){if(++n>=800)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}},37465:(e,t,n)=>{var r=n(38407);e.exports=function(){this.__data__=new r,this.size=0}},63779:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},67599:e=>{e.exports=function(e){return this.__data__.get(e)}},44758:e=>{e.exports=function(e){return this.__data__.has(e)}},34309:(e,t,n)=>{var r=n(38407),a=n(57071),o=n(83369);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!a||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(i)}return n.set(e,t),this.size=n.size,this}},55514:(e,t,n)=>{var r=n(24523),a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(a,(function(e,n,r,a){t.push(r?a.replace(o,"$1"):n||e)})),t}));e.exports=i},40327:(e,t,n)=>{var r=n(33448);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t}},80346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},75703:e=>{e.exports=function(e){return function(){return e}}},77813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},85564:(e,t,n)=>{var r=n(21078);e.exports=function(e){return(null==e?0:e.length)?r(e,1):[]}},27361:(e,t,n)=>{var r=n(97786);e.exports=function(e,t,n){var a=null==e?void 0:r(e,t);return void 0===a?n:a}},7739:(e,t,n)=>{var r=n(89465),a=n(55189),o=Object.prototype.hasOwnProperty,i=a((function(e,t,n){o.call(e,n)?e[n].push(t):r(e,n,[t])}));e.exports=i},79095:(e,t,n)=>{var r=n(13),a=n(222);e.exports=function(e,t){return null!=e&&a(e,t,r)}},6557:e=>{e.exports=function(e){return e}},35694:(e,t,n)=>{var r=n(9454),a=n(37005),o=Object.prototype,i=o.hasOwnProperty,l=o.propertyIsEnumerable,s=r(function(){return arguments}())?r:function(e){return a(e)&&i.call(e,"callee")&&!l.call(e,"callee")};e.exports=s},1469:e=>{var t=Array.isArray;e.exports=t},98612:(e,t,n)=>{var r=n(23560),a=n(41780);e.exports=function(e){return null!=e&&a(e.length)&&!r(e)}},44144:(e,t,n)=>{e=n.nmd(e);var r=n(55639),a=n(95062),o=t&&!t.nodeType&&t,i=o&&e&&!e.nodeType&&e,l=i&&i.exports===o?r.Buffer:void 0,s=(l?l.isBuffer:void 0)||a;e.exports=s},23560:(e,t,n)=>{var r=n(44239),a=n(13218);e.exports=function(e){if(!a(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},41780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},56688:(e,t,n)=>{var r=n(25588),a=n(7518),o=n(31167),i=o&&o.isMap,l=i?a(i):r;e.exports=l},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},68630:(e,t,n)=>{var r=n(44239),a=n(85924),o=n(37005),i=Function.prototype,l=Object.prototype,s=i.toString,u=l.hasOwnProperty,c=s.call(Object);e.exports=function(e){if(!o(e)||"[object Object]"!=r(e))return!1;var t=a(e);if(null===t)return!0;var n=u.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==c}},72928:(e,t,n)=>{var r=n(29221),a=n(7518),o=n(31167),i=o&&o.isSet,l=i?a(i):r;e.exports=l},33448:(e,t,n)=>{var r=n(44239),a=n(37005);e.exports=function(e){return"symbol"==typeof e||a(e)&&"[object Symbol]"==r(e)}},36719:(e,t,n)=>{var r=n(38749),a=n(7518),o=n(31167),i=o&&o.isTypedArray,l=i?a(i):r;e.exports=l},3674:(e,t,n)=>{var r=n(14636),a=n(280),o=n(98612);e.exports=function(e){return o(e)?r(e):a(e)}},81704:(e,t,n)=>{var r=n(14636),a=n(10313),o=n(98612);e.exports=function(e){return o(e)?r(e,!0):a(e)}},10928:e=>{e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},88306:(e,t,n)=>{var r=n(83369);function a(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=t?t.apply(this,r):r[0],o=n.cache;if(o.has(a))return o.get(a);var i=e.apply(this,r);return n.cache=o.set(a,i)||o,i};return n.cache=new(a.Cache||r),n}a.Cache=r,e.exports=a},57557:(e,t,n)=>{var r=n(29932),a=n(85990),o=n(57406),i=n(71811),l=n(98363),s=n(60696),u=n(99021),c=n(46904),d=u((function(e,t){var n={};if(null==e)return n;var u=!1;t=r(t,(function(t){return t=i(t,e),u||(u=t.length>1),t})),l(e,c(e),n),u&&(n=a(n,7,s));for(var d=t.length;d--;)o(n,t[d]);return n}));e.exports=d},39601:(e,t,n)=>{var r=n(40371),a=n(79152),o=n(15403),i=n(40327);e.exports=function(e){return o(e)?r(i(e)):a(e)}},70479:e=>{e.exports=function(){return[]}},95062:e=>{e.exports=function(){return!1}},79833:(e,t,n)=>{var r=n(80531);e.exports=function(e){return null==e?"":r(e)}},31336:(e,t,n)=>{var r,a;!function(){var o,i,l,s,u,c,d,f,p,h,m,g,v,b,y,w,x,k,_,E,S,C,T,O,D,P,N,I,A,L,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version="2.3.9",R.utils={},R.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),R.utils.asString=function(e){return null==e?"":e.toString()},R.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var a=n[r],o=e[a];if(Array.isArray(o))t[a]=o.slice();else{if("string"!=typeof o&&"number"!=typeof o&&"boolean"!=typeof o)throw new TypeError("clone is not deep and does not support nested objects");t[a]=o}}return t},R.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},R.FieldRef.joiner="/",R.FieldRef.fromString=function(e){var t=e.indexOf(R.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new R.FieldRef(r,n,e)},R.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+R.FieldRef.joiner+this.docRef),this._stringValue},R.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},R.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},R.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},R.Set.prototype.contains=function(e){return!!this.elements[e]},R.Set.prototype.intersect=function(e){var t,n,r,a=[];if(e===R.Set.complete)return this;if(e===R.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var o=0;o<r.length;o++){var i=r[o];i in n.elements&&a.push(i)}return new R.Set(a)},R.Set.prototype.union=function(e){return e===R.Set.complete?R.Set.complete:e===R.Set.empty?this:new R.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},R.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var a=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(a))},R.Token=function(e,t){this.str=e||"",this.metadata=t||{}},R.Token.prototype.toString=function(){return this.str},R.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},R.Token.prototype.clone=function(e){return e=e||function(e){return e},new R.Token(e(this.str,this.metadata),this.metadata)},R.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new R.Token(R.utils.asString(e).toLowerCase(),R.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,a=[],o=0,i=0;o<=r;o++){var l=o-i;if(n.charAt(o).match(R.tokenizer.separator)||o==r){if(l>0){var s=R.utils.clone(t)||{};s.position=[i,l],s.index=a.length,a.push(new R.Token(n.slice(i,o),s))}i=o+1}}return a},R.tokenizer.separator=/[\s\-]+/,R.Pipeline=function(){this._stack=[]},R.Pipeline.registeredFunctions=Object.create(null),R.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&R.utils.warn("Overwriting existing registered function: "+t),e.label=t,R.Pipeline.registeredFunctions[e.label]=e},R.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||R.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},R.Pipeline.load=function(e){var t=new R.Pipeline;return e.forEach((function(e){var n=R.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},R.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){R.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},R.Pipeline.prototype.after=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},R.Pipeline.prototype.before=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},R.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},R.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],a=[],o=0;o<e.length;o++){var i=r(e[o],o,e);if(null!=i&&""!==i)if(Array.isArray(i))for(var l=0;l<i.length;l++)a.push(i[l]);else a.push(i)}e=a}return e},R.Pipeline.prototype.runString=function(e,t){var n=new R.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},R.Pipeline.prototype.reset=function(){this._stack=[]},R.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return R.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},R.Vector=function(e){this._magnitude=0,this.elements=e||[]},R.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,a=Math.floor(r/2),o=this.elements[2*a];r>1&&(o<e&&(t=a),o>e&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:o<e?2*(a+1):void 0},R.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},R.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},R.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},R.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,a=n.length,o=r.length,i=0,l=0,s=0,u=0;s<a&&u<o;)(i=n[s])<(l=r[u])?s+=2:i>l?u+=2:i==l&&(t+=n[s+1]*r[u+1],s+=2,u+=2);return t},R.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},R.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},R.Vector.prototype.toJSON=function(){return this.elements},R.stemmer=(i={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},l={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},d="^("+(u="[^aeiou][^aeiouy]*")+")?"+(c=(s="[aeiouy]")+"[aeiou]*")+u+"("+c+")?$",f="^("+u+")?"+c+u+c+u,p="^("+u+")?"+s,h=new RegExp("^("+u+")?"+c+u),m=new RegExp(f),g=new RegExp(d),v=new RegExp(p),b=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,x=/^(.+?)(ed|ing)$/,k=/.$/,_=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),S=new RegExp("^"+u+s+"[^aeiouwxy]$"),C=/^(.+?[^aeiou])y$/,T=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,O=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,D=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,P=/^(.+?)(s|t)(ion)$/,N=/^(.+?)e$/,I=/ll$/,A=new RegExp("^"+u+s+"[^aeiouwxy]$"),L=function(e){var t,n,r,a,o,s,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),o=y,(a=b).test(e)?e=e.replace(a,"$1$2"):o.test(e)&&(e=e.replace(o,"$1$2")),o=x,(a=w).test(e)){var c=a.exec(e);(a=h).test(c[1])&&(a=k,e=e.replace(a,""))}else o.test(e)&&(t=(c=o.exec(e))[1],(o=v).test(t)&&(s=E,u=S,(o=_).test(e=t)?e+="e":s.test(e)?(a=k,e=e.replace(a,"")):u.test(e)&&(e+="e")));return(a=C).test(e)&&(e=(t=(c=a.exec(e))[1])+"i"),(a=T).test(e)&&(t=(c=a.exec(e))[1],n=c[2],(a=h).test(t)&&(e=t+i[n])),(a=O).test(e)&&(t=(c=a.exec(e))[1],n=c[2],(a=h).test(t)&&(e=t+l[n])),o=P,(a=D).test(e)?(t=(c=a.exec(e))[1],(a=m).test(t)&&(e=t)):o.test(e)&&(t=(c=o.exec(e))[1]+c[2],(o=m).test(t)&&(e=t)),(a=N).test(e)&&(t=(c=a.exec(e))[1],o=g,s=A,((a=m).test(t)||o.test(t)&&!s.test(t))&&(e=t)),o=m,(a=I).test(e)&&o.test(e)&&(a=k,e=e.replace(a,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(L)}),R.Pipeline.registerFunction(R.stemmer,"stemmer"),R.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},R.stopWordFilter=R.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),R.Pipeline.registerFunction(R.stopWordFilter,"stopWordFilter"),R.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},R.Pipeline.registerFunction(R.trimmer,"trimmer"),R.TokenSet=function(){this.final=!1,this.edges={},this.id=R.TokenSet._nextId,R.TokenSet._nextId+=1},R.TokenSet._nextId=1,R.TokenSet.fromArray=function(e){for(var t=new R.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},R.TokenSet.fromClause=function(e){return"editDistance"in e?R.TokenSet.fromFuzzyString(e.term,e.editDistance):R.TokenSet.fromString(e.term)},R.TokenSet.fromFuzzyString=function(e,t){for(var n=new R.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var a=r.pop();if(a.str.length>0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new R.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new R.TokenSet;a.node.edges["*"]=l}if(0==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var s=a.node.edges["*"];else{s=new R.TokenSet;a.node.edges["*"]=s}1==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var u,c=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?u=a.node.edges[d]:(u=new R.TokenSet,a.node.edges[d]=u),1==a.str.length&&(u.final=!0),r.push({node:u,editsRemaining:a.editsRemaining-1,str:c+a.str.slice(2)})}}}return n},R.TokenSet.fromString=function(e){for(var t=new R.TokenSet,n=t,r=0,a=e.length;r<a;r++){var o=e[r],i=r==a-1;if("*"==o)t.edges[o]=t,t.final=i;else{var l=new R.TokenSet;l.final=i,t.edges[o]=l,t=l}}return n},R.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),a=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<a;o++){var i=r[o];t.push({prefix:n.prefix.concat(i),node:n.node.edges[i]})}}return e},R.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var a=t[r];e=e+a+this.edges[a].id}return e},R.TokenSet.prototype.intersect=function(e){for(var t=new R.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var a=Object.keys(n.qNode.edges),o=a.length,i=Object.keys(n.node.edges),l=i.length,s=0;s<o;s++)for(var u=a[s],c=0;c<l;c++){var d=i[c];if(d==u||"*"==u){var f=n.node.edges[d],p=n.qNode.edges[u],h=f.final&&p.final,m=void 0;d in n.output.edges?(m=n.output.edges[d]).final=m.final||h:((m=new R.TokenSet).final=h,n.output.edges[d]=m),r.push({qNode:p,output:m,node:f})}}}return t},R.TokenSet.Builder=function(){this.previousWord="",this.root=new R.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},R.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var a=new R.TokenSet,o=e[r];t.edges[o]=a,this.uncheckedNodes.push({parent:t,char:o,child:a}),t=a}t.final=!0,this.previousWord=e},R.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},R.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query((function(t){new R.QueryParser(e,t).parse()}))},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),l=0;l<this.fields.length;l++)r[this.fields[l]]=new R.Vector;e.call(t,t);for(l=0;l<t.clauses.length;l++){var s=t.clauses[l],u=null,c=R.Set.empty;u=s.usePipeline?this.pipeline.runString(s.term,{fields:s.fields}):[s.term];for(var d=0;d<u.length;d++){var f=u[d];s.term=f;var p=R.TokenSet.fromClause(s),h=this.tokenSet.intersect(p).toArray();if(0===h.length&&s.presence===R.Query.presence.REQUIRED){for(var m=0;m<s.fields.length;m++){o[N=s.fields[m]]=R.Set.empty}break}for(var g=0;g<h.length;g++){var v=h[g],b=this.invertedIndex[v],y=b._index;for(m=0;m<s.fields.length;m++){var w=b[N=s.fields[m]],x=Object.keys(w),k=v+"/"+N,_=new R.Set(x);if(s.presence==R.Query.presence.REQUIRED&&(c=c.union(_),void 0===o[N]&&(o[N]=R.Set.complete)),s.presence!=R.Query.presence.PROHIBITED){if(r[N].upsert(y,s.boost,(function(e,t){return e+t})),!a[k]){for(var E=0;E<x.length;E++){var S,C=x[E],T=new R.FieldRef(C,N),O=w[C];void 0===(S=n[T])?n[T]=new R.MatchData(v,N,O):S.add(v,N,O)}a[k]=!0}}else void 0===i[N]&&(i[N]=R.Set.empty),i[N]=i[N].union(_)}}}if(s.presence===R.Query.presence.REQUIRED)for(m=0;m<s.fields.length;m++){o[N=s.fields[m]]=o[N].intersect(c)}}var D=R.Set.complete,P=R.Set.empty;for(l=0;l<this.fields.length;l++){var N;o[N=this.fields[l]]&&(D=D.intersect(o[N])),i[N]&&(P=P.union(i[N]))}var I=Object.keys(n),A=[],L=Object.create(null);if(t.isNegated()){I=Object.keys(this.fieldVectors);for(l=0;l<I.length;l++){T=I[l];var j=R.FieldRef.fromString(T);n[T]=new R.MatchData}}for(l=0;l<I.length;l++){var M=(j=R.FieldRef.fromString(I[l])).docRef;if(D.contains(M)&&!P.contains(M)){var F,B=this.fieldVectors[j],z=r[j.fieldName].similarity(B);if(void 0!==(F=L[M]))F.score+=z,F.matchData.combine(n[j]);else{var $={ref:M,score:z,matchData:n[j]};L[M]=$,A.push($)}}}return A.sort((function(e,t){return t.score-e.score}))},R.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},n={},r=e.fieldVectors,a=Object.create(null),o=e.invertedIndex,i=new R.TokenSet.Builder,l=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+R.version+"' does not match serialized index '"+e.version+"'");for(var s=0;s<r.length;s++){var u=(d=r[s])[0],c=d[1];n[u]=new R.Vector(c)}for(s=0;s<o.length;s++){var d,f=(d=o[s])[0],p=d[1];i.insert(f),a[f]=p}return i.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=a,t.tokenSet=i.root,t.pipeline=l,new R.Index(t)},R.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var a=0;a<r.length;a++){var o=r[a],i=this._fields[o].extractor,l=i?i(e):e[o],s=this.tokenizer(l,{fields:[o]}),u=this.pipeline.run(s),c=new R.FieldRef(n,o),d=Object.create(null);this.fieldTermFrequencies[c]=d,this.fieldLengths[c]=0,this.fieldLengths[c]+=u.length;for(var f=0;f<u.length;f++){var p=u[f];if(null==d[p]&&(d[p]=0),d[p]+=1,null==this.invertedIndex[p]){var h=Object.create(null);h._index=this.termIndex,this.termIndex+=1;for(var m=0;m<r.length;m++)h[r[m]]=Object.create(null);this.invertedIndex[p]=h}null==this.invertedIndex[p][o][n]&&(this.invertedIndex[p][o][n]=Object.create(null));for(var g=0;g<this.metadataWhitelist.length;g++){var v=this.metadataWhitelist[g],b=p.metadata[v];null==this.invertedIndex[p][o][n][v]&&(this.invertedIndex[p][o][n][v]=[]),this.invertedIndex[p][o][n][v].push(b)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},a=0;a<t;a++){var o=R.FieldRef.fromString(e[a]),i=o.fieldName;r[i]||(r[i]=0),r[i]+=1,n[i]||(n[i]=0),n[i]+=this.fieldLengths[o]}var l=Object.keys(this._fields);for(a=0;a<l.length;a++){var s=l[a];n[s]=n[s]/r[s]}this.averageFieldLength=n},R.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),a=0;a<n;a++){for(var o=R.FieldRef.fromString(t[a]),i=o.fieldName,l=this.fieldLengths[o],s=new R.Vector,u=this.fieldTermFrequencies[o],c=Object.keys(u),d=c.length,f=this._fields[i].boost||1,p=this._documents[o.docRef].boost||1,h=0;h<d;h++){var m,g,v,b=c[h],y=u[b],w=this.invertedIndex[b]._index;void 0===r[b]?(m=R.idf(this.invertedIndex[b],this.documentCount),r[b]=m):m=r[b],g=m*((this._k1+1)*y)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[i]))+y),g*=f,g*=p,v=Math.round(1e3*g)/1e3,s.insert(w,v)}e[o]=s}this.fieldVectors=e},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.MatchData=function(e,t,n){for(var r=Object.create(null),a=Object.keys(n||{}),o=0;o<a.length;o++){var i=a[o];r[i]=n[i].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},R.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],a=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var o=0;o<a.length;o++){var i=a[o],l=Object.keys(e.metadata[r][i]);null==this.metadata[r][i]&&(this.metadata[r][i]=Object.create(null));for(var s=0;s<l.length;s++){var u=l[s];null==this.metadata[r][i][u]?this.metadata[r][i][u]=e.metadata[r][i][u]:this.metadata[r][i][u]=this.metadata[r][i][u].concat(e.metadata[r][i][u])}}}},R.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),a=0;a<r.length;a++){var o=r[a];o in this.metadata[e][t]?this.metadata[e][t][o]=this.metadata[e][t][o].concat(n[o]):this.metadata[e][t][o]=n[o]}else this.metadata[e][t]=n},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String("*"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term="*"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,R.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},R.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS="EOS",R.QueryLexer.FIELD="FIELD",R.QueryLexer.TERM="TERM",R.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",R.QueryLexer.BOOST="BOOST",R.QueryLexer.PRESENCE="PRESENCE",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return R.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new R.QueryParseError(n,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new R.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new R.QueryParseError(n,t.start,t.end)}switch(r.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new R.QueryParseError(n,r.start,r.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new R.QueryParseError(r,t.start,t.end)}if(a.type===R.QueryLexer.TERM)return R.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(r,n.start,n.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return R})?r.call(t,n,t,e):r)||(e.exports=a)}()},27861:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={icon:"icon_S7Kx",s:"s_AZDZ",m:"m_thRi",l:"l_WHPt",fill:"fill_hNhN",stroke:"stroke_N8dm"}},10153:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={backdrop:"backdrop_Ifvc",navWrapper:"navWrapper_ybYI",nav:"nav_cMpg",visible:"visible_ynAX",wrapper:"wrapper_SWrM",fullscreenButton:"fullscreenButton_Bocn",active:"active_qZD5"}},8633:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={toggle:"toggle_K23S",toggleButton:"toggleButton_dl49",darkToggleIcon:"darkToggleIcon_lKkA",lightToggleIcon:"lightToggleIcon_K4TL",toggleButtonDisabled:"toggleButtonDisabled_AAS_"}},79762:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={firstRow:"firstRow_ar1q",secondRow:"secondRow__ww3",backToTop:"backToTop_wDfN",footerLink:"footerLink_sh7M"}},90826:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={colorModeToggle:"colorModeToggle_GSaI",rightSection:"rightSection_CLeF",iconButtonGroup:"iconButtonGroup_ktNv"}},83244:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={dropdownNavbarItem:"dropdownNavbarItem_o23I"}},31259:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={modal:"modal_kLVz",closeButton:"closeButton_Rr0e",header:"header_QwCa"}},61699:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_ONDG",empty:"empty_a7qb",title:"title_uwS_",item:"item_RHYF",itemTitle:"itemTitle_jtAv"}},9592:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_xZfc",textField:"textField_af43"}},1443:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_N57j"}},18589:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_Ooa0",level1:"level1_fpUf",icon:"icon_sZn2",fill:"fill_fkan",stroke:"stroke_j3wH"}},86620:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_JWD1"}},38076:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_EFVO"}},20550:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_ltHz",noResults:"noResults_mD2O",groups:"groups_p1lF",divider:"divider_eGUz",topBar:"topBar_Dtew"}},22473:(e,t,n)=>{"use strict";n.r(t)},11057:(e,t,n)=>{"use strict";n.r(t)},93878:(e,t,n)=>{"use strict";n.r(t)},32497:(e,t,n)=>{"use strict";n.r(t)},97087:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={navbarHideable:"navbarHideable_OoEf",navbarHidden:"navbarHidden_zoxl"}},88822:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={linkContent:"linkContent__x3v",externalLinkIcon:"externalLinkIcon_Qfue"}},65787:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={themedImage:"themedImage_kfRS","themedImage--light":"themedImage--light_BL8e","themedImage--dark":"themedImage--dark_OvIx"}},36459:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_QACb"}},97142:(e,t)=>{"use strict";t.I=function(e){e.client&&(document.head.appendChild(e.msh=document.createElement("style")),e.createRule=function(t,n){var r=t+"{}";n&&(r=n+"{"+r+"}");var a=n?e.msh.sheet:e.sh.sheet,o=a.insertRule(r,a.cssRules.length),i=(a.cssRules||a.rules)[o];if(i.index=o,n){var l=(i.cssRules||i.rules)[0];i.style=l.style,i.styleMap=l.styleMap}return i})}},52099:(e,t,n)=>{"use strict";var r=n(39662).D;t.I=function(e){if(e.client){0;var t=e.kebab;n.prototype.diff=function(e){var n,r=this.decl,a=this.rule.style;for(n in r)void 0===e[n]&&a.removeProperty(n);for(n in e)e[n]!==r[n]&&a.setProperty(t(n),e[n]);this.decl=e},n.prototype.del=function(){r(this.rule)},a.prototype.diff=function(e){var t=this.tree;for(var r in t)if(void 0===e[r]){var a=t[r];for(var o in a)a[o].del()}for(var r in e)if(void 0===t[r])for(var o in e[r]){(s=new n(o,r)).diff(e[r][o]),e[r][o]=s}else{var i=t[r],l=e[r];for(var o in i)l[o]||i[o].del();for(var o in l){var s;(s=i[o])?(s.diff(l[o]),l[o]=s):((s=new n(o,r)).diff(l[o]),l[o]=s)}}this.tree=e},e.VRule=n,e.VSheet=a}function n(t,n){this.rule=e.createRule(t,n),this.decl={}}function a(){this.tree={}}}},87749:(e,t)=>{t.z=function e(t,n,r,a){var o,i,l={},s=!1;for(o in n)"object"!=typeof(i=n[o])&&(s=!0,l[o]=i);for(o in s&&(t[a]||(t[a]={}),t[a][r]=l),n)if("object"==typeof(i=n[o]))if("@"===o[0])e(t,i,r,o);else{var u=o.indexOf("&")>-1,c=r.split(",");if(u)for(var d=0;d<c.length;d++)c[d]=o.replace(/&/g,c[d]);else for(d=0;d<c.length;d++)c[d]=c[d]+" "+o;e(t,i,c.join(","),a)}}},39662:(e,t)=>{t.D=function(e){var t=e.index,n=e.parentStyleSheet,r=n.cssRules||n.rules;for(t=Math.max(t,r.length-1);t>=0;){if(r[t]===e){n.deleteRule(t);break}t--}}},40818:(e,t)=>{"use strict";var n=/[A-Z]/g;t.U=function(e){var t=(e=e||{}).assign||Object.assign;var r=t({raw:"",pfx:"_",client:"object"==typeof window,assign:t,stringify:JSON.stringify,kebab:function(e){return e.replace(n,"-$&").toLowerCase()},decl:function(e,t){return(e=r.kebab(e))+":"+t+";"},hash:function(e){return function(e){for(var t=5381,n=e.length;n;)t=33*t^e.charCodeAt(--n);return"_"+(t>>>0).toString(36)}(r.stringify(e))},selector:function(e,t){return e+(":"===t[0]?"":" ")+t},putRaw:function(e){r.raw+=e}},e);return r.client&&(r.sh||document.head.appendChild(r.sh=document.createElement("style")),r.putRaw=function(e){var t=r.sh.sheet;try{t.insertRule(e,t.cssRules.length)}catch(n){}}),r.put=function(e,t,n){var a,o,i="",l=[];for(a in t)(o=t[a])instanceof Object&&!(o instanceof Array)?l.push(a):i+=r.decl(a,o,e,n);i&&(i=e+"{"+i+"}",r.putRaw(n?n+"{"+i+"}":i));for(var s=0;s<l.length;s++)"@"===(a=l[s])[0]&&"@font-face"!==a?r.putAt(e,t[a],a):r.put(r.selector(e,a),t[a],n)},r.putAt=r.put,r}},74865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},27418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var u in o=Object(arguments[s]))n.call(o,u)&&(l[u]=o[u]);if(t){i=t(o);for(var c=0;c<i.length;c++)r.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l}},87594:(e,t)=>{function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,a,o]=t;if(r&&o){r=parseInt(r),o=parseInt(o);const e=r<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=r;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},87410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var h=0;h<p.length;++h){if(d&&d.cause==f+","+h)return;var m=p[h],g=m.inside,v=!!m.lookbehind,b=!!m.greedy,y=m.alias;if(b&&!m.pattern.global){var w=m.pattern.toString().match(/[imsuy]*$/)[0];m.pattern=RegExp(m.pattern.source,w+"g")}for(var x=m.pattern||m,k=l.next,_=c;k!==t.tail&&!(d&&_>=d.reach);_+=k.value.length,k=k.next){var E=k.value;if(t.length>e.length)return;if(!(E instanceof a)){var S,C=1;if(b){if(!(S=o(x,_,e,v))||S.index>=e.length)break;var T=S.index,O=S.index+S[0].length,D=_;for(D+=k.value.length;T>=D;)D+=(k=k.next).value.length;if(_=D-=k.value.length,k.value instanceof a)continue;for(var P=k;P!==t.tail&&(D<O||"string"==typeof P.value);P=P.next)C++,D+=P.value.length;C--,E=e.slice(_,D),S.index-=_}else if(!(S=o(x,0,E,v)))continue;T=S.index;var N=S[0],I=E.slice(0,T),A=E.slice(T+N.length),L=_+E.length;d&&L>d.reach&&(d.reach=L);var R=k.prev;if(I&&(R=s(t,R,I),_+=I.length),u(t,R,C),k=s(t,R,new a(f,g?r.tokenize(N,g):N,y,N)),A&&s(t,k,A),C>1){var j={cause:f+","+h,reach:L};i(e,t,n,k.prev,_,j),d&&j.reach>d.reach&&(d.reach=j.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),h=[];if(s&&h.push(s),h.push(d),p){var m=[p];e(m),h.push.apply(h,m)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(h)),n+=h.length-1):r.content=h}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),h=f.indexOf(p);if(h>-1){++a;var m=f.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(h+p.length),b=[];m&&b.push.apply(b,i([m])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},29901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(29901),a=n(39642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(16500).resolve(t)],delete Prism.languages[e],n(16500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},16500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=16500},39642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),h=c;a(h);){for(var m in f={},h){var g=s[m];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in h=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},92703:(e,t,n)=>{"use strict";var r=n(50414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var r=n(67294),a=n(27418),o=n(63840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,h={},m={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!p.call(m,e)||!p.call(h,e)&&(f.test(e)?m[e]=!0:(h[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var x=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=60103,_=60106,E=60107,S=60108,C=60114,T=60109,O=60110,D=60112,P=60113,N=60120,I=60115,A=60116,L=60121,R=60128,j=60129,M=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;k=B("react.element"),_=B("react.portal"),E=B("react.fragment"),S=B("react.strict_mode"),C=B("react.profiler"),T=B("react.provider"),O=B("react.context"),D=B("react.forward_ref"),P=B("react.suspense"),N=B("react.suspense_list"),I=B("react.memo"),A=B("react.lazy"),L=B("react.block"),B("react.scope"),R=B("react.opaque.id"),j=B("react.debug_trace_mode"),M=B("react.offscreen"),F=B("react.legacy_hidden")}var z,$="function"==typeof Symbol&&Symbol.iterator;function U(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=$&&e[$]||e["@@iterator"])?e:null}function H(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var V=!1;function q(e,t){if(!e||V)return"";V=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{V=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?H(e):""}function W(e){switch(e.tag){case 5:return H(e.type);case 16:return H("Lazy");case 13:return H("Suspense");case 19:return H("SuspenseList");case 0:case 2:case 15:return e=q(e.type,!1);case 11:return e=q(e.type.render,!1);case 22:return e=q(e.type._render,!1);case 1:return e=q(e.type,!0);default:return""}}function G(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case E:return"Fragment";case _:return"Portal";case C:return"Profiler";case S:return"StrictMode";case P:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case O:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case D:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case I:return G(e.type);case L:return G(e._render);case A:t=e._payload,e=e._init;try{return G(e(t))}catch(n){}}return null}function Z(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Q(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Y(e){e._valueTracker||(e._valueTracker=function(e){var t=Q(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function X(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Q(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function K(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Z(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=Z(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,Z(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&K(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Z(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:Z(n)}}function ue(e,t){var n=Z(t.value),r=Z(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function fe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?fe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var he,me,ge=(me=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((he=he||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=he.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return me(e,t)}))}:me);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var be={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||be.hasOwnProperty(e)&&be[e]?(""+t).trim():t+"px"}function xe(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(be).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),be[t]=be[e]}))}));var ke=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _e(e,t){if(t){if(ke[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function Ee(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Se(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Oe=null;function De(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Pe(e){Te?Oe?Oe.push(e):Oe=[e]:Te=e}function Ne(){if(Te){var e=Te,t=Oe;if(Oe=Te=null,De(e),t)for(e=0;e<t.length;e++)De(t[e])}}function Ie(e,t){return e(t)}function Ae(e,t,n,r,a){return e(t,n,r,a)}function Le(){}var Re=Ie,je=!1,Me=!1;function Fe(){null===Te&&null===Oe||(Le(),Ne())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var $e={};Object.defineProperty($e,"passive",{get:function(){ze=!0}}),window.addEventListener("test",$e,$e),window.removeEventListener("test",$e,$e)}catch(me){ze=!1}function Ue(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var He=!1,Ve=null,qe=!1,We=null,Ge={onError:function(e){He=!0,Ve=e}};function Ze(e,t,n,r,a,o,i,l,s){He=!1,Ve=null,Ue.apply(Ge,arguments)}function Qe(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ye(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Xe(e){if(Qe(e)!==e)throw Error(i(188))}function Ke(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Qe(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Xe(a),e;if(o===r)return Xe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ut=new Map,ct=new Map,dt=[],ft="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function ht(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function mt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=pt(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Qe(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ye(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function bt(e,t,n){vt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&vt(it)&&(it=null),null!==lt&&vt(lt)&&(lt=null),null!==st&&vt(st)&&(st=null),ut.forEach(bt),ct.forEach(bt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function xt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function kt(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var _t={animationend:kt("Animation","AnimationEnd"),animationiteration:kt("Animation","AnimationIteration"),animationstart:kt("Animation","AnimationStart"),transitionend:kt("Transition","TransitionEnd")},Et={},St={};function Ct(e){if(Et[e])return Et[e];if(!_t[e])return e;var t,n=_t[e];for(t in n)if(n.hasOwnProperty(t)&&t in St)return Et[e]=n[t];return e}d&&(St=document.createElement("div").style,"AnimationEvent"in window||(delete _t.animationend.animation,delete _t.animationiteration.animation,delete _t.animationstart.animation),"TransitionEvent"in window||delete _t.transitionend.transition);var Tt=Ct("animationend"),Ot=Ct("animationiteration"),Dt=Ct("animationstart"),Pt=Ct("transitionend"),Nt=new Map,It=new Map,At=["abort","abort",Tt,"animationEnd",Ot,"animationIteration",Dt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Pt,"transitionEnd","waiting","waiting"];function Lt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),It.set(r,t),Nt.set(r,a),u(a,[r])}}(0,o.unstable_now)();var Rt=8;function jt(e){if(0!=(1&e))return Rt=15,1;if(0!=(2&e))return Rt=14,2;if(0!=(4&e))return Rt=13,4;var t=24&e;return 0!==t?(Rt=12,t):0!=(32&e)?(Rt=11,32):0!==(t=192&e)?(Rt=10,t):0!=(256&e)?(Rt=9,256):0!==(t=3584&e)?(Rt=8,t):0!=(4096&e)?(Rt=7,4096):0!==(t=4186112&e)?(Rt=6,t):0!==(t=62914560&e)?(Rt=5,t):67108864&e?(Rt=4,67108864):0!=(134217728&e)?(Rt=3,134217728):0!==(t=805306368&e)?(Rt=2,t):0!=(1073741824&e)?(Rt=1,1073741824):(Rt=8,e)}function Mt(e,t){var n=e.pendingLanes;if(0===n)return Rt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=Rt=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=jt(s),a=Rt):0!==(l&=o)&&(r=jt(l),a=Rt)}else 0!==(o=n&~i)?(r=jt(o),a=Rt):0!==l&&(r=jt(l),a=Rt);if(0===r)return 0;if(r=n&((0>(r=31-Ht(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(jt(t),a<=Rt)return t;Rt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-Ht(t)),r|=e[n],t&=~a;return r}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?Bt(10,t):e;case 10:return 0===(e=zt(192&~t))?Bt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function $t(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ut(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Ht(t)]=n}var Ht=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Vt(e)/qt|0)|0},Vt=Math.log,qt=Math.LN2;var Wt=o.unstable_UserBlockingPriority,Gt=o.unstable_runWithPriority,Zt=!0;function Qt(e,t,n,r){je||Le();var a=Xt,o=je;je=!0;try{Ae(a,e,t,n,r)}finally{(je=o)||Fe()}}function Yt(e,t,n,r){Gt(Wt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var a;if(Zt)if((a=0==(4&t))&&0<ot.length&&-1<ft.indexOf(e))e=pt(null,e,t,n,r),ot.push(e);else{var o=Kt(e,t,n,r);if(null===o)a&&ht(e,r);else{if(a){if(-1<ft.indexOf(e))return e=pt(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=mt(it,e,t,n,r,a),!0;case"dragenter":return lt=mt(lt,e,t,n,r,a),!0;case"mouseover":return st=mt(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,mt(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ct.set(o,mt(ct.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;ht(e,r)}Lr(e,t,r,null,n)}}}function Kt(e,t,n,r){var a=Se(r);if(null!==(a=ta(a))){var o=Qe(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ye(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Lr(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},fn=ln(dn),pn=a({},dn,{view:0,detail:0}),hn=ln(pn),mn=a({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(sn=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=sn=0,cn=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),gn=ln(mn),vn=ln(a({},mn,{dataTransfer:0})),bn=ln(a({},pn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),xn=ln(wn),kn=ln(a({},dn,{data:0})),_n={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function Tn(){return Cn}var On=a({},pn,{key:function(e){if(e.key){var t=_n[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Dn=ln(On),Pn=ln(a({},mn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=ln(a({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),In=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),An=a({},mn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Ln=ln(An),Rn=[9,13,27,32],jn=d&&"CompositionEvent"in window,Mn=null;d&&"documentMode"in document&&(Mn=document.documentMode);var Fn=d&&"TextEvent"in window&&!Mn,Bn=d&&(!jn||Mn&&8<Mn&&11>=Mn),zn=String.fromCharCode(32),$n=!1;function Un(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Hn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Vn=!1;var qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Wn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Gn(e,t,n,r){Pe(r),0<(t=jr(t,"onChange")).length&&(n=new fn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Zn=null,Qn=null;function Yn(e){Or(e,0)}function Xn(e){if(X(ra(e)))return e}function Kn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Zn&&(Zn.detachEvent("onpropertychange",ar),Qn=Zn=null)}function ar(e){if("value"===e.propertyName&&Xn(Qn)){var t=[];if(Gn(t,Qn,e,Se(e)),e=Yn,je)e(t);else{je=!0;try{Ie(e,t)}finally{je=!1,Fe()}}}}function or(e,t,n){"focusin"===e?(rr(),Qn=n,(Zn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Xn(Qn)}function lr(e,t){if("click"===e)return Xn(t)}function sr(e,t){if("input"===e||"change"===e)return Xn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function fr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pr(e,t){var n,r=fr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=fr(r)}}function hr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?hr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function mr(){for(var e=window,t=K();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=K((e=t.contentWindow).document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var vr=d&&"documentMode"in document&&11>=document.documentMode,br=null,yr=null,wr=null,xr=!1;function kr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;xr||null==br||br!==K(r)||("selectionStart"in(r=br)&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=jr(yr,"onSelect")).length&&(t=new fn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=br)))}Lt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Lt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Lt(At,2);for(var _r="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Er=0;Er<_r.length;Er++)It.set(_r[Er],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Sr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Sr));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,u){if(Ze.apply(this,arguments),He){if(!He)throw Error(i(198));var c=Ve;He=!1,Ve=null,qe||(qe=!0,We=c)}}(r,t,void 0,e),e.currentTarget=null}function Or(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}}}if(qe)throw e=We,qe=!1,We=null,e}function Dr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Ar(t,e,2,!1),n.add(r))}var Pr="_reactListening"+Math.random().toString(36).slice(2);function Nr(e){e[Pr]||(e[Pr]=!0,l.forEach((function(t){Cr.has(t)||Ir(t,!1,e,null),Ir(t,!0,e,null)})))}function Ir(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Ar(o,e,a,t),i.add(l))}function Ar(e,t,n,r){var a=It.get(t);switch(void 0===a?2:a){case 0:a=Qt;break;case 1:a=Yt;break;default:a=Xt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Lr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Me)return e(t,n);Me=!0;try{return Re(e,t,n)}finally{Me=!1,Fe()}}((function(){var r=o,a=Se(n),i=[];e:{var l=Nt.get(e);if(void 0!==l){var s=fn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Dn;break;case"focusin":u="focus",s=bn;break;case"focusout":u="blur",s=bn;break;case"beforeblur":case"afterblur":s=bn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Nn;break;case Tt:case Ot:case Dt:s=yn;break;case Pt:s=In;break;case"scroll":s=hn;break;case"wheel":s=Ln;break;case"copy":case"cut":case"paste":s=xn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Pn}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,h=r;null!==h;){var m=(p=h).stateNode;if(5===p.tag&&null!==m&&(p=m,null!==f&&(null!=(m=Be(h,f))&&c.push(Rr(h,m,p)))),d)break;h=h.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ta(u)&&!u[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ta(u):null)&&(u!==(d=Qe(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=gn,m="onMouseLeave",f="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(c=Pn,m="onPointerLeave",f="onPointerEnter",h="pointer"),d=null==s?l:ra(s),p=null==u?l:ra(u),(l=new c(m,h+"leave",s,n,a)).target=d,l.relatedTarget=p,m=null,ta(a)===r&&((c=new c(f,h+"enter",u,n,a)).target=p,c.relatedTarget=d,m=c),d=m,s&&u)e:{for(f=u,h=0,p=c=s;p;p=Mr(p))h++;for(p=0,m=f;m;m=Mr(m))p++;for(;0<h-p;)c=Mr(c),h--;for(;0<p-h;)f=Mr(f),p--;for(;h--;){if(c===f||null!==f&&c===f.alternate)break e;c=Mr(c),f=Mr(f)}c=null}else c=null;null!==s&&Fr(i,l,s,c,!1),null!==u&&null!==d&&Fr(i,d,u,c,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Kn;else if(Wn(l))if(Jn)g=sr;else{g=ir;var v=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Gn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ae(l,"number",l.value)),v=r?ra(r):window,e){case"focusin":(Wn(v)||"true"===v.contentEditable)&&(br=v,yr=r,wr=null);break;case"focusout":wr=yr=br=null;break;case"mousedown":xr=!0;break;case"contextmenu":case"mouseup":case"dragend":xr=!1,kr(i,n,a);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":kr(i,n,a)}var b;if(jn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Vn?Un(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Bn&&"ko"!==n.locale&&(Vn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Vn&&(b=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Vn=!0)),0<(v=jr(r,y)).length&&(y=new kn(y,e,null,n,a),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=Hn(n))&&(y.data=b))),(b=Fn?function(e,t){switch(e){case"compositionend":return Hn(t);case"keypress":return 32!==t.which?null:($n=!0,zn);case"textInput":return(e=t.data)===zn&&$n?null:e;default:return null}}(e,n):function(e,t){if(Vn)return"compositionend"===e||!jn&&Un(e,t)?(e=nn(),tn=en=Jt=null,Vn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=jr(r,"onBeforeInput")).length&&(a=new kn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Or(i,t)}))}function Rr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function jr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Be(e,n))&&r.unshift(Rr(e,o,a)),null!=(o=Be(e,t))&&r.push(Rr(e,o,a))),e=e.return}return r}function Mr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=Be(n,o))&&i.unshift(Rr(n,s,l)):a||null!=(s=Be(n,o))&&i.push(Rr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function Br(){}var zr=null,$r=null;function Ur(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Hr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Vr="function"==typeof setTimeout?setTimeout:void 0,qr="function"==typeof clearTimeout?clearTimeout:void 0;function Wr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Gr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Zr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Qr=0;var Yr=Math.random().toString(36).slice(2),Xr="__reactFiber$"+Yr,Kr="__reactProps$"+Yr,Jr="__reactContainer$"+Yr,ea="__reactEvents$"+Yr;function ta(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Xr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Zr(e);null!==e;){if(n=e[Xr])return n;e=Zr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Xr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Kr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ua(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ca(e,t){la++,ia[la]=e.current,e.current=t}var da={},fa=sa(da),pa=sa(!1),ha=da;function ma(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function va(){ua(pa),ua(fa)}function ba(e,t,n){if(fa.current!==da)throw Error(i(168));ca(fa,t),ca(pa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,G(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ha=fa.current,ca(fa,e),ca(pa,pa.current),!0}function xa(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ha),r.__reactInternalMemoizedMergedChildContext=e,ua(pa),ua(fa),ca(fa,e)):ua(pa),ca(pa,n)}var ka=null,_a=null,Ea=o.unstable_runWithPriority,Sa=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Oa=o.unstable_requestPaint,Da=o.unstable_now,Pa=o.unstable_getCurrentPriorityLevel,Na=o.unstable_ImmediatePriority,Ia=o.unstable_UserBlockingPriority,Aa=o.unstable_NormalPriority,La=o.unstable_LowPriority,Ra=o.unstable_IdlePriority,ja={},Ma=void 0!==Oa?Oa:function(){},Fa=null,Ba=null,za=!1,$a=Da(),Ua=1e4>$a?Da:function(){return Da()-$a};function Ha(){switch(Pa()){case Na:return 99;case Ia:return 98;case Aa:return 97;case La:return 96;case Ra:return 95;default:throw Error(i(332))}}function Va(e){switch(e){case 99:return Na;case 98:return Ia;case 97:return Aa;case 96:return La;case 95:return Ra;default:throw Error(i(332))}}function qa(e,t){return e=Va(e),Ea(e,t)}function Wa(e,t,n){return e=Va(e),Sa(e,t,n)}function Ga(){if(null!==Ba){var e=Ba;Ba=null,Ca(e)}Za()}function Za(){if(!za&&null!==Fa){za=!0;var e=0;try{var t=Fa;qa(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fa=null}catch(n){throw null!==Fa&&(Fa=Fa.slice(e+1)),Sa(Na,Ga),n}finally{za=!1}}}var Qa=x.ReactCurrentBatchConfig;function Ya(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Xa=sa(null),Ka=null,Ja=null,eo=null;function to(){eo=Ja=Ka=null}function no(e){var t=Xa.current;ua(Xa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Ka=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(ji=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Ka)throw Error(i(308));Ja=t,Ka.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function po(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=o.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var h=e,m=i;switch(s=t,p=n,m.tag){case 1:if("function"==typeof(h=m.payload)){f=h.call(p,f,s);break e}f=h;break e;case 3:h.flags=-4097&h.flags|64;case 0:if(null==(s="function"==typeof(h=m.payload)?h.call(p,f,s):h))break e;f=a({},f,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,$l|=l,e.lanes=l,e.memoizedState=f}}function ho(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var mo=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var vo={isMounted:function(e){return!!(e=e._reactInternals)&&Qe(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),co(e,o),hs(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),co(e,o),hs(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),co(e,a),hs(e,r,n)}};function bo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ha:fa.current,o=(r=null!=(r=t.contextTypes))?ma(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=vo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&vo.enqueueReplaceState(t,t.state,null)}function xo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=mo,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ha:fa.current,a.context=ma(e,o)),po(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&vo.enqueueReplaceState(a,a.state,null),po(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var ko=Array.isArray;function _o(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===mo&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Eo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function So(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Ws(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ys(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=_o(e,t,n),r.return=e,r):((r=Gs(n.type,n.key,n.props,null,e.mode,r)).ref=_o(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Xs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Zs(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ys(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Gs(t.type,t.key,t.props,null,e.mode,n)).ref=_o(e,null,t),n.return=e,n;case _:return(t=Xs(t,e.mode,n)).return=e,t}if(ko(t)||U(t))return(t=Zs(t,e.mode,n,null)).return=e,t;Eo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===a?n.type===E?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case _:return n.key===a?c(e,t,n,r):null}if(ko(n)||U(n))return null!==a?null:d(e,t,n,r,null);Eo(e,n)}return null}function h(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return e=e.get(null===r.key?n:r.key)||null,r.type===E?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case _:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(ko(r)||U(r))return d(t,e=e.get(n)||null,r,a,null);Eo(t,r)}return null}function m(a,i,l,s){for(var u=null,c=null,d=i,m=i=0,g=null;null!==d&&m<l.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=p(a,d,l[m],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),i=o(v,i,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===l.length)return n(a,d),u;if(null===d){for(;m<l.length;m++)null!==(d=f(a,l[m],s))&&(i=o(d,i,m),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);m<l.length;m++)null!==(g=h(d,a,m,l[m],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),i=o(g,i,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=U(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,m=l,g=l=0,v=null,b=s.next();null!==m&&!b.done;g++,b=s.next()){m.index>g?(v=m,m=null):v=m.sibling;var y=p(a,m,b.value,u);if(null===y){null===m&&(m=v);break}e&&m&&null===y.alternate&&t(a,m),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y,m=v}if(b.done)return n(a,m),c;if(null===m){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(m=r(a,m);!b.done;g++,b=s.next())null!==(b=h(m,a,g,b.value,u))&&(e&&null!==b.alternate&&m.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&m.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===E&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case k:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===E){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=_o(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===E?((r=Zs(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Gs(o.type,o.key,o.props,null,e.mode,s)).ref=_o(e,r,o),s.return=e,e=s)}return l(e);case _:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Xs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ys(o,e.mode,s)).return=e,e=r),l(e);if(ko(o))return m(e,r,o,s);if(U(o))return g(e,r,o,s);if(c&&Eo(e,o),void 0===o&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,G(e.type)||"Component"))}return n(e,r)}}var Co=So(!0),To=So(!1),Oo={},Do=sa(Oo),Po=sa(Oo),No=sa(Oo);function Io(e){if(e===Oo)throw Error(i(174));return e}function Ao(e,t){switch(ca(No,t),ca(Po,e),ca(Do,Oo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ua(Do),ca(Do,t)}function Lo(){ua(Do),ua(Po),ua(No)}function Ro(e){Io(No.current);var t=Io(Do.current),n=pe(t,e.type);t!==n&&(ca(Po,e),ca(Do,n))}function jo(e){Po.current===e&&(ua(Do),ua(Po))}var Mo=sa(0);function Fo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Bo=null,zo=null,$o=!1;function Uo(e,t){var n=Vs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ho(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Vo(e){if($o){var t=zo;if(t){var n=t;if(!Ho(e,t)){if(!(t=Gr(n.nextSibling))||!Ho(e,t))return e.flags=-1025&e.flags|2,$o=!1,void(Bo=e);Uo(Bo,n)}Bo=e,zo=Gr(t.firstChild)}else e.flags=-1025&e.flags|2,$o=!1,Bo=e}}function qo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Bo=e}function Wo(e){if(e!==Bo)return!1;if(!$o)return qo(e),$o=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Hr(t,e.memoizedProps))for(t=zo;t;)Uo(e,t),t=Gr(t.nextSibling);if(qo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Gr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=Bo?Gr(e.stateNode.nextSibling):null;return!0}function Go(){zo=Bo=null,$o=!1}var Zo=[];function Qo(){for(var e=0;e<Zo.length;e++)Zo[e]._workInProgressVersionPrimary=null;Zo.length=0}var Yo=x.ReactCurrentDispatcher,Xo=x.ReactCurrentBatchConfig,Ko=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Ko=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Yo.current=null===e||null===e.memoizedState?Ii:Ai,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Yo.current=Li,e=n(r,a)}while(ri)}if(Yo.current=Ni,t=null!==ei&&null!==ei.next,Ko=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ui(e,t){return"function"==typeof t?t(e):t}function ci(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Ko&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=c,$l|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(ji=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(ji=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function fi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Ko&e)===e)&&(t._workInProgressVersionPrimary=r,Zo.push(t))),e)return n(t._source);throw Zo.push(t),Error(i(350))}function pi(e,t,n,r){var a=Al;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Yo.current,u=s.useState((function(){return fi(a,t,n)})),c=u[1],d=u[0];u=ti;var f=e.memoizedState,p=f.refs,h=p.getSnapshot,m=f.source;f=f.subscribe;var g=Jo;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(c(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-Ht(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(h,n)&&ur(m,t)&&ur(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=c=Pi.bind(null,Jo,e),u.queue=e,u.baseQueue=null,d=fi(a,t,n),u.memoizedState=u.baseState=d),d}function hi(e,t,n){return pi(si(),e,t,n)}function mi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:e}).dispatch=Pi.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function vi(e){return e={current:e},li().memoizedState=e}function bi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function xi(e,t){return yi(516,4,e,t)}function ki(e,t){return wi(516,4,e,t)}function _i(e,t){return wi(4,2,e,t)}function Ei(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Si(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,Ei.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Oi(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Di(e,t){var n=Ha();qa(98>n?98:n,(function(){e(!0)})),qa(97<n?97:n,(function(){var n=Xo.transition;Xo.transition=1;try{e(!1),t()}finally{Xo.transition=n}}))}function Pi(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(u){}hs(e,a,r)}}var Ni={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Ii={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:xi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,Ei.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Pi.bind(null,Jo,e),[r.memoizedState,e]},useRef:vi,useState:mi,useDebugValue:Ci,useDeferredValue:function(e){var t=mi(e),n=t[0],r=t[1];return xi((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=mi(!1),t=e[0];return vi(e=Di.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},pi(r,e,t,n)},useOpaqueIdentifier:function(){if($o){var e=!1,t=function(e){return{$$typeof:R,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Qr++).toString(36))),Error(i(355))})),n=mi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Qr++).toString(36))}),void 0,null)),t}return mi(t="r:"+(Qr++).toString(36)),t},unstable_isNewReconciler:!1},Ai={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:Si,useLayoutEffect:_i,useMemo:Oi,useReducer:ci,useRef:bi,useState:function(){return ci(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=ci(ui),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=ci(ui)[0];return[bi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return ci(ui)[0]},unstable_isNewReconciler:!1},Li={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:Si,useLayoutEffect:_i,useMemo:Oi,useReducer:di,useRef:bi,useState:function(){return di(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[bi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Ri=x.ReactCurrentOwner,ji=!1;function Mi(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Fi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||ji?(t.flags|=1,Mi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Bi(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||qs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Gs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Ws(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(ji=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(ji=!0)}return Hi(e,t,n,r,o)}function $i(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},ks(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},ks(t,e),null;t.memoizedState={baseLanes:0},ks(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,ks(t,r);return Mi(e,t,a,n),t.child}function Ui(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Hi(e,t,n,r,a){var o=ga(n)?ha:fa.current;return o=ma(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||ji?(t.flags|=1,Mi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Vi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),xo(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=oo(u):u=ma(t,u=ga(n)?ha:fa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&wo(t,i,r,u),io=!1;var f=t.memoizedState;i.state=f,po(t,r,i,a),s=t.memoizedState,l!==r||f!==s||pa.current||io?("function"==typeof c&&(go(t,n,c,r),s=t.memoizedState),(l=io||bo(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ya(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ma(t,s=ga(n)?ha:fa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&wo(t,i,r,s),io=!1,f=t.memoizedState,i.state=f,po(t,r,i,a);var h=t.memoizedState;l!==d||f!==h||pa.current||io?("function"==typeof p&&(go(t,n,p,r),h=t.memoizedState),(u=io||bo(t,n,u,r,f,h,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,h,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,h,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return qi(e,t,n,r,o,a)}function qi(e,t,n,r,a,o){Ui(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&xa(t,n,!1),ol(e,t,o);r=t.stateNode,Ri.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):Mi(e,t,l,o),t.memoizedState=r.state,a&&xa(t,n,!0),t.child}function Wi(e){var t=e.stateNode;t.pendingContext?ba(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ba(0,t.context,!1),Ao(e,t.containerInfo)}var Gi,Zi,Qi,Yi,Xi={dehydrated:null,retryLane:0};function Ki(e,t,n){var r,a=t.pendingProps,o=Mo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ca(Mo,1&o),null===e?(void 0!==a.fallback&&Vo(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,t.lanes=33554432,e):((n=Qs({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Xi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Qs(t,a,0,null),n=Zs(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Ws(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Ws(i,l),null!==e?r=Ws(e,r):(r=Zs(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Mi(e,t,r.children,n),0!=(2&(r=Mo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ca(Mo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Fo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Fo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),$l|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Ws(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ws(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!$o)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&va(),null;case 3:return Lo(),ua(pa),ua(fa),Qo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Wo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Zi(t),null;case 5:jo(t);var o=Io(No.current);if(n=t.type,null!==e&&null!=t.stateNode)Qi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Io(Do.current),Wo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Kr]=l,n){case"dialog":Dr("cancel",r),Dr("close",r);break;case"iframe":case"object":case"embed":Dr("load",r);break;case"video":case"audio":for(e=0;e<Sr.length;e++)Dr(Sr[e],r);break;case"source":Dr("error",r);break;case"img":case"image":case"link":Dr("error",r),Dr("load",r);break;case"details":Dr("toggle",r);break;case"input":ee(r,l),Dr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Dr("invalid",r);break;case"textarea":se(r,l),Dr("invalid",r)}for(var u in _e(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Dr("scroll",r));switch(n){case"input":Y(r),re(r,l,!0);break;case"textarea":Y(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=Br)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=fe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Xr]=t,e[Kr]=r,Gi(e,t,!1,!1),t.stateNode=e,u=Ee(n,r),n){case"dialog":Dr("cancel",e),Dr("close",e),o=r;break;case"iframe":case"object":case"embed":Dr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Sr.length;o++)Dr(Sr[o],e);o=r;break;case"source":Dr("error",e),o=r;break;case"img":case"image":case"link":Dr("error",e),Dr("load",e),o=r;break;case"details":Dr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Dr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Dr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Dr("invalid",e);break;default:o=r}_e(n,o);var c=o;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?xe(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Dr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":Y(e),re(e,r,!1);break;case"textarea":Y(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+Z(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Br)}Ur(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Yi(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Io(No.current),Io(Do.current),Wo(t)?(r=t.stateNode,n=t.memoizedProps,r[Xr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Xr]=t,t.stateNode=r)}return null;case 13:return ua(Mo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Wo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Mo.current)?0===Fl&&(Fl=3):(0!==Fl&&3!==Fl||(Fl=4),null===Al||0==(134217727&$l)&&0==(134217727&Ul)||bs(Al,Rl))),(r||n)&&(t.flags|=4),null);case 4:return Lo(),Zi(t),null===e&&Nr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ua(Mo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Fl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Fo(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ca(Mo,1&Mo.current|2),t.child}e=e.sibling}null!==r.tail&&Ua()>Wl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Fo(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!$o)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Ua()-r.renderingStartTime>Wl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Ua(),n.sibling=null,t=Mo.current,ca(Mo,l?1&t|2:1&t),n):null;case 23:case 24:return _s(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&va();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Lo(),ua(pa),ua(fa),Qo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return jo(e),null;case 13:return ua(Mo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(Mo),null;case 4:return Lo(),null;case 10:return no(e),null;case 23:case 24:return _s(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=W(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Gi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Zi=function(){},Qi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Io(Do.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Br)}for(d in _e(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Dr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===R?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Yi=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Yl||(Yl=!0,Xl=r),cl(0,t)},n}function pl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Kl?Kl=new Set([this]):Kl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var hl="function"==typeof WeakSet?WeakSet:Set;function ml(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ya(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Wr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Ms(n,e),js(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ya(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&ho(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}ho(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&Ur(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&xt(n)))))}throw Error(i(163))}function bl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(_a&&"function"==typeof _a.onCommitFiberUnmount)try{_a.onCommitFiberUnmount(ka,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Ms(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(ml(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:ml(t);break;case 4:Sl(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function xl(e){return 5===e.tag||3===e.tag||4===e.tag}function kl(e){e:{for(var t=e.return;null!==t;){if(xl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||xl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?_l(e,n,t):El(e,n,t)}function _l(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Br));else if(4!==r&&null!==(e=e.child))for(_l(e,t,n),e=e.sibling;null!==e;)_l(e,t,n),e=e.sibling}function El(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(El(e,t,n),e=e.sibling;null!==e;)El(e,t,n),e=e.sibling}function Sl(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Kr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),Ee(e,a),t=Ee(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?xe(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?ve(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,xt(n.containerInfo)));case 13:return null!==t.memoizedState&&(ql=Ua(),bl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new hl),t.forEach((function(t){var r=Us.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Ol(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Dl=Math.ceil,Pl=x.ReactCurrentDispatcher,Nl=x.ReactCurrentOwner,Il=0,Al=null,Ll=null,Rl=0,jl=0,Ml=sa(0),Fl=0,Bl=null,zl=0,$l=0,Ul=0,Hl=0,Vl=null,ql=0,Wl=1/0;function Gl(){Wl=Ua()+500}var Zl,Ql=null,Yl=!1,Xl=null,Kl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Il)?Ua():-1!==ls?ls:ls=Ua()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Ha()?1:2;if(0===ss&&(ss=zl),0!==Qa.transition){0!==us&&(us=null!==Vl?Vl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Ha(),0!=(4&Il)&&98===e?e=Bt(12,ss):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function hs(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=ms(e,t)))return null;Ut(e,t,n),e===Al&&(Ul|=t,4===Fl&&bs(e,Rl));var r=Ha();1===t?0!=(8&Il)&&0==(48&Il)?ys(e):(gs(e,n),0===Il&&(Gl(),Ga())):(0==(4&Il)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Vl=e}function ms(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Ht(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,jt(u);var d=Rt;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Mt(e,e===Al?Rl:0),t=Rt,0===r)null!==n&&(n!==ja&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==ja&&Ca(n)}15===t?(n=ys.bind(null,e),null===Fa?(Fa=[n],Ba=Sa(Na,Za)):Fa.push(n),n=ja):14===t?n=Wa(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Wa(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Il))throw Error(i(327));var t=e.callbackNode;if(Rs()&&e.callbackNode!==t)return null;var n=Mt(e,e===Al?Rl:0);if(0===n)return null;var r=n,a=Il;Il|=16;var o=Cs();for(Al===e&&Rl===r||(Gl(),Es(e,r));;)try{Ds();break}catch(s){Ss(e,s)}if(to(),Pl.current=o,Il=a,null!==Ll?r=0:(Al=null,Rl=0,r=Fl),0!=(zl&Ul))Es(e,0);else if(0!==r){if(2===r&&(Il|=64,e.hydrate&&(e.hydrate=!1,Wr(e.containerInfo)),0!==(n=Ft(e))&&(r=Ts(e,n))),1===r)throw t=Bl,Es(e,0),bs(e,n),gs(e,Ua()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Is(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=ql+500-Ua())){if(0!==Mt(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Vr(Is.bind(null,e),r);break}Is(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-Ht(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=Ua()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Dl(n/1960))-n)){e.timeoutHandle=Vr(Is.bind(null,e),n);break}Is(e);break;default:throw Error(i(329))}}return gs(e,Ua()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~Hl,t&=~Ul,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Ht(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Il))throw Error(i(327));if(Rs(),e===Al&&0!=(e.expiredLanes&Rl)){var t=Rl,n=Ts(e,t);0!=(zl&Ul)&&(n=Ts(e,t=Mt(e,t)))}else n=Ts(e,t=Mt(e,0));if(0!==e.tag&&2===n&&(Il|=64,e.hydrate&&(e.hydrate=!1,Wr(e.containerInfo)),0!==(t=Ft(e))&&(n=Ts(e,t))),1===n)throw n=Bl,Es(e,0),bs(e,t),gs(e,Ua()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Is(e),gs(e,Ua()),null}function ws(e,t){var n=Il;Il|=1;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}}function xs(e,t){var n=Il;Il&=-2,Il|=8;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}}function ks(e,t){ca(Ml,jl),jl|=t,zl|=t}function _s(){jl=Ml.current,ua(Ml)}function Es(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,qr(n)),null!==Ll)for(n=Ll.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&va();break;case 3:Lo(),ua(pa),ua(fa),Qo();break;case 5:jo(r);break;case 4:Lo();break;case 13:case 19:ua(Mo);break;case 10:no(r);break;case 23:case 24:_s()}n=n.return}Al=e,Ll=Ws(e.current,null),Rl=jl=zl=t,Fl=0,Bl=null,Hl=Ul=$l=0}function Ss(e,t){for(;;){var n=Ll;try{if(to(),Yo.current=Ni,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Ko=0,ti=ei=Jo=null,ri=!1,Nl.current=null,null===n||null===n.return){Fl=1,Bl=t,Ll=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Rl,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Mo.current),f=i;do{var p;if(p=13===f.tag){var h=f.memoizedState;if(null!==h)p=null!==h.dehydrated;else{var m=f.memoizedProps;p=void 0!==m.fallback&&(!0!==m.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=uo(-1,1);b.tag=2,co(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=$s.bind(null,o,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((G(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fl&&(Fl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,fo(f,fl(0,o,t));break e;case 1:o=s;var x=f.type,k=f.stateNode;if(0==(64&f.flags)&&("function"==typeof x.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===Kl||!Kl.has(k)))){f.flags|=4096,t&=-t,f.lanes|=t,fo(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Ns(n)}catch(_){t=_,Ll===n&&null!==n&&(Ll=n=n.return);continue}break}}function Cs(){var e=Pl.current;return Pl.current=Ni,null===e?Ni:e}function Ts(e,t){var n=Il;Il|=16;var r=Cs();for(Al===e&&Rl===t||Es(e,t);;)try{Os();break}catch(a){Ss(e,a)}if(to(),Il=n,Pl.current=r,null!==Ll)throw Error(i(261));return Al=null,Rl=0,Fl}function Os(){for(;null!==Ll;)Ps(Ll)}function Ds(){for(;null!==Ll&&!Ta();)Ps(Ll)}function Ps(e){var t=Zl(e.alternate,e,jl);e.memoizedProps=e.pendingProps,null===t?Ns(e):Ll=t,Nl.current=null}function Ns(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,jl)))return void(Ll=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&jl)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Ll=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Ll=t);Ll=t=e}while(null!==t);0===Fl&&(Fl=5)}function Is(e){var t=Ha();return qa(99,As.bind(null,e,t)),null}function As(e,t){do{Rs()}while(null!==es);if(0!=(48&Il))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-Ht(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Al&&(Ll=Al=null,Rl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Il,Il|=32,Nl.current=null,zr=Zt,gr(l=mr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(C){s=null;break e}var d=0,f=-1,p=-1,h=0,m=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==o&&3!==g.nodeType||(f=d+o),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++h===o&&(f=d),v===u&&++m===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;$r={focusedElem:l,selectionRange:s},Zt=!1,cs=null,ds=!1,Ql=r;do{try{Ls()}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);cs=null,Ql=r;do{try{for(l=e;null!==Ql;){var y=Ql.flags;if(16&y&&ve(Ql.stateNode,""),128&y){var w=Ql.alternate;if(null!==w){var x=w.ref;null!==x&&("function"==typeof x?x(null):x.current=null)}}switch(1038&y){case 2:kl(Ql),Ql.flags&=-3;break;case 6:kl(Ql),Ql.flags&=-3,Cl(Ql.alternate,Ql);break;case 1024:Ql.flags&=-1025;break;case 1028:Ql.flags&=-1025,Cl(Ql.alternate,Ql);break;case 4:Cl(Ql.alternate,Ql);break;case 8:Sl(l,s=Ql);var k=s.alternate;wl(s),null!==k&&wl(k)}Ql=Ql.nextEffect}}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);if(x=$r,w=mr(),y=x.focusedElem,l=x.selectionRange,w!==y&&y&&y.ownerDocument&&hr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(x=l.end)&&(x=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(x,y.value.length)):(x=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(x=x.getSelection(),s=y.textContent.length,k=Math.min(l.start,s),l=void 0===l.end?k:Math.min(l.end,s),!x.extend&&k>l&&(s=l,l=k,k=s),s=pr(y,k),o=pr(y,l),s&&o&&(1!==x.rangeCount||x.anchorNode!==s.node||x.anchorOffset!==s.offset||x.focusNode!==o.node||x.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),x.removeAllRanges(),k>l?(x.addRange(w),x.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),x.addRange(w))))),w=[];for(x=y;x=x.parentNode;)1===x.nodeType&&w.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(x=w[y]).element.scrollLeft=x.left,x.element.scrollTop=x.top}Zt=!!zr,$r=zr=null,e.current=n,Ql=r;do{try{for(y=e;null!==Ql;){var _=Ql.flags;if(36&_&&vl(y,Ql.alternate,Ql),128&_){w=void 0;var E=Ql.ref;if(null!==E){var S=Ql.stateNode;Ql.tag,w=S,"function"==typeof E?E(w):E.current=w}}Ql=Ql.nextEffect}}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);Ql=null,Ma(),Il=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Ql=r;null!==Ql;)t=Ql.nextEffect,Ql.nextEffect=null,8&Ql.flags&&((_=Ql).sibling=null,_.stateNode=null),Ql=t;if(0===(r=e.pendingLanes)&&(Kl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,_a&&"function"==typeof _a.onCommitFiberRoot)try{_a.onCommitFiberRoot(ka,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,Ua()),Yl)throw Yl=!1,e=Xl,Xl=null,e;return 0!=(8&Il)||Ga(),null}function Ls(){for(;null!==Ql;){var e=Ql.alternate;ds||null===cs||(0!=(8&Ql.flags)?Je(Ql,cs)&&(ds=!0):13===Ql.tag&&Ol(e,Ql)&&Je(Ql,cs)&&(ds=!0));var t=Ql.flags;0!=(256&t)&&gl(e,Ql),0==(512&t)||Jl||(Jl=!0,Wa(97,(function(){return Rs(),null}))),Ql=Ql.nextEffect}}function Rs(){if(90!==ts){var e=97<ts?97:ts;return ts=90,qa(e,Fs)}return!1}function js(e,t){ns.push(t,e),Jl||(Jl=!0,Wa(97,(function(){return Rs(),null})))}function Ms(e,t){rs.push(t,e),Jl||(Jl=!0,Wa(97,(function(){return Rs(),null})))}function Fs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Il))throw Error(i(331));var t=Il;Il|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Il=t,Ga(),!0}function Bs(e,t,n){co(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=ms(e,1))&&(Ut(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)Bs(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bs(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Kl||!Kl.has(r))){var a=pl(n,e=ul(t,e),1);if(co(n,a),a=fs(),null!==(n=ms(n,1)))Ut(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Kl||!Kl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function $s(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Al===e&&(Rl&n)===n&&(4===Fl||3===Fl&&(62914560&Rl)===Rl&&500>Ua()-ql?Es(e,0):Hl|=n),gs(e,t)}function Us(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===Ha()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=ms(e,t))&&(Ut(e,t,n),gs(e,n))}function Hs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Vs(e,t,n,r){return new Hs(e,t,n,r)}function qs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ws(e,t){var n=e.alternate;return null===n?((n=Vs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Gs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)qs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case E:return Zs(n.children,a,o,t);case j:l=8,a|=16;break;case S:l=8,a|=1;break;case C:return(e=Vs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case P:return(e=Vs(13,n,t,a)).type=P,e.elementType=P,e.lanes=o,e;case N:return(e=Vs(19,n,t,a)).elementType=N,e.lanes=o,e;case M:return Qs(n,a,o,t);case F:return(e=Vs(24,n,t,a)).elementType=F,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case O:l=9;break e;case D:l=11;break e;case I:l=14;break e;case A:l=16,r=null;break e;case L:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Vs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Zs(e,t,n,r){return(e=Vs(7,e,r,t)).lanes=n,e}function Qs(e,t,n,r){return(e=Vs(23,e,r,t)).elementType=M,e.lanes=n,e}function Ys(e,t,n){return(e=Vs(6,e,null,t)).lanes=n,e}function Xs(e,t,n){return(t=Vs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ks(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=$t(0),this.expirationTimes=$t(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=$t(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=fs(),l=ps(a);e:if(n){t:{if(Qe(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(ga(u)){n=ya(n,u,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),co(a,t),hs(a,l,o),l}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Ks(e,t,null!=n&&!0===n.hydrate),t=Vs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Nr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ou(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=eu(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=eu(i);s.call(e)}}xs((function(){Js(t,i,e,a)}))}return eu(i)}function iu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:_,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Zl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||pa.current)ji=!0;else{if(0==(n&r)){switch(ji=!1,t.tag){case 3:Wi(t),Go();break;case 5:Ro(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Ao(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ca(Xa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Ki(e,t,n):(ca(Mo,1&Mo.current),null!==(t=ol(e,t,n))?t.sibling:null);ca(Mo,1&Mo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ca(Mo,Mo.current),r)break;return null;case 23:case 24:return t.lanes=0,$i(e,t,n)}return ol(e,t,n)}ji=0!=(16384&e.flags)}else ji=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ma(t,fa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=vo,t.stateNode=a,a._reactInternals=t,xo(t,r,e,n),t=qi(null,t,r,!0,o,n)}else t.tag=0,Mi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return qs(e)?1:0;if(null!=e){if((e=e.$$typeof)===D)return 11;if(e===I)return 14}return 2}(a),e=Ya(a,e),o){case 0:t=Hi(null,t,a,e,n);break e;case 1:t=Vi(null,t,a,e,n);break e;case 11:t=Fi(null,t,a,e,n);break e;case 14:t=Bi(null,t,a,Ya(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 1:return r=t.type,a=t.pendingProps,Vi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 3:if(Wi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),po(t,r,null,n),(r=t.memoizedState.element)===a)Go(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Gr(t.stateNode.containerInfo.firstChild),Bo=t,o=$o=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Zo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Mi(e,t,r,n),Go();t=t.child}return t;case 5:return Ro(t),null===e&&Vo(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,Hr(r,a)?l=null:null!==o&&Hr(r,o)&&(t.flags|=16),Ui(e,t),Mi(e,t,l,n),t.child;case 6:return null===e&&Vo(t),null;case 13:return Ki(e,t,n);case 4:return Ao(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):Mi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Fi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 7:return Mi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Mi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ca(Xa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!pa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===s.tag&&((c=uo(-1,n&-n)).tag=2,co(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ro(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Mi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Mi(e,t,r,n),t.child;case 14:return o=Ya(a=t.type,t.pendingProps),Bi(e,t,a,o=Ya(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ya(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),xo(t,r,a,n),qi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return $i(e,t,n)}throw Error(i(156,t.tag))},ru.prototype.render=function(e){Js(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(hs(e,4,fs()),nu(e,4))},tt=function(e){13===e.tag&&(hs(e,67108864,fs()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=fs(),n=ps(e);hs(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));X(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Ie=ws,Ae=function(e,t,n,r,a){var o=Il;Il|=4;try{return qa(98,e.bind(null,t,n,r,a))}finally{0===(Il=o)&&(Gl(),Ga())}},Le=function(){0==(49&Il)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,Ua())}))}Ga()}(),Rs())},Re=function(e,t){var n=Il;Il|=2;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}};var lu={Events:[na,ra,aa,Pe,Ne,Rs,{current:!1}]},su={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:su.bundleType,version:su.version,rendererPackageName:su.rendererPackageName,rendererConfig:su.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:x.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ke(e))?null:e.stateNode},findFiberByHostInstance:su.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{ka=cu.inject(uu),_a=cu}catch(me){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lu,t.createPortal=iu,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(i(188));throw Error(i(268,Object.keys(e)))}return e=null===(e=Ke(t))?null:e.stateNode},t.flushSync=function(e,t){var n=Il;if(0!=(48&n))return e(t);Il|=1;try{if(e)return qa(99,e.bind(null,t))}finally{Il=n,Ga()}},t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!0,n)},t.render=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!au(e))throw Error(i(40));return!!e._reactRootContainer&&(xs((function(){ou(null,null,e,!1,(function(){e._reactRootContainer=null,e[Jr]=null}))})),!0)},t.unstable_batchedUpdates=ws,t.unstable_createPortal=function(e,t){return iu(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!au(n))throw Error(i(200));if(null==e||void 0===e._reactInternals)throw Error(i(38));return ou(e,t,n,!1,r)},t.version="17.0.2"},73935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(64448)},69590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},70405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>q,ql:()=>J});var r=n(67294),a=n(45697),o=n.n(a),i=n(69590),l=n.n(i),s=n(41143),u=n.n(s),c=n(96774),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function m(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),x={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},k=Object.keys(x).reduce((function(e,t){return e[x[t]]=t,e}),{}),_=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=_(e,g.TITLE),n=_(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=_(e,"defaultTitle");return t||r||void 0},S=function(e){return _(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},O=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},D=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},P=function(e){return Array.isArray(e)?e.join(""):e},N=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},I=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},A=[g.NOSCRIPT,g.SCRIPT,g.STYLE],L=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},R=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},j=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[x[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=x[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=j(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=R(n),o=P(t);return a?"<"+e+' data-rh="true" '+a+">"+L(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+L(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return j(t)},toString:function(){return R(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+L(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===A.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=N(e.metaTags,y),o=N(t,v),i=N(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(g.META,a.priority),M(g.LINK,o.priority),M(g.SCRIPT,i.priority))},toString:function(){return F(g.META,a.priority,r)+" "+F(g.LINK,o.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=h.priorityMethods,c=h.linkTags,d=h.metaTags,f=h.scriptTags}return{priority:p,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(g.LINK,c,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,o,r),script:F(g.SCRIPT,f,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),V="undefined"!=typeof document,q=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);q.canUseDOM=V,q.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},q.defaultProps={context:{}},q.displayName="HelmetProvider";var W=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},G=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Z=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;G(g.BODY,e.bodyAttributes),G(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),G(g.TITLE,t)}(c,d);var f={baseTag:W(g.BASE,n),linkTags:W(g.LINK,a),metaTags:W(g.META,o),noscriptTags:W(g.NOSCRIPT,i),scriptTags:W(g.SCRIPT,s),styleTags:W(g.STYLE,u)},p={},h={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(h[e]=f[e].oldTags)})),t&&t(),l(e,p,h)},Q=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:_(e,"defer"),encode:_(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:O(g.LINK,["rel","href"],e),metaTags:O(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:O(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:S(e),scriptTags:O(g.SCRIPT,["src","innerHTML"],e),styleTags:O(g.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:D(e,"prioritizeSeoTags")});q.canUseDOM?(t=o,Q&&cancelAnimationFrame(Q),t.defer?Q=requestAnimationFrame((function(){Z(t,(function(){Q=null}))})):(Z(t),Q=null)):B&&(a=B(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Y.propTypes={context:H.isRequired},Y.displayName="HelmetDispatcher";var X=["children"],K=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(I(this.props,"helmetData"),I(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=m(r,X),l=Object.keys(i).reduce((function(e,t){return e[k[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,K),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(Y,f({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(Y,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},69921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case m:case s:return e;default:return t}}case a:return t}}}function k(e){return x(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return k(e)||x(e)===c},t.isConcurrentMode=k,t.isContextConsumer=function(e){return x(e)===u},t.isContextProvider=function(e){return x(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return x(e)===f},t.isFragment=function(e){return x(e)===o},t.isLazy=function(e){return x(e)===g},t.isMemo=function(e){return x(e)===m},t.isPortal=function(e){return x(e)===a},t.isProfiler=function(e){return x(e)===l},t.isStrictMode=function(e){return x(e)===i},t.isSuspense=function(e){return x(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=x},59864:(e,t,n)=>{"use strict";e.exports=n(69921)},68356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(67294),s=n(45697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),m=null;function g(){return m||(m=e(h.loader)),m.promise}return u.push(g),"function"==typeof h.webpack&&c.push((function(){if((0,h.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),m=e(h.loader),r._loadModule()})),g(),r.state={error:m.error,pastDelay:!1,timedOut:!1,loading:m.loading,loaded:m.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(h.modules)&&h.modules.forEach((function(t){e.context.loadable.report(t)})),m.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),h.timeout));var n=function(){t({error:m.error,loaded:m.loaded,loading:m.loading}),e._clearTimeouts()};m.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function m(e){return h(d,e)}m.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),m.Capture=g,m.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},m.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=m},33199:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>M,hasTranslate3DSupport:()=>h,isTouch:()=>d,make2dTransformValue:()=>f,make3dTransformValue:()=>p});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};Object.create;Object.create;var i=n(67294),l="kvfysmfp",s="ufhsfnkm",u=".".concat(l,"{overflow:hidden;touch-action:none}.").concat(s,"{transform-origin: 0 0}"),c="undefined"==typeof window,d=function(){return!c&&("ontouchstart"in window||navigator.maxTouchPoints>0)},f=function(e){var t=e.x,n=e.y,r=e.scale;return"scale(".concat(r,") translate(").concat(t,"px, ").concat(n,"px)")},p=function(e){var t=e.x,n=e.y,r=e.scale;return"scale3d(".concat(r,",").concat(r,", 1) translate3d(").concat(t,"px, ").concat(n,"px, 0)")},h=function(){var e=!c&&window.CSS;return e&&e.supports&&e.supports("transform","translate3d(0,0,0)")},m=Math.min,g=Math.max;function v(e){var t=e.containerDimension,n=e.childDimension,r=e.padding,a=e.centerContained,o=n-t;return o+2*r<=0&&a?[o/2,o/2]:[m(o+r,0)-r,g(0,o+r)]}var b=function(e,t){return t?"".concat(e," ").concat(t):e},y=Math.abs,w=Math.min,x=Math.sqrt,k="undefined"==typeof window,_=!k&&/(Mac)/i.test(navigator.platform),E=function(e){return"drag"===e},S=function(e){return"zoom"===e},C=function(e){e.stopPropagation(),e.preventDefault()},T=function(e,t){var n=e.x-t.x,r=e.y-t.y;return x(n*n+r*r)},O=function(e){return-Math.cos(e*Math.PI)/2+.5},D=function(e){return{x:e.pageX,y:e.pageY}},P=function(e){return Array.from(e).map(D)},N=function(e,t){return e+t},I=function(e,t,n){return n<e?e:n>t?t:n},A=function(e){return!(e.ctrlKey||e.metaKey)},L=function(){},R={x:0,y:0},j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._prevDragMovePoint=null,t._containerObserver=null,t._fingers=0,t._firstMove=!0,t._initialOffset=o({},R),t._interaction=null,t._isDoubleTap=!1,t._isOffsetsSet=!1,t._lastDragPosition=null,t._lastScale=1,t._lastTouchStart=0,t._lastZoomCenter=null,t._listenMouseMove=!1,t._nthZoom=0,t._offset=o({},R),t._startOffset=o({},R),t._startTouches=null,t._updatePlaned=!1,t._wheelTimeOut=null,t._zoomFactor=1,t._initialZoomFactor=1,t._draggingPoint=o({},R),t._ignoreNextClick=!1,t._containerRef=i.createRef(),t._handleClick=function(e){t._ignoreNextClick&&(t._ignoreNextClick=!1,e.stopPropagation())},t._onResize=function(){var e;(null===(e=t._containerRef)||void 0===e?void 0:e.current)&&(t._updateInitialZoomFactor(),t._setupOffsets(),t._update())},t._handlerOnTouchEnd=t._handlerIfEnable((function(e){t._fingers=e.touches.length,t.props.shouldCancelHandledTouchEndEvents&&(S(t._interaction)||E(t._interaction)&&(t._startOffset.x!==t._offset.x||t._startOffset.y!==t._offset.y))&&C(e),E(t._interaction)&&!t._enoughToDrag()&&t._handleClick(e),t._updateInteraction(e)})),t._handlerOnTouchStart=t._handlerIfEnable((function(e){t._firstMove=!0,t._fingers=e.touches.length,t._detectDoubleTap(e)})),t._handlerOnTouchMove=t._handlerIfEnable((function(e){var n,r,a;t._isDoubleTap||(t._collectInertia(e),t._firstMove?(t._updateInteraction(e),t._interaction&&C(e),t._startOffset=o({},t._offset),t._startTouches=P(e.touches)):(S(t._interaction)?t._startTouches&&2===t._startTouches.length&&2===e.touches.length&&t._handleZoom(e,(n=t._startTouches,r=P(e.touches),a=T(n[0],n[1]),T(r[0],r[1])/a)):E(t._interaction)&&t._handleDrag(e),t._interaction&&(C(e),t._update())),t._firstMove=!1)})),t._handlerWheel=function(e){if(!t.props.shouldInterceptWheel(e)){C(e);var n=e.pageX,r=e.pageY,a=e.deltaY,o=e.deltaMode,i=1;(function(e){return _&&e.ctrlKey}(e)||1===o)&&(i=15);var l={touches:[{pageX:n,pageY:r}]},s=t._getOffsetByFirstTouch(l),u=a*i;t._stopAnimation(),t._scaleTo(t._zoomFactor-u/t.props.wheelScaleFactor,s),t._update(),clearTimeout(t._wheelTimeOut),t._wheelTimeOut=setTimeout((function(){return t._sanitize()}),100)}},t._handlers=t.props.isTouch()?[["touchstart",t._handlerOnTouchStart],["touchend",t._handlerOnTouchEnd],["touchmove",t._handlerOnTouchMove]]:[["mousemove",t.simulate(t._handlerOnTouchMove),t.props._document],["mouseup",t.simulate(t._handlerOnTouchEnd),t.props._document],["mousedown",t.simulate(t._handlerOnTouchStart)],["click",t._handleClick],["wheel",t._handlerWheel]],t}return a(t,e),t.prototype._handleDragStart=function(e){this._ignoreNextClick=!0,this.props.onDragStart(),this._stopAnimation(),this._resetInertia(),this._lastDragPosition=null,this._hasInteraction=!0,this._draggingPoint=this._offset,this._handleDrag(e)},t.prototype._handleDrag=function(e){var t=this._getOffsetByFirstTouch(e);this._enoughToDrag()?this._drag(t,this._lastDragPosition):this._virtualDrag(t,this._lastDragPosition),this._offset=this._sanitizeOffset(this._offset),this._lastDragPosition=t},t.prototype._resetInertia=function(){this._velocity=null,this._prevDragMovePoint=null},t.prototype._realizeInertia=function(){var e=this,t=this.props,n=t.inertiaFriction;if(t.inertia&&this._velocity){var r=this._velocity,a=r.x,i=r.y;if(a||i){this._stopAnimation(),this._resetInertia();this._animate((function(){if(i*=n,!(a*=n)&&!i)return e._stopAnimation();var t,r,l=o({},e._offset);if(e._addOffset({x:a,y:i}),e._offset=e._sanitizeOffset(e._offset),t=l,r=e._offset,t.x===r.x&&t.y===r.y)return e._stopAnimation();e._update({isAnimation:!0})}),{duration:9999})}}},t.prototype._collectInertia=function(e){var t=e.touches;if(this.props.inertia){var n,r,a=P(t)[0],o=this._prevDragMovePoint;o&&(this._velocity=(n=a,{x:(r=o).x-n.x,y:r.y-n.y})),this._prevDragMovePoint=a}},t.prototype._handleDragEnd=function(){this.props.onDragEnd(),this._end(),this._realizeInertia()},t.prototype._handleZoomStart=function(){this.props.onZoomStart(),this._stopAnimation(),this._lastScale=1,this._nthZoom=0,this._lastZoomCenter=null,this._hasInteraction=!0},t.prototype._handleZoom=function(e,t){var n,r={x:(n=this._getOffsetTouches(e)).map((function(e){return e.x})).reduce(N,0)/n.length,y:n.map((function(e){return e.y})).reduce(N,0)/n.length},a=t/this._lastScale;this._lastScale=t,this._nthZoom+=1,this._nthZoom>3&&(this._scale(a,r),this._drag(r,this._lastZoomCenter),this.props.enforceBoundsDuringZoom&&(this._offset=this._sanitizeOffset(this._offset))),this._lastZoomCenter=r},t.prototype._handleZoomEnd=function(){this.props.onZoomEnd(),this._end()},t.prototype._handleDoubleTap=function(e){var t=this;if(!this._hasInteraction&&0!==this.props.tapZoomFactor){var n=this.props.doubleTapZoomOutOnMaxScale&&this._zoomFactor===this.props.maxZoom||this.props.doubleTapToggleZoom&&this._zoomFactor>1;this.props.onDoubleTap(),this._ignoreNextClick=!0;var r=this._zoomFactor+this.props.tapZoomFactor,a=this._zoomFactor,o=this._getOffsetByFirstTouch(e);this._isDoubleTap=!0,a>r&&(o=this._getCurrentZoomCenter()),n?this._zoomOutAnimation():this._animate((function(e){t._scaleTo(a+e*(r-a),o)}))}},t.prototype._computeInitialOffset=function(){var e=this._getContainerRect(),t=this._getChildSize(),n=t.width,r=t.height,a=-y(n*this._getInitialZoomFactor()-e.width)/2,o=-y(r*this._getInitialZoomFactor()-e.height)/2;this._initialOffset={x:a,y:o}},t.prototype._resetOffset=function(){this._offset=o({},this._initialOffset)},t.prototype._setupOffsets=function(){this.props.setOffsetsOnce&&this._isOffsetsSet||(this._isOffsetsSet=!0,this._computeInitialOffset(),this._resetOffset())},t.prototype._sanitizeOffset=function(e){var t=this._getContainerRect(),n=this._getChildSize(),r=n.width,a=n.height,o=r*this._getInitialZoomFactor()*this._zoomFactor,i=a*this._getInitialZoomFactor()*this._zoomFactor,l=v({containerDimension:t.width,childDimension:o,padding:this.props.horizontalPadding,centerContained:this.props.centerContained}),s=l[0],u=l[1],c=v({containerDimension:t.height,childDimension:i,padding:this.props.verticalPadding,centerContained:this.props.centerContained}),d=c[0],f=c[1];return{x:I(s,u,e.x),y:I(d,f,e.y)}},t.prototype.alignCenter=function(e){var t=this,n=o({duration:250,animated:!0},e),r=n.x,a=n.y,i=n.scale,l=n.animated,s=n.duration,u=this._zoomFactor,c=o({},this._offset),d=this._getContainerRect(),f={x:d.width/2,y:d.height/2};if(this._zoomFactor=1,this._offset={x:-(f.x-r),y:-(f.y-a)},this._scaleTo(i,f),this._stopAnimation(),!l)return this._update();var p=this._zoomFactor-u,h=this._offset.x-c.x,m=this._offset.y-c.y;this._zoomFactor=u,this._offset=o({},c);this._animate((function(e){var n=c.x+h*e,r=c.y+m*e;t._zoomFactor=u+p*e,t._offset=t._sanitizeOffset({x:n,y:r}),t._update()}),{callback:function(){return t._sanitize()},duration:s})},t.prototype.scaleTo=function(e){var t=this,n=o({duration:250,animated:!0},e),r=n.x,a=n.y,i=n.scale,l=n.animated,s=n.duration,u=this._zoomFactor,c=o({},this._offset);if(this._zoomFactor=1,this._offset={x:0,y:0},this._scaleTo(i,{x:r,y:a}),this._stopAnimation(),!l)return this._update();var d=this._zoomFactor-u,f=this._offset.x-c.x,p=this._offset.y-c.y;this._zoomFactor=u,this._offset=o({},c);this._animate((function(e){var n=c.x+f*e,r=c.y+p*e;t._zoomFactor=u+d*e,t._offset={x:n,y:r},t._update()}),{callback:function(){return t._sanitize()},duration:s})},t.prototype._scaleTo=function(e,t){this._scale(e/this._zoomFactor,t),this._offset=this._sanitizeOffset(this._offset)},t.prototype._scale=function(e,t){e=this._scaleZoomFactor(e),this._addOffset({x:(e-1)*(t.x+this._offset.x),y:(e-1)*(t.y+this._offset.y)}),this.props.onZoomUpdate()},t.prototype._scaleZoomFactor=function(e){var t=this._zoomFactor;return this._zoomFactor*=e,this._zoomFactor=I(this.props.minZoom,this.props.maxZoom,this._zoomFactor),this._zoomFactor/t},t.prototype._canDrag=function(){return this.props.draggableUnZoomed||!((e=this._zoomFactor)>(t=1)-.01&&e<t+.01);var e,t},t.prototype._drag=function(e,t){if(t){var n=-(e.y-t.y),r=-(e.x-t.x);this.props.lockDragAxis?y(r)>y(n)?this._addOffset({x:r,y:0}):this._addOffset({y:n,x:0}):this._addOffset({x:r,y:n}),this.props.onDragUpdate()}},t.prototype._virtualDrag=function(e,t){if(t){var n=-(e.y-t.y),r=-(e.x-t.x);this._draggingPoint={x:r+this._draggingPoint.x,y:n+this._draggingPoint.y}}},t.prototype._addOffset=function(e){var t=this._offset,n=t.x,r=t.y;this._offset={x:n+e.x,y:r+e.y}},t.prototype._sanitize=function(){this._zoomFactor<this.props.zoomOutFactor?(this._resetInertia(),this._zoomOutAnimation()):this._isInsaneOffset()&&this._sanitizeOffsetAnimation()},t.prototype._isInsaneOffset=function(){var e=this._offset,t=this._sanitizeOffset(e);return t.x!==e.x||t.y!==e.y},t.prototype._sanitizeOffsetAnimation=function(){var e=this,t=this._sanitizeOffset(this._offset),n=o({},this._offset);this._animate((function(r){var a=n.x+r*(t.x-n.x),o=n.y+r*(t.y-n.y);e._offset={x:a,y:o},e._update()}))},t.prototype._zoomOutAnimation=function(){var e=this;if(1!==this._zoomFactor){var t=this._zoomFactor,n=this._getCurrentZoomCenter();this._animate((function(r){var a=t+r*(1-t);e._scaleTo(a,n)}))}},t.prototype._getInitialZoomFactor=function(){return this._initialZoomFactor},t.prototype._getCurrentZoomCenter=function(){var e=this._offset,t=e.x,n=e.y,r=t-this._initialOffset.x,a=n-this._initialOffset.y;return{x:-1*t-r/(1/this._zoomFactor-1),y:-1*n-a/(1/this._zoomFactor-1)}},t.prototype._getOffsetByFirstTouch=function(e){return this._getOffsetTouches(e)[0]},t.prototype._getOffsetTouches=function(e){var t=this.props._document,n=t.documentElement,r=t.body,a=this._getContainerRect(),o=a.top,i=a.left,l=n.scrollTop||r.scrollTop,s=n.scrollLeft||r.scrollLeft,u=o+l,c=i+s;return P(e.touches).map((function(e){var t=e.x,n=e.y;return{x:t-c,y:n-u}}))},t.prototype._animate=function(e,t){var n=this,r=(new Date).getTime(),a=o({timeFn:O,callback:function(){},duration:this.props.animationDuration},t),i=a.timeFn,l=a.callback,s=a.duration,u=function(){if(n._inAnimation){var t=(new Date).getTime()-r,a=t/s;t>=s?(e(1),n._stopAnimation(),l(),n._update()):(a=i(a),e(a),n._update({isAnimation:!0}),requestAnimationFrame(u))}};this._inAnimation=!0,requestAnimationFrame(u)},t.prototype._stopAnimation=function(){this._inAnimation=!1},t.prototype._end=function(){this._hasInteraction=!1,this._sanitize(),this._update()},t.prototype._getContainerRect=function(){return this._containerRef.current.getBoundingClientRect()},t.prototype._getChildSize=function(){var e=this._containerRef.current;return function(e){if(e){var t=e.offsetWidth,n=e.offsetHeight;if(t&&n)return{width:t,height:n};var r=getComputedStyle(e),a=parseFloat(r.width),o=parseFloat(r.height);if(o&&a)return{width:a,height:o}}return{width:0,height:0}}(null==e?void 0:e.firstElementChild)},t.prototype._updateInitialZoomFactor=function(){var e=this._getContainerRect(),t=this._getChildSize(),n=e.width/t.width,r=e.height/t.height;this._initialZoomFactor=w(n,r)},t.prototype._bindEvents=function(){var e=this,t=this._containerRef.current;window.ResizeObserver?(this._containerObserver=new ResizeObserver(this._onResize),this._containerObserver.observe(t)):window.addEventListener("resize",this._onResize),this._handlers.forEach((function(e){var n=e[0],r=e[1];(e[2]||t).addEventListener(n,r,!0)})),Array.from(t.querySelectorAll("img")).forEach((function(t){return t.addEventListener("load",e._onResize)}))},t.prototype._unSubscribe=function(){var e=this,t=this._containerRef.current;this._containerObserver&&(this._containerObserver.disconnect(),this._containerObserver=null),window.removeEventListener("resize",this._onResize),this._handlers.forEach((function(e){var n=e[0],r=e[1];(e[2]||t).removeEventListener(n,r,!0)})),Array.from(t.querySelectorAll("img")).forEach((function(t){return t.removeEventListener("load",e._onResize)}))},t.prototype._update=function(e){var t=this;if(!this._updatePlaned){var n=function(){var e=t._getInitialZoomFactor()*t._zoomFactor,n=-t._offset.x/e,r=-t._offset.y/e;t.props.onUpdate({scale:e,x:n,y:r})};if(null==e?void 0:e.isAnimation)return n();this._updatePlaned=!0,requestAnimationFrame((function(){t._updatePlaned=!1,n()}))}},t.prototype._handlerIfEnable=function(e){var t=this;return function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];t.props.enabled&&e.apply(void 0,n)}},t.prototype._setInteraction=function(e,t){var n=this._interaction;n!==e&&(n&&!e&&(S(n)?this._handleZoomEnd():E(n)&&this._handleDragEnd()),S(e)?this._handleZoomStart():E(e)&&this._handleDragStart(t)),this._interaction=e},t.prototype._distanceBetweenNumbers=function(e,t){return e>t?e-t:t-e},t.prototype._enoughToDrag=function(){return this._distanceBetweenNumbers(this._startOffset.x,this._draggingPoint.x)>5||this._distanceBetweenNumbers(this._startOffset.y,this._draggingPoint.y)>5},t.prototype._updateInteraction=function(e){var t=this._fingers;return 2===t?this._setInteraction("zoom",e):1===t&&this._canDrag()?this._setInteraction("drag",e):void this._setInteraction(null,e)},t.prototype._detectDoubleTap=function(e){var t=(new Date).getTime();this._fingers>1&&(this._lastTouchStart=0),t-this._lastTouchStart<300?(C(e),this._handleDoubleTap(e),S(this._interaction)?this._handleZoomEnd():E(this._interaction)&&this._handleDragEnd()):this._isDoubleTap=!1,1===this._fingers&&(this._lastTouchStart=t)},t.prototype.simulate=function(e){var t=this;return function(n){var r=n.pageX,a=n.pageY,o=n.type,i="mouseup"===o;"mousedown"===o&&(n.preventDefault(),t._listenMouseMove=!0),t._listenMouseMove&&(n.touches=i?[]:[{pageX:r,pageY:a}],e(n)),i&&(t._listenMouseMove=!1)}},t.prototype.componentDidMount=function(){this._bindEvents(),this._update()},t.prototype.componentWillUnmount=function(){this._stopAnimation(),this._unSubscribe()},t.prototype.render=function(){var e=this.props,t=e.children,n=e.containerProps,r=i.Children.only(t),a=n||{};return i.createElement(i.Fragment,null,i.createElement("style",null,u),i.createElement("div",o({},a,{ref:this._containerRef,className:b(l,a.className)}),i.cloneElement(r,{className:b(s,r.props.className)})))},t.defaultProps={animationDuration:250,draggableUnZoomed:!0,enforceBoundsDuringZoom:!1,centerContained:!1,enabled:!0,inertia:!0,inertiaFriction:.96,horizontalPadding:0,isTouch:d,lockDragAxis:!1,maxZoom:5,minZoom:.5,onDoubleTap:L,onDragEnd:L,onDragStart:L,onDragUpdate:L,onZoomEnd:L,onZoomStart:L,onZoomUpdate:L,setOffsetsOnce:!1,shouldInterceptWheel:A,shouldCancelHandledTouchEndEvents:!1,tapZoomFactor:1,verticalPadding:0,wheelScaleFactor:1500,zoomOutFactor:1.3,doubleTapZoomOutOnMaxScale:!1,doubleTapToggleZoom:!1,_document:k?null:window.document},t}(i.Component);const M=j},18790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(16550),a=n(87462),o=n(67294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},73727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(16550),a=n(75068),o=n(67294),i=n(42358),l=n(87462),s=n(63366),u=n(38776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},h=o.forwardRef;void 0===h&&(h=p);var m=h((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==h&&t||n,o.createElement("a",c)}));var g=h((function(e,t){var n=e.component,a=void 0===n?m:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",m=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==h?m.ref=t||v:m.innerRef=v,o.createElement(a,m)}))})),v=function(e){return e},b=o.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,h=e.className,m=e.exact,y=e.isActive,w=e.location,x=e.sensitive,k=e.strict,_=e.style,E=e.to,S=e.innerRef,C=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(E,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),O=T?(0,r.LX)(n.pathname,{path:T,exact:m,sensitive:x,strict:k}):null,D=!!(y?y(O,n):O),P="function"==typeof h?h(D):h,N="function"==typeof _?_(D):_;D&&(P=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(P,c),N=(0,l.Z)({},N,p));var I=(0,l.Z)({"aria-current":D&&a||null,className:P,style:N,to:i},C);return v!==b?I.ref=t||S:I.innerRef=S,o.createElement(g,I)}))}))},16550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>P,F0:()=>y,LX:()=>D,TH:()=>B,k6:()=>F,l_:()=>S,rs:()=>j,s6:()=>b});var r=n(75068),a=n(67294),o=n(45697),i=n.n(o),l=n(42358),s=n(38776),u=n(87462),c=n(39658),d=n.n(c),f=(n(59864),n(63366)),p=(n(8679),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var m=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=m();return t.displayName=e,t},v=g("Router-History"),b=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(v.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;var w=function(e){function t(){return e.apply(this,arguments)||this}(0,r.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(a.Component);var x={},k=1e4,_=0;function E(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(x[e])return x[e];var t=d().compile(e);return _<k&&(x[e]=t,_++),t}(e)(t,{pretty:!0})}function S(e){var t=e.computedMatch,n=e.to,r=e.push,o=void 0!==r&&r;return a.createElement(b.Consumer,null,(function(e){e||(0,s.Z)(!1);var r=e.history,i=e.staticContext,c=o?r.push:r.replace,d=(0,l.ob)(t?"string"==typeof n?E(n,t.params):(0,u.Z)({},n,{pathname:E(n.pathname,t.params)}):n);return i?(c(d),null):a.createElement(w,{onMount:function(){c(d)},onUpdate:function(e,t){var n=(0,l.ob)(t.to);(0,l.Hp)(n,(0,u.Z)({},d,{key:n.key}))||c(d)},to:n})}))}var C={},T=1e4,O=0;function D(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=C[n]||(C[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return O<T&&(r[e]=o,O++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce((function(e,t,n){return e[t.name]=f[n],e}),{})}}),null)}var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?D(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function N(e){return"/"===e.charAt(0)?e:"/"+e}function I(e,t){if(!e)return t;var n=N(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function A(e){return"string"==typeof e?e:(0,l.Ep)(e)}function L(e){return function(){(0,s.Z)(!1)}}function R(){}a.Component;var j=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?D(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var M=a.useContext;function F(){return M(v)}function B(){return M(b).location}},39658:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var h=e[i],m=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var x=null!=m&&null!=h&&h!==m,k="+"===y||"*"===y,_="?"===y||"*"===y,E=n[2]||c,S=v||b;r.push({name:g||o++,prefix:m||"",delimiter:E,optional:_,repeat:k,partial:x,asterisk:!!w,pattern:S?u(S):w?".*":"[^"+s(E)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var h=s(n.delimiter||"/"),m=i.slice(-h.length)===h;return a||(i=(m?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=o?"$":a&&m?"":"(?="+h+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},86718:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655).__importDefault(n(45503));t.default=function(e){return!e.prototype?r.default(e):e}},27162:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.divWrapper=void 0;var r=n(70655),a=r.__importStar(n(67294)),o=r.__importDefault(n(86718)),i=a.createElement,l=function(e,t,n,a){var o;return i(e,t?r.__assign(((o={})[t]=a,o),n):r.__assign(r.__assign({},a),n))};t.divWrapper=function(e,t,n,r){return i("div",null,l(e,t,n,r))};t.default=function(e,t,n){void 0===n&&(n=l);var r=function(a,l,s){void 0===l&&(l=t),void 0===s&&(s=null);var u="string"==typeof a;if(u)return function(e){return r(e,a||t,l)};var c=function(t){return i(e,s,(function(e){return n(a,l,t,e)}))};return u?o.default(c):c};return r}},3:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655).__importDefault(n(95364)),a=function(e){return[e]};t.default=function(e,t){return void 0===t&&(t=a),function(n){return r.default(n,e.apply(void 0,t(n)))}}},96260:(e,t,n)=>{"use strict";var r=n(70655);r.__importDefault(n(95364)).default,r.__importDefault(n(27162)).default,r.__importDefault(n(3)).default},95364:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655),a=n(67294),o=parseInt(a.version.substr(0,a.version.indexOf(".")))>15;t.default=function(e,t){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];var l=e.render,s=e.children,u=void 0===s?l:s,c=e.component,d=e.comp,f=void 0===d?c:d;return"function"==typeof u?u.apply(void 0,r.__spreadArrays([t],n)):f?a.createElement(f,t):u instanceof Array?o?u:a.createElement.apply(void 0,r.__spreadArrays(["div",null],u)):u&&u instanceof Object?"string"==typeof u.type?u:a.cloneElement(u,Object.assign({},u.props,t)):u||null}},45503:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655),a=r.__importStar(n(67294));t.default=function(e){var t=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n.prototype.render=function(){return e(this.props,this.context)},n}(a.Component);return t}},89164:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createBreakpoint:()=>Ae,createGlobalState:()=>xn,createMemo:()=>o,createReducer:()=>u,createReducerContext:()=>i,createStateContext:()=>c,ensuredForwardRef:()=>ue,useAsync:()=>h,useAsyncFn:()=>p,useAsyncRetry:()=>m,useAudio:()=>y,useBattery:()=>O,useBeforeUnload:()=>D,useBoolean:()=>I,useClickAway:()=>L,useCookie:()=>M,useCopyToClipboard:()=>z,useCounter:()=>q,useCss:()=>J,useCustomCompareEffect:()=>ee,useDebounce:()=>ne,useDeepCompareEffect:()=>re,useDefault:()=>ae,useDrop:()=>oe,useDropArea:()=>ie,useEffectOnce:()=>le,useEnsuredForwardedRef:()=>se,useError:()=>he,useEvent:()=>pe,useFavicon:()=>me,useFirstMountState:()=>l,useFullscreen:()=>be,useGeolocation:()=>ye,useGetSet:()=>V,useGetSetState:()=>we,useHarmonicIntervalFn:()=>_e,useHash:()=>kn,useHover:()=>Se,useHoverDirty:()=>Ce,useIdle:()=>De,useIntersection:()=>Pe,useInterval:()=>Ne,useIsomorphicLayoutEffect:()=>Y,useKey:()=>Ie,useKeyPress:()=>Le,useKeyPressEvent:()=>Re,useLatest:()=>je,useLifecycles:()=>Me,useList:()=>Fe,useLocalStorage:()=>Be,useLocation:()=>He,useLockBodyScroll:()=>Ye,useLogger:()=>Xe,useLongPress:()=>Je,useMap:()=>et,useMeasure:()=>gn,useMedia:()=>tt,useMediaDevices:()=>nt,useMediatedState:()=>rt,useMethods:()=>at,useMotion:()=>it,useMount:()=>lt,useMountedState:()=>f,useMouse:()=>ct,useMouseHovered:()=>ft,useMouseWheel:()=>pt,useMultiStateValidator:()=>fn,useNetworkState:()=>vt,useNumber:()=>bt,useObservable:()=>yt,useOrientation:()=>xt,usePageLeave:()=>kt,usePermission:()=>_t,usePinchZoom:()=>bn,usePrevious:()=>Et,usePreviousDistinct:()=>Ct,usePromise:()=>Tt,useQueue:()=>Ot,useRaf:()=>Dt,useRafLoop:()=>Pt,useRafState:()=>ut,useRendersCount:()=>yn,useScratch:()=>Lt,useScroll:()=>Rt,useScrollbarWidth:()=>dn,useScrolling:()=>jt,useSearchParam:()=>It,useSessionStorage:()=>Mt,useSet:()=>wn,useSetState:()=>g,useShallowCompareEffect:()=>zt,useSize:()=>Vt,useSlider:()=>qt,useSpeech:()=>Gt,useStartTyping:()=>Zt,useStateList:()=>Yt,useStateValidator:()=>un,useStateWithHistory:()=>Qt,useThrottle:()=>Xt,useThrottleFn:()=>Kt,useTimeout:()=>Jt,useTimeoutFn:()=>te,useTitle:()=>tn,useToggle:()=>N,useTween:()=>rn,useUnmount:()=>st,useUnmountPromise:()=>an,useUpdate:()=>U,useUpdateEffect:()=>s,useUpsert:()=>on,useVibrate:()=>ln,useVideo:()=>sn,useWindowScroll:()=>pn,useWindowSize:()=>hn});var r=n(67294),a=n.t(r,2);const o=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return(0,r.useMemo)((function(){return e.apply(void 0,t)}),t)}};const i=function(e,t){var n=(0,r.createContext)(void 0);return[function(){var e=(0,r.useContext)(n);if(null==e)throw new Error("useReducerContext must be used inside a ReducerProvider.");return e},function(a){var o=a.children,i=a.initialState;return function(e,t){return(0,r.createElement)(n.Provider,e,t)}({value:(0,r.useReducer)(e,void 0!==i?i:t)},o)},n]};function l(){var e=(0,r.useRef)(!0);return e.current?(e.current=!1,!0):e.current}const s=function(e,t){var n=l();(0,r.useEffect)((function(){if(!n)return e()}),t)};const u=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n,a=(n=e,function(e,t){return n.reduceRight((function(t,n){return n(e)(t)}),t)});return function(e,t,n){void 0===n&&(n=function(e){return e});var o=(0,r.useRef)(n(t)),i=(0,r.useState)(o.current)[1],l=(0,r.useCallback)((function(t){return o.current=e(o.current,t),i(o.current),t}),[e]),u=(0,r.useRef)(a({getState:function(){return o.current},dispatch:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return u.current.apply(u,e)}},l));return s((function(){u.current=a({getState:function(){return o.current},dispatch:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return u.current.apply(u,e)}},l)}),[l]),[o.current,u.current]}};const c=function(e){var t=(0,r.createContext)(void 0);return[function(){var e=(0,r.useContext)(t);if(null==e)throw new Error("useStateContext must be used inside a StateProvider.");return e},function(n){var a=n.children,o=n.initialValue;return function(e,n){return(0,r.createElement)(t.Provider,e,n)}({value:(0,r.useState)(void 0!==o?o:e)},a)},t]};var d=n(70655);function f(){var e=(0,r.useRef)(!1),t=(0,r.useCallback)((function(){return e.current}),[]);return(0,r.useEffect)((function(){return e.current=!0,function(){e.current=!1}}),[]),t}function p(e,t,n){void 0===t&&(t=[]),void 0===n&&(n={loading:!1});var a=(0,r.useRef)(0),o=f(),i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=++a.current;return l.loading||s((function(e){return(0,d.__assign)((0,d.__assign)({},e),{loading:!0})})),e.apply(void 0,t).then((function(e){return o()&&r===a.current&&s({value:e,loading:!1}),e}),(function(e){return o()&&r===a.current&&s({error:e,loading:!1}),e}))}),t);return[l,u]}function h(e,t){void 0===t&&(t=[]);var n=p(e,t,{loading:!0}),a=n[0],o=n[1];return(0,r.useEffect)((function(){o()}),[o]),a}const m=function(e,t){void 0===t&&(t=[]);var n=(0,r.useState)(0),a=n[0],o=n[1],i=h(e,(0,d.__spreadArrays)(t,[a])),l=i.loading,s=(0,r.useCallback)((function(){l||o((function(e){return e+1}))}),(0,d.__spreadArrays)(t,[l]));return(0,d.__assign)((0,d.__assign)({},i),{retry:s})};const g=function(e){void 0===e&&(e={});var t=(0,r.useState)(e),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(e){a((function(t){return Object.assign({},t,e instanceof Function?e(t):e)}))}),[])]};function v(e){for(var t=[],n=0;n<e.length;n++)t.push({start:e.start(n),end:e.end(n)});return t}function b(e){return function(t){var n,a;a=r.isValidElement(t)?(n=t).props:t;var o=g({buffered:[],time:0,duration:0,paused:!0,muted:!1,volume:1,playing:!1}),i=o[0],l=o[1],s=(0,r.useRef)(null),u=function(e,t){return function(n){try{t&&t(n)}finally{e&&e(n)}}},c=function(){return l({paused:!1})},f=function(){return l({playing:!0})},p=function(){return l({playing:!1})},h=function(){return l({paused:!0,playing:!1})},m=function(){var e=s.current;e&&l({muted:e.muted,volume:e.volume})},b=function(){var e=s.current;if(e){var t=e.duration,n=e.buffered;l({duration:t,buffered:v(n)})}},y=function(){var e=s.current;e&&l({time:e.currentTime})},w=function(){var e=s.current;e&&l({buffered:v(e.buffered)})};n=n?r.cloneElement(n,(0,d.__assign)((0,d.__assign)({controls:!1},a),{ref:s,onPlay:u(a.onPlay,c),onPlaying:u(a.onPlaying,f),onWaiting:u(a.onWaiting,p),onPause:u(a.onPause,h),onVolumeChange:u(a.onVolumeChange,m),onDurationChange:u(a.onDurationChange,b),onTimeUpdate:u(a.onTimeUpdate,y),onProgress:u(a.onProgress,w)})):r.createElement(e,(0,d.__assign)((0,d.__assign)({controls:!1},a),{ref:s,onPlay:u(a.onPlay,c),onPlaying:u(a.onPlaying,f),onWaiting:u(a.onWaiting,p),onPause:u(a.onPause,h),onVolumeChange:u(a.onVolumeChange,m),onDurationChange:u(a.onDurationChange,b),onTimeUpdate:u(a.onTimeUpdate,y),onProgress:u(a.onProgress,w)}));var x=!1,k={play:function(){var e=s.current;if(e&&!x){var t=e.play();if("object"==typeof t){x=!0;var n=function(){x=!1};t.then(n,n)}return t}},pause:function(){var e=s.current;if(e&&!x)return e.pause()},seek:function(e){var t=s.current;t&&void 0!==i.duration&&(e=Math.min(i.duration,Math.max(0,e)),t.currentTime=e)},volume:function(e){var t=s.current;t&&(e=Math.min(1,Math.max(0,e)),t.volume=e,l({volume:e}))},mute:function(){var e=s.current;e&&(e.muted=!0)},unmute:function(){var e=s.current;e&&(e.muted=!1)}};return(0,r.useEffect)((function(){var e=s.current;e&&(l({volume:e.volume,muted:e.muted,paused:e.paused}),a.autoPlay&&e.paused&&k.play())}),[a.src]),[n,i,k,s]}}const y=b("audio");var w=function(){};function x(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e&&e.addEventListener&&e.addEventListener.apply(e,t)}function k(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e&&e.removeEventListener&&e.removeEventListener.apply(e,t)}var _="undefined"!=typeof window,E="undefined"!=typeof navigator,S=n(38252);const C=n.n(S)();var T=E?navigator:void 0;const O=T&&"function"==typeof T.getBattery?function(){var e=(0,r.useState)({isSupported:!0,fetched:!1}),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=!0,r=null,a=function(){if(e&&r){var a={isSupported:!0,fetched:!0,level:r.level,charging:r.charging,dischargingTime:r.dischargingTime,chargingTime:r.chargingTime};!C(t,a)&&n(a)}};return T.getBattery().then((function(t){e&&(x(r=t,"chargingchange",a),x(r,"chargingtimechange",a),x(r,"dischargingtimechange",a),x(r,"levelchange",a),a())})),function(){e=!1,r&&(k(r,"chargingchange",a),k(r,"chargingtimechange",a),k(r,"dischargingtimechange",a),k(r,"levelchange",a))}}),[]),t}:function(){return{isSupported:!1}};const D=function(e,t){void 0===e&&(e=!0);var n=(0,r.useCallback)((function(n){if("function"!=typeof e||e())return n.preventDefault(),t&&(n.returnValue=t),t}),[e,t]);(0,r.useEffect)((function(){if(e)return x(window,"beforeunload",n),function(){return k(window,"beforeunload",n)}}),[e,n])};var P=function(e,t){return"boolean"==typeof t?t:!e};const N=function(e){return(0,r.useReducer)(P,e)},I=N;var A=["mousedown","touchstart"];const L=function(e,t,n){void 0===n&&(n=A);var a=(0,r.useRef)(t);(0,r.useEffect)((function(){a.current=t}),[t]),(0,r.useEffect)((function(){for(var t=function(t){var n=e.current;n&&!n.contains(t.target)&&a.current(t)},r=0,o=n;r<o.length;r++){var i=o[r];x(document,i,t)}return function(){for(var e=0,r=n;e<r.length;e++){var a=r[e];k(document,a,t)}}}),[n,e])};var R=n(36808),j=n.n(R);const M=function(e){var t=(0,r.useState)((function(){return j().get(e)||null})),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(t,n){j().set(e,t,n),a(t)}),[e]),(0,r.useCallback)((function(){j().remove(e),a(null)}),[e])]};var F=n(20640),B=n.n(F);const z=function(){var e=f(),t=g({value:void 0,error:void 0,noUserInteraction:!0}),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(t){var n,r;if(e())try{if("string"!=typeof t&&"number"!=typeof t){var o=new Error("Cannot copy typeof "+typeof t+" to clipboard, must be a string");return void a({value:t,error:o,noUserInteraction:!0})}if(""===t){o=new Error("Cannot copy empty string to clipboard.");return void a({value:t,error:o,noUserInteraction:!0})}r=t.toString(),n=B()(r),a({value:r,error:void 0,noUserInteraction:n})}catch(o){a({value:r,error:o,noUserInteraction:n})}}),[])]};var $=function(e){return(e+1)%1e6};function U(){return(0,r.useReducer)($,0)[1]}function H(e,t){return"function"==typeof e?e.length?e(t):e():e}function V(e){var t=(0,r.useRef)(H(e)),n=U();return(0,r.useMemo)((function(){return[function(){return t.current},function(e){t.current=H(e,t.current),n()}]}),[])}function q(e,t,n){void 0===e&&(e=0),void 0===t&&(t=null),void 0===n&&(n=null);var a=H(e);"number"!=typeof a&&console.error("initialValue has to be a number, got "+typeof e),"number"==typeof n?a=Math.max(a,n):null!==n&&console.error("min has to be a number, got "+typeof n),"number"==typeof t?a=Math.min(a,t):null!==t&&console.error("max has to be a number, got "+typeof t);var o=V(a),i=o[0],l=o[1];return[i(),(0,r.useMemo)((function(){var e=function(e){var r=i(),a=H(e,r);r!==a&&("number"==typeof n&&(a=Math.max(a,n)),"number"==typeof t&&(a=Math.min(a,t)),r!==a&&l(a))};return{get:i,set:e,inc:function(t){void 0===t&&(t=1);var n=H(t,i());"number"!=typeof n&&console.error("delta has to be a number or function returning a number, got "+typeof n),e((function(e){return e+n}))},dec:function(t){void 0===t&&(t=1);var n=H(t,i());"number"!=typeof n&&console.error("delta has to be a number or function returning a number, got "+typeof n),e((function(e){return e-n}))},reset:function(t){void 0===t&&(t=a);var n=H(t,i());"number"!=typeof n&&console.error("value has to be a number or function returning a number, got "+typeof n),a=n,e(n)}}}),[a,n,t])]}var W=n(40818),G=n(97142),Z=n(52099),Q=n(87749);const Y=_?r.useLayoutEffect:r.useEffect;var X=(0,W.U)();(0,G.I)(X),(0,Z.I)(X);var K=0;const J=function(e){var t=(0,r.useMemo)((function(){return"react-use-css-"+(K++).toString(36)}),[]),n=(0,r.useMemo)((function(){return new X.VSheet}),[]);return Y((function(){var r={};return(0,Q.z)(r,e,"."+t,""),n.diff(r),function(){n.diff({})}})),t};const ee=function(e,t,n){var a=(0,r.useRef)(void 0);a.current&&n(t,a.current)||(a.current=t),(0,r.useEffect)(e,a.current)};function te(e,t){void 0===t&&(t=0);var n=(0,r.useRef)(!1),a=(0,r.useRef)(),o=(0,r.useRef)(e),i=(0,r.useCallback)((function(){return n.current}),[]),l=(0,r.useCallback)((function(){n.current=!1,a.current&&clearTimeout(a.current),a.current=setTimeout((function(){n.current=!0,o.current()}),t)}),[t]),s=(0,r.useCallback)((function(){n.current=null,a.current&&clearTimeout(a.current)}),[]);return(0,r.useEffect)((function(){o.current=e}),[e]),(0,r.useEffect)((function(){return l(),s}),[t]),[i,s,l]}function ne(e,t,n){void 0===t&&(t=0),void 0===n&&(n=[]);var a=te(e,t),o=a[0],i=a[1],l=a[2];return(0,r.useEffect)(l,n),[o,i]}const re=function(e,t){ee(e,t,C)};const ae=function(e,t){var n=(0,r.useState)(t),a=n[0],o=n[1];return null==a?[e,o]:[a,o]};const oe=function(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);var n=e.onFiles,a=e.onText,o=e.onUri,i=(0,r.useState)(!1),l=i[0],s=i[1],u=(0,r.useCallback)(s,[]),c=(0,r.useMemo)((function(){return function(e){return function(t,n){var r=t.getData("text/uri-list");if(r)(e.onUri||w)(r,n);else if(t.files&&t.files.length)(e.onFiles||w)(Array.from(t.files),n);else if(n.clipboardData){var a=n.clipboardData.getData("text");(e.onText||w)(a,n)}}}(e)}),[n,a,o]);return(0,r.useEffect)((function(){var e=function(e){e.preventDefault(),u(!0)},t=function(e){e.preventDefault(),u(!0)},n=function(){u(!1)},r=function(){u(!1)},o=function(e){e.preventDefault(),u(!1),c(e.dataTransfer,e)},i=function(e){c(e.clipboardData,e)};return x(document,"dragover",e),x(document,"dragenter",t),x(document,"dragleave",n),x(document,"dragexit",r),x(document,"drop",o),a&&x(document,"paste",i),function(){k(document,"dragover",e),k(document,"dragenter",t),k(document,"dragleave",n),k(document,"dragexit",r),k(document,"drop",o),k(document,"paste",i)}}),(0,d.__spreadArrays)([c],t)),{over:l}};const ie=function(e){void 0===e&&(e={});var t=e.onFiles,n=e.onText,a=e.onUri,o=f(),i=(0,r.useState)(!1),l=i[0],s=i[1],u=(0,r.useMemo)((function(){return function(e,t){return function(n,r){var a=n.getData("text/uri-list");a?(e.onUri||w)(a,r):n.files&&n.files.length?(e.onFiles||w)(Array.from(n.files),r):n.items&&n.items.length&&n.items[0].getAsString((function(n){t&&(e.onText||w)(n,r)}))}}(e,o())}),[t,n,a]),c=(0,r.useMemo)((function(){return function(e,t){return{onDragOver:function(e){e.preventDefault()},onDragEnter:function(e){e.preventDefault(),t(!0)},onDragLeave:function(){t(!1)},onDrop:function(n){n.preventDefault(),n.persist(),t(!1),e(n.dataTransfer,n)},onPaste:function(t){t.persist(),e(t.clipboardData,t)}}}(u,s)}),[u,s]);return[c,{over:l}]};const le=function(e){(0,r.useEffect)(e,[])};function se(e){var t=(0,r.useRef)(e&&e.current);return(0,r.useEffect)((function(){e&&(e.current=t.current)}),[e]),t}function ue(e){return(0,r.forwardRef)((function(t,n){var r=se(n);return e(t,r)}))}var ce=_?window:null,de=function(e){return!!e.addEventListener},fe=function(e){return!!e.on};const pe=function(e,t,n,a){void 0===n&&(n=ce),(0,r.useEffect)((function(){if(t&&n)return de(n)?x(n,e,t,a):fe(n)&&n.on(e,t,a),function(){de(n)?k(n,e,t,a):fe(n)&&n.off(e,t,a)}}),[e,t,n,JSON.stringify(a)])};const he=function(){var e=(0,r.useState)(null),t=e[0],n=e[1];return(0,r.useEffect)((function(){if(t)throw t}),[t]),(0,r.useCallback)((function(e){n(e)}),[])};const me=function(e){(0,r.useEffect)((function(){var t=document.querySelector("link[rel*='icon']")||document.createElement("link");t.type="image/x-icon",t.rel="shortcut icon",t.href=e,document.getElementsByTagName("head")[0].appendChild(t)}),[e])};var ge=n(10577),ve=n.n(ge);const be=function(e,t,n){void 0===n&&(n={});var a=n.video,o=n.onClose,i=void 0===o?w:o,l=(0,r.useState)(t),s=l[0],u=l[1];return Y((function(){if(t&&e.current){var n=function(){(null==a?void 0:a.current)&&k(a.current,"webkitendfullscreen",n),i()},r=function(){if(ve().isEnabled){var e=ve().isFullscreen;u(e),e||i()}};if(ve().isEnabled){try{ve().request(e.current),u(!0)}catch(l){i(l),u(!1)}ve().on("change",r)}else a&&a.current&&a.current.webkitEnterFullscreen?(a.current.webkitEnterFullscreen(),x(a.current,"webkitendfullscreen",n),u(!0)):(i(),u(!1));return function(){if(u(!1),ve().isEnabled)try{ve().off("change",r),ve().exit()}catch(o){}else a&&a.current&&a.current.webkitExitFullscreen&&(k(a.current,"webkitendfullscreen",n),a.current.webkitExitFullscreen())}}}),[t,a,e]),s};const ye=function(e){var t,n=(0,r.useState)({loading:!0,accuracy:null,altitude:null,altitudeAccuracy:null,heading:null,latitude:null,longitude:null,speed:null,timestamp:Date.now()}),a=n[0],o=n[1],i=!0,l=function(e){i&&o({loading:!1,accuracy:e.coords.accuracy,altitude:e.coords.altitude,altitudeAccuracy:e.coords.altitudeAccuracy,heading:e.coords.heading,latitude:e.coords.latitude,longitude:e.coords.longitude,speed:e.coords.speed,timestamp:e.timestamp})},s=function(e){return i&&o((function(t){return(0,d.__assign)((0,d.__assign)({},t),{loading:!1,error:e})}))};return(0,r.useEffect)((function(){return navigator.geolocation.getCurrentPosition(l,s,e),t=navigator.geolocation.watchPosition(l,s,e),function(){i=!1,navigator.geolocation.clearWatch(t)}}),[]),a};const we=function(e){void 0===e&&(e={});var t=U(),n=(0,r.useRef)((0,d.__assign)({},e));return[(0,r.useCallback)((function(){return n.current}),[]),(0,r.useCallback)((function(e){e&&(Object.assign(n.current,e),t())}),[])]};var xe=0,ke={};const _e=function(e,t){void 0===t&&(t=0);var n=(0,r.useRef)((function(){}));(0,r.useEffect)((function(){n.current=e})),(0,r.useEffect)((function(){if(null!==t){var e=function(e,t){var n,r=xe++;if(ke[t])ke[t].listeners[r]=e;else{var a=setInterval((function(){for(var e,n=ke[t].listeners,r=!1,a=0,o=Object.values(n);a<o.length;a++){var i=o[a];try{i()}catch(l){r=!0,e=l}}if(r)throw e}),t);ke[t]={ms:t,timer:a,listeners:(n={},n[r]=e,n)}}return{bucket:ke[t],id:r}}((function(){return n.current()}),t);return function(){return function(e){var t=e.bucket,n=e.id;delete t.listeners[n];var r=!1;for(var a in t.listeners){r=!0;break}r||(clearInterval(t.timer),delete ke[t.ms])}(e)}}}),[t])};var Ee=r.useState;const Se=function(e){var t,n,a=Ee(!1),o=a[0],i=a[1];return"function"==typeof e&&(e=e(o)),[r.cloneElement(e,{onMouseEnter:(n=e.props.onMouseEnter,function(e){(n||w)(e),i(!0)}),onMouseLeave:(t=e.props.onMouseLeave,function(e){(t||w)(e),i(!1)})}),o]};const Ce=function(e,t){void 0===t&&(t=!0);var n=(0,r.useState)(!1),a=n[0],o=n[1];return(0,r.useEffect)((function(){var n=function(){return o(!0)},r=function(){return o(!1)};t&&e&&e.current&&(x(e.current,"mouseover",n),x(e.current,"mouseout",r));var a=e.current;return function(){t&&a&&(k(a,"mouseover",n),k(a,"mouseout",r))}}),[t,e]),a};function Te(e,t,n,r){var a,o=!1,i=0;function l(){a&&clearTimeout(a)}function s(){for(var s=arguments.length,u=new Array(s),c=0;c<s;c++)u[c]=arguments[c];var d=this,f=Date.now()-i;function p(){i=Date.now(),n.apply(d,u)}o||(r&&!a&&p(),l(),void 0===r&&f>e?p():!0!==t&&(a=setTimeout(r?function(){a=void 0}:p,void 0===r?e-f:e)))}return"boolean"!=typeof t&&(r=n,n=t,t=void 0),s.cancel=function(){l(),o=!0},s}var Oe=["mousemove","mousedown","resize","keydown","touchstart","wheel"];const De=function(e,t,n){void 0===e&&(e=6e4),void 0===t&&(t=!1),void 0===n&&(n=Oe);var a=(0,r.useState)(t),o=a[0],i=a[1];return(0,r.useEffect)((function(){for(var t,r=!0,a=o,l=function(e){r&&(a=e,i(e))},s=Te(50,(function(){a&&l(!1),clearTimeout(t),t=setTimeout((function(){return l(!0)}),e)})),u=function(){document.hidden||s()},c=0;c<n.length;c++)x(window,n[c],s);return x(document,"visibilitychange",u),t=setTimeout((function(){return l(!0)}),e),function(){r=!1;for(var e=0;e<n.length;e++)k(window,n[e],s);k(document,"visibilitychange",u)}}),[e,n]),o};const Pe=function(e,t){var n=(0,r.useState)(null),a=n[0],o=n[1];return(0,r.useEffect)((function(){if(e.current&&"function"==typeof IntersectionObserver){var n=new IntersectionObserver((function(e){o(e[0])}),t);return n.observe(e.current),function(){o(null),n.disconnect()}}return function(){}}),[e.current,t.threshold,t.root,t.rootMargin]),a};const Ne=function(e,t){var n=(0,r.useRef)((function(){}));(0,r.useEffect)((function(){n.current=e})),(0,r.useEffect)((function(){if(null!==t){var e=setInterval((function(){return n.current()}),t||0);return function(){return clearInterval(e)}}}),[t])};const Ie=function(e,t,n,a){void 0===t&&(t=w),void 0===n&&(n={}),void 0===a&&(a=[e]);var o=n.event,i=void 0===o?"keydown":o,l=n.target,s=n.options,u=(0,r.useMemo)((function(){var n,r="function"==typeof(n=e)?n:"string"==typeof n?function(e){return e.key===n}:n?function(){return!0}:function(){return!1};return function(e){if(r(e))return t(e)}}),a);pe(i,u,l,s)};const Ae=function(e){return void 0===e&&(e={laptopL:1440,laptop:1024,tablet:768}),function(){var t=(0,r.useState)(_?window.innerWidth:0),n=t[0],a=t[1];(0,r.useEffect)((function(){var e=function(){a(window.innerWidth)};return e(),x(window,"resize",e),function(){k(window,"resize",e)}}));var o=(0,r.useMemo)((function(){return Object.entries(e).sort((function(e,t){return e[1]>=t[1]?1:-1}))}),[e]),i=o.reduce((function(e,t){var r=t[0],a=t[1];return n>=a?r:e}),o[0][0]);return i}};const Le=function(e){var t=(0,r.useState)([!1,null]),n=t[0],a=t[1];return Ie(e,(function(e){return a([!0,e])}),{event:"keydown"},[n]),Ie(e,(function(e){return a([!1,e])}),{event:"keyup"},[n]),n};const Re=function(e,t,n,r){void 0===r&&(r=Le);var a=r(e),o=a[0],i=a[1];s((function(){!o&&n?n(i):o&&t&&t(i)}),[o])};const je=function(e){var t=(0,r.useRef)(e);return t.current=e,t};const Me=function(e,t){(0,r.useEffect)((function(){return e&&e(),function(){t&&t()}}),[])};const Fe=function(e){void 0===e&&(e=[]);var t=(0,r.useRef)(H(e)),n=U(),a=(0,r.useMemo)((function(){var r={set:function(e){t.current=H(e,t.current),n()},push:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];e.length&&a.set((function(t){return t.concat(e)}))},updateAt:function(e,t){a.set((function(n){var r=n.slice();return r[e]=t,r}))},insertAt:function(e,t){a.set((function(n){var r=n.slice();return e>r.length?r[e]=t:r.splice(e,0,t),r}))},update:function(e,t){a.set((function(n){return n.map((function(n){return e(n,t)?t:n}))}))},updateFirst:function(e,n){var r=t.current.findIndex((function(t){return e(t,n)}));r>=0&&a.updateAt(r,n)},upsert:function(e,n){var r=t.current.findIndex((function(t){return e(t,n)}));r>=0?a.updateAt(r,n):a.push(n)},sort:function(e){a.set((function(t){return t.slice().sort(e)}))},filter:function(e,t){a.set((function(n){return n.slice().filter(e,t)}))},removeAt:function(e){a.set((function(t){var n=t.slice();return n.splice(e,1),n}))},clear:function(){a.set([])},reset:function(){a.set(H(e).slice())}};return r.remove=r.removeAt,r}),[]);return[t.current,a]};const Be=function(e,t,n){if(!_)return[t,w,w];if(!e)throw new Error("useLocalStorage key may not be falsy");var a=n?n.raw?function(e){return e}:n.deserializer:JSON.parse,o=(0,r.useRef)((function(e){try{var r=n?n.raw?String:n.serializer:JSON.stringify,o=localStorage.getItem(e);return null!==o?a(o):(t&&localStorage.setItem(e,r(t)),t)}catch(i){return t}})),i=(0,r.useState)((function(){return o.current(e)})),l=i[0],s=i[1];(0,r.useLayoutEffect)((function(){return s(o.current(e))}),[e]);var u=(0,r.useCallback)((function(t){try{var r="function"==typeof t?t(l):t;if(void 0===r)return;var o=void 0;o=n?n.raw?"string"==typeof r?r:JSON.stringify(r):n.serializer?n.serializer(r):JSON.stringify(r):JSON.stringify(r),localStorage.setItem(e,o),s(a(o))}catch(i){}}),[e,s]),c=(0,r.useCallback)((function(){try{localStorage.removeItem(e),s(void 0)}catch(i){}}),[e,s]);return[l,u,c]};var ze=function(e){var t=window.history,n=t[e];t[e]=function(t){var r=n.apply(this,arguments),a=new Event(e.toLowerCase());return a.state=t,window.dispatchEvent(a),r}};_&&(ze("pushState"),ze("replaceState"));var $e=function(e){var t=window.history,n=t.state,r=t.length,a=window.location;return{trigger:e,state:n,length:r,hash:a.hash,host:a.host,hostname:a.hostname,href:a.href,origin:a.origin,pathname:a.pathname,port:a.port,protocol:a.protocol,search:a.search}},Ue="function"==typeof Event;const He=_&&Ue?function(){var e=(0,r.useState)($e("load")),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(){return n($e("popstate"))},t=function(){return n($e("pushstate"))},r=function(){return n($e("replacestate"))};return x(window,"popstate",e),x(window,"pushstate",t),x(window,"replacestate",r),function(){k(window,"popstate",e),k(window,"pushstate",t),k(window,"replacestate",r)}}),[]),t}:function(){return{trigger:"load",length:1}};function Ve(e){if(!e)return null;if("BODY"===e.tagName)return e;if("IFRAME"===e.tagName){var t=e.contentDocument;return t?t.body:null}return e.offsetParent?Ve(e.offsetParent):null}function qe(e){var t=e||window.event;return t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1)}var We=_&&window.navigator&&window.navigator.platform&&/iP(ad|hone|od)/.test(window.navigator.platform),Ge=new Map,Ze="object"==typeof document?document:void 0,Qe=!1;const Ye=Ze?function(e,t){void 0===e&&(e=!0);var n=(0,r.useRef)(Ze.body);t=t||n;var a=function(e){var t=Ge.get(e);t&&(1===t.counter?(Ge.delete(e),We?(e.ontouchmove=null,Qe&&(k(document,"touchmove",qe),Qe=!1)):e.style.overflow=t.initialOverflow):Ge.set(e,{counter:t.counter-1,initialOverflow:t.initialOverflow}))};(0,r.useEffect)((function(){var n=Ve(t.current);n&&(e?function(e){var t=Ge.get(e);t?Ge.set(e,{counter:t.counter+1,initialOverflow:t.initialOverflow}):(Ge.set(e,{counter:1,initialOverflow:e.style.overflow}),We?Qe||(x(document,"touchmove",qe,{passive:!1}),Qe=!0):e.style.overflow="hidden")}(n):a(n))}),[e,t.current]),(0,r.useEffect)((function(){var e=Ve(t.current);if(e)return function(){a(e)}}),[])}:function(e,t){void 0===e&&(e=!0)};const Xe=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];le((function(){return console.log.apply(console,(0,d.__spreadArrays)([e+" mounted"],t)),function(){return console.log(e+" unmounted")}})),s((function(){console.log.apply(console,(0,d.__spreadArrays)([e+" updated"],t))}))};var Ke=function(e){(function(e){return"touches"in e})(e)&&e.touches.length<2&&e.preventDefault&&e.preventDefault()};const Je=function(e,t){var n=void 0===t?{}:t,a=n.isPreventDefault,o=void 0===a||a,i=n.delay,l=void 0===i?300:i,s=(0,r.useRef)(),u=(0,r.useRef)(),c=(0,r.useCallback)((function(t){o&&t.target&&(x(t.target,"touchend",Ke,{passive:!1}),u.current=t.target),s.current=setTimeout((function(){return e(t)}),l)}),[e,l,o]),d=(0,r.useCallback)((function(){s.current&&clearTimeout(s.current),o&&u.current&&k(u.current,"touchend",Ke)}),[o]);return{onMouseDown:function(e){return c(e)},onTouchStart:function(e){return c(e)},onMouseUp:d,onMouseLeave:d,onTouchEnd:d}};const et=function(e){void 0===e&&(e={});var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useMemo)((function(){return{set:function(e,t){a((function(n){var r;return(0,d.__assign)((0,d.__assign)({},n),((r={})[e]=t,r))}))},setAll:function(e){a(e)},remove:function(e){a((function(t){var n=t,r=e;n[r];return(0,d.__rest)(n,["symbol"==typeof r?r:r+""])}))},reset:function(){return a(e)}}}),[a]),i=(0,d.__assign)({get:(0,r.useCallback)((function(e){return n[e]}),[n])},o);return[n,i]};const tt=function(e,t){var n=(0,r.useState)(function(e,t){return void 0!==t?t:!!_&&window.matchMedia(e).matches}(e,t)),a=n[0],o=n[1];return(0,r.useEffect)((function(){var t=!0,n=window.matchMedia(e),r=function(){t&&o(!!n.matches)};return n.addListener(r),o(n.matches),function(){t=!1,n.removeListener(r)}}),[e]),a};const nt=E&&navigator.mediaDevices?function(){var e=(0,r.useState)({}),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=!0,t=function(){navigator.mediaDevices.enumerateDevices().then((function(t){e&&n({devices:t.map((function(e){return{deviceId:e.deviceId,groupId:e.groupId,kind:e.kind,label:e.label}}))})})).catch(w)};return x(navigator.mediaDevices,"devicechange",t),t(),function(){e=!1,k(navigator.mediaDevices,"devicechange",t)}}),[]),t}:function(){return{}};function rt(e,t){var n=(0,r.useRef)(e),a=(0,r.useState)(t),o=a[0],i=a[1];return[o,(0,r.useCallback)((function(e){2===n.current.length?n.current(e,i):i(n.current(e))}),[o])]}const at=function(e,t){var n=(0,r.useMemo)((function(){return function(t,n){var r;return(r=e(t))[n.type].apply(r,n.payload)}}),[e]),a=(0,r.useReducer)(n,t),o=a[0],i=a[1],l=(0,r.useMemo)((function(){return Object.keys(e(t)).reduce((function(e,t){return e[t]=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return i({type:t,payload:e})},e}),{})}),[e,t]);return[o,l]};var ot={acceleration:{x:null,y:null,z:null},accelerationIncludingGravity:{x:null,y:null,z:null},rotationRate:{alpha:null,beta:null,gamma:null},interval:16};const it=function(e){void 0===e&&(e=ot);var t=(0,r.useState)(e),n=t[0],a=t[1];return(0,r.useEffect)((function(){var e=function(e){var t=e.acceleration,n=e.accelerationIncludingGravity,r=e.rotationRate,o=e.interval;a({acceleration:{x:t.x,y:t.y,z:t.z},accelerationIncludingGravity:{x:n.x,y:n.y,z:n.z},rotationRate:{alpha:r.alpha,beta:r.beta,gamma:r.gamma},interval:o})};return x(window,"devicemotion",e),function(){k(window,"devicemotion",e)}}),[]),n};const lt=function(e){le((function(){e()}))};const st=function(e){var t=(0,r.useRef)(e);t.current=e,le((function(){return function(){return t.current()}}))};const ut=function(e){var t=(0,r.useRef)(0),n=(0,r.useState)(e),a=n[0],o=n[1],i=(0,r.useCallback)((function(e){cancelAnimationFrame(t.current),t.current=requestAnimationFrame((function(){o(e)}))}),[]);return st((function(){cancelAnimationFrame(t.current)})),[a,i]};const ct=function(e){var t=ut({docX:0,docY:0,posX:0,posY:0,elX:0,elY:0,elH:0,elW:0}),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=function(t){if(e&&e.current){var n=e.current.getBoundingClientRect(),r=n.left,o=n.top,i=n.width,l=n.height,s=r+window.pageXOffset,u=o+window.pageYOffset,c=t.pageX-s,d=t.pageY-u;a({docX:t.pageX,docY:t.pageY,posX:s,posY:u,elX:c,elY:d,elH:l,elW:i})}};return x(document,"mousemove",t),function(){k(document,"mousemove",t)}}),[e]),n};var dt={current:null};const ft=function(e,t){void 0===t&&(t={});var n=!!t.whenHovered,r=!!t.bound,a=Ce(e,n),o=ct(n&&!a?dt:e);return r&&(o.elX=Math.max(0,Math.min(o.elX,o.elW)),o.elY=Math.max(0,Math.min(o.elY,o.elH))),o},pt=function(){var e=(0,r.useState)(0),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(e){n(e.deltaY+t)};return x(window,"wheel",e,!1),function(){return k(window,"wheel",e)}})),t};var ht=E?navigator:void 0,mt=ht&&(ht.connection||ht.mozConnection||ht.webkitConnection);function gt(e){var t=null==ht?void 0:ht.onLine,n=null==e?void 0:e.online;return{online:t,previous:n,since:t!==n?new Date:null==e?void 0:e.since,downlink:null==mt?void 0:mt.downlink,downlinkMax:null==mt?void 0:mt.downlinkMax,effectiveType:null==mt?void 0:mt.effectiveType,rtt:null==mt?void 0:mt.rtt,saveData:null==mt?void 0:mt.saveData,type:null==mt?void 0:mt.type}}function vt(e){var t=(0,r.useState)(null!=e?e:gt),n=t[0],a=t[1];return(0,r.useEffect)((function(){var e=function(){a(gt)};return x(window,"online",e,{passive:!0}),x(window,"offline",e,{passive:!0}),mt&&x(mt,"change",e,{passive:!0}),function(){k(window,"online",e),k(window,"offline",e),mt&&k(mt,"change",e)}}),[]),n}const bt=q;const yt=function(e,t){var n=(0,r.useState)(t),a=n[0],o=n[1];return Y((function(){var t=e.subscribe(o);return function(){return t.unsubscribe()}}),[e]),a};var wt={angle:0,type:"landscape-primary"};const xt=function(e){void 0===e&&(e=wt);var t=(0,r.useState)(e),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=window.screen,n=!0,r=function(){if(n){var r=t.orientation;if(r){var o=r.angle,i=r.type;a({angle:o,type:i})}else void 0!==window.orientation?a({angle:"number"==typeof window.orientation?window.orientation:0,type:""}):a(e)}};return x(window,"orientationchange",r),r(),function(){n=!1,k(window,"orientationchange",r)}}),[]),n};const kt=function(e,t){void 0===t&&(t=[]),(0,r.useEffect)((function(){if(e){var t=function(t){var n=(t=t||window.event).relatedTarget||t.toElement;n&&"HTML"!==n.nodeName||e()};return x(document,"mouseout",t),function(){k(document,"mouseout",t)}}}),t)};const _t=function(e){var t=(0,r.useState)(""),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=!0,n=null,r=function(){t&&a((function(){var e;return null!==(e=null==n?void 0:n.state)&&void 0!==e?e:""}))};return navigator.permissions.query(e).then((function(e){x(n=e,"change",r),r()})).catch(w),function(){n&&k(n,"change",r),t=!1,n=null}}),[e]),n};function Et(e){var t=(0,r.useRef)();return(0,r.useEffect)((function(){t.current=e})),t.current}var St=function(e,t){return e===t};function Ct(e,t){void 0===t&&(t=St);var n=(0,r.useRef)(),a=(0,r.useRef)(e);return l()||t(a.current,e)||(n.current=a.current,a.current=e),n.current}const Tt=function(){var e=f();return(0,r.useCallback)((function(t){return new Promise((function(n,r){t.then((function(t){e()&&n(t)}),(function(t){e()&&r(t)}))}))}),[])};const Ot=function(e){void 0===e&&(e=[]);var t=(0,r.useState)(e),n=t[0],a=t[1];return{add:function(e){a((function(t){return(0,d.__spreadArrays)(t,[e])}))},remove:function(){var e;return a((function(t){var n=t[0],r=t.slice(1);return e=n,r})),e},get first(){return n[0]},get last(){return n[n.length-1]},get size(){return n.length}}};const Dt=function(e,t){void 0===e&&(e=1e12),void 0===t&&(t=0);var n=(0,r.useState)(0),a=n[0],o=n[1];return Y((function(){var n,r,a,i=function(){var t=Math.min(1,(Date.now()-a)/e);o(t),l()},l=function(){n=requestAnimationFrame(i)},s=setTimeout((function(){r=setTimeout((function(){cancelAnimationFrame(n),o(1)}),e),a=Date.now(),l()}),t);return function(){clearTimeout(r),clearTimeout(s),cancelAnimationFrame(n)}}),[e,t]),a};function Pt(e,t){void 0===t&&(t=!0);var n=(0,r.useRef)(null),a=(0,r.useRef)(!1),o=(0,r.useRef)(e);o.current=e;var i=(0,r.useCallback)((function(e){a.current&&(o.current(e),n.current=requestAnimationFrame(i))}),[]),l=(0,r.useMemo)((function(){return[function(){a.current&&(a.current=!1,n.current&&cancelAnimationFrame(n.current))},function(){a.current||(a.current=!0,n.current=requestAnimationFrame(i))},function(){return a.current}]}),[]);return(0,r.useEffect)((function(){return t&&l[1](),l[0]}),[]),l}var Nt=function(e,t){return new URLSearchParams(e).get(t)};const It=_?function(e){var t=window.location,n=(0,r.useState)((function(){return Nt(t.search,e)})),a=n[0],o=n[1];return(0,r.useEffect)((function(){var n=function(){o(Nt(t.search,e))};return x(window,"popstate",n),x(window,"pushstate",n),x(window,"replacestate",n),function(){k(window,"popstate",n),k(window,"pushstate",n),k(window,"replacestate",n)}}),[]),a}:function(){return null};n(96260);var At=function(e){void 0===e&&(e={});var t=e.disabled,n=je(e),a=(0,r.useState)({isScratching:!1}),o=a[0],i=a[1],l=(0,r.useRef)(o),s=(0,r.useRef)(!1),u=(0,r.useRef)(null),c=(0,r.useState)(null),f=c[0],p=c[1];return(0,r.useEffect)((function(){if(!t&&f){var e,r,a=function(e,t){cancelAnimationFrame(u.current),u.current=requestAnimationFrame((function(){var r=f.getBoundingClientRect(),a=r.left,o=r.top,s=a+window.scrollX,u=o+window.scrollY,c=e-s,p=t-u;i((function(e){var t=(0,d.__assign)((0,d.__assign)({},e),{dx:c-(e.x||0),dy:p-(e.y||0),end:Date.now(),isScratching:!0});return l.current=t,(n.current.onScratch||w)(t),t}))}))},o=function(e){a(e.pageX,e.pageY)},c=function(e){a(e.changedTouches[0].pageX,e.changedTouches[0].pageY)},p=function(){s.current&&(s.current=!1,l.current=(0,d.__assign)((0,d.__assign)({},l.current),{isScratching:!1}),(n.current.onScratchEnd||w)(l.current),i({isScratching:!1}),k(window,"mousemove",o),k(window,"touchmove",c),k(window,"mouseup",e),k(window,"touchend",r))};e=p,r=p;var h=function(t,a){if(s.current){var u=f.getBoundingClientRect(),d=u.left,p=u.top,h=d+window.scrollX,m=p+window.scrollY,g=t-h,v=a-m,b=Date.now(),y={isScratching:!0,start:b,end:b,docX:t,docY:a,x:g,y:v,dx:0,dy:0,elH:f.offsetHeight,elW:f.offsetWidth,elX:h,elY:m};l.current=y,(n.current.onScratchStart||w)(y),i(y),x(window,"mousemove",o),x(window,"touchmove",c),x(window,"mouseup",e),x(window,"touchend",r)}},m=function(e){s.current=!0,h(e.pageX,e.pageY)},g=function(e){s.current=!0,h(e.changedTouches[0].pageX,e.changedTouches[0].pageY)};return x(f,"mousedown",m),x(f,"touchstart",g),function(){k(f,"mousedown",m),k(f,"touchstart",g),k(window,"mousemove",o),k(window,"touchmove",c),k(window,"mouseup",e),k(window,"touchend",r),u.current&&cancelAnimationFrame(u.current),u.current=null,s.current=!1,l.current={isScratching:!1},i(l.current)}}}),[f,t,n]),[p,o]};const Lt=At;const Rt=function(e){var t=ut({x:0,y:0}),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=function(){e.current&&a({x:e.current.scrollLeft,y:e.current.scrollTop})};return e.current&&x(e.current,"scroll",t,{capture:!1,passive:!0}),function(){e.current&&k(e.current,"scroll",t)}}),[e]),n};const jt=function(e){var t=(0,r.useState)(!1),n=t[0],a=t[1];return(0,r.useEffect)((function(){if(e.current){var t,n=function(){a(!0),clearTimeout(t),t=setTimeout((function(){a(!1)}),150)};return x(e.current,"scroll",n,!1),function(){e.current&&k(e.current,"scroll",n,!1)}}return function(){}}),[e]),n};const Mt=function(e,t,n){if(!_)return[t,function(){}];var a=(0,r.useState)((function(){try{var r=sessionStorage.getItem(e);return"string"!=typeof r?(sessionStorage.setItem(e,n?String(t):JSON.stringify(t)),t):n?r:JSON.parse(r||"null")}catch(a){return t}})),o=a[0],i=a[1];return(0,r.useEffect)((function(){try{var t=n?String(o):JSON.stringify(o);sessionStorage.setItem(e,t)}catch(a){}})),[o,i]};var Ft=n(99376),Bt=function(e,t){return e.every((function(e,n){return(0,Ft.D)(e,t[n])}))};const zt=function(e,t){ee(e,t,Bt)};var $t=r.useState,Ut=r.useEffect,Ht=r.useRef;const Vt=function(e,t){var n=void 0===t?{}:t,o=n.width,i=void 0===o?1/0:o,l=n.height,s=void 0===l?1/0:l;if(!_)return["function"==typeof e?e({width:i,height:s}):e,{width:i,height:s}];var u=$t({width:i,height:s}),c=u[0],f=u[1];"function"==typeof e&&(e=e(c));var p=e.props.style||{},h=Ht(null),m=null,g=function(){var e=h.current,t=e?{width:e.offsetWidth,height:e.offsetHeight}:{width:i,height:s};f(t)},v=function(e){x(e,"resize",g),setTimeout(g,35)};return Ut((function(){var e=h.current;if(e){if(e.contentWindow)m=e.contentWindow,v(m);else{var t=function(){x(e,"load",t),m=e.contentWindow,v(m)};k(e,"load",t)}return function(){m&&m.removeEventListener&&k(m,"resize",g)}}}),[]),p.position="relative",[r.cloneElement.apply(a,(0,d.__spreadArrays)([e,{style:p}],(0,d.__spreadArrays)([r.createElement("iframe",{ref:h,style:{background:"transparent",border:"none",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:-1}})],r.Children.toArray(e.props.children)))),c]};const qt=function(e,t){void 0===t&&(t={});var n=f(),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useRef)(0),l=g({isSliding:!1,value:0}),s=l[0],u=l[1];return o.current=s.value,(0,r.useEffect)((function(){if(_){var r=void 0===t.styles||t.styles,l=void 0!==t.reverse&&t.reverse;e.current&&r&&(e.current.style.userSelect="none");var s=function(){!a.current&&n()&&((t.onScrubStart||w)(),a.current=!0,u({isSliding:!0}),m())},c=function(){a.current&&n()&&((t.onScrubStop||w)(o.current),a.current=!1,u({isSliding:!1}),g())},d=function(e){s(),f(e)},f=t.vertical?function(e){return v(e.clientY)}:function(e){return v(e.clientX)},p=function(e){s(),h(e)},h=t.vertical?function(e){return v(e.changedTouches[0].clientY)}:function(e){return v(e.changedTouches[0].clientX)},m=function(){x(document,"mousemove",f),x(document,"mouseup",c),x(document,"touchmove",h),x(document,"touchend",c)},g=function(){k(document,"mousemove",f),k(document,"mouseup",c),k(document,"touchmove",h),k(document,"touchend",c)},v=function(r){cancelAnimationFrame(i.current),i.current=requestAnimationFrame((function(){if(n()&&e.current){var a=e.current.getBoundingClientRect(),o=t.vertical?a.top:a.left,i=t.vertical?a.height:a.width;if(!i)return;var s=(r-o)/i;s>1?s=1:s<0&&(s=0),l&&(s=1-s),u({value:s}),(t.onScrub||w)(s)}}))};return x(e.current,"mousedown",d),x(e.current,"touchstart",p),function(){k(e.current,"mousedown",d),k(e.current,"touchstart",p)}}}),[e,t.vertical]),s};var Wt;!function(e){e[e.init=0]="init",e[e.play=1]="play",e[e.pause=2]="pause",e[e.end=3]="end"}(Wt||(Wt={}));const Gt=function(e,t){var n=(0,r.useRef)(!1),a=(0,r.useState)((function(){var e=t.voice||{},n=e.lang,r=void 0===n?"default":n,a=e.name,o=void 0===a?"":a;return{isPlaying:!1,status:Wt[Wt.init],lang:t.lang||"default",voiceInfo:{lang:r,name:o},rate:t.rate||1,pitch:t.pitch||1,volume:t.volume||1}})),o=a[0],i=a[1],l=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!0,status:Wt[Wt.play]})}))}),[]),s=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!1,status:Wt[Wt.pause]})}))}),[]),u=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!1,status:Wt[Wt.end]})}))}),[]);return(0,r.useEffect)((function(){n.current=!0;var r=new SpeechSynthesisUtterance(e);return t.lang&&(r.lang=t.lang),t.voice&&(r.voice=t.voice),r.rate=t.rate||1,r.pitch=t.pitch||1,r.volume=t.volume||1,r.onstart=l,r.onpause=s,r.onresume=l,r.onend=u,window.speechSynthesis.speak(r),function(){n.current=!1}}),[]),o};const Zt=function(e){Y((function(){var t=function(t){var n,r,a,o,i;!function(){var e=document.activeElement,t=document.body;if(!e)return!1;if(e===t)return!1;switch(e.tagName){case"INPUT":case"TEXTAREA":return!0}return e.hasAttribute("contenteditable")}()&&(r=(n=t).keyCode,a=n.metaKey,o=n.ctrlKey,i=n.altKey,!(a||o||i)&&(r>=48&&r<=57||r>=65&&r<=90))&&e(t)};return x(document,"keydown",t),function(){k(document,"keydown",t)}}),[])};function Qt(e,t,n){if(void 0===t&&(t=10),t<1)throw new Error("Capacity has to be greater than 1, got '"+t+"'");var a=l(),o=(0,r.useState)(e),i=o[0],s=o[1],u=(0,r.useRef)(null!=n?n:[]),c=(0,r.useRef)(0);return a&&(u.current.length?(u.current[u.current.length-1]!==e&&u.current.push(e),u.current.length>t&&(u.current=u.current.slice(u.current.length-t))):u.current.push(e),c.current=u.current.length&&u.current.length-1),[i,(0,r.useCallback)((function(e){s((function(n){return(e=H(e,n))!==n&&(c.current<u.current.length-1&&(u.current=u.current.slice(0,c.current+1)),c.current=u.current.push(e)-1,u.current.length>t&&(u.current=u.current.slice(u.current.length-t))),e}))}),[i,t]),(0,r.useMemo)((function(){return{history:u.current,position:c.current,capacity:t,back:function(e){void 0===e&&(e=1),c.current&&s((function(){return c.current-=Math.min(e,c.current),u.current[c.current]}))},forward:function(e){void 0===e&&(e=1),c.current!==u.current.length-1&&s((function(){return c.current=Math.min(c.current+e,u.current.length-1),u.current[c.current]}))},go:function(e){e!==c.current&&s((function(){return c.current=e<0?Math.max(u.current.length+e,0):Math.min(u.current.length-1,e),u.current[c.current]}))}}}),[i])]}function Yt(e){void 0===e&&(e=[]);var t=f(),n=U(),a=(0,r.useRef)(0);s((function(){e.length<=a.current&&(a.current=e.length-1,n())}),[e.length]);var o=(0,r.useMemo)((function(){return{next:function(){return o.setStateAt(a.current+1)},prev:function(){return o.setStateAt(a.current-1)},setStateAt:function(r){t()&&e.length&&r!==a.current&&(a.current=r>=0?r%e.length:e.length+r%e.length,n())},setState:function(r){if(t()){var o=e.length?e.indexOf(r):-1;if(-1===o)throw new Error("State '"+r+"' is not a valid state (does not exist in state list)");a.current=o,n()}}}}),[e]);return(0,d.__assign)({state:e[a.current],currentIndex:a.current},o)}const Xt=function(e,t){void 0===t&&(t=200);var n=(0,r.useState)(e),a=n[0],o=n[1],i=(0,r.useRef)(),l=(0,r.useRef)(null),s=(0,r.useRef)(0);return(0,r.useEffect)((function(){if(i.current)l.current=e,s.current=!0;else{o(e);var n=function(){s.current?(s.current=!1,o(l.current),i.current=setTimeout(n,t)):i.current=void 0};i.current=setTimeout(n,t)}}),[e]),st((function(){i.current&&clearTimeout(i.current)})),a};const Kt=function(e,t,n){void 0===t&&(t=200);var a=(0,r.useState)(null),o=a[0],i=a[1],l=(0,r.useRef)(),s=(0,r.useRef)();return(0,r.useEffect)((function(){if(l.current)s.current=n;else{i(e.apply(void 0,n));var r=function(){s.current?(i(e.apply(void 0,s.current)),s.current=void 0,l.current=setTimeout(r,t)):l.current=void 0};l.current=setTimeout(r,t)}}),n),st((function(){l.current&&clearTimeout(l.current)})),o};function Jt(e){return void 0===e&&(e=0),te(U(),e)}var en={restoreOnUnmount:!1};const tn="undefined"!=typeof document?function(e,t){void 0===t&&(t=en);var n=(0,r.useRef)(document.title);document.title!==e&&(document.title=e),(0,r.useEffect)((function(){return t&&t.restoreOnUnmount?function(){document.title=n.current}:void 0}),[])}:function(e){};var nn=n(75534);const rn=function(e,t,n){return void 0===e&&(e="inCirc"),void 0===t&&(t=200),void 0===n&&(n=0),(0,nn.U[e])(Dt(t,n))};const an=function(){var e=(0,r.useRef)(!1);return le((function(){return function(){e.current=!0}})),(0,r.useMemo)((function(){return function(t,n){return new Promise((function(r,a){t.then((function(t){e.current||r(t)}),(function(t){e.current?n?n(t):console.error("useUnmountPromise",t):a(t)}))}))}}),[])};function on(e,t){void 0===t&&(t=[]);var n=Fe(t),r=n[0],a=n[1];return[r,(0,d.__assign)((0,d.__assign)({},a),{upsert:function(t){a.upsert(e,t)}})]}const ln=E&&"vibrate"in navigator?function(e,t,n){void 0===e&&(e=!0),void 0===t&&(t=[1e3,1e3]),void 0===n&&(n=!0),(0,r.useEffect)((function(){var r;if(e&&(navigator.vibrate(t),n)){var a=t instanceof Array?t.reduce((function(e,t){return e+t})):t;r=setInterval((function(){navigator.vibrate(t)}),a)}return function(){e&&(navigator.vibrate(0),n&&clearInterval(r))}}),[e])}:w;const sn=b("video");function un(e,t,n){void 0===n&&(n=[void 0]);var a=(0,r.useRef)(t),o=(0,r.useRef)(e);a.current=t,o.current=e;var i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){a.current.length>=2?a.current(o.current,s):s(a.current(o.current))}),[s]);return(0,r.useEffect)((function(){u()}),[e]),[l,u]}var cn=function(e){if("undefined"==typeof document)return 0;if(document.body&&(!document.readyState||"loading"!==document.readyState)){if(!0!==e&&"number"==typeof cn.__cache)return cn.__cache;var t=document.createElement("div"),n=t.style;n.display="block",n.position="absolute",n.width="100px",n.height="100px",n.left="-999px",n.top="-999px",n.overflow="scroll",document.body.insertBefore(t,null);var r=t.clientWidth;if(0!==r)return cn.__cache=100-r,document.body.removeChild(t),cn.__cache;document.body.removeChild(t)}};function dn(){var e=(0,r.useState)(cn()),t=e[0],n=e[1];return(0,r.useEffect)((function(){if(void 0===t){var e=requestAnimationFrame((function(){n(cn())}));return function(){return cancelAnimationFrame(e)}}}),[]),t}function fn(e,t,n){if(void 0===n&&(n=[void 0]),"object"!=typeof e)throw new Error("states expected to be an object or array, got "+typeof e);var a=(0,r.useRef)(t),o=(0,r.useRef)(e);a.current=t,o.current=e;var i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){a.current.length>=2?a.current(o.current,s):s(a.current(o.current))}),[s]);return(0,r.useEffect)((function(){u()}),Object.values(e)),[l,u]}const pn=function(){var e=ut((function(){return{x:_?window.pageXOffset:0,y:_?window.pageYOffset:0}})),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(){n((function(e){var t=window.pageXOffset,n=window.pageYOffset;return e.x!==t||e.y!==n?{x:t,y:n}:e}))};return e(),x(window,"scroll",e,{capture:!1,passive:!0}),function(){k(window,"scroll",e)}}),[]),t};const hn=function(e,t){void 0===e&&(e=1/0),void 0===t&&(t=1/0);var n=ut({width:_?window.innerWidth:e,height:_?window.innerHeight:t}),a=n[0],o=n[1];return(0,r.useEffect)((function(){if(_){var e=function(){o({width:window.innerWidth,height:window.innerHeight})};return x(window,"resize",e),function(){k(window,"resize",e)}}}),[]),a};var mn={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};const gn=_&&void 0!==window.ResizeObserver?function(){var e=(0,r.useState)(null),t=e[0],n=e[1],a=(0,r.useState)(mn),o=a[0],i=a[1],l=(0,r.useMemo)((function(){return new window.ResizeObserver((function(e){if(e[0]){var t=e[0].contentRect,n=t.x,r=t.y,a=t.width,o=t.height,l=t.top,s=t.left,u=t.bottom,c=t.right;i({x:n,y:r,width:a,height:o,top:l,left:s,bottom:u,right:c})}}))}),[]);return Y((function(){if(t)return l.observe(t),function(){l.disconnect()}}),[t]),[n,o]}:function(){return[w,mn]};var vn;!function(e){e.ZOOMING_IN="ZOOMING_IN",e.ZOOMING_OUT="ZOOMING_OUT"}(vn||(vn={}));const bn=function(e){var t=(0,r.useMemo)((function(){return{evCache:[],prevDiff:-1}}),[e.current]),n=(0,r.useState)(),a=n[0],o=n[1],i=function(e){for(var n=0;n<t.evCache.length;n++)if(e.pointerId==t.evCache[n].pointerId){t.evCache[n]=e;break}if(2==t.evCache.length){var r=Math.abs(t.evCache[0].clientX-t.evCache[1].clientX);t.prevDiff>0&&(r>t.prevDiff&&o([vn.ZOOMING_IN,r]),r<t.prevDiff&&o([vn.ZOOMING_OUT,r])),t.prevDiff=r}},l=function(e){t.evCache.push(e)},s=function(e){u(e),t.evCache.length<2&&(t.prevDiff=-1)},u=function(e){for(var n=0;n<t.evCache.length;n++)if(t.evCache[n].pointerId==e.pointerId){t.evCache.splice(n,1);break}};return(0,r.useEffect)((function(){(null==e?void 0:e.current)&&(e.current.onpointerdown=l,e.current.onpointermove=i,e.current.onpointerup=s,e.current.onpointercancel=s,e.current.onpointerout=s,e.current.onpointerleave=s)}),[null==e?void 0:e.current]),a?{zoomingState:a[0],pinchState:a[1]}:{zoomingState:null,pinchState:0}};function yn(){return++(0,r.useRef)(0).current}const wn=function(e){void 0===e&&(e=new Set);var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useMemo)((function(){return{add:function(e){return a((function(t){return new Set((0,d.__spreadArrays)(Array.from(t),[e]))}))},remove:function(e){return a((function(t){return new Set(Array.from(t).filter((function(t){return t!==e})))}))},toggle:function(e){return a((function(t){return t.has(e)?new Set(Array.from(t).filter((function(t){return t!==e}))):new Set((0,d.__spreadArrays)(Array.from(t),[e]))}))},reset:function(){return a(e)}}}),[a]),i=(0,d.__assign)({has:(0,r.useCallback)((function(e){return n.has(e)}),[n])},o);return[n,i]};function xn(e){var t={state:e instanceof Function?e():e,setState:function(e){t.state=H(e,t.state),t.setters.forEach((function(e){return e(t.state)}))},setters:[]};return function(){var e=(0,r.useState)(t.state),n=e[0],a=e[1];return le((function(){return function(){t.setters=t.setters.filter((function(e){return e!==a}))}})),Y((function(){t.setters.includes(a)||t.setters.push(a)})),[n,t.setState]}}var kn=function(){var e=(0,r.useState)((function(){return window.location.hash})),t=e[0],n=e[1],a=(0,r.useCallback)((function(){n(window.location.hash)}),[]);Me((function(){x(window,"hashchange",a)}),(function(){k(window,"hashchange",a)}));var o=(0,r.useCallback)((function(e){e!==t&&(window.location.hash=e)}),[t]);return[t,o]}},72408:(e,t,n)=>{"use strict";var r=n(27418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m={};function g(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},x=Object.prototype.hasOwnProperty,k={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,r)&&!k.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var S=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(S,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(E(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(S,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+C(l=e[u],u);s+=T(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=T(l=l.value,t,n,c=r+C(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function O(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function D(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var P={current:null};function N(){var e=P.current;if(null===e)throw Error(p(321));return e}var I={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:O,forEach:function(e,t,n){O(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return O(e,(function(){t++})),t},toArray:function(e){return O(e,(function(e){return e}))||[]},only:function(e){if(!E(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=I,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)x.call(t,c)&&!k.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=_,t.createFactory=function(e){var t=_.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:D}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return N().useCallback(e,t)},t.useContext=function(e,t){return N().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return N().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return N().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return N().useLayoutEffect(e,t)},t.useMemo=function(e,t){return N().useMemo(e,t)},t.useReducer=function(e,t,n){return N().useReducer(e,t,n)},t.useRef=function(e){return N().useRef(e)},t.useState=function(e){return N().useState(e)},t.version="17.0.2"},67294:(e,t,n)=>{"use strict";e.exports=n(72408)},60053:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var h=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof h&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var m=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,x=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?x.postMessage(null):(m=!1,g=null)}catch(n){throw x.postMessage(null),n}}else m=!1},n=function(e){g=e,m||(m=!0,x.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},a=function(){p(v),v=-1}}function k(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<S(a,t)))break e;e[r]=t,e[n]=a,n=r}}function _(e){return void 0===(e=e[0])?null:e}function E(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>S(i,n))void 0!==s&&0>S(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>S(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function S(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],O=1,D=null,P=3,N=!1,I=!1,A=!1;function L(e){for(var t=_(T);null!==t;){if(null===t.callback)E(T);else{if(!(t.startTime<=e))break;E(T),t.sortIndex=t.expirationTime,k(C,t)}t=_(T)}}function R(e){if(A=!1,L(e),!I)if(null!==_(C))I=!0,n(j);else{var t=_(T);null!==t&&r(R,t.startTime-e)}}function j(e,n){I=!1,A&&(A=!1,a()),N=!0;var o=P;try{for(L(n),D=_(C);null!==D&&(!(D.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=D.callback;if("function"==typeof i){D.callback=null,P=D.priorityLevel;var l=i(D.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?D.callback=l:D===_(C)&&E(C),L(n)}else E(C);D=_(C)}if(null!==D)var s=!0;else{var u=_(T);null!==u&&r(R,u.startTime-n),s=!1}return s}finally{D=null,P=o,N=!1}}var M=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){I||N||(I=!0,n(j))},t.unstable_getCurrentPriorityLevel=function(){return P},t.unstable_getFirstCallbackNode=function(){return _(C)},t.unstable_next=function(e){switch(P){case 1:case 2:case 3:var t=3;break;default:t=P}var n=P;P=t;try{return e()}finally{P=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=M,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=P;P=e;try{return t()}finally{P=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:O++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,k(T,e),null===_(C)&&e===_(T)&&(A?a():A=!0,r(R,i-l))):(e.sortIndex=s,k(C,e),I||N||(I=!0,n(j))),e},t.unstable_wrapCallback=function(e){var t=P;return function(){var n=P;P=t;try{return e.apply(this,arguments)}finally{P=n}}}},63840:(e,t,n)=>{"use strict";e.exports=n(60053)},10577:e=>{!function(){"use strict";var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=e.exports,r=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,a=n.length,o={};r<a;r++)if((e=n[r])&&e[1]in t){for(r=0;r<e.length;r++)o[n[0][r]]=e[r];return o}return!1}(),a={change:r.fullscreenchange,error:r.fullscreenerror},o={request:function(e,n){return new Promise(function(a,o){var i=function(){this.off("change",i),a()}.bind(this);this.on("change",i);var l=(e=e||t.documentElement)[r.requestFullscreen](n);l instanceof Promise&&l.then(i).catch(o)}.bind(this))},exit:function(){return new Promise(function(e,n){if(this.isFullscreen){var a=function(){this.off("change",a),e()}.bind(this);this.on("change",a);var o=t[r.exitFullscreen]();o instanceof Promise&&o.then(a).catch(n)}else e()}.bind(this))},toggle:function(e,t){return this.isFullscreen?this.exit():this.request(e,t)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,n){var r=a[e];r&&t.addEventListener(r,n,!1)},off:function(e,n){var r=a[e];r&&t.removeEventListener(r,n,!1)},raw:r};r?(Object.defineProperties(o,{isFullscreen:{get:function(){return Boolean(t[r.fullscreenElement])}},element:{enumerable:!0,get:function(){return t[r.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return Boolean(t[r.fullscreenEnabled])}}}),n?e.exports=o:window.screenfull=o):n?e.exports={isEnabled:!1}:window.screenfull={isEnabled:!1}}()},96774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},11742:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r<e.rangeCount;r++)n.push(e.getRangeAt(r));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}},75534:(e,t)=>{"use strict";t.U={linear:function(e){return e},quadratic:function(e){return e*(-e*e*e+4*e*e-6*e+4)},cubic:function(e){return e*(4*e*e-9*e+6)},elastic:function(e){return e*(33*e*e*e*e-106*e*e*e+126*e*e-67*e+15)},inQuad:function(e){return e*e},outQuad:function(e){return e*(2-e)},inOutQuad:function(e){return e<.5?2*e*e:(4-2*e)*e-1},inCubic:function(e){return e*e*e},outCubic:function(e){return--e*e*e+1},inOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},inQuart:function(e){return e*e*e*e},outQuart:function(e){return 1- --e*e*e*e},inOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},inQuint:function(e){return e*e*e*e*e},outQuint:function(e){return 1+--e*e*e*e*e},inOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e},inSine:function(e){return 1-Math.cos(e*(Math.PI/2))},outSine:function(e){return Math.sin(e*(Math.PI/2))},inOutSine:function(e){return-(Math.cos(Math.PI*e)-1)/2},inExpo:function(e){return Math.pow(2,10*(e-1))},outExpo:function(e){return 1-Math.pow(2,-10*e)},inOutExpo:function(e){return(e/=.5)<1?Math.pow(2,10*(e-1))/2:(e--,(2-Math.pow(2,-10*e))/2)},inCirc:function(e){return 1-Math.sqrt(1-e*e)},outCirc:function(e){return Math.sqrt(1-(e-=1)*e)},inOutCirc:function(e){return(e/=.5)<1?-(Math.sqrt(1-e*e)-1)/2:(e-=2,(Math.sqrt(1-e*e)+1)/2)}}},70655:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>S,__asyncGenerator:()=>E,__asyncValues:()=>C,__await:()=>_,__awaiter:()=>h,__classPrivateFieldGet:()=>N,__classPrivateFieldIn:()=>A,__classPrivateFieldSet:()=>I,__createBinding:()=>g,__decorate:()=>l,__esDecorate:()=>u,__exportStar:()=>v,__extends:()=>a,__generator:()=>m,__importDefault:()=>P,__importStar:()=>D,__makeTemplateObject:()=>T,__metadata:()=>p,__param:()=>s,__propKey:()=>d,__read:()=>y,__rest:()=>i,__runInitializers:()=>c,__setFunctionName:()=>f,__spread:()=>w,__spreadArray:()=>k,__spreadArrays:()=>x,__values:()=>b});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};function i(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}function l(e,t,n,r){var a,o=arguments.length,i=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,u="getter"===s?"get":"setter"===s?"set":"value",c=!t&&e?r.static?e:e.prototype:null,d=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var h={};for(var m in r)h[m]="access"===m?{}:r[m];for(var m in r.access)h.access[m]=r.access[m];h.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var g=(0,n[p])("accessor"===s?{get:d.get,set:d.set}:d[u],h);if("accessor"===s){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(l=i(g.get))&&(d.get=l),(l=i(g.set))&&(d.set=l),(l=i(g.init))&&a.push(l)}else(l=i(g))&&("field"===s?a.push(l):d[u]=l)}c&&Object.defineProperty(c,r.name,d),f=!0}function c(e,t,n){for(var r=arguments.length>2,a=0;a<t.length;a++)n=r?t[a].call(e,n):t[a].call(e);return r?n:void 0}function d(e){return"symbol"==typeof e?e:"".concat(e)}function f(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function p(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function h(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(t){o(t)}}function l(e){try{s(r.throw(e))}catch(t){o(t)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}s((r=r.apply(e,t||[])).next())}))}function m(e,t){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){i.label=l[1];break}if(6===l[0]&&i.label<a[1]){i.label=a[1],a=l;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(l);break}a[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(s){l=[6,s],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}var g=Object.create?function(e,t,n,r){void 0===r&&(r=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,a)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function v(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||g(t,e,n)}function b(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(l){a={error:l}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function w(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(y(arguments[t]));return e}function x(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),a=0;for(t=0;t<n;t++)for(var o=arguments[t],i=0,l=o.length;i<l;i++,a++)r[a]=o[i];return r}function k(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}function _(e){return this instanceof _?(this.v=e,this):new _(e)}function E(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,a=n.apply(e,t||[]),o=[];return r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r;function i(e){a[e]&&(r[e]=function(t){return new Promise((function(n,r){o.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=a[e](t)).value instanceof _?Promise.resolve(n.value.v).then(s,u):c(o[0][2],n)}catch(r){c(o[0][3],r)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function c(e,t){e(t),o.shift(),o.length&&l(o[0][0],o[0][1])}}function S(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:_(e[r](t)),done:!1}:a?a(t):t}:a}}function C(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,a){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,a,(t=e[n](t)).done,t.value)}))}}}function T(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var O=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&g(t,e,n);return O(t,e),t}function P(e){return e&&e.__esModule?e:{default:e}}function N(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function I(e,t,n,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(e,n):a?a.value=n:t.set(e,n),n}function A(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}},53250:(e,t,n)=>{"use strict";var r=n(67294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:c},61688:(e,t,n)=>{"use strict";e.exports=n(53250)},36809:(e,t,n)=>{"use strict";n.d(t,{default:()=>r});const r={title:"Waku Documentation",url:"https://docs.waku.org",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en-GB",locales:["en-GB"],path:"i18n",localeConfigs:{}},presets:[["@acid-info/logos-docusaurus-preset",{businessUnit:"Waku",customSiteConfig:!0,docs:{routeBasePath:"/",path:"docs",sidebarPath:"/home/jenkins/workspace/website/dev-docs.waku.org/sidebars.js",editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/",showLastUpdateTime:!0,breadcrumbs:!1},theme:{name:"default",options:{customCss:["/home/jenkins/workspace/website/dev-docs.waku.org/src/css/custom.scss"]}}}]],staticDirectories:["static","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-preset/static/common","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-preset/static/Waku","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-theme/lib/client/static/"],plugins:[["@acid-info/docusaurus-fathom",{siteId:"FUTMI",scriptUrl:"https://fathom.status.im/tracker.js"}]],themeConfig:{docs:{sidebar:{hideable:!1,autoCollapseCategories:!1},versionPersistence:"localStorage"},metadata:[{name:"keywords",content:"waku, web3"},{name:"description",content:"Waku is the communication layer for Web3. Decentralized communication that scales."},{name:"image",content:"theme/image/preview-image.png"}],colorMode:{disableSwitch:!1,defaultMode:"dark",respectPrefersColorScheme:!0},navbar:{title:"",logo:{alt:"Waku",src:"theme/image/logo-black.svg",srcDark:"theme/image/logo.svg",height:26},hideOnScroll:!0,items:[{type:"search",position:"left"},{type:"docSidebar",position:"left",sidebarId:"guides",label:"Guides"},{type:"docSidebar",position:"left",sidebarId:"learn",label:"Learn"},{type:"docSidebar",position:"left",sidebarId:"research",label:"Research"},{href:"https://discord.waku.org",position:"left",label:"Discord"},{href:"https://github.com/waku-org",position:"right",className:"header-github-link",title:"Waku GitHub repository"}]},footer:{logo:{alt:"Waku",src:"theme/image/logo.svg",href:"/",width:22},links:[{title:"Guides",items:[{to:"/guides/nwaku/run-docker-compose",label:"Run a Nwaku Node"},{to:"/guides/js-waku/",label:"JavaScript Waku SDK"}]},{title:"Community",items:[{href:"https://twitter.com/waku_org/",label:"X"},{href:"https://discord.waku.org/",label:"Discord"},{href:"https://github.com/waku-org/",label:"GitHub"},{href:"https://www.youtube.com/@wakuorg",label:"YouTube"},{href:"https://www.linkedin.com/company/waku-org",label:"LinkedIn"},{href:"https://warpcast.com/waku",label:"Farcaster"},{href:"https://t.me/waku_org/",label:"Telegram"}]},{title:"Resources",items:[{href:"https://blog.waku.org/",label:"Blog"},{href:"https://rfc.vac.dev/waku",label:"Waku RFCs"},{href:"https://github.com/waku-org/bounties/",label:"Bounties"},{href:"https://github.com/waku-org/awesome-waku/",label:"Awesome Waku"}]},{title:"Legal",items:[{href:"/terms",label:"Terms of Use"},{href:"/privacy-policy",label:"Privacy Policy"},{href:"/rules-of-engagement",label:"Rules of Engagement"},{href:"/security",label:"Security"}]},{title:"shared:Research",items:[{href:"https://vac.dev",label:"VacP2P"},{href:"https://afaik.institute",label:"AFAIK"}]},{title:"shared:Infrastructure",items:[{href:"https://waku.org/",label:"Waku"},{href:"https://nimbus.team/",label:"Nimbus"},{href:"https://codex.storage",label:"Codex"},{href:"https://nomos.tech",label:"Nomos"}]},{title:"shared:Creative Studio",items:[{href:"https://acid.info",label:"Acid.info"}]},{title:"shared:Movement",items:[{href:"https://logos.co",label:"Logos"}]},{title:"shared:User-facing products",items:[{href:"https://status.im",label:"Status"},{href:"https://keycard.tech",label:"Keycard"}]}],copyright:"Waku",style:"light"},prism:{theme:{plain:{color:"#000000",backgroundColor:"rgba(var(--lsd-surface-secondary), 0.08)"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"rgba(var(--lsd-surface-secondary), 0.08)"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3},mermaid:{theme:{dark:"dark",light:"default"},options:{}}},markdown:{mermaid:!0},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",customFields:{businessUnits:"Waku","logos-docusaurus-theme":{customCss:["/home/jenkins/workspace/website/dev-docs.waku.org/src/css/custom.scss"],docs:{},id:"default"}},themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],tagline:"",titleDelimiter:"|",noIndex:!1,favicon:"theme/image/favicon.ico"}},87462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},75068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},63366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},38776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},57529:e=>{"use strict";e.exports={}},16887:e=>{"use strict";e.exports=JSON.parse('{"/-d04":{"__comp":"1be78505","__context":{"plugin":"3b0eafbc"},"versionMetadata":"935f2afb"},"/-0f1":{"__comp":"17896441","content":"c9ea0dcf"},"/guides/js-waku/-9af":{"__comp":"17896441","content":"488ca57d"},"/guides/js-waku/configure-discovery-dfe":{"__comp":"17896441","content":"4bb5c570"},"/guides/js-waku/debug-waku-dapp-c0d":{"__comp":"17896441","content":"e610d71e"},"/guides/js-waku/faq-1ad":{"__comp":"17896441","content":"a494bfbc"},"/guides/js-waku/light-send-receive-77b":{"__comp":"17896441","content":"c57f3997"},"/guides/js-waku/manage-filter-d72":{"__comp":"17896441","content":"0444839e"},"/guides/js-waku/message-encryption-d96":{"__comp":"17896441","content":"df28445d"},"/guides/js-waku/run-waku-nodejs-30f":{"__comp":"17896441","content":"0f1b9a4a"},"/guides/js-waku/store-retrieve-messages-1c5":{"__comp":"17896441","content":"1f1f54c7"},"/guides/js-waku/use-waku-create-app-76f":{"__comp":"17896441","content":"5277fe18"},"/guides/js-waku/use-waku-react-ed9":{"__comp":"17896441","content":"3b240eda"},"/guides/nwaku/build-source-995":{"__comp":"17896441","content":"f2470003"},"/guides/nwaku/config-methods-c44":{"__comp":"17896441","content":"80ec2a43"},"/guides/nwaku/config-options-def":{"__comp":"17896441","content":"8eff6037"},"/guides/nwaku/configure-discovery-a6b":{"__comp":"17896441","content":"8a655033"},"/guides/nwaku/configure-nwaku-a95":{"__comp":"17896441","content":"60832973"},"/guides/nwaku/faq-ad1":{"__comp":"17896441","content":"20987266"},"/guides/nwaku/find-node-address-786":{"__comp":"17896441","content":"b551b2b5"},"/guides/nwaku/run-docker-d03":{"__comp":"17896441","content":"6e8bfb6f"},"/guides/nwaku/run-docker-compose-ca4":{"__comp":"17896441","content":"7c28fd94"},"/guides/nwaku/run-node-9f1":{"__comp":"17896441","content":"406e0176"},"/guides/nwaku/upgrade-instructions-8ee":{"__comp":"17896441","content":"d3c3b3be"},"/learn/concepts/content-topics-45b":{"__comp":"17896441","content":"c764ec94"},"/learn/concepts/discv5-01f":{"__comp":"17896441","content":"2f51beae"},"/learn/concepts/dns-discovery-c5b":{"__comp":"17896441","content":"a44b8792"},"/learn/concepts/network-domains-5d8":{"__comp":"17896441","content":"b54b2767"},"/learn/concepts/peer-discovery-913":{"__comp":"17896441","content":"6778e957"},"/learn/concepts/peer-exchange-e58":{"__comp":"17896441","content":"80a3009a"},"/learn/concepts/protocols-13a":{"__comp":"17896441","content":"fb5ea66b"},"/learn/concepts/static-peers-9c6":{"__comp":"17896441","content":"e63bb37c"},"/learn/concepts/transports-6fb":{"__comp":"17896441","content":"ef85d46a"},"/learn/faq-74d":{"__comp":"17896441","content":"1067bd84"},"/learn/glossary-cf5":{"__comp":"17896441","content":"4aba8864"},"/learn/research-13c":{"__comp":"17896441","content":"6c6e315a"},"/learn/security-features-72b":{"__comp":"17896441","content":"606377f0"},"/learn/waku-network-f0c":{"__comp":"17896441","content":"b99d0044"},"/learn/waku-vs-libp2p-c45":{"__comp":"17896441","content":"41a4e09e"},"/migrations/js-waku/migration_v0.026_0.027-949":{"__comp":"17896441","content":"63c569e1"},"/privacy-policy-4cd":{"__comp":"17896441","content":"8c5da4da"},"/research/-e8b":{"__comp":"17896441","content":"f7974e9c"},"/research/benchmarks/postgres-adoption-563":{"__comp":"17896441","content":"e168415d"},"/research/research-and-studies/capped-bandwidth-ee6":{"__comp":"17896441","content":"97983a7b"},"/research/research-and-studies/incentivisation-d49":{"__comp":"17896441","content":"4e726341"},"/research/research-and-studies/maximum-bandwidth-80a":{"__comp":"17896441","content":"df0a719b"},"/research/research-and-studies/message-propagation-46a":{"__comp":"17896441","content":"3fbcf129"},"/research/research-and-studies/rln-key-benchmarks-5d8":{"__comp":"17896441","content":"1236ce69"},"/rules-of-engagement-0fc":{"__comp":"17896441","content":"d53fc737"},"/security-2fb":{"__comp":"17896441","content":"db32d859"},"/terms-37d":{"__comp":"17896441","content":"500a151f"}}')}},e=>{e.O(0,[532],(()=>{return t=91091,e(e.s=t);var t}));e.O()}]); \ No newline at end of file + `),[d,c]))};var c,d,f}},55873:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useEventListener=void 0;const r=n(67294);t.useEventListener=(e,t,n,a,o)=>{const i=(0,r.useMemo)((()=>"string"==typeof e?e:e()),[]),l=(0,r.useMemo)((()=>"function"==typeof t?t():t),[t]);(0,r.useEffect)((()=>{if(l?.addEventListener&&l?.removeEventListener)return l.addEventListener(i,n,a),()=>{l.removeEventListener(i,n,a)}}),[i,l])}},96507:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useHydrated=void 0;const r=n(67294);t.useHydrated=()=>{const[e,t]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{t(!0)}),[]),e}},53708:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useIsMobile=void 0;const r=n(89164);t.useIsMobile=()=>(0,r.useMedia)("(max-width: 1199px)")},81803:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.usePersistedHistory=void 0;const r=n(89164);t.usePersistedHistory=(e,t)=>{const n=t?.unique??!1,a=t?.equals??((e,t)=>e===t),o=t?.maxItems??null,[i,l]=(0,r.useLocalStorage)("logos-docusaurus-theme-"+e,[]),s=e=>{l((i??[]).filter(((t,n)=>!e(t,n))))};return{add:e=>{const t=i??[],r=[e,...n?t.filter((t=>!a(t,e))):t];l(o?r.slice(0,o):r)},clear:()=>{l([])},remove:s,removeByIndex:e=>{s(((t,n)=>n===e))},list:i}}},54400:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useDocThemeOptions=t.useThemeOptions=void 0;const r=n(70655),a=n(80143),o=r.__importDefault(n(52263));t.useThemeOptions=()=>{const{siteConfig:{customFields:e={}}}=(0,o.default)();return e["logos-docusaurus-theme"]??{}};t.useDocThemeOptions=()=>{const e=(0,a.useActivePlugin)(),n=(0,t.useThemeOptions)();return e?n?.docs?.[e?.pluginId]??{}:{}}},521:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useWindowEventListener=void 0;const r=n(55873);t.useWindowEventListener=function(e,t,n,a){void 0===a&&(a=[]),(0,r.useEventListener)(e,(()=>"undefined"!=typeof window&&window),t,n,a)}},66354:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(95999),i=r.__importDefault(n(72389)),l=r.__importDefault(n(55211)),s=r.__importDefault(n(67080)),u=r.__importDefault(n(86010)),c=r.__importDefault(n(67294)),d=r.__importDefault(n(8633));t.Z=c.default.memo((function(e){let{className:t,buttonClassName:n,value:r,onChange:f}=e;const p=(0,i.default)(),h=(0,o.translate)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,o.translate)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,o.translate)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return c.default.createElement(a.IconButton,{className:(0,u.default)("clean-btn",d.default.toggle,t,!p&&d.default.toggleButtonDisabled,n),type:"button",onClick:()=>f("dark"===r?"light":"dark"),disabled:!p,title:h,"aria-label":h,"aria-live":"polite"},c.default.createElement(s.default,{className:(0,u.default)(d.default.toggleIcon,d.default.lightToggleIcon)}),c.default.createElement(l.default,{className:(0,u.default)(d.default.toggleIcon,d.default.darkToggleIcon)}))}))},52601:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(79762));t.Z=function(e){let{style:t,links:n,logo:r,copyright:s}=e;const[u,c]=(e=>{const t=[],n=[];for(const r of e)"title"in r&&"string"==typeof r.title&&r.title.startsWith("shared:")?n.push({...r,title:r.title.slice(7)}):t.push(r);return[t,n]})(n.props.links);return i.default.createElement("footer",{className:(0,o.default)("footer",{"footer--dark":"dark"===t})},i.default.createElement("div",{className:(0,o.default)("container","container-fluid",l.default.firstRow)},(r||s)&&i.default.createElement(i.default.Fragment,null,i.default.createElement("div",{className:"footer__bottom text--center"},r&&i.default.createElement("div",{className:"margin-bottom--sm"},r),s)),i.default.cloneElement(n,{links:u})),i.default.createElement("div",{className:(0,o.default)(l.default.secondRow)},i.default.createElement("span",{className:(0,o.default)("footer__bottom text--center")},"Built by"," ",i.default.createElement("a",{href:"https://free.technology/",target:"_blank",className:(0,o.default)(l.default.footerLink)},"IFT")),i.default.cloneElement(n,{links:c})),i.default.createElement(a.Button,{className:l.default.backToTop,size:"small",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},"Back to top \u2191"))}},90988:(e,t,n)=>{"use strict";const r=n(70655).__importDefault(n(67294)),a=n(82818),o=n(91338),i=(0,a.composeProviders)([o.AnnouncementBarProvider,o.ScrollControllerProvider,o.DocsPreferredVersionContextProvider,o.PluginHtmlClassNameProvider,o.NavbarProvider]);t.Z=function(e){let{children:t}=e;return r.default.createElement(i,null,t)}},16853:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(39960)),i=r.__importDefault(n(44996)),l=r.__importDefault(n(52263)),s=n(82818),u=r.__importDefault(n(16019));function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.default)(t.src),dark:(0,i.default)(t.srcDark||t.src)},l=a.default.createElement(u.default,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.default.createElement("div",{className:r},l):l}t.default=function(e){const{siteConfig:{title:t}}=(0,l.default)(),{navbar:{title:n,logo:r}}=(0,s.useThemeConfig)(),{imageClassName:u,titleClassName:d,...f}=e,p=(0,i.default)(r?.href||"/"),h=n?"":t,m=r?.alt??h;return a.default.createElement(o.default,{to:p,...f,...r?.target&&{target:r.target}},r&&a.default.createElement(c,{logo:r,alt:m,imageClassName:u}),null!=n&&a.default.createElement("b",{className:d},n))}},10428:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(2101)),s=r.__importDefault(n(29785)),u=r.__importDefault(n(29865)),c=r.__importDefault(n(4710)),d=r.__importDefault(n(33760)),f=r.__importDefault(n(86010)),p=r.__importDefault(n(67294)),h=n(96507),m=r.__importDefault(n(90826));function g(e){let{items:t}=e;return p.default.createElement(p.default.Fragment,null,t.map(((e,t)=>p.default.createElement(o.ErrorCauseBoundary,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},p.default.createElement(c.default,{...e})))))}t.Z=function(){const e=(0,h.useHydrated)(),t=(0,i.useNavbarMobileSidebar)(),n=(0,o.useThemeConfig)().navbar.items,[r,c]=(0,i.splitNavbarItems)(n.filter((e=>!["search"].includes(e.type??"")))),v=n.find((e=>"search"===e.type));return p.default.createElement("div",{className:"navbar__inner"},p.default.createElement("div",{className:"navbar__left"},p.default.createElement(s.default,null)),p.default.createElement("div",{className:"navbar__left-items"},p.default.createElement(g,{items:r})),p.default.createElement("div",{className:"navbar__right-items"},p.default.createElement(g,{items:c}),p.default.createElement(a.IconButtonGroup,{className:m.default.iconButtonGroup,size:"medium"},p.default.createElement(l.default,{key:"color-toggle",className:(0,f.default)(m.default.colorModeToggle,"navbar__color-mode-toggle")}),e&&p.default.createElement(p.default.Fragment,{key:"search"},v&&p.default.createElement(d.default,null)),p.default.createElement(p.default.Fragment,{key:"mobile-sidebar-toggle"},!t.disabled&&p.default.createElement(u.default,null)))))}},4818:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=n(82818),l=n(91338),s=n(95999),u=r.__importDefault(n(2203)),c=r.__importDefault(n(97087));function d(e){return a.default.createElement("div",{role:"presentation",...e,className:(0,o.default)("navbar-sidebar__backdrop",e.className)})}t.Z=function(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:r}}=(0,i.useThemeConfig)(),f=(0,l.useNavbarMobileSidebar)(),{navbarRef:p,isNavbarVisible:h}=(0,l.useHideableNavbar)(n);return a.default.createElement("nav",{ref:p,"aria-label":(0,s.translate)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.default)("navbar","navbar--fixed-top",n&&[c.default.navbarHideable,!h&&c.default.navbarHidden],{"navbar--dark":"dark"===r,"navbar--primary":"primary"===r,"navbar-sidebar--show":f.shown})},t,a.default.createElement(d,{onClick:f.toggle}),a.default.createElement(u.default,null))}},29785:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(16853));t.default=function(){return a.default.createElement(o.default,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}},42977:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=n(91338),i=n(95999),l=r.__importDefault(n(2101)),s=r.__importDefault(n(29785)),u=n(31665),c=r.__importDefault(n(33760));function d(){const e=(0,o.useNavbarMobileSidebar)();return a.default.createElement("button",{type:"button","aria-label":(0,i.translate)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},a.default.createElement(u.CloseIcon,null))}t.Z=function(){return a.default.createElement("div",{className:"navbar-sidebar__brand"},a.default.createElement(s.default,null),a.default.createElement(l.default,{className:"margin-right--md"}),a.default.createElement(c.default,null),a.default.createElement(d,null))}},82892:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=n(91338),l=r.__importDefault(n(88507));t.Z=function(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:s}=(0,i.useNavbarSecondaryMenu)();return a.default.createElement("div",{className:(0,o.default)("navbar-sidebar",s&&"navbar-sidebar--show-secondary")},t,a.default.createElement("div",{className:(0,o.default)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":s})},a.default.createElement("div",{className:"navbar-sidebar__item menu"},n,!s&&a.default.createElement(l.default,null)),a.default.createElement("div",{className:"navbar-sidebar__item menu"},r)))}},38732:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(95999)),s=n(78870),u=r.__importDefault(n(67294));function c(e){return u.default.createElement("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back"},u.default.createElement(s.IconArrowLeft,null),u.default.createElement(a.Typography,null,u.default.createElement(l.default,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"Back to main menu")))}t.Z=function(){const e=0===(0,o.useThemeConfig)().navbar.items.length,t=(0,i.useNavbarSecondaryMenu)();return u.default.createElement(u.default.Fragment,null,!e&&u.default.createElement(c,{onClick:()=>t.hide()}),t.content)}},27654:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(4710)),s=r.__importDefault(n(51125)),u=r.__importDefault(n(86010)),c=r.__importStar(n(67294)),d=r.__importDefault(n(83244));function f(e,t){return e.some((e=>function(e,t){return!!(0,i.isSamePath)(e.to,t)||!!(0,o.isRegexpStringMatch)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function p(e){let{items:t,position:n,className:r,onClick:o,...i}=e;const f=(0,c.useRef)(null),[p,h]=(0,c.useState)(!1);return(0,c.useEffect)((()=>{const e=e=>{f.current&&!f.current.contains(e.target)&&h(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[f]),c.default.createElement("div",{ref:f,className:(0,u.default)("navbar__item",d.default.dropdownNavbarItem,"dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":p})},c.default.createElement(s.default,{"aria-haspopup":"true","aria-expanded":p,role:"button",href:i.to?void 0:"#",className:(0,u.default)("navbar__link",r),...i,onClick:i.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),h(!p))}},i.children??i.label),c.default.createElement(a.ChevronDownIcon,{className:(0,u.default)("margin-left-8","cursor-pointer")}),c.default.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>c.default.createElement(l.default,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))))}function h(e){let{items:t,className:n,position:r,onClick:d,...p}=e;const h=(0,i.useLocalPathname)(),m=f(t,h),{collapsed:g,toggleCollapsed:v,setCollapsed:b}=(0,o.useCollapsible)({initialState:()=>!m});return(0,c.useEffect)((()=>{m&&b(!m)}),[h,m,b]),c.default.createElement("li",{className:(0,u.default)("menu__list-item",{"menu__list-item--collapsed":g})},c.default.createElement(s.default,{role:"button",className:(0,u.default)("menu__link menu__link--sublist menu__link--sublist-caret",n),...p,onClick:e=>{e.preventDefault(),v()}},c.default.createElement(a.Typography,{variant:"body1"},p.children??p.label)),c.default.createElement(o.Collapsible,{lazy:!0,as:"ul",className:"menu__list",collapsed:g},t.map(((e,t)=>c.default.createElement(l.default,{mobile:!0,isDropdownItem:!0,onClick:d,activeClassName:"menu__link--active",...e,key:t})))))}t.default=function(e){let{mobile:t=!1,...n}=e;const r=t?h:p;return c.default.createElement(r,{...n})}},12197:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(52263)),i=n(91338),l=n(95999),s=n(28143),u=r.__importDefault(n(27654));t.Z=function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,...c}=e;const{i18n:{currentLocale:d,locales:f,localeConfigs:p}}=(0,o.default)(),h=(0,i.useAlternatePageUtils)(),{search:m,hash:g}=(0,s.useLocation)(),v=[...n,...f.map((e=>{const n=`${`pathname://${h.createUrl({locale:e,fullyQualified:!1})}`}${m}${g}`;return{label:p[e]?.label,lang:p[e]?.htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===d?t?"menu__link--active":"dropdown__link--active":""}})),...r],b=t?(0,l.translate)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):p[d]?.label.substring(0,2).toUpperCase();return a.default.createElement(u.default,{...c,mobile:t,label:a.default.createElement(a.default.Fragment,null,b),items:v})}},51125:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=n(31665),o=r.__importDefault(n(13919)),i=r.__importDefault(n(39960)),l=n(82818),s=r.__importDefault(n(44996)),u=r.__importDefault(n(67294)),c=n(55061),d=r.__importDefault(n(88822));t.default=function(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:f,label:p,html:h,isDropdownLink:m,prependBaseUrlToHref:g,...v}=e;const b=(0,s.default)(r),y=(0,s.default)(t),w=(0,s.default)(f,{forcePrependBaseUrl:!0}),x=p&&f&&!(0,o.default)(f),k=h?{dangerouslySetInnerHTML:{__html:h}}:{children:u.default.createElement(a.Typography,{component:"div",variant:"body2",className:d.default.linkContent},p,x&&u.default.createElement(c.IconExternalLink,{className:d.default.externalLinkIcon}))};return f?u.default.createElement(i.default,{href:g?w:f,...v,...k}):u.default.createElement(i.default,{to:b,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,l.isRegexpStringMatch)(n,t.pathname):t.pathname.startsWith(y)},...v,...k})}},85140:(e,t,n)=>{"use strict";const r=n(70655),a=n(91338),o=r.__importDefault(n(67294)),i=n(19843),l=n(27967),s=n(54400),u=r.__importDefault(n(36459));t.Z=function(e){let{children:t}=e;const n=(0,s.useDocThemeOptions)(),r=n?.sidebar?.hide;return o.default.createElement(a.ColorModeProvider,null,o.default.createElement(l.ThemeProvider,null,o.default.createElement(i.LightBoxProvider,null,o.default.createElement("div",{className:u.default.root,"data-hidden-doc-sidebar":r},t))))}},7020:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchBar=void 0;const r=n(70655),a=n(31665),o=r.__importStar(n(67294)),i=n(40466),l=n(81803),s=n(521),u=n(71044),c=r.__importDefault(n(31259)),d=n(19323),f=n(72997),p=n(43110);t.SearchBar=e=>{let{}=e;const t=(0,l.usePersistedHistory)("search",{unique:!0,equals:(e,t)=>e.title===t.title&&e.href===t.href,maxItems:10}),n=(0,u.useSearch)(),r=(0,o.useRef)(null),[h,m]=(0,o.useState)(""),[g,v]=(0,o.useState)([]),[b,y]=(0,o.useState)(!1);(0,o.useEffect)((()=>{h.length>0?(async e=>{const{results:t}=await n.query(e);v(t)})(h):v([])}),[h]),(0,o.useEffect)((()=>{b?(()=>{const e=r.current;if(!e)return;const t=e.querySelector("input");t&&setTimeout((()=>{t.focus()}),50)})():m("")}),[b]);return(0,s.useWindowEventListener)("keydown",(e=>{(e.ctrlKey||e.metaKey)&&"KeyK"===e.code&&(e.preventDefault(),y(!0))}),{},[]),o.default.createElement(o.default.Fragment,null,o.default.createElement(a.IconButton,{onClick:()=>y(!0),size:"medium"},o.default.createElement(a.SearchIcon,null)),o.default.createElement(i.Modal,{keepMounted:!0,id:"search-modal",open:b,onClose:()=>y(!1),className:c.default.modal},o.default.createElement("div",{className:c.default.header},o.default.createElement(f.SearchInput,{containerRef:r,onClear:()=>{m("")},value:h,onChange:e=>{m(e.target.value)}}),o.default.createElement(a.IconButton,{className:c.default.closeButton,size:"medium",onClick:()=>y(!1)},o.default.createElement(a.CloseIcon,{color:"primary"}))),h.length>0&&o.default.createElement(p.SearchResults,{results:g,onNavigate:(e,n)=>{e.preventDefault(),y(!1),t.add(n),window.location.href=n.href}}),0===h.length&&o.default.createElement(d.SearchHistory,{history:t.list??[],onRemove:t.removeByIndex,onClose:()=>y(!1)})))}},19323:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchHistory=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=n(55061),s=n(33493),u=r.__importDefault(n(61699));t.SearchHistory=e=>{let{history:t=[],onRemove:n,onClose:r,className:c,children:d,...f}=e;return i.default.createElement("div",{className:(0,o.default)(c,u.default.root,0===t.length&&u.default.empty),...f},0===t.length?i.default.createElement(s.SearchResultMessage,null,"No recent searches"):i.default.createElement(i.default.Fragment,null,i.default.createElement(a.Typography,{className:u.default.title,variant:"subtitle2",component:"div"},"Recent"),t.map(((e,t)=>i.default.createElement("div",{key:t,className:u.default.item},i.default.createElement(l.IconHistory,null),i.default.createElement(a.Typography,{variant:"subtitle2",component:"a",href:e.href,className:u.default.itemTitle,dangerouslySetInnerHTML:{__html:e.title},onClick:()=>r&&r()}),i.default.createElement("button",{className:"clean-btn",onClick:()=>n(t)},i.default.createElement(l.IconClose,null)))))))}},72997:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchInput=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=n(89164),s=r.__importDefault(n(9592));t.SearchInput=e=>{let{value:t="",active:n,onChange:r,onClear:u,onFocus:c,onCancel:d,className:f,inputProps:{ref:p,...h}={placeholder:""},containerRef:m,...g}=e;const v=(0,l.useMedia)("(max-width: 996px)"),b=n||t?.length>0;return i.default.createElement("div",{ref:m,className:(0,o.default)(s.default.root,b&&s.default.expanded,f),onKeyDown:e=>{"Escape"===e.code&&t.length>0&&(e.stopPropagation(),u&&u())},...g},i.default.createElement(a.TextField,{className:s.default.textField,value:t,placeholder:b||v?h.placeholder:"",onChange:r,onFocus:e=>{c&&c()},clearButton:!0,icon:i.default.createElement(a.SearchIcon,{color:"primary"}),...h}))}},49067:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultGroup=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(1443));t.SearchResultGroup=e=>{let{className:t,title:n="",children:r,...s}=e;return i.default.createElement("div",{className:(0,o.default)(l.default.root,t),...s},i.default.createElement("div",null,i.default.createElement(a.Typography,{variant:"subtitle2"},n)),i.default.createElement("ul",null,r))}},38594:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(49067),t)},51105:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultItem=void 0;const r=n(70655),a=r.__importDefault(n(39960)),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(7744)),s=r.__importDefault(n(42924)),u=n(95571),c=n(36301),d=r.__importDefault(n(18589)),f={[c.SearchDocumentType.Title]:i.default.createElement(l.default,{className:(0,o.default)(d.default.icon,d.default.fill)}),[c.SearchDocumentType.Heading]:i.default.createElement(s.default,{className:(0,o.default)(d.default.icon,d.default.fill)}),[c.SearchDocumentType.Paragraph]:i.default.createElement(s.default,{className:(0,o.default)(d.default.icon,d.default.fill)})};t.SearchResultItem=e=>{let{type:t,level:n=0,href:r,title:l,content:s,className:c,linkProps:{className:p,...h}={},...m}=e;const g=f[t];return i.default.createElement(a.default,{href:r,className:(0,o.default)(d.default.root,d.default[`level${n}`],p),...h},i.default.createElement(u.SearchResultItemBase,{title:l,content:s,icon:g,...m}))}},13383:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(51105),t)},86704:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultItemBase=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(86620));t.SearchResultItemBase=e=>{let{icon:t,title:n,content:r,className:s,...u}=e;return i.default.createElement("li",{className:(0,o.default)(l.default.root,s),...u},i.default.createElement("span",null,t),i.default.createElement("div",null,n&&i.default.createElement(a.Typography,{variant:"subtitle2",component:"span",dangerouslySetInnerHTML:{__html:n}})))}},95571:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(86704),t)},33493:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultMessage=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(38076));t.SearchResultMessage=e=>{let{className:t,children:n,...r}=e;return i.default.createElement(a.Typography,{className:(0,o.default)(t,l.default.root),variant:"subtitle2",component:"div",...r},i.default.createElement("span",null,n))}},43110:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResults=void 0;const r=n(70655),a=r.__importDefault(n(86010)),o=r.__importStar(n(67294)),i=n(38594),l=n(13383),s=n(33493),u=n(81104),c=r.__importDefault(n(20550));t.SearchResults=e=>{let{results:t,className:n,onNavigate:r,...d}=e;const f=t.length,p=(0,o.useMemo)((()=>(0,u.groupSearchResult)(t)),[t]);return o.default.createElement("div",{className:(0,a.default)(c.default.root,0===f&&c.default.noResults)},0===f&&o.default.createElement(s.SearchResultMessage,null,"No result."),o.default.createElement("div",{className:(0,a.default)(c.default.groups)},p.map(((e,t)=>{let[n,a]=e;return o.default.createElement(o.default.Fragment,{key:t},o.default.createElement(i.SearchResultGroup,{className:c.default.group,title:n},a.map(((e,t)=>o.default.createElement(l.SearchResultItem,{key:t,type:e.type,level:e.level,href:e.href,title:e.title,content:e.content,linkProps:r?{onClick:t=>r(t,e)}:{}})))))}))))}},71044:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useSearch=void 0;const r=n(67294),a=n(36043);t.useSearch=()=>{const{createSearchInstance:e}=window,t=(0,a.useSearchContextPath)(),[n,o]=(0,r.useState)(!1),i=(0,r.useRef)(null);return(0,r.useEffect)((()=>{o(!1),(async()=>{i.current=await e({resultsLimit:50,preferredVersionPath:t[0],searchContextByPaths:t[1]}),await i.current.init(),o(!0)})()}),[t[0],t[1]]),{loaded:n,query:async e=>await i.current.query(e)}}},36043:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useSearchContextPath=void 0;const r=n(80143),a=n(28097),o=()=>window.getProxiedGeneratedData().searchContextByPaths;t.useSearchContextPath=()=>{const e=o(),t=(0,r.useActivePluginAndVersion)();if(!t)return["/",""];const{activePlugin:{pluginData:{path:n}},activeVersion:i}=t;return i?[n!==i.path?(0,a.ensureTrailingSlash)(i.path):"/",e]:["/",""]}},33760:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(44763)),o=r.__importDefault(n(67294)),i=n(7020);t.default=()=>"undefined"==typeof window?o.default.createElement(o.default.Fragment,null):o.default.createElement(a.default,{fallback:()=>o.default.createElement(o.default.Fragment,null)},o.default.createElement(i.SearchBar,null))},36301:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchDocumentType=void 0,function(e){e.Title="title",e.Heading="heading",e.Paragraph="paragraph"}(t.SearchDocumentType||(t.SearchDocumentType={}))},81104:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.groupSearchResult=void 0;const r=n(70655),a=r.__importDefault(n(7739)),o=r.__importDefault(n(57557)),i=n(36301);t.groupSearchResult=e=>Object.entries((0,a.default)(e.map((e=>(e=>{const{type:t,document:n,page:r,highlighted:a,score:o}=e,{url:l,hash:s=""}=n,u=l+s;switch(t){case i.SearchDocumentType.Title:return{type:t,level:0,url:l,hash:s,href:u,score:o,title:a,content:"",category:n.breadcrumb?.[1]??n.title};case i.SearchDocumentType.Heading:{const e=r;return{type:t,level:1,url:l,hash:s,href:u,score:o,title:a,content:"",category:e?.breadcrumb?.[1]??e?.title??""}}case i.SearchDocumentType.Paragraph:{const e=r;return{type:t,level:2,url:l,hash:s,href:u,score:o,title:n.sectionTitle||n.title||"",content:a,category:e?.breadcrumb?.[1]??e?.title??""}}}})(e))),"category")).map((e=>{let[t,n]=e;return[t,n.map((e=>(0,o.default)(e,"category"))).sort(((e,t)=>e.score>t.score?-1:1))]})).sort(((e,t)=>(e[1][0]?.score??0)>(t[1][0]?.score??0)?-1:1)).map((e=>{let[t,n]=e;return[t,Object.entries((0,a.default)(n,"url")).map((e=>{let[t,n]=e,r=[...n].sort(((e,t)=>e.type===i.SearchDocumentType.Title||e.score>t.score?-1:1));const a=r[0]?.type===i.SearchDocumentType.Title;return r=a?r.filter((e=>!(e.type===i.SearchDocumentType.Heading&&""===e.hash))):r,r=r.map(((e,t)=>({...e,level:a?0===t?0:1:0}))),[t,r]})).sort(((e,t)=>(e[1][0]?.score??0)>(t[1][0]?.score??0)?-1:1)).flatMap((e=>{let[t,n]=e;return n}))]}))},16019:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=r.__importDefault(n(72389)),l=n(82818),s=r.__importDefault(n(65787));t.default=function(e){const t=(0,i.default)(),{colorMode:n}=(0,l.useColorMode)(),{sources:r,className:u,alt:c,...d}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.default.createElement(a.default.Fragment,null,f.map((e=>a.default.createElement("img",{key:e,src:r[e],alt:c,className:(0,o.default)(s.default.themedImage,s.default[`themedImage--${e}`],u),...d}))))}},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(67294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},91091:(e,t,n)=>{"use strict";var r=n(67294),a=n(73935),o=n(73727),i=n(70405),l=n(10412);const s=[n(85711),n(32497),n(3310),n(18320),n(11057),n(93878),n(26724)];var u=n(723),c=n(16550),d=n(18790),f=n(85140),p=n(87462),h=n(35742),m=n(52263),g=n(44996),v=n(86668),b=n(10833),y=n(94711),w=n(19727),x=n(43320),k=n(90197);function _(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,m.default)(),n=(0,y.l)();return r.createElement(h.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.default)(),a=function(){const{siteConfig:{url:e}}=(0,m.default)(),{pathname:t}=(0,c.TH)();return e+(0,g.default)(t)}(),o=t?`${n}${t}`:a;return r.createElement(h.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function S(){const{i18n:{currentLocale:e}}=(0,m.default)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(h.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(b.d,{image:n}),r.createElement(E,null),r.createElement(_,null),r.createElement(k.Z,{tag:x.HX,locale:e}),r.createElement(h.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var O=n(98934),D=n(58940);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const N=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),P("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function I(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class A extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.default.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),I(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(N,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const L=A,R="__docusaurus-base-url-issue-banner-container",j="__docusaurus-base-url-issue-banner",M="__docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${R}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${j}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${M}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${M}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function z(){const{siteConfig:{baseUrl:e}}=(0,m.default)();return(0,r.useLayoutEffect)((()=>{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.default.canUseDOM&&r.createElement(h.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:R}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,m.default)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,m.default)(),i=(0,g.default)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(h.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var H=n(44763);function V(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(H.default,null,r.createElement(D.M,null,r.createElement(O.t,null,r.createElement(f.Z,null,r.createElement(U,null),r.createElement(S,null),r.createElement($,null),r.createElement(L,{location:T(t)},e)))))}var q=n(16887);const W=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var G=n(99670);const Z=new Set,Q=new Set,Y=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,X={prefetch(e){if(!(e=>!Y()&&!Q.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,G.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?W(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!Y()&&!Q.has(e))(e)&&(Q.add(e),I(e))},K=Object.freeze(X);if(l.default.canUseDOM){window.docusaurus=K;const e=a.hydrate;I(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(V,null))),document.getElementById("__docusaurus"))}))}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(67294),a=n(36809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"guides/getting-started","docs":[{"id":"guides/getting-started","path":"/","sidebar":"guides"},{"id":"guides/js-waku/configure-discovery","path":"/guides/js-waku/configure-discovery","sidebar":"guides"},{"id":"guides/js-waku/debug-waku-dapp","path":"/guides/js-waku/debug-waku-dapp","sidebar":"guides"},{"id":"guides/js-waku/faq","path":"/guides/js-waku/faq","sidebar":"guides"},{"id":"guides/js-waku/index","path":"/guides/js-waku/","sidebar":"guides"},{"id":"guides/js-waku/light-send-receive","path":"/guides/js-waku/light-send-receive","sidebar":"guides"},{"id":"guides/js-waku/manage-filter","path":"/guides/js-waku/manage-filter","sidebar":"guides"},{"id":"guides/js-waku/message-encryption","path":"/guides/js-waku/message-encryption","sidebar":"guides"},{"id":"guides/js-waku/run-waku-nodejs","path":"/guides/js-waku/run-waku-nodejs","sidebar":"guides"},{"id":"guides/js-waku/store-retrieve-messages","path":"/guides/js-waku/store-retrieve-messages","sidebar":"guides"},{"id":"guides/js-waku/use-waku-create-app","path":"/guides/js-waku/use-waku-create-app","sidebar":"guides"},{"id":"guides/js-waku/use-waku-react","path":"/guides/js-waku/use-waku-react","sidebar":"guides"},{"id":"guides/nwaku/build-source","path":"/guides/nwaku/build-source","sidebar":"guides"},{"id":"guides/nwaku/config-methods","path":"/guides/nwaku/config-methods","sidebar":"guides"},{"id":"guides/nwaku/config-options","path":"/guides/nwaku/config-options","sidebar":"guides"},{"id":"guides/nwaku/configure-discovery","path":"/guides/nwaku/configure-discovery","sidebar":"guides"},{"id":"guides/nwaku/configure-nwaku","path":"/guides/nwaku/configure-nwaku","sidebar":"guides"},{"id":"guides/nwaku/faq","path":"/guides/nwaku/faq","sidebar":"guides"},{"id":"guides/nwaku/find-node-address","path":"/guides/nwaku/find-node-address","sidebar":"guides"},{"id":"guides/nwaku/run-docker","path":"/guides/nwaku/run-docker","sidebar":"guides"},{"id":"guides/nwaku/run-docker-compose","path":"/guides/nwaku/run-docker-compose","sidebar":"guides"},{"id":"guides/nwaku/run-node","path":"/guides/nwaku/run-node","sidebar":"guides"},{"id":"guides/nwaku/upgrade-instructions","path":"/guides/nwaku/upgrade-instructions","sidebar":"guides"},{"id":"learn/concepts/content-topics","path":"/learn/concepts/content-topics","sidebar":"learn"},{"id":"learn/concepts/discv5","path":"/learn/concepts/discv5","sidebar":"learn"},{"id":"learn/concepts/dns-discovery","path":"/learn/concepts/dns-discovery","sidebar":"learn"},{"id":"learn/concepts/network-domains","path":"/learn/concepts/network-domains","sidebar":"learn"},{"id":"learn/concepts/peer-discovery","path":"/learn/concepts/peer-discovery","sidebar":"learn"},{"id":"learn/concepts/peer-exchange","path":"/learn/concepts/peer-exchange","sidebar":"learn"},{"id":"learn/concepts/protocols","path":"/learn/concepts/protocols","sidebar":"learn"},{"id":"learn/concepts/static-peers","path":"/learn/concepts/static-peers","sidebar":"learn"},{"id":"learn/concepts/transports","path":"/learn/concepts/transports","sidebar":"learn"},{"id":"learn/faq","path":"/learn/faq","sidebar":"learn"},{"id":"learn/glossary","path":"/learn/glossary","sidebar":"learn"},{"id":"learn/research","path":"/learn/research","sidebar":"learn"},{"id":"learn/security-features","path":"/learn/security-features","sidebar":"learn"},{"id":"learn/waku-network","path":"/learn/waku-network","sidebar":"learn"},{"id":"learn/waku-vs-libp2p","path":"/learn/waku-vs-libp2p","sidebar":"learn"},{"id":"migrations/js-waku/migration_v0.026_0.027","path":"/migrations/js-waku/migration_v0.026_0.027"},{"id":"privacy-policy","path":"/privacy-policy"},{"id":"research/benchmarks/postgres-adoption","path":"/research/benchmarks/postgres-adoption","sidebar":"research"},{"id":"research/index","path":"/research/","sidebar":"research"},{"id":"research/research-and-studies/capped-bandwidth","path":"/research/research-and-studies/capped-bandwidth","sidebar":"research"},{"id":"research/research-and-studies/incentivisation","path":"/research/research-and-studies/incentivisation","sidebar":"research"},{"id":"research/research-and-studies/maximum-bandwidth","path":"/research/research-and-studies/maximum-bandwidth","sidebar":"research"},{"id":"research/research-and-studies/message-propagation","path":"/research/research-and-studies/message-propagation","sidebar":"research"},{"id":"research/research-and-studies/rln-key-benchmarks","path":"/research/research-and-studies/rln-key-benchmarks","sidebar":"research"},{"id":"rules-of-engagement","path":"/rules-of-engagement"},{"id":"security","path":"/security"},{"id":"terms","path":"/terms"}],"draftIds":[],"sidebars":{"guides":{"link":{"path":"/","label":"guides/getting-started"}},"learn":{"link":{"path":"/learn/waku-network","label":"learn/waku-network"}},"research":{"link":{"path":"/research/","label":"research/index"}}}}],"breadcrumbs":false}}}'),i=JSON.parse('{"defaultLocale":"en-GB","locales":["en-GB"],"path":"i18n","currentLocale":"en-GB","localeConfigs":{"en-GB":{"label":"British English","direction":"ltr","htmlLang":"en-GB","calendar":"gregory","path":"en-GB"}}}');var l=n(57529);const s=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.3"},"logos-docusaurus-search-local":{"type":"package","name":"@acid-info/logos-docusaurus-search-local","version":"1.0.0-alpha.111"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"2.4.1"},"logos-docusaurus-theme":{"type":"package","name":"@acid-info/logos-docusaurus-theme","version":"1.0.0-alpha.143"},"docusaurus-fathom":{"type":"package","name":"@acid-info/docusaurus-fathom","version":"1.0.0-alpha.111"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},44763:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var r=n(67294),a=n(10412),o=n(35742),i=n(18780),l=n(59351);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.default,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.default.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(70405);function o(e){return r.createElement(a.ql,e)}},39960:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(87462),a=n(67294),o=n(73727),i=n(18780),l=n(52263),s=n(13919),u=n(10412);const c=a.createContext({collectLink:()=>{}});var d=n(44996);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:h,isActive:m,"data-noBrokenLinkCheck":g,autoAddBaseUrl:v=!0,...b}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.default)(),{withBaseUrl:x}=(0,d.useBaseUrlUtils)(),k=(0,a.useContext)(c),_=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>_.current));const E=f||p;const S=(0,s.default)(E),C=E?.replace("pathname://","");let T=void 0!==C?(O=C,v&&(e=>e.startsWith("/"))(O)?x(O):O):void 0;var O;T&&S&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const D=(0,a.useRef)(!1),P=n?o.OL:o.rU,N=u.default.canUseIntersectionObserver,I=(0,a.useRef)(),A=()=>{D.current||null==T||(window.docusaurus.preload(T),D.current=!0)};(0,a.useEffect)((()=>(!N&&S&&null!=T&&window.docusaurus.prefetch(T),()=>{N&&I.current&&I.current.disconnect()})),[I,T,N,S]);const L=T?.startsWith("#")??!1,R=!T||!S||L;return R||g||k.collectLink(T),R?a.createElement("a",(0,r.Z)({ref:_,href:T},E&&!S&&{target:"_blank",rel:"noopener noreferrer"},b)):a.createElement(P,(0,r.Z)({},b,{onMouseEnter:A,onTouchStart:A,innerRef:e=>{_.current=e,N&&e&&S&&(I.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(I.current.unobserve(e),I.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),I.current.observe(e))},to:T},n&&{isActive:m,activeClassName:h}))}const p=a.forwardRef(f)},95999:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s,translate:()=>l});var r=n(67294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(57529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},13919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.r(t),n.d(t,{default:()=>a,hasProtocol:()=>r})},28143:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Redirect:()=>r.l_,matchPath:()=>r.LX,useHistory:()=>r.k6,useLocation:()=>r.TH});var r=n(16550)},44996:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l,useBaseUrlUtils:()=>i});var r=n(67294),a=n(52263),o=n(13919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.default)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.hasProtocol)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},52263:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294),a=n(58940);function o(){return(0,r.useContext)(a._)}},72389:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294),a=n(98934);function o(){return(0,r.useContext)(a._)}},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(67294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},80143:(e,t,n)=>{"use strict";n.r(t),n.d(t,{useActiveDocContext:()=>b,useActivePlugin:()=>p,useActivePluginAndVersion:()=>h,useActiveVersion:()=>v,useAllDocsData:()=>d,useDocVersionSuggestions:()=>y,useDocsData:()=>f,useLatestVersion:()=>g,useVersions:()=>m});var r=n(16550),a=n(52263),o=n(29935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.default)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function u(e,t){const n=s(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const c={},d=()=>i("docusaurus-plugin-content-docs")??c,f=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function h(e){void 0===e&&(e={});const t=p(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function m(e){return f(e).versions}function g(e){const t=f(e);return l(t)}function v(e){const t=f(e),{pathname:n}=(0,r.TH)();return s(t,n)}function b(e){const t=f(e),{pathname:n}=(0,r.TH)();return u(t,n)}function y(e){const t=f(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:u(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(74865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(87410),a=n(36809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},88507:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>T});var r=n(67294),a=n(86668),o=n(42489),i=n(87462),l=n(39960),s=n(44996),u=n(13919),c=n(39471);function d(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:d,...f}=t,p=(0,s.default)(n),h=(0,s.default)(a,{forcePrependBaseUrl:!0});return r.createElement(l.default,(0,i.Z)({className:"footer__link-item"},a?{href:d?h:a}:{to:p},f),o,a&&!(0,u.default)(a)&&r.createElement(c.Z,null))}function f(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(d,{item:t}))}function p(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(f,{key:t,item:e})))))}function h(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(p,{key:t,column:e}))))}function m(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function g(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(d,{item:t})}function v(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(g,{item:e}),t.length!==n+1&&r.createElement(m,null))))))}function b(e){let{links:t}=e;return(0,o.a)(t)?r.createElement(h,{columns:t}):r.createElement(v,{links:t})}var y=n(86010),w=n(16019);const x={footerLogoLink:"footerLogoLink_BH7S"};function k(e){let{logo:t}=e;const{withBaseUrl:n}=(0,s.useBaseUrlUtils)(),a={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(w.default,{className:(0,y.default)("footer__logo",t.className),alt:t.alt,sources:a,width:t.width,height:t.height,style:t.style})}function _(e){let{logo:t}=e;return t.href?r.createElement(l.default,{href:t.href,className:x.footerLogoLink,target:t.target},r.createElement(k,{logo:t})):r.createElement(k,{logo:t})}function E(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}var S=n(52601);function C(){const{footer:e}=(0,a.L)();if(!e)return null;const{copyright:t,links:n,logo:o,style:i}=e;return r.createElement(S.Z,{style:i,links:n&&n.length>0&&r.createElement(b,{links:n}),logo:o&&r.createElement(_,{logo:o}),copyright:t&&r.createElement(E,{copyright:t})})}const T=r.memo(C)},55211:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(87462),a=n(67294);function o(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},67080:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(87462),a=n(67294);function o(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}},59351:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>N});var r=n(67294),a=n(86010),o=n(44763),i=n(10833),l=n(55225),s=n(35281),u=n(19727);const c={skipToContent:"skipToContent_fXgn"};function d(){return r.createElement(l.l,{className:c.skipToContent})}var f=n(86668),p=n(59689),h=n(87462),m=n(95999);function g(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...l}=e;return r.createElement("svg",(0,h.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const v={closeButton:"closeButton_CVFx"};function b(e){return r.createElement("button",(0,h.Z)({type:"button","aria-label":(0,m.translate)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.default)("clean-btn close",v.closeButton,e.className)}),r.createElement(g,{width:14,height:14,strokeWidth:3.1}))}const y={content:"content_knG7"};function w(e){const{announcementBar:t}=(0,f.L)(),{content:n}=t;return r.createElement("div",(0,h.Z)({},e,{className:(0,a.default)(y.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const x={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function k(){const{announcementBar:e}=(0,f.L)(),{isActive:t,close:n}=(0,p.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:x.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:x.announcementBarPlaceholder}),r.createElement(w,{className:x.announcementBarContent}),i&&r.createElement(b,{onClick:n,className:x.announcementBarClose}))}var _=n(4818),E=n(10428);function S(){return r.createElement(_.Z,null,r.createElement(E.Z,null))}var C=n(88507),T=n(90988),O=n(69690);function D(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(m.default,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(O.Cw,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(O.aG,{error:t})))))}const P={mainWrapper:"mainWrapper_z2l0"};function N(e){const{children:t,noFooter:n,wrapperClassName:c,title:f,description:p}=e;return(0,u.t)(),r.createElement(T.Z,null,r.createElement(i.d,{title:f,description:p}),r.createElement(d,null),r.createElement(k,null),r.createElement(S,null),r.createElement("div",{id:l.u,className:(0,a.default)(s.k.wrapper.main,P.mainWrapper,c)},r.createElement(o.default,{fallback:e=>r.createElement(D,e)},t)),!n&&r.createElement(C.default,null))}},2101:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),a=n(86668),o=n(92949),i=n(66354);const l={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function s(e){let{className:t}=e;const n=(0,a.L)().navbar.style,s=(0,a.L)().colorMode.disableSwitch,{colorMode:u,setColorMode:c}=(0,o.I)();return s?null:r.createElement(i.Z,{className:t,buttonClassName:"dark"===n?l.darkNavbarColorModeToggle:void 0,value:u,onChange:c})}},29865:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),a=n(93163),o=n(95999),i=n(87462);function l(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,i.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function s(){const{toggle:e,shown:t}=(0,a.e)();return r.createElement("button",{onClick:e,"aria-label":(0,o.translate)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(l,null))}},2203:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(67294),a=n(93163),o=n(69800),i=n(82892),l=n(42977),s=n(87462),u=n(86668),c=n(4710);function d(){const e=(0,a.e)(),t=(0,u.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(c.default,(0,s.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}var f=n(38732);function p(){const e=(0,a.e)();return(0,o.N)(e.shown),e.shouldRender?r.createElement(i.Z,{header:r.createElement(l.Z,null),primaryMenu:r.createElement(d,null),secondaryMenu:r.createElement(f.Z,null)}):null}},4710:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>k});var r=n(67294),a=n(87462),o=n(86010),i=n(51125);function l(e){let{className:t,isDropdownItem:n=!1,...l}=e;const s=r.createElement(i.default,(0,a.Z)({className:(0,o.default)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},l));return n?r.createElement("li",null,s):s}function s(e){let{className:t,isDropdownItem:n,...l}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(i.default,(0,a.Z)({className:(0,o.default)("menu__link",t)},l)))}function u(e){let{mobile:t=!1,position:n,...o}=e;const i=t?s:l;return r.createElement(i,(0,a.Z)({},o,{activeClassName:o.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var c=n(27654),d=n(12197),f=n(33760);const p={searchBox:"searchBox_ZlJk"};function h(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,o.default)(n,p.searchBox)},t)}var m=n(80143),g=n(53438);var v=n(60373),b=n(95999),y=n(16550);const w=e=>e.docs.find((t=>t.id===e.mainDocId));const x={default:u,localeDropdown:d.Z,search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(h,{className:n},r.createElement(f.default,null))},dropdown:c.default,html:function(e){let{value:t,className:n,mobile:a=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,o.default)({navbar__item:!a&&!i,"menu__list-item":a},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:o,...i}=e;const{activeDoc:l}=(0,m.useActiveDocContext)(o),s=(0,g.vY)(t,o);return null===s?null:r.createElement(u,(0,a.Z)({exact:!0},i,{isActive:()=>l?.path===s.path||!!l?.sidebar&&l.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:o,...i}=e;const{activeDoc:l}=(0,m.useActiveDocContext)(o),s=(0,g.oz)(t,o).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(u,(0,a.Z)({exact:!0},i,{isActive:()=>l?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:o,...i}=e;const l=(0,g.lO)(o)[0],s=t??l.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(l).path;return r.createElement(u,(0,a.Z)({},i,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:o,dropdownItemsBefore:i,dropdownItemsAfter:l,...s}=e;const{search:d,hash:f}=(0,y.TH)(),p=(0,m.useActiveDocContext)(n),h=(0,m.useVersions)(n),{savePreferredVersionName:x}=(0,v.J)(n),k=[...i,...h.map((e=>{const t=p.alternateDocVersions[e.name]??w(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>x(e.name)}})),...l],_=(0,g.lO)(n)[0],E=t&&k.length>1?(0,b.translate)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):_.label,S=t&&k.length>1?void 0:w(_).path;return k.length<=1?r.createElement(u,(0,a.Z)({},s,{mobile:t,label:E,to:S,isActive:o?()=>!1:void 0})):r.createElement(c.default,(0,a.Z)({},s,{mobile:t,label:E,to:S,items:k,isActive:o?()=>!1:void 0}))}};function k(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=x[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(35742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>p});var r=n(67294),a=n(72389),o=n(50012),i=n(902),l=n(86668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.default)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>m});var r=n(67294),a=n(10412),o=n(902),i=n(50012),l=n(86668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.default.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{c.set(f(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},65130:(e,t,n)=>{"use strict";n.d(t,{b:()=>i,k:()=>l});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,content:n}=e;const a=function(e){return(0,r.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return r.createElement(o.Provider,{value:a},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocProvider");return e}},14353:(e,t,n)=>{"use strict";n.d(t,{D:()=>l,f:()=>s});var r=n(67294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t}=e;const[n,a]=(0,r.useState)(null),o=(0,r.useMemo)((()=>({expandedItem:n,setExpandedItem:a})),[n]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocSidebarItemsExpandedStateProvider");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>b,L5:()=>g,Oh:()=>y});var r=n(67294),a=n(80143),o=n(29935),i=n(86668),l=n(53438),s=n(902),u=n(50012);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function h(){const e=(0,a.useAllDocsData)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=h();return r.createElement(p.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(m,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=o.m);const t=(0,a.useDocsData)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function y(){const e=(0,a.useAllDocsData)(),[t]=v();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(67294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},93163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>f});var r=n(67294),a=n(13102),o=n(87524),i=n(91980),l=n(86668),s=n(902);const u=r.createContext(void 0);function c(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function d(e){let{children:t}=e;const n=c();return r.createElement(u.Provider,{value:n},t)}function f(){const e=r.useContext(u);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},2730:(e,t,n)=>{"use strict";n.d(t,{a:()=>i});var r=n(67294),a=n(12466),o=n(85936);function i(e){let{threshold:t}=e;const[n,i]=(0,r.useState)(!1),l=(0,r.useRef)(!1),{startScroll:s,cancelScroll:u}=(0,a.Ct)();return(0,a.RF)(((e,n)=>{let{scrollY:r}=e;const a=n?.scrollY;a&&(l.current?l.current=!1:r>=a?(u(),i(!1)):r<t?i(!1):r+window.innerHeight<document.documentElement.scrollHeight&&i(!0))})),(0,o.S)((e=>{e.location.hash&&(l.current=!0,i(!1))})),{shown:n,scrollToTop:()=>s(0)}}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(67294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},69800:(e,t,n)=>{"use strict";n.d(t,{N:()=>a});var r=n(67294);function a(e){void 0===e&&(e=!0),(0,r.useEffect)((()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[e])}},66412:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(92949),a=n(86668);function o(){const{prism:e}=(0,a.L)(),{colorMode:t}=(0,r.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}},96841:(e,t,n)=>{"use strict";n.d(t,{S:()=>s});var r=n(67294),a=n(86668);function o(e){const t=e.getBoundingClientRect();return t.top===t.bottom?o(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const r=e.find((e=>o(e).top>=n));if(r){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(o(r))?r:e[e.indexOf(r)-1]??null}return e[e.length-1]??null}function l(){const e=(0,r.useRef)(0),{navbar:{hideOnScroll:t}}=(0,a.L)();return(0,r.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function s(e){const t=(0,r.useRef)(void 0),n=l();(0,r.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:r,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:l}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(r),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const r=[];for(let a=t;a<=n;a+=1)r.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:o,maxHeadingLevel:l}),u=i(s,{anchorTopOffset:n.current}),c=e.find((e=>u&&u.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===c)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(67294),a=n(10412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.default.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},82818:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Collapsible:()=>C,ErrorBoundaryError:()=>G.aG,ErrorBoundaryTryAgainButton:()=>G.Cw,ErrorCauseBoundary:()=>G.QW,HtmlClassNameProvider:()=>D.FG,NavbarSecondaryMenuFiller:()=>N.Zo,PageMetadata:()=>D.d,ReactContextError:()=>O.i6,SkipToContentFallbackId:()=>W.u,SkipToContentLink:()=>W.l,ThemeClassNames:()=>T.k,composeProviders:()=>O.Qc,createStorageSlot:()=>a.WA,duplicates:()=>U.l,filterDocCardListItems:()=>i.MN,isMultiColumnFooterLinks:()=>z.a,isRegexpStringMatch:()=>$,listStorageKeys:()=>a._f,listTagsByLetters:()=>R,prefersReducedMotion:()=>g.n,processAdmonitionProps:()=>q,translateTagsPageTitle:()=>L,uniq:()=>U.j,useCollapsible:()=>b,useColorMode:()=>P.I,useContextualSearchFilters:()=>o._q,useCurrentSidebarCategory:()=>i.jA,useDocsPreferredVersion:()=>V.J,useEvent:()=>O.zX,useIsomorphicLayoutEffect:()=>O.LI,usePluralForm:()=>p,usePrevious:()=>O.D9,usePrismTheme:()=>H.p,useSearchLinkCreator:()=>B,useSearchQueryString:()=>F,useStorageSlot:()=>a.Nk,useThemeConfig:()=>r.L,useWindowSize:()=>I.i});var r=n(86668),a=n(50012),o=n(43320),i=n(53438),l=n(67294),s=n(52263);const u=["zero","one","two","few","many","other"];function c(e){return u.filter((t=>e.includes(t)))}const d={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function f(){const{i18n:{currentLocale:e}}=(0,s.default)();return(0,l.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),d}}),[e])}function p(){const e=f();return{selectMessage:(t,n)=>function(e,t,n){const r=e.split("|");if(1===r.length)return r[0];r.length>n.pluralForms.length&&console.error(`For locale=${n.locale}, a maximum of ${n.pluralForms.length} plural forms are expected (${n.pluralForms.join(",")}), but the message contains ${r.length}: ${e}`);const a=n.select(t),o=n.pluralForms.indexOf(a);return r[Math.min(o,r.length-1)]}(n,t,e)}}var h=n(87462),m=n(10412),g=n(91442);const v="ease-in-out";function b(e){let{initialState:t}=e;const[n,r]=(0,l.useState)(t??!1),a=(0,l.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const y={display:"none",overflow:"hidden",height:"0px"},w={display:"block",overflow:"visible",height:"auto"};function x(e,t){const n=t?y:w;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function k(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,l.useRef)(!1);(0,l.useEffect)((()=>{const e=t.current;function o(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,g.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??v}`,height:`${t}px`}}function i(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return x(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=y.height,e.style.overflow=y.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function _(e){if(!m.default.canUseDOM)return e?y:w}function E(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:o,className:i,disableSSRStyle:s}=e;const u=(0,l.useRef)(null);return k({collapsibleRef:u,collapsed:n,animation:a}),l.createElement(t,{ref:u,style:s?void 0:_(n),onTransitionEnd:e=>{"height"===e.propertyName&&(x(u.current,n),o?.(n))},className:i},r)}function S(e){let{collapsed:t,...n}=e;const[r,a]=(0,l.useState)(!t),[o,i]=(0,l.useState)(t);return(0,l.useLayoutEffect)((()=>{t||a(!0)}),[t]),(0,l.useLayoutEffect)((()=>{r&&i(t)}),[r,t]),r?l.createElement(E,(0,h.Z)({},n,{collapsed:o})):null}function C(e){let{lazy:t,...n}=e;const r=t?S:E;return l.createElement(r,n)}var T=n(35281),O=n(902),D=n(10833),P=n(92949),N=n(13102),I=n(87524),A=n(95999);const L=()=>(0,A.translate)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});function R(e){const t={};return Object.values(e).forEach((e=>{const n=function(e){return e[0].toUpperCase()}(e.label);t[n]??=[],t[n].push(e)})),Object.entries(t).sort(((e,t)=>{let[n]=e,[r]=t;return n.localeCompare(r)})).map((e=>{let[t,n]=e;return{letter:t,tags:n.sort(((e,t)=>e.label.localeCompare(t.label)))}}))}var j=n(91980);const M="q";function F(){return(0,j.Nc)(M)}function B(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,s.default)(),{algolia:{searchPagePath:n}}=t;return(0,l.useCallback)((t=>`${e}${n}?${M}=${encodeURIComponent(t)}`),[e,n])}var z=n(42489);function $(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var U=n(67392),H=n(66412),V=n(60373);function q(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=l.Children.toArray(e),n=t.find((e=>l.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),r=l.createElement(l.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n?.props.children,rest:r}}(e.children),r=e.title??t;return{...e,...r&&{title:r},children:n}}var W=n(55225),G=n(69690)},91338:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AnnouncementBarProvider:()=>h.pl,BlogPostProvider:()=>d,Collapsible:()=>r.Collapsible,ColorModeProvider:()=>k.S,DEFAULT_SEARCH_TAG:()=>S.HX,DocProvider:()=>l.b,DocSidebarItemsExpandedStateProvider:()=>a.D,DocsPreferredVersionContextProvider:()=>p.L5,DocsSidebarProvider:()=>i.b,DocsVersionProvider:()=>o.q,ErrorBoundaryError:()=>r.ErrorBoundaryError,ErrorBoundaryTryAgainButton:()=>r.ErrorBoundaryTryAgainButton,ErrorCauseBoundary:()=>r.ErrorCauseBoundary,HtmlClassNameProvider:()=>r.HtmlClassNameProvider,NavbarProvider:()=>B,NavbarSecondaryMenuFiller:()=>r.NavbarSecondaryMenuFiller,PageMetadata:()=>r.PageMetadata,PluginHtmlClassNameProvider:()=>j.VC,ReactContextError:()=>r.ReactContextError,ScrollControllerProvider:()=>L.OC,SkipToContentFallbackId:()=>r.SkipToContentFallbackId,SkipToContentLink:()=>r.SkipToContentLink,ThemeClassNames:()=>r.ThemeClassNames,composeProviders:()=>r.composeProviders,containsLineNumbers:()=>E.nt,createStorageSlot:()=>r.createStorageSlot,docVersionSearchTag:()=>S.os,duplicates:()=>r.duplicates,filterDocCardListItems:()=>r.filterDocCardListItems,findFirstCategoryLink:()=>C.Wl,findSidebarCategory:()=>C.em,getPrismCssVariables:()=>E.QC,isActiveSidebarItem:()=>C._F,isDocsPluginEnabled:()=>C.cE,isMultiColumnFooterLinks:()=>r.isMultiColumnFooterLinks,isRegexpStringMatch:()=>r.isRegexpStringMatch,isSamePath:()=>R.Mg,keyboardFocusedClassName:()=>U.h,listStorageKeys:()=>r.listStorageKeys,listTagsByLetters:()=>r.listTagsByLetters,parseCodeBlockTitle:()=>E.bc,parseLanguage:()=>E.Vo,parseLines:()=>E.nZ,prefersReducedMotion:()=>r.prefersReducedMotion,processAdmonitionProps:()=>r.processAdmonitionProps,splitNavbarItems:()=>F,translateTagsPageTitle:()=>r.translateTagsPageTitle,uniq:()=>r.uniq,useAlternatePageUtils:()=>_.l,useAnnouncementBar:()=>h.nT,useBackToTopButton:()=>G.a,useBlogPost:()=>f,useCodeWordWrap:()=>W,useCollapsible:()=>r.useCollapsible,useColorMode:()=>r.useColorMode,useContextualSearchFilters:()=>r.useContextualSearchFilters,useCurrentSidebarCategory:()=>r.useCurrentSidebarCategory,useDoc:()=>l.k,useDocById:()=>C.xz,useDocRouteMetadata:()=>C.hI,useDocSidebarItemsExpandedState:()=>a.f,useDocsPreferredVersion:()=>r.useDocsPreferredVersion,useDocsPreferredVersionByPluginId:()=>p.Oh,useDocsSidebar:()=>i.V,useDocsVersion:()=>o.E,useDocsVersionCandidates:()=>C.lO,useEvent:()=>r.useEvent,useFilteredAndTreeifiedTOC:()=>A.b,useHideableNavbar:()=>$,useHistoryPopHandler:()=>I.Rb,useHistorySelector:()=>I.xL,useHomePageRoute:()=>R.Ns,useIsomorphicLayoutEffect:()=>r.useIsomorphicLayoutEffect,useKeyboardNavigation:()=>U.t,useLayoutDoc:()=>C.vY,useLayoutDocsSidebar:()=>C.oz,useLocalPathname:()=>N,useLocationChange:()=>O.S,useLockBodyScroll:()=>H.N,useNavbarMobileSidebar:()=>g.e,useNavbarSecondaryMenu:()=>x,usePluralForm:()=>r.usePluralForm,usePrevious:()=>r.usePrevious,usePrismTheme:()=>r.usePrismTheme,useQueryStringValue:()=>I._X,useScrollController:()=>L.sG,useScrollPosition:()=>L.RF,useScrollPositionBlocker:()=>L.o5,useSearchLinkCreator:()=>r.useSearchLinkCreator,useSearchQueryString:()=>r.useSearchQueryString,useSidebarBreadcrumbs:()=>C.s1,useSmoothScrollTo:()=>L.Ct,useStorageSlot:()=>r.useStorageSlot,useTOCHighlight:()=>z.S,useTabs:()=>m.Y,useThemeConfig:()=>r.useThemeConfig,useTitleFormatter:()=>T.p,useTreeifiedTOC:()=>A.a,useWindowSize:()=>r.useWindowSize});var r=n(82818),a=n(14353),o=n(74477),i=n(1116),l=n(65130),s=n(67294),u=n(902);const c=s.createContext(null);function d(e){let{children:t,content:n,isBlogPostPage:r=!1}=e;const a=function(e){let{content:t,isBlogPostPage:n}=e;return(0,s.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:n})),[t,n])}({content:n,isBlogPostPage:r});return s.createElement(c.Provider,{value:a},t)}function f(){const e=(0,s.useContext)(c);if(null===e)throw new u.i6("BlogPostProvider");return e}var p=n(60373),h=n(59689),m=n(70989),g=n(93163),v=n(13102);const b=s.createContext(null);function y(e){let{children:t}=e;const n=function(){const e=(0,g.e)(),t=(0,v.HY)(),[n,r]=(0,s.useState)(!1),a=null!==t.component,o=(0,u.D9)(a);return(0,s.useEffect)((()=>{a&&!o&&r(!0)}),[a,o]),(0,s.useEffect)((()=>{a?e.shown||r(!0):r(!1)}),[e.shown,a]),(0,s.useMemo)((()=>[n,r]),[n])}();return s.createElement(b.Provider,{value:n},t)}function w(e){if(e.component){const t=e.component;return s.createElement(t,e.props)}}function x(){const e=(0,s.useContext)(b);if(!e)throw new u.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,r=(0,s.useCallback)((()=>n(!1)),[n]),a=(0,v.HY)();return(0,s.useMemo)((()=>({shown:t,hide:r,content:w(a)})),[r,a,t])}var k=n(92949),_=n(94711),E=n(37016),S=n(43320),C=n(53438),T=n(82128),O=n(85936),D=n(16550),P=n(52263);function N(){const{siteConfig:{baseUrl:e}}=(0,P.default)(),{pathname:t}=(0,D.TH)();return t.replace(e,"/")}var I=n(91980),A=n(39665),L=n(12466),R=n(48596),j=n(10833);const M="right";function F(e){function t(e){return"left"===(e.position??M)}return[e.filter(t),e.filter((e=>!t(e)))]}function B(e){let{children:t}=e;return s.createElement(v.n2,null,s.createElement(g.M,null,s.createElement(y,null,t)))}var z=n(96841);function $(e){const[t,n]=(0,s.useState)(e),r=(0,s.useRef)(!1),a=(0,s.useRef)(0),o=(0,s.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,L.RF)(((t,o)=>{let{scrollY:i}=t;if(!e)return;if(i<a.current)return void n(!0);if(r.current)return void(r.current=!1);const l=o?.scrollY,s=document.documentElement.scrollHeight-a.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,O.S)((t=>{if(!e)return;const a=t.location.hash;if(a?document.getElementById(a.substring(1)):void 0)return r.current=!0,void n(!1);n(!0)})),{navbarRef:o,isNavbarVisible:t}}var U=n(19727),H=n(69800);const V={attributes:!0,characterData:!0,childList:!0,subtree:!0};function q(e,t){const[n,r]=(0,s.useState)(),a=(0,s.useCallback)((()=>{r(e.current?.closest("[role=tabpanel][hidden]"))}),[e,r]);(0,s.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=V);const r=(0,u.zX)(t),a=(0,u.Ql)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(r);return e&&t.observe(e,a),()=>t.disconnect()}),[e,r,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}function W(){const[e,t]=(0,s.useState)(!1),[n,r]=(0,s.useState)(!1),a=(0,s.useRef)(null),o=(0,s.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),i=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return q(a,i),(0,s.useEffect)((()=>{i()}),[e,i]),(0,s.useEffect)((()=>(window.addEventListener("resize",i,{passive:!0}),()=>{window.removeEventListener("resize",i)})),[i]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:o}}var G=n(2730)},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},91442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},37016:(e,t,n)=>{"use strict";n.d(t,{QC:()=>p,Vo:()=>d,bc:()=>u,nZ:()=>f,nt:()=>c});var r=n(87594),a=n.n(r);const o=/title=(?<quote>["'])(?<title>.*?)\1/,i=/\{(?<range>[\d,-]+)\}/,l={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function s(e,t){const n=e.map((e=>{const{start:n,end:r}=l[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${r})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function u(e){return e?.match(o)?.groups.title??""}function c(e){return Boolean(e?.includes("showLineNumbers"))}function d(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}function f(e,t){let n=e.replace(/\n$/,"");const{language:r,magicComments:o,metastring:u}=t;if(u&&i.test(u)){const e=u.match(i).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${u}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,r=a()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(r),code:n}}if(void 0===r)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return s(["js","jsBlock"],t);case"jsx":case"tsx":return s(["js","jsBlock","jsx"],t);case"html":return s(["js","jsBlock","html"],t);case"python":case"py":case"bash":return s(["bash"],t);case"markdown":case"md":return s(["html","jsx","bash"],t);default:return s(Object.keys(l),t)}}(r,o),d=n.split("\n"),f=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),p=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),h=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let a=0;a<d.length;){const e=d[a].match(c);if(!e){a+=1;continue}const t=e.slice(1).find((e=>void 0!==e));p[t]?f[p[t]].range+=`${a},`:h[t]?f[h[t]].start=a:m[t]&&(f[m[t]].range+=`${f[m[t]].start}-${a-1},`),d.splice(a,1)}n=d.join("\n");const g={};return Object.entries(f).forEach((e=>{let[t,{range:n}]=e;a()(n).forEach((e=>{g[e]??=[],g[e].push(t)}))})),{lineClassNames:g,code:n}}function p(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[r,a]=e;const o=t[r];o&&"string"==typeof a&&(n[o]=a)})),n}},53438:(e,t,n)=>{"use strict";n.d(t,{MN:()=>C,Wl:()=>m,_F:()=>y,cE:()=>f,em:()=>h,hI:()=>S,jA:()=>g,lO:()=>k,oz:()=>_,s1:()=>x,vY:()=>E,xz:()=>p});var r=n(67294),a=n(16550),o=n(18790),i=n(80143),l=n(60373),s=n(74477),u=n(1116),c=n(67392),d=n(48596);const f=!!i.useAllDocsData;function p(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function h(e,t){for(const n of e)if("category"===n.type){if(t(n))return n;const e=h(n.items,t);if(e)return e}}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function g(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=w({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const v=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>y(e,t)));function y(e,t){return"link"===e.type?v(e.href,t):"category"===e.type&&(v(e.href,t)||b(e.items,t))}function w(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function x(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.useActivePlugin)()?.pluginData.breadcrumbs;return!1!==n&&e?w({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.useActiveDocContext)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.useLatestVersion)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function _(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function S(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}function C(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},69690:(e,t,n)=>{"use strict";n.d(t,{aG:()=>u,Cw:()=>s,QW:()=>c});var r=n(87462),a=n(67294),o=n(95999),i=n(18780);const l={errorBoundaryError:"errorBoundaryError_a6uf"};function s(e){return a.createElement("button",(0,r.Z)({type:"button"},e),a.createElement(o.default,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return a.createElement("p",{className:l.errorBoundaryError},n)}class c extends a.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},42489:(e,t,n)=>{"use strict";function r(e){return"title"in e[0]}n.d(t,{a:()=>r})},82128:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(52263);function a(e){const{siteConfig:t}=(0,r.default)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},91980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>c,Rb:()=>l,_X:()=>u,xL:()=>s});var r=n(67294),a=n(16550),o=n(61688),i=n(902);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}function u(e){return s((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function c(e){const t=u(e)??"",n=function(){const e=(0,a.k6)();return(0,r.useCallback)(((t,n,r)=>{const a=new URLSearchParams(e.location.search);n?a.set(t,n):a.delete(t),(r?.push?e.push:e.replace)({search:a.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},67392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},10833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(67294),a=n(86010),o=n(35742),i=n(30226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(44996),u=n(82128);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=(0,u.p)(t),{withBaseUrl:d}=(0,s.useBaseUrlUtils)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.default)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.default)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,LI:()=>a,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(67294);const a=n(10412).default.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(67294),a=n(723),o=n(52263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.default)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d,o5:()=>f,sG:()=>u});var r=n(67294),a=n(10412),o=n(72389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.default.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=u(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function p(){const e=(0,r.useRef)(null),t=(0,o.default)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>l});var r=n(80143),a=n(52263),o=n(60373);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,a.default)(),t=(0,r.useAllDocsData)(),n=(0,r.useActivePluginAndVersion)(),s=(0,o.Oh)();const u=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,a=s[e],o=t[e].versions.find((e=>e.isLast));return l(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:u}}},55225:(e,t,n)=>{"use strict";n.d(t,{l:()=>f,u:()=>s});var r=n(87462),a=n(67294),o=n(16550),i=n(95999),l=n(85936);const s="__docusaurus_skipToContent_fallback";function u(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function c(){const e=(0,a.useRef)(null),{action:t}=(0,o.k6)(),n=(0,a.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(s);t&&u(t)}),[]);return(0,l.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&u(e.current)})),{containerRef:e,onClick:n}}const d=(0,i.translate)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function f(e){const t=e.children??d,{containerRef:n,onClick:o}=c();return a.createElement("div",{ref:n,role:"region","aria-label":d},a.createElement("a",(0,r.Z)({},e,{href:`#${s}`,onClick:o}),t))}},50012:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>c,_f:()=>f});var r=n(67294),a=n(61688);const o="localStorage";function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=l(t?.persistence);return null===n?u:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}function f(e){void 0===e&&(e=o);const t=l(e);if(!t)return[];const n=[];for(let r=0;r<t.length;r+=1){const e=t.key(r);null!==e&&n.push(e)}return n}},70989:(e,t,n)=>{"use strict";n.d(t,{Y:()=>f});var r=n(67294),a=n(16550),o=n(91980),i=n(67392),l=n(50012);function s(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function u(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??s(n);return function(e){const t=(0,i.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function c(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function d(e){let{queryString:t=!1,groupId:n}=e;const i=(0,a.k6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(i.location.search);t.set(l,e),i.replace({...i.location,search:t.toString()})}),[l,i])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,o=u(e),[i,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!c({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:o}))),[f,p]=d({queryString:n,groupId:a}),[h,m]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,l.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&o.set(e)}),[n,o])]}({groupId:a}),g=(()=>{const e=f??h;return c({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{g&&s(g)}),[g]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!c({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);s(e),p(e),m(e)}),[p,m,o]),tabValues:o}}},39665:(e,t,n)=>{"use strict";n.d(t,{a:()=>o,b:()=>l});var r=n(67294);function a(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const r=n.slice(2,e.level);e.parentIndex=Math.max(...r),n[e.level]=t}));const r=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):r.push(a)})),r}function o(e){return(0,r.useMemo)((()=>a(e)),[e])}function i(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:r}=e;return t.flatMap((e=>{const t=i({toc:e.children,minHeadingLevel:n,maxHeadingLevel:r});return function(e){return e.level>=n&&e.level<=r}(e)?[{...e,children:t}]:t}))}function l(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,r.useMemo)((()=>i({toc:a(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(52263),a=n(16550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.default)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(67294),a=n(16550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){return(0,r.default)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},54143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},18780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(54143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},90022:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fetchIndexes:()=>l,legacyFetchIndexes:()=>s});var r=n(31336),a=n.n(r),o=n(61029);const i=new Map;function l(e,t){const n=`${e}${t}`;let r=i.get(n);return r||(r=s(e,t),i.set(n,r)),r}async function s(e,t){{const n=`${e}${o.searchIndexUrl.replace("{dir}",t?`-${t.replace(/\//g,"-")}`:"")}`;if(new URL(n,location.origin).origin!==location.origin)throw new Error("Unexpected version url");const r=await(await fetch(n)).json(),i=r.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:a().Index.load(r)}})),l=r.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:i,zhDictionary:Array.from(l)}}}},98202:(e,t,n)=>{"use strict";n.r(t),n.d(t,{SearchSourceFactory:()=>s});var r=n(31336),a=n.n(r);var o=n(61029);function i(e){return l(e).concat(l(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function l(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:a().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?a().Query.wildcard.TRAILING:a().Query.wildcard.NONE})))})))}function s(e,t,n){return function(r,l){const s=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return a()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,o.language);if(0===s.length)return void l([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,a){if(0===r.length)return void n.push(a);const o=r[0];if(/\p{Unified_Ideograph}/u.test(o)){const n=function(e,t){const n=[];return function e(r,a){let o=0,i=!1;for(const l of t)if(r.substr(0,l.length)===l){const t={missed:a.missed,term:a.term.concat({value:l})};r.length>l.length?e(r.substr(l.length),t):n.push(t),i=!0}else for(let t=l.length-1;t>o;t-=1){const s=l.substr(0,t);if(r.substr(0,t)===s){o=t;const l={missed:a.missed,term:a.term.concat({value:s,trailing:!0})};r.length>t?e(r.substr(t),l):n.push(l),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:a.missed+1,term:a.term}):a.term.length>0&&n.push(a))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(o,t);for(const t of n){const n=a.concat(...t);e(r.slice(1),n)}}else{const t=a.concat({value:o});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:a().Query.presence.REQUIRED,wildcard:a().Query.wildcard.LEADING|a().Query.wildcard.TRAILING})))}];for(const a of n)a[a.length-1].maybeTyping=!0;const r=[];for(const i of o.language)if("en"===i)o.removeDefaultStopWordFilter||r.unshift(a().stopWordFilter);else{const e=a()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let l;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);l=[];const t=[];for(const r of n){const n=e(r);l.push(n),n.length<r.length&&n.length>0&&t.push(n)}n.push(...t)}else l=n.slice();const s=[];for(const a of l)if(a.length>2)for(let e=a.length-1;e>=0;e-=1)s.push(a.slice(0,e).concat(a.slice(e+1)));return i(n).concat(i(s))}(s,t),c=[];e:for(const{term:t,tokens:a}of u)for(const{documents:r,index:o,type:i}of e)if(c.push(...o.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!c.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-c.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:a,score:t.score}}))),c.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,a=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(c),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n<e.length-1&&e[n+1].page===t.page?t.isInterOfTree=!0:t.isLastOfTree=!0)}))}(c),l(c)}}},91073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.r(t),n.d(t,{getStemmedPositions:()=>r})},67133:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function a(e,t,n){const o=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&o.push(a(e.substr(0,n),t)),o.push(`<mark>${r(e.substr(n,i.length))}</mark>`);const l=n+i.length;l<e.length&&o.push(a(e.substr(l),t));break}}return 0===o.length?n?`<mark>${r(e)}</mark>`:r(e):o.join("")}n.r(t),n.d(t,{highlightStemmed:()=>s,splitIntoChunks:()=>u});const o=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substring(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substring(n)}return t}var l=n(61029);function s(e,t,n,r){void 0===r&&(r=l.searchResultContextMaxLength);const{chunkIndex:a,chunks:o}=u(e,t,n),i=o.slice(0,a),s=o[a],c=[s.html],d=o.slice(a+1);let f=s.textLength,p=0,h=0,m=!1,g=!1;for(;f<r;)if((p<=h||0===d.length)&&i.length>0){const e=i.pop();f+e.textLength<=r?(c.unshift(e.html),p+=e.textLength,f+=e.textLength):(m=!0,i.length=0)}else{if(!(d.length>0))break;{const e=d.shift();f+e.textLength<=r?(c.push(e.html),h+=e.textLength,f+=e.textLength):(g=!0,d.length=0)}}return(m||i.length>0)&&c.unshift("\u2026"),(g||d.length>0)&&c.push("\u2026"),c.join("")}function u(e,t,n){const o=[];let l=0,s=0,u=-1;for(;l<t.length;){const[c,d]=t[l];if(l+=1,!(c<s)){if(c>s){const t=i(e.substring(s,c)).map((e=>({html:r(e),textLength:e.length})));for(const e of t)o.push(e)}-1===u&&(u=o.length),s=c+d,o.push({html:a(e.substring(c,s),n,!0),textLength:d})}}if(s<e.length){const t=i(e.substring(s)).map((e=>({html:r(e),textLength:e.length})));for(const e of t)o.push(e)}return{chunkIndex:u,chunks:o}}},61029:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Mark:()=>i,docsPluginIdForPreferredVersion:()=>h,explicitSearchResultPath:()=>c,hideSearchBarWithNoSearchContext:()=>v,indexDocs:()=>m,language:()=>r,removeDefaultStemmer:()=>o,removeDefaultStopWordFilter:()=>a,searchBarPosition:()=>p,searchBarShortcut:()=>d,searchBarShortcutHint:()=>f,searchContextByPaths:()=>g,searchIndexUrl:()=>l,searchResultContextMaxLength:()=>u,searchResultLimits:()=>s});n(31336);const r=["en"],a=!1,o=!1,i=null,l="search-index{dir}.json?_=9124b346",s=8,u=50,c=!1,d=!0,f=!0,p="right",h=void 0,m=!0,g=null,v=!1},86010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}function a(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}n.r(t),n.d(t,{clsx:()=>a,default:()=>o});const o=a},20640:(e,t,n)=>{"use strict";var r=n(11742),a={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,o,i,l,s,u,c=!1;t||(t={}),n=t.debug||!1;try{if(i=r(),l=document.createRange(),s=document.getSelection(),(u=document.createElement("span")).textContent=e,u.ariaHidden="true",u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),void 0===r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=a[t.format]||a.default;window.clipboardData.setData(o,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(u),l.selectNodeContents(u),s.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");c=!0}catch(d){n&&console.error("unable to copy using execCommand: ",d),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),c=!0}catch(d){n&&console.error("unable to copy using clipboardData: ",d),n&&console.error("falling back to prompt"),o=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(o,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(l):s.removeAllRanges()),u&&document.body.removeChild(u),i()}return c}},38252:e=>{"use strict";e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,a,o;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(a=r;0!=a--;)if(!e(t[a],n[a]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(o=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(a=r;0!=a--;)if(!Object.prototype.hasOwnProperty.call(n,o[a]))return!1;for(a=r;0!=a--;){var i=o[a];if(("_owner"!==i||!t.$$typeof)&&!e(t[i],n[i]))return!1}return!0}return t!=t&&n!=n}},99376:(e,t)=>{var n=Object.keys;t.D=function(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;for(var r=n(e),a=r.length,o=0;o<a;o++)if(!(r[o]in t))return!1;for(o=0;o<a;o++)if(e[r[o]]!==t[r[o]])return!1;return a===n(t).length}},42358:(e,t,n)=>{"use strict";n.d(t,{lX:()=>_,q_:()=>D,ob:()=>m,PP:()=>N,Ep:()=>h,Hp:()=>g});var r=n(87462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const s=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=l(t),a=l(n);return r!==t||a!==n?e(r,a):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var u=n(38776);function c(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function f(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function m(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&s(e.state,t.state)}function v(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var b=!("undefined"==typeof window||!window.document||!window.document.createElement);function y(e,t){t(window.confirm(e))}var w="popstate",x="hashchange";function k(){try{return window.history.state||{}}catch(e){return{}}}function _(e){void 0===e&&(e={}),b||(0,u.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,l=i.forceRefresh,s=void 0!==l&&l,d=i.getUserConfirmation,g=void 0===d?y:d,_=i.keyLength,E=void 0===_?6:_,S=e.basename?p(c(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return S&&(o=f(o,S)),m(o,r,n)}function T(){return Math.random().toString(36).substr(2,E)}var O=v();function D(e){(0,r.Z)($,e),$.length=n.length,O.notifyListeners($.location,$.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||A(C(e.state))}function N(){A(C(k()))}var I=!1;function A(e){if(I)I=!1,D();else{O.confirmTransitionTo(e,"POP",g,(function(t){t?D({action:"POP",location:e}):function(e){var t=$.location,n=R.indexOf(t.key);-1===n&&(n=0);var r=R.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(I=!0,M(a))}(e)}))}}var L=C(k()),R=[L.key];function j(e){return S+h(e)}function M(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(w,P),o&&window.addEventListener(x,N)):0===F&&(window.removeEventListener(w,P),o&&window.removeEventListener(x,N))}var z=!1;var $={length:n.length,action:"POP",location:L,createHref:j,push:function(e,t){var r="PUSH",o=m(e,t,T(),$.location);O.confirmTransitionTo(o,r,g,(function(e){if(e){var t=j(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),s)window.location.href=t;else{var u=R.indexOf($.location.key),c=R.slice(0,u+1);c.push(o.key),R=c,D({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=m(e,t,T(),$.location);O.confirmTransitionTo(o,r,g,(function(e){if(e){var t=j(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),s)window.location.replace(t);else{var u=R.indexOf($.location.key);-1!==u&&(R[u]=o.key),D({action:r,location:o})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=O.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=O.appendListener(e);return B(1),function(){B(-1),t()}}};return $}var E="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+d(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:d,decodePath:c},slash:{encodePath:c,decodePath:c}};function C(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function T(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function O(e){window.location.replace(C(window.location.href)+"#"+e)}function D(e){void 0===e&&(e={}),b||(0,u.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?y:a,i=n.hashType,l=void 0===i?"slash":i,s=e.basename?p(c(e.basename)):"",d=S[l],g=d.encodePath,w=d.decodePath;function x(){var e=w(T());return s&&(e=f(e,s)),m(e)}var k=v();function _(e){(0,r.Z)(z,e),z.length=t.length,k.notifyListeners(z.location,z.action)}var D=!1,P=null;function N(){var e,t,n=T(),r=g(n);if(n!==r)O(r);else{var a=x(),i=z.location;if(!D&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(P===h(a))return;P=null,function(e){if(D)D=!1,_();else{var t="POP";k.confirmTransitionTo(e,t,o,(function(n){n?_({action:t,location:e}):function(e){var t=z.location,n=R.lastIndexOf(h(t));-1===n&&(n=0);var r=R.lastIndexOf(h(e));-1===r&&(r=0);var a=n-r;a&&(D=!0,j(a))}(e)}))}}(a)}}var I=T(),A=g(I);I!==A&&O(A);var L=x(),R=[h(L)];function j(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(E,N):0===M&&window.removeEventListener(E,N)}var B=!1;var z={length:t.length,action:"POP",location:L,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=C(window.location.href)),n+"#"+g(s+h(e))},push:function(e,t){var n="PUSH",r=m(e,void 0,void 0,z.location);k.confirmTransitionTo(r,n,o,(function(e){if(e){var t=h(r),a=g(s+t);if(T()!==a){P=t,function(e){window.location.hash=e}(a);var o=R.lastIndexOf(h(z.location)),i=R.slice(0,o+1);i.push(t),R=i,_({action:n,location:r})}else _()}}))},replace:function(e,t){var n="REPLACE",r=m(e,void 0,void 0,z.location);k.confirmTransitionTo(r,n,o,(function(e){if(e){var t=h(r),a=g(s+t);T()!==a&&(P=t,O(a));var o=R.indexOf(h(z.location));-1!==o&&(R[o]=t),_({action:n,location:r})}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=k.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=k.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function P(e,t,n){return Math.min(Math.max(e,t),n)}function N(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=v();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function f(){return Math.random().toString(36).substr(2,u)}var p=P(l,0,o.length-1),g=o.map((function(e){return m(e,void 0,"string"==typeof e?f():e.key||f())})),b=h;function y(e){var t=P(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:g.length,action:"POP",location:g[p],index:p,entries:g,createHref:b,push:function(e,t){var r="PUSH",a=m(e,t,f(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=m(e,t,f(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(59864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=p(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g<i.length;++g){var v=i[g];if(!(o[v]||r&&r[v]||m&&m[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},41143:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},36808:(e,t,n)=>{var r,a;!function(o){if(void 0===(a="function"==typeof(r=o)?r.call(t,n,t,e):r)||(e.exports=a),!0,e.exports=o(),!!0){var i=window.Cookies,l=window.Cookies=o();l.noConflict=function(){return window.Cookies=i,l}}}((function(){function e(){for(var e=0,t={};e<arguments.length;e++){var n=arguments[e];for(var r in n)t[r]=n[r]}return t}function t(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function n(r){function a(){}function o(t,n,o){if("undefined"!=typeof document){"number"==typeof(o=e({path:"/"},a.defaults,o)).expires&&(o.expires=new Date(1*new Date+864e5*o.expires)),o.expires=o.expires?o.expires.toUTCString():"";try{var i=JSON.stringify(n);/^[\{\[]/.test(i)&&(n=i)}catch(u){}n=r.write?r.write(n,t):encodeURIComponent(String(n)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),t=encodeURIComponent(String(t)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var l="";for(var s in o)o[s]&&(l+="; "+s,!0!==o[s]&&(l+="="+o[s].split(";")[0]));return document.cookie=t+"="+n+l}}function i(e,n){if("undefined"!=typeof document){for(var a={},o=document.cookie?document.cookie.split("; "):[],i=0;i<o.length;i++){var l=o[i].split("="),s=l.slice(1).join("=");n||'"'!==s.charAt(0)||(s=s.slice(1,-1));try{var u=t(l[0]);if(s=(r.read||r)(s,u)||t(s),n)try{s=JSON.parse(s)}catch(c){}if(a[u]=s,e===u)break}catch(c){}}return e?a[e]:a}}return a.set=o,a.get=function(e){return i(e,!1)},a.getJSON=function(e){return i(e,!0)},a.remove=function(t,n){o(t,"",e(n,{expires:-1}))},a.defaults={},a.withConverter=n,a}((function(){}))}))},18552:(e,t,n)=>{var r=n(10852)(n(55639),"DataView");e.exports=r},1989:(e,t,n)=>{var r=n(51789),a=n(80401),o=n(57667),i=n(21327),l=n(81866);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},38407:(e,t,n)=>{var r=n(27040),a=n(14125),o=n(82117),i=n(67518),l=n(54705);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},57071:(e,t,n)=>{var r=n(10852)(n(55639),"Map");e.exports=r},83369:(e,t,n)=>{var r=n(24785),a=n(11285),o=n(96e3),i=n(49916),l=n(95265);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},53818:(e,t,n)=>{var r=n(10852)(n(55639),"Promise");e.exports=r},58525:(e,t,n)=>{var r=n(10852)(n(55639),"Set");e.exports=r},88668:(e,t,n)=>{var r=n(83369),a=n(90619),o=n(72385);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}i.prototype.add=i.prototype.push=a,i.prototype.has=o,e.exports=i},46384:(e,t,n)=>{var r=n(38407),a=n(37465),o=n(63779),i=n(67599),l=n(44758),s=n(34309);function u(e){var t=this.__data__=new r(e);this.size=t.size}u.prototype.clear=a,u.prototype.delete=o,u.prototype.get=i,u.prototype.has=l,u.prototype.set=s,e.exports=u},62705:(e,t,n)=>{var r=n(55639).Symbol;e.exports=r},11149:(e,t,n)=>{var r=n(55639).Uint8Array;e.exports=r},70577:(e,t,n)=>{var r=n(10852)(n(55639),"WeakMap");e.exports=r},96874:e=>{e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},44174:e=>{e.exports=function(e,t,n,r){for(var a=-1,o=null==e?0:e.length;++a<o;){var i=e[a];t(r,i,n(i),e)}return r}},77412:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},34963:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=0,o=[];++n<r;){var i=e[n];t(i,n,e)&&(o[a++]=i)}return o}},14636:(e,t,n)=>{var r=n(22545),a=n(35694),o=n(1469),i=n(44144),l=n(65776),s=n(36719),u=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),c=!n&&a(e),d=!n&&!c&&i(e),f=!n&&!c&&!d&&s(e),p=n||c||d||f,h=p?r(e.length,String):[],m=h.length;for(var g in e)!t&&!u.call(e,g)||p&&("length"==g||d&&("offset"==g||"parent"==g)||f&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||l(g,m))||h.push(g);return h}},29932:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n<r;)a[n]=t(e[n],n,e);return a}},62488:e=>{e.exports=function(e,t){for(var n=-1,r=t.length,a=e.length;++n<r;)e[a+n]=t[n];return e}},82908:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},34865:(e,t,n)=>{var r=n(89465),a=n(77813),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];o.call(e,t)&&a(i,n)&&(void 0!==n||t in e)||r(e,t,n)}},18470:(e,t,n)=>{var r=n(77813);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},81119:(e,t,n)=>{var r=n(89881);e.exports=function(e,t,n,a){return r(e,(function(e,r,o){t(a,e,n(e),o)})),a}},44037:(e,t,n)=>{var r=n(98363),a=n(3674);e.exports=function(e,t){return e&&r(t,a(t),e)}},63886:(e,t,n)=>{var r=n(98363),a=n(81704);e.exports=function(e,t){return e&&r(t,a(t),e)}},89465:(e,t,n)=>{var r=n(38777);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},85990:(e,t,n)=>{var r=n(46384),a=n(77412),o=n(34865),i=n(44037),l=n(63886),s=n(64626),u=n(278),c=n(18805),d=n(1911),f=n(58234),p=n(46904),h=n(64160),m=n(43824),g=n(29148),v=n(38517),b=n(1469),y=n(44144),w=n(56688),x=n(13218),k=n(72928),_=n(3674),E=n(81704),S="[object Arguments]",C="[object Function]",T="[object Object]",O={};O[S]=O["[object Array]"]=O["[object ArrayBuffer]"]=O["[object DataView]"]=O["[object Boolean]"]=O["[object Date]"]=O["[object Float32Array]"]=O["[object Float64Array]"]=O["[object Int8Array]"]=O["[object Int16Array]"]=O["[object Int32Array]"]=O["[object Map]"]=O["[object Number]"]=O[T]=O["[object RegExp]"]=O["[object Set]"]=O["[object String]"]=O["[object Symbol]"]=O["[object Uint8Array]"]=O["[object Uint8ClampedArray]"]=O["[object Uint16Array]"]=O["[object Uint32Array]"]=!0,O["[object Error]"]=O[C]=O["[object WeakMap]"]=!1,e.exports=function e(t,n,D,P,N,I){var A,L=1&n,R=2&n,j=4&n;if(D&&(A=N?D(t,P,N,I):D(t)),void 0!==A)return A;if(!x(t))return t;var M=b(t);if(M){if(A=m(t),!L)return u(t,A)}else{var F=h(t),B=F==C||"[object GeneratorFunction]"==F;if(y(t))return s(t,L);if(F==T||F==S||B&&!N){if(A=R||B?{}:v(t),!L)return R?d(t,l(A,t)):c(t,i(A,t))}else{if(!O[F])return N?t:{};A=g(t,F,L)}}I||(I=new r);var z=I.get(t);if(z)return z;I.set(t,A),k(t)?t.forEach((function(r){A.add(e(r,n,D,r,t,I))})):w(t)&&t.forEach((function(r,a){A.set(a,e(r,n,D,a,t,I))}));var $=M?void 0:(j?R?p:f:R?E:_)(t);return a($||t,(function(r,a){$&&(r=t[a=r]),o(A,a,e(r,n,D,a,t,I))})),A}},3118:(e,t,n)=>{var r=n(13218),a=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(a)return a(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},89881:(e,t,n)=>{var r=n(47816),a=n(99291)(r);e.exports=a},21078:(e,t,n)=>{var r=n(62488),a=n(37285);e.exports=function e(t,n,o,i,l){var s=-1,u=t.length;for(o||(o=a),l||(l=[]);++s<u;){var c=t[s];n>0&&o(c)?n>1?e(c,n-1,o,i,l):r(l,c):i||(l[l.length]=c)}return l}},28483:(e,t,n)=>{var r=n(25063)();e.exports=r},47816:(e,t,n)=>{var r=n(28483),a=n(3674);e.exports=function(e,t){return e&&r(e,t,a)}},97786:(e,t,n)=>{var r=n(71811),a=n(40327);e.exports=function(e,t){for(var n=0,o=(t=r(t,e)).length;null!=e&&n<o;)e=e[a(t[n++])];return n&&n==o?e:void 0}},68866:(e,t,n)=>{var r=n(62488),a=n(1469);e.exports=function(e,t,n){var o=t(e);return a(e)?o:r(o,n(e))}},44239:(e,t,n)=>{var r=n(62705),a=n(89607),o=n(2333),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?a(e):o(e)}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},9454:(e,t,n)=>{var r=n(44239),a=n(37005);e.exports=function(e){return a(e)&&"[object Arguments]"==r(e)}},90939:(e,t,n)=>{var r=n(2492),a=n(37005);e.exports=function e(t,n,o,i,l){return t===n||(null==t||null==n||!a(t)&&!a(n)?t!=t&&n!=n:r(t,n,o,i,e,l))}},2492:(e,t,n)=>{var r=n(46384),a=n(67114),o=n(18351),i=n(16096),l=n(64160),s=n(1469),u=n(44144),c=n(36719),d="[object Arguments]",f="[object Array]",p="[object Object]",h=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,g,v){var b=s(e),y=s(t),w=b?f:l(e),x=y?f:l(t),k=(w=w==d?p:w)==p,_=(x=x==d?p:x)==p,E=w==x;if(E&&u(e)){if(!u(t))return!1;b=!0,k=!1}if(E&&!k)return v||(v=new r),b||c(e)?a(e,t,n,m,g,v):o(e,t,w,n,m,g,v);if(!(1&n)){var S=k&&h.call(e,"__wrapped__"),C=_&&h.call(t,"__wrapped__");if(S||C){var T=S?e.value():e,O=C?t.value():t;return v||(v=new r),g(T,O,n,m,v)}}return!!E&&(v||(v=new r),i(e,t,n,m,g,v))}},25588:(e,t,n)=>{var r=n(64160),a=n(37005);e.exports=function(e){return a(e)&&"[object Map]"==r(e)}},2958:(e,t,n)=>{var r=n(46384),a=n(90939);e.exports=function(e,t,n,o){var i=n.length,l=i,s=!o;if(null==e)return!l;for(e=Object(e);i--;){var u=n[i];if(s&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++i<l;){var c=(u=n[i])[0],d=e[c],f=u[1];if(s&&u[2]){if(void 0===d&&!(c in e))return!1}else{var p=new r;if(o)var h=o(d,f,c,e,t,p);if(!(void 0===h?a(f,d,3,o,p):h))return!1}}return!0}},28458:(e,t,n)=>{var r=n(23560),a=n(15346),o=n(13218),i=n(80346),l=/^\[object .+?Constructor\]$/,s=Function.prototype,u=Object.prototype,c=s.toString,d=u.hasOwnProperty,f=RegExp("^"+c.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||a(e))&&(r(e)?f:l).test(i(e))}},29221:(e,t,n)=>{var r=n(64160),a=n(37005);e.exports=function(e){return a(e)&&"[object Set]"==r(e)}},38749:(e,t,n)=>{var r=n(44239),a=n(41780),o=n(37005),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&a(e.length)&&!!i[r(e)]}},67206:(e,t,n)=>{var r=n(91573),a=n(16432),o=n(6557),i=n(1469),l=n(39601);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?i(e)?a(e[0],e[1]):r(e):l(e)}},280:(e,t,n)=>{var r=n(25726),a=n(86916),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return a(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},10313:(e,t,n)=>{var r=n(13218),a=n(25726),o=n(33498),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=a(e),n=[];for(var l in e)("constructor"!=l||!t&&i.call(e,l))&&n.push(l);return n}},91573:(e,t,n)=>{var r=n(2958),a=n(1499),o=n(42634);e.exports=function(e){var t=a(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},16432:(e,t,n)=>{var r=n(90939),a=n(27361),o=n(79095),i=n(15403),l=n(89162),s=n(42634),u=n(40327);e.exports=function(e,t){return i(e)&&l(t)?s(u(e),t):function(n){var i=a(n,e);return void 0===i&&i===t?o(n,e):r(t,i,3)}}},40371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},79152:(e,t,n)=>{var r=n(97786);e.exports=function(e){return function(t){return r(t,e)}}},56560:(e,t,n)=>{var r=n(75703),a=n(38777),o=n(6557),i=a?function(e,t){return a(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=i},14259:e=>{e.exports=function(e,t,n){var r=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(a);++r<a;)o[r]=e[r+t];return o}},22545:e=>{e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},80531:(e,t,n)=>{var r=n(62705),a=n(29932),o=n(1469),i=n(33448),l=r?r.prototype:void 0,s=l?l.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return a(t,e)+"";if(i(t))return s?s.call(t):"";var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n}},7518:e=>{e.exports=function(e){return function(t){return e(t)}}},57406:(e,t,n)=>{var r=n(71811),a=n(10928),o=n(40292),i=n(40327);e.exports=function(e,t){return t=r(t,e),null==(e=o(e,t))||delete e[i(a(t))]}},74757:e=>{e.exports=function(e,t){return e.has(t)}},71811:(e,t,n)=>{var r=n(1469),a=n(15403),o=n(55514),i=n(79833);e.exports=function(e,t){return r(e)?e:a(e,t)?[e]:o(i(e))}},74318:(e,t,n)=>{var r=n(11149);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},64626:(e,t,n)=>{e=n.nmd(e);var r=n(55639),a=t&&!t.nodeType&&t,o=a&&e&&!e.nodeType&&e,i=o&&o.exports===a?r.Buffer:void 0,l=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=l?l(n):new e.constructor(n);return e.copy(r),r}},57157:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},93147:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},40419:(e,t,n)=>{var r=n(62705),a=r?r.prototype:void 0,o=a?a.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},77133:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},278:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},98363:(e,t,n)=>{var r=n(34865),a=n(89465);e.exports=function(e,t,n,o){var i=!n;n||(n={});for(var l=-1,s=t.length;++l<s;){var u=t[l],c=o?o(n[u],e[u],u,n,e):void 0;void 0===c&&(c=e[u]),i?a(n,u,c):r(n,u,c)}return n}},18805:(e,t,n)=>{var r=n(98363),a=n(99551);e.exports=function(e,t){return r(e,a(e),t)}},1911:(e,t,n)=>{var r=n(98363),a=n(51442);e.exports=function(e,t){return r(e,a(e),t)}},14429:(e,t,n)=>{var r=n(55639)["__core-js_shared__"];e.exports=r},55189:(e,t,n)=>{var r=n(44174),a=n(81119),o=n(67206),i=n(1469);e.exports=function(e,t){return function(n,l){var s=i(n)?r:a,u=t?t():{};return s(n,e,o(l,2),u)}}},99291:(e,t,n)=>{var r=n(98612);e.exports=function(e,t){return function(n,a){if(null==n)return n;if(!r(n))return e(n,a);for(var o=n.length,i=t?o:-1,l=Object(n);(t?i--:++i<o)&&!1!==a(l[i],i,l););return n}}},25063:e=>{e.exports=function(e){return function(t,n,r){for(var a=-1,o=Object(t),i=r(t),l=i.length;l--;){var s=i[e?l:++a];if(!1===n(o[s],s,o))break}return t}}},60696:(e,t,n)=>{var r=n(68630);e.exports=function(e){return r(e)?void 0:e}},38777:(e,t,n)=>{var r=n(10852),a=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=a},67114:(e,t,n)=>{var r=n(88668),a=n(82908),o=n(74757);e.exports=function(e,t,n,i,l,s){var u=1&n,c=e.length,d=t.length;if(c!=d&&!(u&&d>c))return!1;var f=s.get(e),p=s.get(t);if(f&&p)return f==t&&p==e;var h=-1,m=!0,g=2&n?new r:void 0;for(s.set(e,t),s.set(t,e);++h<c;){var v=e[h],b=t[h];if(i)var y=u?i(b,v,h,t,e,s):i(v,b,h,e,t,s);if(void 0!==y){if(y)continue;m=!1;break}if(g){if(!a(t,(function(e,t){if(!o(g,t)&&(v===e||l(v,e,n,i,s)))return g.push(t)}))){m=!1;break}}else if(v!==b&&!l(v,b,n,i,s)){m=!1;break}}return s.delete(e),s.delete(t),m}},18351:(e,t,n)=>{var r=n(62705),a=n(11149),o=n(77813),i=n(67114),l=n(68776),s=n(21814),u=r?r.prototype:void 0,c=u?u.valueOf:void 0;e.exports=function(e,t,n,r,u,d,f){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!d(new a(e),new a(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var p=l;case"[object Set]":var h=1&r;if(p||(p=s),e.size!=t.size&&!h)return!1;var m=f.get(e);if(m)return m==t;r|=2,f.set(e,t);var g=i(p(e),p(t),r,u,d,f);return f.delete(e),g;case"[object Symbol]":if(c)return c.call(e)==c.call(t)}return!1}},16096:(e,t,n)=>{var r=n(58234),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,i,l){var s=1&n,u=r(e),c=u.length;if(c!=r(t).length&&!s)return!1;for(var d=c;d--;){var f=u[d];if(!(s?f in t:a.call(t,f)))return!1}var p=l.get(e),h=l.get(t);if(p&&h)return p==t&&h==e;var m=!0;l.set(e,t),l.set(t,e);for(var g=s;++d<c;){var v=e[f=u[d]],b=t[f];if(o)var y=s?o(b,v,f,t,e,l):o(v,b,f,e,t,l);if(!(void 0===y?v===b||i(v,b,n,o,l):y)){m=!1;break}g||(g="constructor"==f)}if(m&&!g){var w=e.constructor,x=t.constructor;w==x||!("constructor"in e)||!("constructor"in t)||"function"==typeof w&&w instanceof w&&"function"==typeof x&&x instanceof x||(m=!1)}return l.delete(e),l.delete(t),m}},99021:(e,t,n)=>{var r=n(85564),a=n(45357),o=n(30061);e.exports=function(e){return o(a(e,void 0,r),e+"")}},31957:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},58234:(e,t,n)=>{var r=n(68866),a=n(99551),o=n(3674);e.exports=function(e){return r(e,o,a)}},46904:(e,t,n)=>{var r=n(68866),a=n(51442),o=n(81704);e.exports=function(e){return r(e,o,a)}},45050:(e,t,n)=>{var r=n(37019);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},1499:(e,t,n)=>{var r=n(89162),a=n(3674);e.exports=function(e){for(var t=a(e),n=t.length;n--;){var o=t[n],i=e[o];t[n]=[o,i,r(i)]}return t}},10852:(e,t,n)=>{var r=n(28458),a=n(47801);e.exports=function(e,t){var n=a(e,t);return r(n)?n:void 0}},85924:(e,t,n)=>{var r=n(5569)(Object.getPrototypeOf,Object);e.exports=r},89607:(e,t,n)=>{var r=n(62705),a=Object.prototype,o=a.hasOwnProperty,i=a.toString,l=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,l),n=e[l];try{e[l]=void 0;var r=!0}catch(s){}var a=i.call(e);return r&&(t?e[l]=n:delete e[l]),a}},99551:(e,t,n)=>{var r=n(34963),a=n(70479),o=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,l=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return o.call(e,t)})))}:a;e.exports=l},51442:(e,t,n)=>{var r=n(62488),a=n(85924),o=n(99551),i=n(70479),l=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,o(e)),e=a(e);return t}:i;e.exports=l},64160:(e,t,n)=>{var r=n(18552),a=n(57071),o=n(53818),i=n(58525),l=n(70577),s=n(44239),u=n(80346),c="[object Map]",d="[object Promise]",f="[object Set]",p="[object WeakMap]",h="[object DataView]",m=u(r),g=u(a),v=u(o),b=u(i),y=u(l),w=s;(r&&w(new r(new ArrayBuffer(1)))!=h||a&&w(new a)!=c||o&&w(o.resolve())!=d||i&&w(new i)!=f||l&&w(new l)!=p)&&(w=function(e){var t=s(e),n="[object Object]"==t?e.constructor:void 0,r=n?u(n):"";if(r)switch(r){case m:return h;case g:return c;case v:return d;case b:return f;case y:return p}return t}),e.exports=w},47801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},222:(e,t,n)=>{var r=n(71811),a=n(35694),o=n(1469),i=n(65776),l=n(41780),s=n(40327);e.exports=function(e,t,n){for(var u=-1,c=(t=r(t,e)).length,d=!1;++u<c;){var f=s(t[u]);if(!(d=null!=e&&n(e,f)))break;e=e[f]}return d||++u!=c?d:!!(c=null==e?0:e.length)&&l(c)&&i(f,c)&&(o(e)||a(e))}},51789:(e,t,n)=>{var r=n(94536);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},80401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},57667:(e,t,n)=>{var r=n(94536),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return a.call(t,e)?t[e]:void 0}},21327:(e,t,n)=>{var r=n(94536),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:a.call(t,e)}},81866:(e,t,n)=>{var r=n(94536);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},43824:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,r=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},29148:(e,t,n)=>{var r=n(74318),a=n(57157),o=n(93147),i=n(40419),l=n(77133);e.exports=function(e,t,n){var s=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new s(+e);case"[object DataView]":return a(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return l(e,n);case"[object Map]":case"[object Set]":return new s;case"[object Number]":case"[object String]":return new s(e);case"[object RegExp]":return o(e);case"[object Symbol]":return i(e)}}},38517:(e,t,n)=>{var r=n(3118),a=n(85924),o=n(25726);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:r(a(e))}},37285:(e,t,n)=>{var r=n(62705),a=n(35694),o=n(1469),i=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||a(e)||!!(i&&e&&e[i])}},65776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e<n}},15403:(e,t,n)=>{var r=n(1469),a=n(33448),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!a(e))||(i.test(e)||!o.test(e)||null!=t&&e in Object(t))}},37019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},15346:(e,t,n)=>{var r,a=n(14429),o=(r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},25726:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},89162:(e,t,n)=>{var r=n(13218);e.exports=function(e){return e==e&&!r(e)}},27040:e=>{e.exports=function(){this.__data__=[],this.size=0}},14125:(e,t,n)=>{var r=n(18470),a=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():a.call(t,n,1),--this.size,!0)}},82117:(e,t,n)=>{var r=n(18470);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},67518:(e,t,n)=>{var r=n(18470);e.exports=function(e){return r(this.__data__,e)>-1}},54705:(e,t,n)=>{var r=n(18470);e.exports=function(e,t){var n=this.__data__,a=r(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this}},24785:(e,t,n)=>{var r=n(1989),a=n(38407),o=n(57071);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||a),string:new r}}},11285:(e,t,n)=>{var r=n(45050);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},96e3:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).get(e)}},49916:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).has(e)}},95265:(e,t,n)=>{var r=n(45050);e.exports=function(e,t){var n=r(this,e),a=n.size;return n.set(e,t),this.size+=n.size==a?0:1,this}},68776:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},42634:e=>{e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},24523:(e,t,n)=>{var r=n(88306);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},94536:(e,t,n)=>{var r=n(10852)(Object,"create");e.exports=r},86916:(e,t,n)=>{var r=n(5569)(Object.keys,Object);e.exports=r},33498:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},31167:(e,t,n)=>{e=n.nmd(e);var r=n(31957),a=t&&!t.nodeType&&t,o=a&&e&&!e.nodeType&&e,i=o&&o.exports===a&&r.process,l=function(){try{var e=o&&o.require&&o.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(t){}}();e.exports=l},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},45357:(e,t,n)=>{var r=n(96874),a=Math.max;e.exports=function(e,t,n){return t=a(void 0===t?e.length-1:t,0),function(){for(var o=arguments,i=-1,l=a(o.length-t,0),s=Array(l);++i<l;)s[i]=o[t+i];i=-1;for(var u=Array(t+1);++i<t;)u[i]=o[i];return u[t]=n(s),r(e,this,u)}}},40292:(e,t,n)=>{var r=n(97786),a=n(14259);e.exports=function(e,t){return t.length<2?e:r(e,a(t,0,-1))}},55639:(e,t,n)=>{var r=n(31957),a="object"==typeof self&&self&&self.Object===Object&&self,o=r||a||Function("return this")();e.exports=o},90619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},72385:e=>{e.exports=function(e){return this.__data__.has(e)}},21814:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},30061:(e,t,n)=>{var r=n(56560),a=n(21275)(r);e.exports=a},21275:e=>{var t=Date.now;e.exports=function(e){var n=0,r=0;return function(){var a=t(),o=16-(a-r);if(r=a,o>0){if(++n>=800)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}},37465:(e,t,n)=>{var r=n(38407);e.exports=function(){this.__data__=new r,this.size=0}},63779:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},67599:e=>{e.exports=function(e){return this.__data__.get(e)}},44758:e=>{e.exports=function(e){return this.__data__.has(e)}},34309:(e,t,n)=>{var r=n(38407),a=n(57071),o=n(83369);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!a||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(i)}return n.set(e,t),this.size=n.size,this}},55514:(e,t,n)=>{var r=n(24523),a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(a,(function(e,n,r,a){t.push(r?a.replace(o,"$1"):n||e)})),t}));e.exports=i},40327:(e,t,n)=>{var r=n(33448);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t}},80346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},75703:e=>{e.exports=function(e){return function(){return e}}},77813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},85564:(e,t,n)=>{var r=n(21078);e.exports=function(e){return(null==e?0:e.length)?r(e,1):[]}},27361:(e,t,n)=>{var r=n(97786);e.exports=function(e,t,n){var a=null==e?void 0:r(e,t);return void 0===a?n:a}},7739:(e,t,n)=>{var r=n(89465),a=n(55189),o=Object.prototype.hasOwnProperty,i=a((function(e,t,n){o.call(e,n)?e[n].push(t):r(e,n,[t])}));e.exports=i},79095:(e,t,n)=>{var r=n(13),a=n(222);e.exports=function(e,t){return null!=e&&a(e,t,r)}},6557:e=>{e.exports=function(e){return e}},35694:(e,t,n)=>{var r=n(9454),a=n(37005),o=Object.prototype,i=o.hasOwnProperty,l=o.propertyIsEnumerable,s=r(function(){return arguments}())?r:function(e){return a(e)&&i.call(e,"callee")&&!l.call(e,"callee")};e.exports=s},1469:e=>{var t=Array.isArray;e.exports=t},98612:(e,t,n)=>{var r=n(23560),a=n(41780);e.exports=function(e){return null!=e&&a(e.length)&&!r(e)}},44144:(e,t,n)=>{e=n.nmd(e);var r=n(55639),a=n(95062),o=t&&!t.nodeType&&t,i=o&&e&&!e.nodeType&&e,l=i&&i.exports===o?r.Buffer:void 0,s=(l?l.isBuffer:void 0)||a;e.exports=s},23560:(e,t,n)=>{var r=n(44239),a=n(13218);e.exports=function(e){if(!a(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},41780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},56688:(e,t,n)=>{var r=n(25588),a=n(7518),o=n(31167),i=o&&o.isMap,l=i?a(i):r;e.exports=l},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},68630:(e,t,n)=>{var r=n(44239),a=n(85924),o=n(37005),i=Function.prototype,l=Object.prototype,s=i.toString,u=l.hasOwnProperty,c=s.call(Object);e.exports=function(e){if(!o(e)||"[object Object]"!=r(e))return!1;var t=a(e);if(null===t)return!0;var n=u.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==c}},72928:(e,t,n)=>{var r=n(29221),a=n(7518),o=n(31167),i=o&&o.isSet,l=i?a(i):r;e.exports=l},33448:(e,t,n)=>{var r=n(44239),a=n(37005);e.exports=function(e){return"symbol"==typeof e||a(e)&&"[object Symbol]"==r(e)}},36719:(e,t,n)=>{var r=n(38749),a=n(7518),o=n(31167),i=o&&o.isTypedArray,l=i?a(i):r;e.exports=l},3674:(e,t,n)=>{var r=n(14636),a=n(280),o=n(98612);e.exports=function(e){return o(e)?r(e):a(e)}},81704:(e,t,n)=>{var r=n(14636),a=n(10313),o=n(98612);e.exports=function(e){return o(e)?r(e,!0):a(e)}},10928:e=>{e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},88306:(e,t,n)=>{var r=n(83369);function a(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=t?t.apply(this,r):r[0],o=n.cache;if(o.has(a))return o.get(a);var i=e.apply(this,r);return n.cache=o.set(a,i)||o,i};return n.cache=new(a.Cache||r),n}a.Cache=r,e.exports=a},57557:(e,t,n)=>{var r=n(29932),a=n(85990),o=n(57406),i=n(71811),l=n(98363),s=n(60696),u=n(99021),c=n(46904),d=u((function(e,t){var n={};if(null==e)return n;var u=!1;t=r(t,(function(t){return t=i(t,e),u||(u=t.length>1),t})),l(e,c(e),n),u&&(n=a(n,7,s));for(var d=t.length;d--;)o(n,t[d]);return n}));e.exports=d},39601:(e,t,n)=>{var r=n(40371),a=n(79152),o=n(15403),i=n(40327);e.exports=function(e){return o(e)?r(i(e)):a(e)}},70479:e=>{e.exports=function(){return[]}},95062:e=>{e.exports=function(){return!1}},79833:(e,t,n)=>{var r=n(80531);e.exports=function(e){return null==e?"":r(e)}},31336:(e,t,n)=>{var r,a;!function(){var o,i,l,s,u,c,d,f,p,h,m,g,v,b,y,w,x,k,_,E,S,C,T,O,D,P,N,I,A,L,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version="2.3.9",R.utils={},R.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),R.utils.asString=function(e){return null==e?"":e.toString()},R.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var a=n[r],o=e[a];if(Array.isArray(o))t[a]=o.slice();else{if("string"!=typeof o&&"number"!=typeof o&&"boolean"!=typeof o)throw new TypeError("clone is not deep and does not support nested objects");t[a]=o}}return t},R.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},R.FieldRef.joiner="/",R.FieldRef.fromString=function(e){var t=e.indexOf(R.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new R.FieldRef(r,n,e)},R.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+R.FieldRef.joiner+this.docRef),this._stringValue},R.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},R.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},R.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},R.Set.prototype.contains=function(e){return!!this.elements[e]},R.Set.prototype.intersect=function(e){var t,n,r,a=[];if(e===R.Set.complete)return this;if(e===R.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var o=0;o<r.length;o++){var i=r[o];i in n.elements&&a.push(i)}return new R.Set(a)},R.Set.prototype.union=function(e){return e===R.Set.complete?R.Set.complete:e===R.Set.empty?this:new R.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},R.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var a=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(a))},R.Token=function(e,t){this.str=e||"",this.metadata=t||{}},R.Token.prototype.toString=function(){return this.str},R.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},R.Token.prototype.clone=function(e){return e=e||function(e){return e},new R.Token(e(this.str,this.metadata),this.metadata)},R.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new R.Token(R.utils.asString(e).toLowerCase(),R.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,a=[],o=0,i=0;o<=r;o++){var l=o-i;if(n.charAt(o).match(R.tokenizer.separator)||o==r){if(l>0){var s=R.utils.clone(t)||{};s.position=[i,l],s.index=a.length,a.push(new R.Token(n.slice(i,o),s))}i=o+1}}return a},R.tokenizer.separator=/[\s\-]+/,R.Pipeline=function(){this._stack=[]},R.Pipeline.registeredFunctions=Object.create(null),R.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&R.utils.warn("Overwriting existing registered function: "+t),e.label=t,R.Pipeline.registeredFunctions[e.label]=e},R.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||R.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},R.Pipeline.load=function(e){var t=new R.Pipeline;return e.forEach((function(e){var n=R.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},R.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){R.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},R.Pipeline.prototype.after=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},R.Pipeline.prototype.before=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},R.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},R.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],a=[],o=0;o<e.length;o++){var i=r(e[o],o,e);if(null!=i&&""!==i)if(Array.isArray(i))for(var l=0;l<i.length;l++)a.push(i[l]);else a.push(i)}e=a}return e},R.Pipeline.prototype.runString=function(e,t){var n=new R.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},R.Pipeline.prototype.reset=function(){this._stack=[]},R.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return R.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},R.Vector=function(e){this._magnitude=0,this.elements=e||[]},R.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,a=Math.floor(r/2),o=this.elements[2*a];r>1&&(o<e&&(t=a),o>e&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:o<e?2*(a+1):void 0},R.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},R.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},R.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},R.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,a=n.length,o=r.length,i=0,l=0,s=0,u=0;s<a&&u<o;)(i=n[s])<(l=r[u])?s+=2:i>l?u+=2:i==l&&(t+=n[s+1]*r[u+1],s+=2,u+=2);return t},R.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},R.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},R.Vector.prototype.toJSON=function(){return this.elements},R.stemmer=(i={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},l={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},d="^("+(u="[^aeiou][^aeiouy]*")+")?"+(c=(s="[aeiouy]")+"[aeiou]*")+u+"("+c+")?$",f="^("+u+")?"+c+u+c+u,p="^("+u+")?"+s,h=new RegExp("^("+u+")?"+c+u),m=new RegExp(f),g=new RegExp(d),v=new RegExp(p),b=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,x=/^(.+?)(ed|ing)$/,k=/.$/,_=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),S=new RegExp("^"+u+s+"[^aeiouwxy]$"),C=/^(.+?[^aeiou])y$/,T=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,O=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,D=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,P=/^(.+?)(s|t)(ion)$/,N=/^(.+?)e$/,I=/ll$/,A=new RegExp("^"+u+s+"[^aeiouwxy]$"),L=function(e){var t,n,r,a,o,s,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),o=y,(a=b).test(e)?e=e.replace(a,"$1$2"):o.test(e)&&(e=e.replace(o,"$1$2")),o=x,(a=w).test(e)){var c=a.exec(e);(a=h).test(c[1])&&(a=k,e=e.replace(a,""))}else o.test(e)&&(t=(c=o.exec(e))[1],(o=v).test(t)&&(s=E,u=S,(o=_).test(e=t)?e+="e":s.test(e)?(a=k,e=e.replace(a,"")):u.test(e)&&(e+="e")));return(a=C).test(e)&&(e=(t=(c=a.exec(e))[1])+"i"),(a=T).test(e)&&(t=(c=a.exec(e))[1],n=c[2],(a=h).test(t)&&(e=t+i[n])),(a=O).test(e)&&(t=(c=a.exec(e))[1],n=c[2],(a=h).test(t)&&(e=t+l[n])),o=P,(a=D).test(e)?(t=(c=a.exec(e))[1],(a=m).test(t)&&(e=t)):o.test(e)&&(t=(c=o.exec(e))[1]+c[2],(o=m).test(t)&&(e=t)),(a=N).test(e)&&(t=(c=a.exec(e))[1],o=g,s=A,((a=m).test(t)||o.test(t)&&!s.test(t))&&(e=t)),o=m,(a=I).test(e)&&o.test(e)&&(a=k,e=e.replace(a,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(L)}),R.Pipeline.registerFunction(R.stemmer,"stemmer"),R.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},R.stopWordFilter=R.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),R.Pipeline.registerFunction(R.stopWordFilter,"stopWordFilter"),R.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},R.Pipeline.registerFunction(R.trimmer,"trimmer"),R.TokenSet=function(){this.final=!1,this.edges={},this.id=R.TokenSet._nextId,R.TokenSet._nextId+=1},R.TokenSet._nextId=1,R.TokenSet.fromArray=function(e){for(var t=new R.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},R.TokenSet.fromClause=function(e){return"editDistance"in e?R.TokenSet.fromFuzzyString(e.term,e.editDistance):R.TokenSet.fromString(e.term)},R.TokenSet.fromFuzzyString=function(e,t){for(var n=new R.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var a=r.pop();if(a.str.length>0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new R.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new R.TokenSet;a.node.edges["*"]=l}if(0==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var s=a.node.edges["*"];else{s=new R.TokenSet;a.node.edges["*"]=s}1==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var u,c=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?u=a.node.edges[d]:(u=new R.TokenSet,a.node.edges[d]=u),1==a.str.length&&(u.final=!0),r.push({node:u,editsRemaining:a.editsRemaining-1,str:c+a.str.slice(2)})}}}return n},R.TokenSet.fromString=function(e){for(var t=new R.TokenSet,n=t,r=0,a=e.length;r<a;r++){var o=e[r],i=r==a-1;if("*"==o)t.edges[o]=t,t.final=i;else{var l=new R.TokenSet;l.final=i,t.edges[o]=l,t=l}}return n},R.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),a=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<a;o++){var i=r[o];t.push({prefix:n.prefix.concat(i),node:n.node.edges[i]})}}return e},R.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var a=t[r];e=e+a+this.edges[a].id}return e},R.TokenSet.prototype.intersect=function(e){for(var t=new R.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var a=Object.keys(n.qNode.edges),o=a.length,i=Object.keys(n.node.edges),l=i.length,s=0;s<o;s++)for(var u=a[s],c=0;c<l;c++){var d=i[c];if(d==u||"*"==u){var f=n.node.edges[d],p=n.qNode.edges[u],h=f.final&&p.final,m=void 0;d in n.output.edges?(m=n.output.edges[d]).final=m.final||h:((m=new R.TokenSet).final=h,n.output.edges[d]=m),r.push({qNode:p,output:m,node:f})}}}return t},R.TokenSet.Builder=function(){this.previousWord="",this.root=new R.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},R.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var a=new R.TokenSet,o=e[r];t.edges[o]=a,this.uncheckedNodes.push({parent:t,char:o,child:a}),t=a}t.final=!0,this.previousWord=e},R.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},R.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query((function(t){new R.QueryParser(e,t).parse()}))},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),l=0;l<this.fields.length;l++)r[this.fields[l]]=new R.Vector;e.call(t,t);for(l=0;l<t.clauses.length;l++){var s=t.clauses[l],u=null,c=R.Set.empty;u=s.usePipeline?this.pipeline.runString(s.term,{fields:s.fields}):[s.term];for(var d=0;d<u.length;d++){var f=u[d];s.term=f;var p=R.TokenSet.fromClause(s),h=this.tokenSet.intersect(p).toArray();if(0===h.length&&s.presence===R.Query.presence.REQUIRED){for(var m=0;m<s.fields.length;m++){o[N=s.fields[m]]=R.Set.empty}break}for(var g=0;g<h.length;g++){var v=h[g],b=this.invertedIndex[v],y=b._index;for(m=0;m<s.fields.length;m++){var w=b[N=s.fields[m]],x=Object.keys(w),k=v+"/"+N,_=new R.Set(x);if(s.presence==R.Query.presence.REQUIRED&&(c=c.union(_),void 0===o[N]&&(o[N]=R.Set.complete)),s.presence!=R.Query.presence.PROHIBITED){if(r[N].upsert(y,s.boost,(function(e,t){return e+t})),!a[k]){for(var E=0;E<x.length;E++){var S,C=x[E],T=new R.FieldRef(C,N),O=w[C];void 0===(S=n[T])?n[T]=new R.MatchData(v,N,O):S.add(v,N,O)}a[k]=!0}}else void 0===i[N]&&(i[N]=R.Set.empty),i[N]=i[N].union(_)}}}if(s.presence===R.Query.presence.REQUIRED)for(m=0;m<s.fields.length;m++){o[N=s.fields[m]]=o[N].intersect(c)}}var D=R.Set.complete,P=R.Set.empty;for(l=0;l<this.fields.length;l++){var N;o[N=this.fields[l]]&&(D=D.intersect(o[N])),i[N]&&(P=P.union(i[N]))}var I=Object.keys(n),A=[],L=Object.create(null);if(t.isNegated()){I=Object.keys(this.fieldVectors);for(l=0;l<I.length;l++){T=I[l];var j=R.FieldRef.fromString(T);n[T]=new R.MatchData}}for(l=0;l<I.length;l++){var M=(j=R.FieldRef.fromString(I[l])).docRef;if(D.contains(M)&&!P.contains(M)){var F,B=this.fieldVectors[j],z=r[j.fieldName].similarity(B);if(void 0!==(F=L[M]))F.score+=z,F.matchData.combine(n[j]);else{var $={ref:M,score:z,matchData:n[j]};L[M]=$,A.push($)}}}return A.sort((function(e,t){return t.score-e.score}))},R.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},n={},r=e.fieldVectors,a=Object.create(null),o=e.invertedIndex,i=new R.TokenSet.Builder,l=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+R.version+"' does not match serialized index '"+e.version+"'");for(var s=0;s<r.length;s++){var u=(d=r[s])[0],c=d[1];n[u]=new R.Vector(c)}for(s=0;s<o.length;s++){var d,f=(d=o[s])[0],p=d[1];i.insert(f),a[f]=p}return i.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=a,t.tokenSet=i.root,t.pipeline=l,new R.Index(t)},R.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var a=0;a<r.length;a++){var o=r[a],i=this._fields[o].extractor,l=i?i(e):e[o],s=this.tokenizer(l,{fields:[o]}),u=this.pipeline.run(s),c=new R.FieldRef(n,o),d=Object.create(null);this.fieldTermFrequencies[c]=d,this.fieldLengths[c]=0,this.fieldLengths[c]+=u.length;for(var f=0;f<u.length;f++){var p=u[f];if(null==d[p]&&(d[p]=0),d[p]+=1,null==this.invertedIndex[p]){var h=Object.create(null);h._index=this.termIndex,this.termIndex+=1;for(var m=0;m<r.length;m++)h[r[m]]=Object.create(null);this.invertedIndex[p]=h}null==this.invertedIndex[p][o][n]&&(this.invertedIndex[p][o][n]=Object.create(null));for(var g=0;g<this.metadataWhitelist.length;g++){var v=this.metadataWhitelist[g],b=p.metadata[v];null==this.invertedIndex[p][o][n][v]&&(this.invertedIndex[p][o][n][v]=[]),this.invertedIndex[p][o][n][v].push(b)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},a=0;a<t;a++){var o=R.FieldRef.fromString(e[a]),i=o.fieldName;r[i]||(r[i]=0),r[i]+=1,n[i]||(n[i]=0),n[i]+=this.fieldLengths[o]}var l=Object.keys(this._fields);for(a=0;a<l.length;a++){var s=l[a];n[s]=n[s]/r[s]}this.averageFieldLength=n},R.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),a=0;a<n;a++){for(var o=R.FieldRef.fromString(t[a]),i=o.fieldName,l=this.fieldLengths[o],s=new R.Vector,u=this.fieldTermFrequencies[o],c=Object.keys(u),d=c.length,f=this._fields[i].boost||1,p=this._documents[o.docRef].boost||1,h=0;h<d;h++){var m,g,v,b=c[h],y=u[b],w=this.invertedIndex[b]._index;void 0===r[b]?(m=R.idf(this.invertedIndex[b],this.documentCount),r[b]=m):m=r[b],g=m*((this._k1+1)*y)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[i]))+y),g*=f,g*=p,v=Math.round(1e3*g)/1e3,s.insert(w,v)}e[o]=s}this.fieldVectors=e},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.MatchData=function(e,t,n){for(var r=Object.create(null),a=Object.keys(n||{}),o=0;o<a.length;o++){var i=a[o];r[i]=n[i].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},R.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],a=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var o=0;o<a.length;o++){var i=a[o],l=Object.keys(e.metadata[r][i]);null==this.metadata[r][i]&&(this.metadata[r][i]=Object.create(null));for(var s=0;s<l.length;s++){var u=l[s];null==this.metadata[r][i][u]?this.metadata[r][i][u]=e.metadata[r][i][u]:this.metadata[r][i][u]=this.metadata[r][i][u].concat(e.metadata[r][i][u])}}}},R.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),a=0;a<r.length;a++){var o=r[a];o in this.metadata[e][t]?this.metadata[e][t][o]=this.metadata[e][t][o].concat(n[o]):this.metadata[e][t][o]=n[o]}else this.metadata[e][t]=n},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String("*"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term="*"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,R.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},R.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS="EOS",R.QueryLexer.FIELD="FIELD",R.QueryLexer.TERM="TERM",R.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",R.QueryLexer.BOOST="BOOST",R.QueryLexer.PRESENCE="PRESENCE",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return R.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new R.QueryParseError(n,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new R.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new R.QueryParseError(n,t.start,t.end)}switch(r.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new R.QueryParseError(n,r.start,r.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new R.QueryParseError(r,t.start,t.end)}if(a.type===R.QueryLexer.TERM)return R.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(r,n.start,n.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return R})?r.call(t,n,t,e):r)||(e.exports=a)}()},27861:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={icon:"icon_S7Kx",s:"s_AZDZ",m:"m_thRi",l:"l_WHPt",fill:"fill_hNhN",stroke:"stroke_N8dm"}},10153:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={backdrop:"backdrop_Ifvc",navWrapper:"navWrapper_ybYI",nav:"nav_cMpg",visible:"visible_ynAX",wrapper:"wrapper_SWrM",fullscreenButton:"fullscreenButton_Bocn",active:"active_qZD5"}},8633:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={toggle:"toggle_K23S",toggleButton:"toggleButton_dl49",darkToggleIcon:"darkToggleIcon_lKkA",lightToggleIcon:"lightToggleIcon_K4TL",toggleButtonDisabled:"toggleButtonDisabled_AAS_"}},79762:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={firstRow:"firstRow_ar1q",secondRow:"secondRow__ww3",backToTop:"backToTop_wDfN",footerLink:"footerLink_sh7M"}},90826:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={colorModeToggle:"colorModeToggle_GSaI",rightSection:"rightSection_CLeF",iconButtonGroup:"iconButtonGroup_ktNv"}},83244:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={dropdownNavbarItem:"dropdownNavbarItem_o23I"}},31259:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={modal:"modal_kLVz",closeButton:"closeButton_Rr0e",header:"header_QwCa"}},61699:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_ONDG",empty:"empty_a7qb",title:"title_uwS_",item:"item_RHYF",itemTitle:"itemTitle_jtAv"}},9592:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_xZfc",textField:"textField_af43"}},1443:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_N57j"}},18589:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_Ooa0",level1:"level1_fpUf",icon:"icon_sZn2",fill:"fill_fkan",stroke:"stroke_j3wH"}},86620:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_JWD1"}},38076:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_EFVO"}},20550:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_ltHz",noResults:"noResults_mD2O",groups:"groups_p1lF",divider:"divider_eGUz",topBar:"topBar_Dtew"}},22473:(e,t,n)=>{"use strict";n.r(t)},11057:(e,t,n)=>{"use strict";n.r(t)},93878:(e,t,n)=>{"use strict";n.r(t)},32497:(e,t,n)=>{"use strict";n.r(t)},97087:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={navbarHideable:"navbarHideable_OoEf",navbarHidden:"navbarHidden_zoxl"}},88822:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={linkContent:"linkContent__x3v",externalLinkIcon:"externalLinkIcon_Qfue"}},65787:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={themedImage:"themedImage_kfRS","themedImage--light":"themedImage--light_BL8e","themedImage--dark":"themedImage--dark_OvIx"}},36459:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_QACb"}},97142:(e,t)=>{"use strict";t.I=function(e){e.client&&(document.head.appendChild(e.msh=document.createElement("style")),e.createRule=function(t,n){var r=t+"{}";n&&(r=n+"{"+r+"}");var a=n?e.msh.sheet:e.sh.sheet,o=a.insertRule(r,a.cssRules.length),i=(a.cssRules||a.rules)[o];if(i.index=o,n){var l=(i.cssRules||i.rules)[0];i.style=l.style,i.styleMap=l.styleMap}return i})}},52099:(e,t,n)=>{"use strict";var r=n(39662).D;t.I=function(e){if(e.client){0;var t=e.kebab;n.prototype.diff=function(e){var n,r=this.decl,a=this.rule.style;for(n in r)void 0===e[n]&&a.removeProperty(n);for(n in e)e[n]!==r[n]&&a.setProperty(t(n),e[n]);this.decl=e},n.prototype.del=function(){r(this.rule)},a.prototype.diff=function(e){var t=this.tree;for(var r in t)if(void 0===e[r]){var a=t[r];for(var o in a)a[o].del()}for(var r in e)if(void 0===t[r])for(var o in e[r]){(s=new n(o,r)).diff(e[r][o]),e[r][o]=s}else{var i=t[r],l=e[r];for(var o in i)l[o]||i[o].del();for(var o in l){var s;(s=i[o])?(s.diff(l[o]),l[o]=s):((s=new n(o,r)).diff(l[o]),l[o]=s)}}this.tree=e},e.VRule=n,e.VSheet=a}function n(t,n){this.rule=e.createRule(t,n),this.decl={}}function a(){this.tree={}}}},87749:(e,t)=>{t.z=function e(t,n,r,a){var o,i,l={},s=!1;for(o in n)"object"!=typeof(i=n[o])&&(s=!0,l[o]=i);for(o in s&&(t[a]||(t[a]={}),t[a][r]=l),n)if("object"==typeof(i=n[o]))if("@"===o[0])e(t,i,r,o);else{var u=o.indexOf("&")>-1,c=r.split(",");if(u)for(var d=0;d<c.length;d++)c[d]=o.replace(/&/g,c[d]);else for(d=0;d<c.length;d++)c[d]=c[d]+" "+o;e(t,i,c.join(","),a)}}},39662:(e,t)=>{t.D=function(e){var t=e.index,n=e.parentStyleSheet,r=n.cssRules||n.rules;for(t=Math.max(t,r.length-1);t>=0;){if(r[t]===e){n.deleteRule(t);break}t--}}},40818:(e,t)=>{"use strict";var n=/[A-Z]/g;t.U=function(e){var t=(e=e||{}).assign||Object.assign;var r=t({raw:"",pfx:"_",client:"object"==typeof window,assign:t,stringify:JSON.stringify,kebab:function(e){return e.replace(n,"-$&").toLowerCase()},decl:function(e,t){return(e=r.kebab(e))+":"+t+";"},hash:function(e){return function(e){for(var t=5381,n=e.length;n;)t=33*t^e.charCodeAt(--n);return"_"+(t>>>0).toString(36)}(r.stringify(e))},selector:function(e,t){return e+(":"===t[0]?"":" ")+t},putRaw:function(e){r.raw+=e}},e);return r.client&&(r.sh||document.head.appendChild(r.sh=document.createElement("style")),r.putRaw=function(e){var t=r.sh.sheet;try{t.insertRule(e,t.cssRules.length)}catch(n){}}),r.put=function(e,t,n){var a,o,i="",l=[];for(a in t)(o=t[a])instanceof Object&&!(o instanceof Array)?l.push(a):i+=r.decl(a,o,e,n);i&&(i=e+"{"+i+"}",r.putRaw(n?n+"{"+i+"}":i));for(var s=0;s<l.length;s++)"@"===(a=l[s])[0]&&"@font-face"!==a?r.putAt(e,t[a],a):r.put(r.selector(e,a),t[a],n)},r.putAt=r.put,r}},74865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},27418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var u in o=Object(arguments[s]))n.call(o,u)&&(l[u]=o[u]);if(t){i=t(o);for(var c=0;c<i.length;c++)r.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l}},87594:(e,t)=>{function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,a,o]=t;if(r&&o){r=parseInt(r),o=parseInt(o);const e=r<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=r;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},87410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var h=0;h<p.length;++h){if(d&&d.cause==f+","+h)return;var m=p[h],g=m.inside,v=!!m.lookbehind,b=!!m.greedy,y=m.alias;if(b&&!m.pattern.global){var w=m.pattern.toString().match(/[imsuy]*$/)[0];m.pattern=RegExp(m.pattern.source,w+"g")}for(var x=m.pattern||m,k=l.next,_=c;k!==t.tail&&!(d&&_>=d.reach);_+=k.value.length,k=k.next){var E=k.value;if(t.length>e.length)return;if(!(E instanceof a)){var S,C=1;if(b){if(!(S=o(x,_,e,v))||S.index>=e.length)break;var T=S.index,O=S.index+S[0].length,D=_;for(D+=k.value.length;T>=D;)D+=(k=k.next).value.length;if(_=D-=k.value.length,k.value instanceof a)continue;for(var P=k;P!==t.tail&&(D<O||"string"==typeof P.value);P=P.next)C++,D+=P.value.length;C--,E=e.slice(_,D),S.index-=_}else if(!(S=o(x,0,E,v)))continue;T=S.index;var N=S[0],I=E.slice(0,T),A=E.slice(T+N.length),L=_+E.length;d&&L>d.reach&&(d.reach=L);var R=k.prev;if(I&&(R=s(t,R,I),_+=I.length),u(t,R,C),k=s(t,R,new a(f,g?r.tokenize(N,g):N,y,N)),A&&s(t,k,A),C>1){var j={cause:f+","+h,reach:L};i(e,t,n,k.prev,_,j),d&&j.reach>d.reach&&(d.reach=j.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),h=[];if(s&&h.push(s),h.push(d),p){var m=[p];e(m),h.push.apply(h,m)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(h)),n+=h.length-1):r.content=h}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),h=f.indexOf(p);if(h>-1){++a;var m=f.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(h+p.length),b=[];m&&b.push.apply(b,i([m])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},29901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(29901),a=n(39642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(16500).resolve(t)],delete Prism.languages[e],n(16500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},16500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=16500},39642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),h=c;a(h);){for(var m in f={},h){var g=s[m];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in h=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},92703:(e,t,n)=>{"use strict";var r=n(50414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var r=n(67294),a=n(27418),o=n(63840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,h={},m={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!p.call(m,e)||!p.call(h,e)&&(f.test(e)?m[e]=!0:(h[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var x=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=60103,_=60106,E=60107,S=60108,C=60114,T=60109,O=60110,D=60112,P=60113,N=60120,I=60115,A=60116,L=60121,R=60128,j=60129,M=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;k=B("react.element"),_=B("react.portal"),E=B("react.fragment"),S=B("react.strict_mode"),C=B("react.profiler"),T=B("react.provider"),O=B("react.context"),D=B("react.forward_ref"),P=B("react.suspense"),N=B("react.suspense_list"),I=B("react.memo"),A=B("react.lazy"),L=B("react.block"),B("react.scope"),R=B("react.opaque.id"),j=B("react.debug_trace_mode"),M=B("react.offscreen"),F=B("react.legacy_hidden")}var z,$="function"==typeof Symbol&&Symbol.iterator;function U(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=$&&e[$]||e["@@iterator"])?e:null}function H(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var V=!1;function q(e,t){if(!e||V)return"";V=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{V=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?H(e):""}function W(e){switch(e.tag){case 5:return H(e.type);case 16:return H("Lazy");case 13:return H("Suspense");case 19:return H("SuspenseList");case 0:case 2:case 15:return e=q(e.type,!1);case 11:return e=q(e.type.render,!1);case 22:return e=q(e.type._render,!1);case 1:return e=q(e.type,!0);default:return""}}function G(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case E:return"Fragment";case _:return"Portal";case C:return"Profiler";case S:return"StrictMode";case P:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case O:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case D:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case I:return G(e.type);case L:return G(e._render);case A:t=e._payload,e=e._init;try{return G(e(t))}catch(n){}}return null}function Z(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Q(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Y(e){e._valueTracker||(e._valueTracker=function(e){var t=Q(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function X(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Q(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function K(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Z(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=Z(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,Z(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&K(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Z(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:Z(n)}}function ue(e,t){var n=Z(t.value),r=Z(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function fe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?fe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var he,me,ge=(me=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((he=he||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=he.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return me(e,t)}))}:me);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var be={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||be.hasOwnProperty(e)&&be[e]?(""+t).trim():t+"px"}function xe(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(be).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),be[t]=be[e]}))}));var ke=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _e(e,t){if(t){if(ke[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function Ee(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Se(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Oe=null;function De(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Pe(e){Te?Oe?Oe.push(e):Oe=[e]:Te=e}function Ne(){if(Te){var e=Te,t=Oe;if(Oe=Te=null,De(e),t)for(e=0;e<t.length;e++)De(t[e])}}function Ie(e,t){return e(t)}function Ae(e,t,n,r,a){return e(t,n,r,a)}function Le(){}var Re=Ie,je=!1,Me=!1;function Fe(){null===Te&&null===Oe||(Le(),Ne())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var $e={};Object.defineProperty($e,"passive",{get:function(){ze=!0}}),window.addEventListener("test",$e,$e),window.removeEventListener("test",$e,$e)}catch(me){ze=!1}function Ue(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var He=!1,Ve=null,qe=!1,We=null,Ge={onError:function(e){He=!0,Ve=e}};function Ze(e,t,n,r,a,o,i,l,s){He=!1,Ve=null,Ue.apply(Ge,arguments)}function Qe(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ye(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Xe(e){if(Qe(e)!==e)throw Error(i(188))}function Ke(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Qe(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Xe(a),e;if(o===r)return Xe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ut=new Map,ct=new Map,dt=[],ft="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function ht(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function mt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=pt(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Qe(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ye(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function bt(e,t,n){vt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&vt(it)&&(it=null),null!==lt&&vt(lt)&&(lt=null),null!==st&&vt(st)&&(st=null),ut.forEach(bt),ct.forEach(bt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function xt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function kt(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var _t={animationend:kt("Animation","AnimationEnd"),animationiteration:kt("Animation","AnimationIteration"),animationstart:kt("Animation","AnimationStart"),transitionend:kt("Transition","TransitionEnd")},Et={},St={};function Ct(e){if(Et[e])return Et[e];if(!_t[e])return e;var t,n=_t[e];for(t in n)if(n.hasOwnProperty(t)&&t in St)return Et[e]=n[t];return e}d&&(St=document.createElement("div").style,"AnimationEvent"in window||(delete _t.animationend.animation,delete _t.animationiteration.animation,delete _t.animationstart.animation),"TransitionEvent"in window||delete _t.transitionend.transition);var Tt=Ct("animationend"),Ot=Ct("animationiteration"),Dt=Ct("animationstart"),Pt=Ct("transitionend"),Nt=new Map,It=new Map,At=["abort","abort",Tt,"animationEnd",Ot,"animationIteration",Dt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Pt,"transitionEnd","waiting","waiting"];function Lt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),It.set(r,t),Nt.set(r,a),u(a,[r])}}(0,o.unstable_now)();var Rt=8;function jt(e){if(0!=(1&e))return Rt=15,1;if(0!=(2&e))return Rt=14,2;if(0!=(4&e))return Rt=13,4;var t=24&e;return 0!==t?(Rt=12,t):0!=(32&e)?(Rt=11,32):0!==(t=192&e)?(Rt=10,t):0!=(256&e)?(Rt=9,256):0!==(t=3584&e)?(Rt=8,t):0!=(4096&e)?(Rt=7,4096):0!==(t=4186112&e)?(Rt=6,t):0!==(t=62914560&e)?(Rt=5,t):67108864&e?(Rt=4,67108864):0!=(134217728&e)?(Rt=3,134217728):0!==(t=805306368&e)?(Rt=2,t):0!=(1073741824&e)?(Rt=1,1073741824):(Rt=8,e)}function Mt(e,t){var n=e.pendingLanes;if(0===n)return Rt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=Rt=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=jt(s),a=Rt):0!==(l&=o)&&(r=jt(l),a=Rt)}else 0!==(o=n&~i)?(r=jt(o),a=Rt):0!==l&&(r=jt(l),a=Rt);if(0===r)return 0;if(r=n&((0>(r=31-Ht(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(jt(t),a<=Rt)return t;Rt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-Ht(t)),r|=e[n],t&=~a;return r}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?Bt(10,t):e;case 10:return 0===(e=zt(192&~t))?Bt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function $t(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ut(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Ht(t)]=n}var Ht=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Vt(e)/qt|0)|0},Vt=Math.log,qt=Math.LN2;var Wt=o.unstable_UserBlockingPriority,Gt=o.unstable_runWithPriority,Zt=!0;function Qt(e,t,n,r){je||Le();var a=Xt,o=je;je=!0;try{Ae(a,e,t,n,r)}finally{(je=o)||Fe()}}function Yt(e,t,n,r){Gt(Wt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var a;if(Zt)if((a=0==(4&t))&&0<ot.length&&-1<ft.indexOf(e))e=pt(null,e,t,n,r),ot.push(e);else{var o=Kt(e,t,n,r);if(null===o)a&&ht(e,r);else{if(a){if(-1<ft.indexOf(e))return e=pt(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=mt(it,e,t,n,r,a),!0;case"dragenter":return lt=mt(lt,e,t,n,r,a),!0;case"mouseover":return st=mt(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,mt(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ct.set(o,mt(ct.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;ht(e,r)}Lr(e,t,r,null,n)}}}function Kt(e,t,n,r){var a=Se(r);if(null!==(a=ta(a))){var o=Qe(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ye(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Lr(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},fn=ln(dn),pn=a({},dn,{view:0,detail:0}),hn=ln(pn),mn=a({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(sn=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=sn=0,cn=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),gn=ln(mn),vn=ln(a({},mn,{dataTransfer:0})),bn=ln(a({},pn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),xn=ln(wn),kn=ln(a({},dn,{data:0})),_n={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function Tn(){return Cn}var On=a({},pn,{key:function(e){if(e.key){var t=_n[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Dn=ln(On),Pn=ln(a({},mn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=ln(a({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),In=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),An=a({},mn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Ln=ln(An),Rn=[9,13,27,32],jn=d&&"CompositionEvent"in window,Mn=null;d&&"documentMode"in document&&(Mn=document.documentMode);var Fn=d&&"TextEvent"in window&&!Mn,Bn=d&&(!jn||Mn&&8<Mn&&11>=Mn),zn=String.fromCharCode(32),$n=!1;function Un(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Hn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Vn=!1;var qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Wn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Gn(e,t,n,r){Pe(r),0<(t=jr(t,"onChange")).length&&(n=new fn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Zn=null,Qn=null;function Yn(e){Or(e,0)}function Xn(e){if(X(ra(e)))return e}function Kn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Zn&&(Zn.detachEvent("onpropertychange",ar),Qn=Zn=null)}function ar(e){if("value"===e.propertyName&&Xn(Qn)){var t=[];if(Gn(t,Qn,e,Se(e)),e=Yn,je)e(t);else{je=!0;try{Ie(e,t)}finally{je=!1,Fe()}}}}function or(e,t,n){"focusin"===e?(rr(),Qn=n,(Zn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Xn(Qn)}function lr(e,t){if("click"===e)return Xn(t)}function sr(e,t){if("input"===e||"change"===e)return Xn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function fr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pr(e,t){var n,r=fr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=fr(r)}}function hr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?hr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function mr(){for(var e=window,t=K();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=K((e=t.contentWindow).document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var vr=d&&"documentMode"in document&&11>=document.documentMode,br=null,yr=null,wr=null,xr=!1;function kr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;xr||null==br||br!==K(r)||("selectionStart"in(r=br)&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=jr(yr,"onSelect")).length&&(t=new fn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=br)))}Lt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Lt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Lt(At,2);for(var _r="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Er=0;Er<_r.length;Er++)It.set(_r[Er],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Sr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Sr));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,u){if(Ze.apply(this,arguments),He){if(!He)throw Error(i(198));var c=Ve;He=!1,Ve=null,qe||(qe=!0,We=c)}}(r,t,void 0,e),e.currentTarget=null}function Or(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}}}if(qe)throw e=We,qe=!1,We=null,e}function Dr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Ar(t,e,2,!1),n.add(r))}var Pr="_reactListening"+Math.random().toString(36).slice(2);function Nr(e){e[Pr]||(e[Pr]=!0,l.forEach((function(t){Cr.has(t)||Ir(t,!1,e,null),Ir(t,!0,e,null)})))}function Ir(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Ar(o,e,a,t),i.add(l))}function Ar(e,t,n,r){var a=It.get(t);switch(void 0===a?2:a){case 0:a=Qt;break;case 1:a=Yt;break;default:a=Xt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Lr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Me)return e(t,n);Me=!0;try{return Re(e,t,n)}finally{Me=!1,Fe()}}((function(){var r=o,a=Se(n),i=[];e:{var l=Nt.get(e);if(void 0!==l){var s=fn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Dn;break;case"focusin":u="focus",s=bn;break;case"focusout":u="blur",s=bn;break;case"beforeblur":case"afterblur":s=bn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Nn;break;case Tt:case Ot:case Dt:s=yn;break;case Pt:s=In;break;case"scroll":s=hn;break;case"wheel":s=Ln;break;case"copy":case"cut":case"paste":s=xn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Pn}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,h=r;null!==h;){var m=(p=h).stateNode;if(5===p.tag&&null!==m&&(p=m,null!==f&&(null!=(m=Be(h,f))&&c.push(Rr(h,m,p)))),d)break;h=h.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ta(u)&&!u[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ta(u):null)&&(u!==(d=Qe(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=gn,m="onMouseLeave",f="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(c=Pn,m="onPointerLeave",f="onPointerEnter",h="pointer"),d=null==s?l:ra(s),p=null==u?l:ra(u),(l=new c(m,h+"leave",s,n,a)).target=d,l.relatedTarget=p,m=null,ta(a)===r&&((c=new c(f,h+"enter",u,n,a)).target=p,c.relatedTarget=d,m=c),d=m,s&&u)e:{for(f=u,h=0,p=c=s;p;p=Mr(p))h++;for(p=0,m=f;m;m=Mr(m))p++;for(;0<h-p;)c=Mr(c),h--;for(;0<p-h;)f=Mr(f),p--;for(;h--;){if(c===f||null!==f&&c===f.alternate)break e;c=Mr(c),f=Mr(f)}c=null}else c=null;null!==s&&Fr(i,l,s,c,!1),null!==u&&null!==d&&Fr(i,d,u,c,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Kn;else if(Wn(l))if(Jn)g=sr;else{g=ir;var v=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Gn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ae(l,"number",l.value)),v=r?ra(r):window,e){case"focusin":(Wn(v)||"true"===v.contentEditable)&&(br=v,yr=r,wr=null);break;case"focusout":wr=yr=br=null;break;case"mousedown":xr=!0;break;case"contextmenu":case"mouseup":case"dragend":xr=!1,kr(i,n,a);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":kr(i,n,a)}var b;if(jn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Vn?Un(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Bn&&"ko"!==n.locale&&(Vn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Vn&&(b=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Vn=!0)),0<(v=jr(r,y)).length&&(y=new kn(y,e,null,n,a),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=Hn(n))&&(y.data=b))),(b=Fn?function(e,t){switch(e){case"compositionend":return Hn(t);case"keypress":return 32!==t.which?null:($n=!0,zn);case"textInput":return(e=t.data)===zn&&$n?null:e;default:return null}}(e,n):function(e,t){if(Vn)return"compositionend"===e||!jn&&Un(e,t)?(e=nn(),tn=en=Jt=null,Vn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=jr(r,"onBeforeInput")).length&&(a=new kn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Or(i,t)}))}function Rr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function jr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Be(e,n))&&r.unshift(Rr(e,o,a)),null!=(o=Be(e,t))&&r.push(Rr(e,o,a))),e=e.return}return r}function Mr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=Be(n,o))&&i.unshift(Rr(n,s,l)):a||null!=(s=Be(n,o))&&i.push(Rr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function Br(){}var zr=null,$r=null;function Ur(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Hr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Vr="function"==typeof setTimeout?setTimeout:void 0,qr="function"==typeof clearTimeout?clearTimeout:void 0;function Wr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Gr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Zr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Qr=0;var Yr=Math.random().toString(36).slice(2),Xr="__reactFiber$"+Yr,Kr="__reactProps$"+Yr,Jr="__reactContainer$"+Yr,ea="__reactEvents$"+Yr;function ta(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Xr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Zr(e);null!==e;){if(n=e[Xr])return n;e=Zr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Xr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Kr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ua(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ca(e,t){la++,ia[la]=e.current,e.current=t}var da={},fa=sa(da),pa=sa(!1),ha=da;function ma(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function va(){ua(pa),ua(fa)}function ba(e,t,n){if(fa.current!==da)throw Error(i(168));ca(fa,t),ca(pa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,G(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ha=fa.current,ca(fa,e),ca(pa,pa.current),!0}function xa(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ha),r.__reactInternalMemoizedMergedChildContext=e,ua(pa),ua(fa),ca(fa,e)):ua(pa),ca(pa,n)}var ka=null,_a=null,Ea=o.unstable_runWithPriority,Sa=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Oa=o.unstable_requestPaint,Da=o.unstable_now,Pa=o.unstable_getCurrentPriorityLevel,Na=o.unstable_ImmediatePriority,Ia=o.unstable_UserBlockingPriority,Aa=o.unstable_NormalPriority,La=o.unstable_LowPriority,Ra=o.unstable_IdlePriority,ja={},Ma=void 0!==Oa?Oa:function(){},Fa=null,Ba=null,za=!1,$a=Da(),Ua=1e4>$a?Da:function(){return Da()-$a};function Ha(){switch(Pa()){case Na:return 99;case Ia:return 98;case Aa:return 97;case La:return 96;case Ra:return 95;default:throw Error(i(332))}}function Va(e){switch(e){case 99:return Na;case 98:return Ia;case 97:return Aa;case 96:return La;case 95:return Ra;default:throw Error(i(332))}}function qa(e,t){return e=Va(e),Ea(e,t)}function Wa(e,t,n){return e=Va(e),Sa(e,t,n)}function Ga(){if(null!==Ba){var e=Ba;Ba=null,Ca(e)}Za()}function Za(){if(!za&&null!==Fa){za=!0;var e=0;try{var t=Fa;qa(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fa=null}catch(n){throw null!==Fa&&(Fa=Fa.slice(e+1)),Sa(Na,Ga),n}finally{za=!1}}}var Qa=x.ReactCurrentBatchConfig;function Ya(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Xa=sa(null),Ka=null,Ja=null,eo=null;function to(){eo=Ja=Ka=null}function no(e){var t=Xa.current;ua(Xa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Ka=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(ji=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Ka)throw Error(i(308));Ja=t,Ka.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function po(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=o.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var h=e,m=i;switch(s=t,p=n,m.tag){case 1:if("function"==typeof(h=m.payload)){f=h.call(p,f,s);break e}f=h;break e;case 3:h.flags=-4097&h.flags|64;case 0:if(null==(s="function"==typeof(h=m.payload)?h.call(p,f,s):h))break e;f=a({},f,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,$l|=l,e.lanes=l,e.memoizedState=f}}function ho(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var mo=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var vo={isMounted:function(e){return!!(e=e._reactInternals)&&Qe(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),co(e,o),hs(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),co(e,o),hs(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),co(e,a),hs(e,r,n)}};function bo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ha:fa.current,o=(r=null!=(r=t.contextTypes))?ma(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=vo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&vo.enqueueReplaceState(t,t.state,null)}function xo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=mo,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ha:fa.current,a.context=ma(e,o)),po(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&vo.enqueueReplaceState(a,a.state,null),po(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var ko=Array.isArray;function _o(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===mo&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Eo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function So(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Ws(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ys(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=_o(e,t,n),r.return=e,r):((r=Gs(n.type,n.key,n.props,null,e.mode,r)).ref=_o(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Xs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Zs(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ys(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Gs(t.type,t.key,t.props,null,e.mode,n)).ref=_o(e,null,t),n.return=e,n;case _:return(t=Xs(t,e.mode,n)).return=e,t}if(ko(t)||U(t))return(t=Zs(t,e.mode,n,null)).return=e,t;Eo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===a?n.type===E?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case _:return n.key===a?c(e,t,n,r):null}if(ko(n)||U(n))return null!==a?null:d(e,t,n,r,null);Eo(e,n)}return null}function h(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return e=e.get(null===r.key?n:r.key)||null,r.type===E?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case _:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(ko(r)||U(r))return d(t,e=e.get(n)||null,r,a,null);Eo(t,r)}return null}function m(a,i,l,s){for(var u=null,c=null,d=i,m=i=0,g=null;null!==d&&m<l.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=p(a,d,l[m],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),i=o(v,i,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===l.length)return n(a,d),u;if(null===d){for(;m<l.length;m++)null!==(d=f(a,l[m],s))&&(i=o(d,i,m),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);m<l.length;m++)null!==(g=h(d,a,m,l[m],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),i=o(g,i,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=U(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,m=l,g=l=0,v=null,b=s.next();null!==m&&!b.done;g++,b=s.next()){m.index>g?(v=m,m=null):v=m.sibling;var y=p(a,m,b.value,u);if(null===y){null===m&&(m=v);break}e&&m&&null===y.alternate&&t(a,m),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y,m=v}if(b.done)return n(a,m),c;if(null===m){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(m=r(a,m);!b.done;g++,b=s.next())null!==(b=h(m,a,g,b.value,u))&&(e&&null!==b.alternate&&m.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&m.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===E&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case k:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===E){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=_o(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===E?((r=Zs(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Gs(o.type,o.key,o.props,null,e.mode,s)).ref=_o(e,r,o),s.return=e,e=s)}return l(e);case _:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Xs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ys(o,e.mode,s)).return=e,e=r),l(e);if(ko(o))return m(e,r,o,s);if(U(o))return g(e,r,o,s);if(c&&Eo(e,o),void 0===o&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,G(e.type)||"Component"))}return n(e,r)}}var Co=So(!0),To=So(!1),Oo={},Do=sa(Oo),Po=sa(Oo),No=sa(Oo);function Io(e){if(e===Oo)throw Error(i(174));return e}function Ao(e,t){switch(ca(No,t),ca(Po,e),ca(Do,Oo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ua(Do),ca(Do,t)}function Lo(){ua(Do),ua(Po),ua(No)}function Ro(e){Io(No.current);var t=Io(Do.current),n=pe(t,e.type);t!==n&&(ca(Po,e),ca(Do,n))}function jo(e){Po.current===e&&(ua(Do),ua(Po))}var Mo=sa(0);function Fo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Bo=null,zo=null,$o=!1;function Uo(e,t){var n=Vs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ho(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Vo(e){if($o){var t=zo;if(t){var n=t;if(!Ho(e,t)){if(!(t=Gr(n.nextSibling))||!Ho(e,t))return e.flags=-1025&e.flags|2,$o=!1,void(Bo=e);Uo(Bo,n)}Bo=e,zo=Gr(t.firstChild)}else e.flags=-1025&e.flags|2,$o=!1,Bo=e}}function qo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Bo=e}function Wo(e){if(e!==Bo)return!1;if(!$o)return qo(e),$o=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Hr(t,e.memoizedProps))for(t=zo;t;)Uo(e,t),t=Gr(t.nextSibling);if(qo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Gr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=Bo?Gr(e.stateNode.nextSibling):null;return!0}function Go(){zo=Bo=null,$o=!1}var Zo=[];function Qo(){for(var e=0;e<Zo.length;e++)Zo[e]._workInProgressVersionPrimary=null;Zo.length=0}var Yo=x.ReactCurrentDispatcher,Xo=x.ReactCurrentBatchConfig,Ko=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Ko=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Yo.current=null===e||null===e.memoizedState?Ii:Ai,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Yo.current=Li,e=n(r,a)}while(ri)}if(Yo.current=Ni,t=null!==ei&&null!==ei.next,Ko=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ui(e,t){return"function"==typeof t?t(e):t}function ci(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Ko&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=c,$l|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(ji=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(ji=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function fi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Ko&e)===e)&&(t._workInProgressVersionPrimary=r,Zo.push(t))),e)return n(t._source);throw Zo.push(t),Error(i(350))}function pi(e,t,n,r){var a=Al;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Yo.current,u=s.useState((function(){return fi(a,t,n)})),c=u[1],d=u[0];u=ti;var f=e.memoizedState,p=f.refs,h=p.getSnapshot,m=f.source;f=f.subscribe;var g=Jo;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(c(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-Ht(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(h,n)&&ur(m,t)&&ur(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=c=Pi.bind(null,Jo,e),u.queue=e,u.baseQueue=null,d=fi(a,t,n),u.memoizedState=u.baseState=d),d}function hi(e,t,n){return pi(si(),e,t,n)}function mi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:e}).dispatch=Pi.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function vi(e){return e={current:e},li().memoizedState=e}function bi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function xi(e,t){return yi(516,4,e,t)}function ki(e,t){return wi(516,4,e,t)}function _i(e,t){return wi(4,2,e,t)}function Ei(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Si(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,Ei.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Oi(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Di(e,t){var n=Ha();qa(98>n?98:n,(function(){e(!0)})),qa(97<n?97:n,(function(){var n=Xo.transition;Xo.transition=1;try{e(!1),t()}finally{Xo.transition=n}}))}function Pi(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(u){}hs(e,a,r)}}var Ni={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Ii={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:xi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,Ei.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Pi.bind(null,Jo,e),[r.memoizedState,e]},useRef:vi,useState:mi,useDebugValue:Ci,useDeferredValue:function(e){var t=mi(e),n=t[0],r=t[1];return xi((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=mi(!1),t=e[0];return vi(e=Di.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},pi(r,e,t,n)},useOpaqueIdentifier:function(){if($o){var e=!1,t=function(e){return{$$typeof:R,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Qr++).toString(36))),Error(i(355))})),n=mi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Qr++).toString(36))}),void 0,null)),t}return mi(t="r:"+(Qr++).toString(36)),t},unstable_isNewReconciler:!1},Ai={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:Si,useLayoutEffect:_i,useMemo:Oi,useReducer:ci,useRef:bi,useState:function(){return ci(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=ci(ui),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=ci(ui)[0];return[bi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return ci(ui)[0]},unstable_isNewReconciler:!1},Li={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:Si,useLayoutEffect:_i,useMemo:Oi,useReducer:di,useRef:bi,useState:function(){return di(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[bi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Ri=x.ReactCurrentOwner,ji=!1;function Mi(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Fi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||ji?(t.flags|=1,Mi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Bi(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||qs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Gs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Ws(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(ji=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(ji=!0)}return Hi(e,t,n,r,o)}function $i(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},ks(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},ks(t,e),null;t.memoizedState={baseLanes:0},ks(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,ks(t,r);return Mi(e,t,a,n),t.child}function Ui(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Hi(e,t,n,r,a){var o=ga(n)?ha:fa.current;return o=ma(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||ji?(t.flags|=1,Mi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Vi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),xo(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=oo(u):u=ma(t,u=ga(n)?ha:fa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&wo(t,i,r,u),io=!1;var f=t.memoizedState;i.state=f,po(t,r,i,a),s=t.memoizedState,l!==r||f!==s||pa.current||io?("function"==typeof c&&(go(t,n,c,r),s=t.memoizedState),(l=io||bo(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ya(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ma(t,s=ga(n)?ha:fa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&wo(t,i,r,s),io=!1,f=t.memoizedState,i.state=f,po(t,r,i,a);var h=t.memoizedState;l!==d||f!==h||pa.current||io?("function"==typeof p&&(go(t,n,p,r),h=t.memoizedState),(u=io||bo(t,n,u,r,f,h,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,h,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,h,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return qi(e,t,n,r,o,a)}function qi(e,t,n,r,a,o){Ui(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&xa(t,n,!1),ol(e,t,o);r=t.stateNode,Ri.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):Mi(e,t,l,o),t.memoizedState=r.state,a&&xa(t,n,!0),t.child}function Wi(e){var t=e.stateNode;t.pendingContext?ba(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ba(0,t.context,!1),Ao(e,t.containerInfo)}var Gi,Zi,Qi,Yi,Xi={dehydrated:null,retryLane:0};function Ki(e,t,n){var r,a=t.pendingProps,o=Mo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ca(Mo,1&o),null===e?(void 0!==a.fallback&&Vo(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,t.lanes=33554432,e):((n=Qs({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Xi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Qs(t,a,0,null),n=Zs(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Ws(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Ws(i,l),null!==e?r=Ws(e,r):(r=Zs(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Mi(e,t,r.children,n),0!=(2&(r=Mo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ca(Mo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Fo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Fo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),$l|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Ws(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ws(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!$o)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&va(),null;case 3:return Lo(),ua(pa),ua(fa),Qo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Wo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Zi(t),null;case 5:jo(t);var o=Io(No.current);if(n=t.type,null!==e&&null!=t.stateNode)Qi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Io(Do.current),Wo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Kr]=l,n){case"dialog":Dr("cancel",r),Dr("close",r);break;case"iframe":case"object":case"embed":Dr("load",r);break;case"video":case"audio":for(e=0;e<Sr.length;e++)Dr(Sr[e],r);break;case"source":Dr("error",r);break;case"img":case"image":case"link":Dr("error",r),Dr("load",r);break;case"details":Dr("toggle",r);break;case"input":ee(r,l),Dr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Dr("invalid",r);break;case"textarea":se(r,l),Dr("invalid",r)}for(var u in _e(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Dr("scroll",r));switch(n){case"input":Y(r),re(r,l,!0);break;case"textarea":Y(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=Br)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=fe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Xr]=t,e[Kr]=r,Gi(e,t,!1,!1),t.stateNode=e,u=Ee(n,r),n){case"dialog":Dr("cancel",e),Dr("close",e),o=r;break;case"iframe":case"object":case"embed":Dr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Sr.length;o++)Dr(Sr[o],e);o=r;break;case"source":Dr("error",e),o=r;break;case"img":case"image":case"link":Dr("error",e),Dr("load",e),o=r;break;case"details":Dr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Dr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Dr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Dr("invalid",e);break;default:o=r}_e(n,o);var c=o;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?xe(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Dr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":Y(e),re(e,r,!1);break;case"textarea":Y(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+Z(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Br)}Ur(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Yi(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Io(No.current),Io(Do.current),Wo(t)?(r=t.stateNode,n=t.memoizedProps,r[Xr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Xr]=t,t.stateNode=r)}return null;case 13:return ua(Mo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Wo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Mo.current)?0===Fl&&(Fl=3):(0!==Fl&&3!==Fl||(Fl=4),null===Al||0==(134217727&$l)&&0==(134217727&Ul)||bs(Al,Rl))),(r||n)&&(t.flags|=4),null);case 4:return Lo(),Zi(t),null===e&&Nr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ua(Mo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Fl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Fo(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ca(Mo,1&Mo.current|2),t.child}e=e.sibling}null!==r.tail&&Ua()>Wl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Fo(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!$o)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Ua()-r.renderingStartTime>Wl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Ua(),n.sibling=null,t=Mo.current,ca(Mo,l?1&t|2:1&t),n):null;case 23:case 24:return _s(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&va();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Lo(),ua(pa),ua(fa),Qo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return jo(e),null;case 13:return ua(Mo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(Mo),null;case 4:return Lo(),null;case 10:return no(e),null;case 23:case 24:return _s(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=W(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Gi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Zi=function(){},Qi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Io(Do.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Br)}for(d in _e(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Dr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===R?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Yi=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Yl||(Yl=!0,Xl=r),cl(0,t)},n}function pl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Kl?Kl=new Set([this]):Kl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var hl="function"==typeof WeakSet?WeakSet:Set;function ml(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ya(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Wr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Ms(n,e),js(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ya(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&ho(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}ho(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&Ur(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&xt(n)))))}throw Error(i(163))}function bl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(_a&&"function"==typeof _a.onCommitFiberUnmount)try{_a.onCommitFiberUnmount(ka,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Ms(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(ml(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:ml(t);break;case 4:Sl(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function xl(e){return 5===e.tag||3===e.tag||4===e.tag}function kl(e){e:{for(var t=e.return;null!==t;){if(xl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||xl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?_l(e,n,t):El(e,n,t)}function _l(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Br));else if(4!==r&&null!==(e=e.child))for(_l(e,t,n),e=e.sibling;null!==e;)_l(e,t,n),e=e.sibling}function El(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(El(e,t,n),e=e.sibling;null!==e;)El(e,t,n),e=e.sibling}function Sl(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Kr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),Ee(e,a),t=Ee(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?xe(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?ve(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,xt(n.containerInfo)));case 13:return null!==t.memoizedState&&(ql=Ua(),bl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new hl),t.forEach((function(t){var r=Us.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Ol(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Dl=Math.ceil,Pl=x.ReactCurrentDispatcher,Nl=x.ReactCurrentOwner,Il=0,Al=null,Ll=null,Rl=0,jl=0,Ml=sa(0),Fl=0,Bl=null,zl=0,$l=0,Ul=0,Hl=0,Vl=null,ql=0,Wl=1/0;function Gl(){Wl=Ua()+500}var Zl,Ql=null,Yl=!1,Xl=null,Kl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Il)?Ua():-1!==ls?ls:ls=Ua()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Ha()?1:2;if(0===ss&&(ss=zl),0!==Qa.transition){0!==us&&(us=null!==Vl?Vl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Ha(),0!=(4&Il)&&98===e?e=Bt(12,ss):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function hs(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=ms(e,t)))return null;Ut(e,t,n),e===Al&&(Ul|=t,4===Fl&&bs(e,Rl));var r=Ha();1===t?0!=(8&Il)&&0==(48&Il)?ys(e):(gs(e,n),0===Il&&(Gl(),Ga())):(0==(4&Il)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Vl=e}function ms(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Ht(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,jt(u);var d=Rt;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Mt(e,e===Al?Rl:0),t=Rt,0===r)null!==n&&(n!==ja&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==ja&&Ca(n)}15===t?(n=ys.bind(null,e),null===Fa?(Fa=[n],Ba=Sa(Na,Za)):Fa.push(n),n=ja):14===t?n=Wa(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Wa(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Il))throw Error(i(327));var t=e.callbackNode;if(Rs()&&e.callbackNode!==t)return null;var n=Mt(e,e===Al?Rl:0);if(0===n)return null;var r=n,a=Il;Il|=16;var o=Cs();for(Al===e&&Rl===r||(Gl(),Es(e,r));;)try{Ds();break}catch(s){Ss(e,s)}if(to(),Pl.current=o,Il=a,null!==Ll?r=0:(Al=null,Rl=0,r=Fl),0!=(zl&Ul))Es(e,0);else if(0!==r){if(2===r&&(Il|=64,e.hydrate&&(e.hydrate=!1,Wr(e.containerInfo)),0!==(n=Ft(e))&&(r=Ts(e,n))),1===r)throw t=Bl,Es(e,0),bs(e,n),gs(e,Ua()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Is(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=ql+500-Ua())){if(0!==Mt(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Vr(Is.bind(null,e),r);break}Is(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-Ht(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=Ua()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Dl(n/1960))-n)){e.timeoutHandle=Vr(Is.bind(null,e),n);break}Is(e);break;default:throw Error(i(329))}}return gs(e,Ua()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~Hl,t&=~Ul,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Ht(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Il))throw Error(i(327));if(Rs(),e===Al&&0!=(e.expiredLanes&Rl)){var t=Rl,n=Ts(e,t);0!=(zl&Ul)&&(n=Ts(e,t=Mt(e,t)))}else n=Ts(e,t=Mt(e,0));if(0!==e.tag&&2===n&&(Il|=64,e.hydrate&&(e.hydrate=!1,Wr(e.containerInfo)),0!==(t=Ft(e))&&(n=Ts(e,t))),1===n)throw n=Bl,Es(e,0),bs(e,t),gs(e,Ua()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Is(e),gs(e,Ua()),null}function ws(e,t){var n=Il;Il|=1;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}}function xs(e,t){var n=Il;Il&=-2,Il|=8;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}}function ks(e,t){ca(Ml,jl),jl|=t,zl|=t}function _s(){jl=Ml.current,ua(Ml)}function Es(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,qr(n)),null!==Ll)for(n=Ll.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&va();break;case 3:Lo(),ua(pa),ua(fa),Qo();break;case 5:jo(r);break;case 4:Lo();break;case 13:case 19:ua(Mo);break;case 10:no(r);break;case 23:case 24:_s()}n=n.return}Al=e,Ll=Ws(e.current,null),Rl=jl=zl=t,Fl=0,Bl=null,Hl=Ul=$l=0}function Ss(e,t){for(;;){var n=Ll;try{if(to(),Yo.current=Ni,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Ko=0,ti=ei=Jo=null,ri=!1,Nl.current=null,null===n||null===n.return){Fl=1,Bl=t,Ll=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Rl,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Mo.current),f=i;do{var p;if(p=13===f.tag){var h=f.memoizedState;if(null!==h)p=null!==h.dehydrated;else{var m=f.memoizedProps;p=void 0!==m.fallback&&(!0!==m.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=uo(-1,1);b.tag=2,co(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=$s.bind(null,o,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((G(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fl&&(Fl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,fo(f,fl(0,o,t));break e;case 1:o=s;var x=f.type,k=f.stateNode;if(0==(64&f.flags)&&("function"==typeof x.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===Kl||!Kl.has(k)))){f.flags|=4096,t&=-t,f.lanes|=t,fo(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Ns(n)}catch(_){t=_,Ll===n&&null!==n&&(Ll=n=n.return);continue}break}}function Cs(){var e=Pl.current;return Pl.current=Ni,null===e?Ni:e}function Ts(e,t){var n=Il;Il|=16;var r=Cs();for(Al===e&&Rl===t||Es(e,t);;)try{Os();break}catch(a){Ss(e,a)}if(to(),Il=n,Pl.current=r,null!==Ll)throw Error(i(261));return Al=null,Rl=0,Fl}function Os(){for(;null!==Ll;)Ps(Ll)}function Ds(){for(;null!==Ll&&!Ta();)Ps(Ll)}function Ps(e){var t=Zl(e.alternate,e,jl);e.memoizedProps=e.pendingProps,null===t?Ns(e):Ll=t,Nl.current=null}function Ns(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,jl)))return void(Ll=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&jl)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Ll=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Ll=t);Ll=t=e}while(null!==t);0===Fl&&(Fl=5)}function Is(e){var t=Ha();return qa(99,As.bind(null,e,t)),null}function As(e,t){do{Rs()}while(null!==es);if(0!=(48&Il))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-Ht(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Al&&(Ll=Al=null,Rl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Il,Il|=32,Nl.current=null,zr=Zt,gr(l=mr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(C){s=null;break e}var d=0,f=-1,p=-1,h=0,m=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==o&&3!==g.nodeType||(f=d+o),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++h===o&&(f=d),v===u&&++m===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;$r={focusedElem:l,selectionRange:s},Zt=!1,cs=null,ds=!1,Ql=r;do{try{Ls()}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);cs=null,Ql=r;do{try{for(l=e;null!==Ql;){var y=Ql.flags;if(16&y&&ve(Ql.stateNode,""),128&y){var w=Ql.alternate;if(null!==w){var x=w.ref;null!==x&&("function"==typeof x?x(null):x.current=null)}}switch(1038&y){case 2:kl(Ql),Ql.flags&=-3;break;case 6:kl(Ql),Ql.flags&=-3,Cl(Ql.alternate,Ql);break;case 1024:Ql.flags&=-1025;break;case 1028:Ql.flags&=-1025,Cl(Ql.alternate,Ql);break;case 4:Cl(Ql.alternate,Ql);break;case 8:Sl(l,s=Ql);var k=s.alternate;wl(s),null!==k&&wl(k)}Ql=Ql.nextEffect}}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);if(x=$r,w=mr(),y=x.focusedElem,l=x.selectionRange,w!==y&&y&&y.ownerDocument&&hr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(x=l.end)&&(x=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(x,y.value.length)):(x=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(x=x.getSelection(),s=y.textContent.length,k=Math.min(l.start,s),l=void 0===l.end?k:Math.min(l.end,s),!x.extend&&k>l&&(s=l,l=k,k=s),s=pr(y,k),o=pr(y,l),s&&o&&(1!==x.rangeCount||x.anchorNode!==s.node||x.anchorOffset!==s.offset||x.focusNode!==o.node||x.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),x.removeAllRanges(),k>l?(x.addRange(w),x.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),x.addRange(w))))),w=[];for(x=y;x=x.parentNode;)1===x.nodeType&&w.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(x=w[y]).element.scrollLeft=x.left,x.element.scrollTop=x.top}Zt=!!zr,$r=zr=null,e.current=n,Ql=r;do{try{for(y=e;null!==Ql;){var _=Ql.flags;if(36&_&&vl(y,Ql.alternate,Ql),128&_){w=void 0;var E=Ql.ref;if(null!==E){var S=Ql.stateNode;Ql.tag,w=S,"function"==typeof E?E(w):E.current=w}}Ql=Ql.nextEffect}}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);Ql=null,Ma(),Il=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Ql=r;null!==Ql;)t=Ql.nextEffect,Ql.nextEffect=null,8&Ql.flags&&((_=Ql).sibling=null,_.stateNode=null),Ql=t;if(0===(r=e.pendingLanes)&&(Kl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,_a&&"function"==typeof _a.onCommitFiberRoot)try{_a.onCommitFiberRoot(ka,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,Ua()),Yl)throw Yl=!1,e=Xl,Xl=null,e;return 0!=(8&Il)||Ga(),null}function Ls(){for(;null!==Ql;){var e=Ql.alternate;ds||null===cs||(0!=(8&Ql.flags)?Je(Ql,cs)&&(ds=!0):13===Ql.tag&&Ol(e,Ql)&&Je(Ql,cs)&&(ds=!0));var t=Ql.flags;0!=(256&t)&&gl(e,Ql),0==(512&t)||Jl||(Jl=!0,Wa(97,(function(){return Rs(),null}))),Ql=Ql.nextEffect}}function Rs(){if(90!==ts){var e=97<ts?97:ts;return ts=90,qa(e,Fs)}return!1}function js(e,t){ns.push(t,e),Jl||(Jl=!0,Wa(97,(function(){return Rs(),null})))}function Ms(e,t){rs.push(t,e),Jl||(Jl=!0,Wa(97,(function(){return Rs(),null})))}function Fs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Il))throw Error(i(331));var t=Il;Il|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Il=t,Ga(),!0}function Bs(e,t,n){co(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=ms(e,1))&&(Ut(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)Bs(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bs(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Kl||!Kl.has(r))){var a=pl(n,e=ul(t,e),1);if(co(n,a),a=fs(),null!==(n=ms(n,1)))Ut(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Kl||!Kl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function $s(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Al===e&&(Rl&n)===n&&(4===Fl||3===Fl&&(62914560&Rl)===Rl&&500>Ua()-ql?Es(e,0):Hl|=n),gs(e,t)}function Us(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===Ha()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=ms(e,t))&&(Ut(e,t,n),gs(e,n))}function Hs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Vs(e,t,n,r){return new Hs(e,t,n,r)}function qs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ws(e,t){var n=e.alternate;return null===n?((n=Vs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Gs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)qs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case E:return Zs(n.children,a,o,t);case j:l=8,a|=16;break;case S:l=8,a|=1;break;case C:return(e=Vs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case P:return(e=Vs(13,n,t,a)).type=P,e.elementType=P,e.lanes=o,e;case N:return(e=Vs(19,n,t,a)).elementType=N,e.lanes=o,e;case M:return Qs(n,a,o,t);case F:return(e=Vs(24,n,t,a)).elementType=F,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case O:l=9;break e;case D:l=11;break e;case I:l=14;break e;case A:l=16,r=null;break e;case L:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Vs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Zs(e,t,n,r){return(e=Vs(7,e,r,t)).lanes=n,e}function Qs(e,t,n,r){return(e=Vs(23,e,r,t)).elementType=M,e.lanes=n,e}function Ys(e,t,n){return(e=Vs(6,e,null,t)).lanes=n,e}function Xs(e,t,n){return(t=Vs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ks(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=$t(0),this.expirationTimes=$t(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=$t(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=fs(),l=ps(a);e:if(n){t:{if(Qe(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(ga(u)){n=ya(n,u,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),co(a,t),hs(a,l,o),l}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Ks(e,t,null!=n&&!0===n.hydrate),t=Vs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Nr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ou(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=eu(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=eu(i);s.call(e)}}xs((function(){Js(t,i,e,a)}))}return eu(i)}function iu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:_,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Zl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||pa.current)ji=!0;else{if(0==(n&r)){switch(ji=!1,t.tag){case 3:Wi(t),Go();break;case 5:Ro(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Ao(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ca(Xa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Ki(e,t,n):(ca(Mo,1&Mo.current),null!==(t=ol(e,t,n))?t.sibling:null);ca(Mo,1&Mo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ca(Mo,Mo.current),r)break;return null;case 23:case 24:return t.lanes=0,$i(e,t,n)}return ol(e,t,n)}ji=0!=(16384&e.flags)}else ji=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ma(t,fa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=vo,t.stateNode=a,a._reactInternals=t,xo(t,r,e,n),t=qi(null,t,r,!0,o,n)}else t.tag=0,Mi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return qs(e)?1:0;if(null!=e){if((e=e.$$typeof)===D)return 11;if(e===I)return 14}return 2}(a),e=Ya(a,e),o){case 0:t=Hi(null,t,a,e,n);break e;case 1:t=Vi(null,t,a,e,n);break e;case 11:t=Fi(null,t,a,e,n);break e;case 14:t=Bi(null,t,a,Ya(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 1:return r=t.type,a=t.pendingProps,Vi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 3:if(Wi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),po(t,r,null,n),(r=t.memoizedState.element)===a)Go(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Gr(t.stateNode.containerInfo.firstChild),Bo=t,o=$o=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Zo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Mi(e,t,r,n),Go();t=t.child}return t;case 5:return Ro(t),null===e&&Vo(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,Hr(r,a)?l=null:null!==o&&Hr(r,o)&&(t.flags|=16),Ui(e,t),Mi(e,t,l,n),t.child;case 6:return null===e&&Vo(t),null;case 13:return Ki(e,t,n);case 4:return Ao(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):Mi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Fi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 7:return Mi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Mi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ca(Xa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!pa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===s.tag&&((c=uo(-1,n&-n)).tag=2,co(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ro(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Mi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Mi(e,t,r,n),t.child;case 14:return o=Ya(a=t.type,t.pendingProps),Bi(e,t,a,o=Ya(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ya(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),xo(t,r,a,n),qi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return $i(e,t,n)}throw Error(i(156,t.tag))},ru.prototype.render=function(e){Js(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(hs(e,4,fs()),nu(e,4))},tt=function(e){13===e.tag&&(hs(e,67108864,fs()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=fs(),n=ps(e);hs(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));X(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Ie=ws,Ae=function(e,t,n,r,a){var o=Il;Il|=4;try{return qa(98,e.bind(null,t,n,r,a))}finally{0===(Il=o)&&(Gl(),Ga())}},Le=function(){0==(49&Il)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,Ua())}))}Ga()}(),Rs())},Re=function(e,t){var n=Il;Il|=2;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}};var lu={Events:[na,ra,aa,Pe,Ne,Rs,{current:!1}]},su={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:su.bundleType,version:su.version,rendererPackageName:su.rendererPackageName,rendererConfig:su.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:x.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ke(e))?null:e.stateNode},findFiberByHostInstance:su.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{ka=cu.inject(uu),_a=cu}catch(me){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lu,t.createPortal=iu,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(i(188));throw Error(i(268,Object.keys(e)))}return e=null===(e=Ke(t))?null:e.stateNode},t.flushSync=function(e,t){var n=Il;if(0!=(48&n))return e(t);Il|=1;try{if(e)return qa(99,e.bind(null,t))}finally{Il=n,Ga()}},t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!0,n)},t.render=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!au(e))throw Error(i(40));return!!e._reactRootContainer&&(xs((function(){ou(null,null,e,!1,(function(){e._reactRootContainer=null,e[Jr]=null}))})),!0)},t.unstable_batchedUpdates=ws,t.unstable_createPortal=function(e,t){return iu(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!au(n))throw Error(i(200));if(null==e||void 0===e._reactInternals)throw Error(i(38));return ou(e,t,n,!1,r)},t.version="17.0.2"},73935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(64448)},69590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},70405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>q,ql:()=>J});var r=n(67294),a=n(45697),o=n.n(a),i=n(69590),l=n.n(i),s=n(41143),u=n.n(s),c=n(96774),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function m(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),x={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},k=Object.keys(x).reduce((function(e,t){return e[x[t]]=t,e}),{}),_=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=_(e,g.TITLE),n=_(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=_(e,"defaultTitle");return t||r||void 0},S=function(e){return _(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},O=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},D=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},P=function(e){return Array.isArray(e)?e.join(""):e},N=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},I=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},A=[g.NOSCRIPT,g.SCRIPT,g.STYLE],L=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},R=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},j=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[x[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=x[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=j(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=R(n),o=P(t);return a?"<"+e+' data-rh="true" '+a+">"+L(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+L(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return j(t)},toString:function(){return R(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+L(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===A.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=N(e.metaTags,y),o=N(t,v),i=N(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(g.META,a.priority),M(g.LINK,o.priority),M(g.SCRIPT,i.priority))},toString:function(){return F(g.META,a.priority,r)+" "+F(g.LINK,o.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=h.priorityMethods,c=h.linkTags,d=h.metaTags,f=h.scriptTags}return{priority:p,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(g.LINK,c,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,o,r),script:F(g.SCRIPT,f,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),V="undefined"!=typeof document,q=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);q.canUseDOM=V,q.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},q.defaultProps={context:{}},q.displayName="HelmetProvider";var W=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},G=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Z=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;G(g.BODY,e.bodyAttributes),G(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),G(g.TITLE,t)}(c,d);var f={baseTag:W(g.BASE,n),linkTags:W(g.LINK,a),metaTags:W(g.META,o),noscriptTags:W(g.NOSCRIPT,i),scriptTags:W(g.SCRIPT,s),styleTags:W(g.STYLE,u)},p={},h={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(h[e]=f[e].oldTags)})),t&&t(),l(e,p,h)},Q=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:_(e,"defer"),encode:_(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:O(g.LINK,["rel","href"],e),metaTags:O(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:O(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:S(e),scriptTags:O(g.SCRIPT,["src","innerHTML"],e),styleTags:O(g.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:D(e,"prioritizeSeoTags")});q.canUseDOM?(t=o,Q&&cancelAnimationFrame(Q),t.defer?Q=requestAnimationFrame((function(){Z(t,(function(){Q=null}))})):(Z(t),Q=null)):B&&(a=B(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Y.propTypes={context:H.isRequired},Y.displayName="HelmetDispatcher";var X=["children"],K=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(I(this.props,"helmetData"),I(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=m(r,X),l=Object.keys(i).reduce((function(e,t){return e[k[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,K),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(Y,f({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(Y,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},69921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case m:case s:return e;default:return t}}case a:return t}}}function k(e){return x(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return k(e)||x(e)===c},t.isConcurrentMode=k,t.isContextConsumer=function(e){return x(e)===u},t.isContextProvider=function(e){return x(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return x(e)===f},t.isFragment=function(e){return x(e)===o},t.isLazy=function(e){return x(e)===g},t.isMemo=function(e){return x(e)===m},t.isPortal=function(e){return x(e)===a},t.isProfiler=function(e){return x(e)===l},t.isStrictMode=function(e){return x(e)===i},t.isSuspense=function(e){return x(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=x},59864:(e,t,n)=>{"use strict";e.exports=n(69921)},68356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(67294),s=n(45697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),m=null;function g(){return m||(m=e(h.loader)),m.promise}return u.push(g),"function"==typeof h.webpack&&c.push((function(){if((0,h.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),m=e(h.loader),r._loadModule()})),g(),r.state={error:m.error,pastDelay:!1,timedOut:!1,loading:m.loading,loaded:m.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(h.modules)&&h.modules.forEach((function(t){e.context.loadable.report(t)})),m.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),h.timeout));var n=function(){t({error:m.error,loaded:m.loaded,loading:m.loading}),e._clearTimeouts()};m.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function m(e){return h(d,e)}m.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),m.Capture=g,m.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},m.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=m},33199:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>M,hasTranslate3DSupport:()=>h,isTouch:()=>d,make2dTransformValue:()=>f,make3dTransformValue:()=>p});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};Object.create;Object.create;var i=n(67294),l="kvfysmfp",s="ufhsfnkm",u=".".concat(l,"{overflow:hidden;touch-action:none}.").concat(s,"{transform-origin: 0 0}"),c="undefined"==typeof window,d=function(){return!c&&("ontouchstart"in window||navigator.maxTouchPoints>0)},f=function(e){var t=e.x,n=e.y,r=e.scale;return"scale(".concat(r,") translate(").concat(t,"px, ").concat(n,"px)")},p=function(e){var t=e.x,n=e.y,r=e.scale;return"scale3d(".concat(r,",").concat(r,", 1) translate3d(").concat(t,"px, ").concat(n,"px, 0)")},h=function(){var e=!c&&window.CSS;return e&&e.supports&&e.supports("transform","translate3d(0,0,0)")},m=Math.min,g=Math.max;function v(e){var t=e.containerDimension,n=e.childDimension,r=e.padding,a=e.centerContained,o=n-t;return o+2*r<=0&&a?[o/2,o/2]:[m(o+r,0)-r,g(0,o+r)]}var b=function(e,t){return t?"".concat(e," ").concat(t):e},y=Math.abs,w=Math.min,x=Math.sqrt,k="undefined"==typeof window,_=!k&&/(Mac)/i.test(navigator.platform),E=function(e){return"drag"===e},S=function(e){return"zoom"===e},C=function(e){e.stopPropagation(),e.preventDefault()},T=function(e,t){var n=e.x-t.x,r=e.y-t.y;return x(n*n+r*r)},O=function(e){return-Math.cos(e*Math.PI)/2+.5},D=function(e){return{x:e.pageX,y:e.pageY}},P=function(e){return Array.from(e).map(D)},N=function(e,t){return e+t},I=function(e,t,n){return n<e?e:n>t?t:n},A=function(e){return!(e.ctrlKey||e.metaKey)},L=function(){},R={x:0,y:0},j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._prevDragMovePoint=null,t._containerObserver=null,t._fingers=0,t._firstMove=!0,t._initialOffset=o({},R),t._interaction=null,t._isDoubleTap=!1,t._isOffsetsSet=!1,t._lastDragPosition=null,t._lastScale=1,t._lastTouchStart=0,t._lastZoomCenter=null,t._listenMouseMove=!1,t._nthZoom=0,t._offset=o({},R),t._startOffset=o({},R),t._startTouches=null,t._updatePlaned=!1,t._wheelTimeOut=null,t._zoomFactor=1,t._initialZoomFactor=1,t._draggingPoint=o({},R),t._ignoreNextClick=!1,t._containerRef=i.createRef(),t._handleClick=function(e){t._ignoreNextClick&&(t._ignoreNextClick=!1,e.stopPropagation())},t._onResize=function(){var e;(null===(e=t._containerRef)||void 0===e?void 0:e.current)&&(t._updateInitialZoomFactor(),t._setupOffsets(),t._update())},t._handlerOnTouchEnd=t._handlerIfEnable((function(e){t._fingers=e.touches.length,t.props.shouldCancelHandledTouchEndEvents&&(S(t._interaction)||E(t._interaction)&&(t._startOffset.x!==t._offset.x||t._startOffset.y!==t._offset.y))&&C(e),E(t._interaction)&&!t._enoughToDrag()&&t._handleClick(e),t._updateInteraction(e)})),t._handlerOnTouchStart=t._handlerIfEnable((function(e){t._firstMove=!0,t._fingers=e.touches.length,t._detectDoubleTap(e)})),t._handlerOnTouchMove=t._handlerIfEnable((function(e){var n,r,a;t._isDoubleTap||(t._collectInertia(e),t._firstMove?(t._updateInteraction(e),t._interaction&&C(e),t._startOffset=o({},t._offset),t._startTouches=P(e.touches)):(S(t._interaction)?t._startTouches&&2===t._startTouches.length&&2===e.touches.length&&t._handleZoom(e,(n=t._startTouches,r=P(e.touches),a=T(n[0],n[1]),T(r[0],r[1])/a)):E(t._interaction)&&t._handleDrag(e),t._interaction&&(C(e),t._update())),t._firstMove=!1)})),t._handlerWheel=function(e){if(!t.props.shouldInterceptWheel(e)){C(e);var n=e.pageX,r=e.pageY,a=e.deltaY,o=e.deltaMode,i=1;(function(e){return _&&e.ctrlKey}(e)||1===o)&&(i=15);var l={touches:[{pageX:n,pageY:r}]},s=t._getOffsetByFirstTouch(l),u=a*i;t._stopAnimation(),t._scaleTo(t._zoomFactor-u/t.props.wheelScaleFactor,s),t._update(),clearTimeout(t._wheelTimeOut),t._wheelTimeOut=setTimeout((function(){return t._sanitize()}),100)}},t._handlers=t.props.isTouch()?[["touchstart",t._handlerOnTouchStart],["touchend",t._handlerOnTouchEnd],["touchmove",t._handlerOnTouchMove]]:[["mousemove",t.simulate(t._handlerOnTouchMove),t.props._document],["mouseup",t.simulate(t._handlerOnTouchEnd),t.props._document],["mousedown",t.simulate(t._handlerOnTouchStart)],["click",t._handleClick],["wheel",t._handlerWheel]],t}return a(t,e),t.prototype._handleDragStart=function(e){this._ignoreNextClick=!0,this.props.onDragStart(),this._stopAnimation(),this._resetInertia(),this._lastDragPosition=null,this._hasInteraction=!0,this._draggingPoint=this._offset,this._handleDrag(e)},t.prototype._handleDrag=function(e){var t=this._getOffsetByFirstTouch(e);this._enoughToDrag()?this._drag(t,this._lastDragPosition):this._virtualDrag(t,this._lastDragPosition),this._offset=this._sanitizeOffset(this._offset),this._lastDragPosition=t},t.prototype._resetInertia=function(){this._velocity=null,this._prevDragMovePoint=null},t.prototype._realizeInertia=function(){var e=this,t=this.props,n=t.inertiaFriction;if(t.inertia&&this._velocity){var r=this._velocity,a=r.x,i=r.y;if(a||i){this._stopAnimation(),this._resetInertia();this._animate((function(){if(i*=n,!(a*=n)&&!i)return e._stopAnimation();var t,r,l=o({},e._offset);if(e._addOffset({x:a,y:i}),e._offset=e._sanitizeOffset(e._offset),t=l,r=e._offset,t.x===r.x&&t.y===r.y)return e._stopAnimation();e._update({isAnimation:!0})}),{duration:9999})}}},t.prototype._collectInertia=function(e){var t=e.touches;if(this.props.inertia){var n,r,a=P(t)[0],o=this._prevDragMovePoint;o&&(this._velocity=(n=a,{x:(r=o).x-n.x,y:r.y-n.y})),this._prevDragMovePoint=a}},t.prototype._handleDragEnd=function(){this.props.onDragEnd(),this._end(),this._realizeInertia()},t.prototype._handleZoomStart=function(){this.props.onZoomStart(),this._stopAnimation(),this._lastScale=1,this._nthZoom=0,this._lastZoomCenter=null,this._hasInteraction=!0},t.prototype._handleZoom=function(e,t){var n,r={x:(n=this._getOffsetTouches(e)).map((function(e){return e.x})).reduce(N,0)/n.length,y:n.map((function(e){return e.y})).reduce(N,0)/n.length},a=t/this._lastScale;this._lastScale=t,this._nthZoom+=1,this._nthZoom>3&&(this._scale(a,r),this._drag(r,this._lastZoomCenter),this.props.enforceBoundsDuringZoom&&(this._offset=this._sanitizeOffset(this._offset))),this._lastZoomCenter=r},t.prototype._handleZoomEnd=function(){this.props.onZoomEnd(),this._end()},t.prototype._handleDoubleTap=function(e){var t=this;if(!this._hasInteraction&&0!==this.props.tapZoomFactor){var n=this.props.doubleTapZoomOutOnMaxScale&&this._zoomFactor===this.props.maxZoom||this.props.doubleTapToggleZoom&&this._zoomFactor>1;this.props.onDoubleTap(),this._ignoreNextClick=!0;var r=this._zoomFactor+this.props.tapZoomFactor,a=this._zoomFactor,o=this._getOffsetByFirstTouch(e);this._isDoubleTap=!0,a>r&&(o=this._getCurrentZoomCenter()),n?this._zoomOutAnimation():this._animate((function(e){t._scaleTo(a+e*(r-a),o)}))}},t.prototype._computeInitialOffset=function(){var e=this._getContainerRect(),t=this._getChildSize(),n=t.width,r=t.height,a=-y(n*this._getInitialZoomFactor()-e.width)/2,o=-y(r*this._getInitialZoomFactor()-e.height)/2;this._initialOffset={x:a,y:o}},t.prototype._resetOffset=function(){this._offset=o({},this._initialOffset)},t.prototype._setupOffsets=function(){this.props.setOffsetsOnce&&this._isOffsetsSet||(this._isOffsetsSet=!0,this._computeInitialOffset(),this._resetOffset())},t.prototype._sanitizeOffset=function(e){var t=this._getContainerRect(),n=this._getChildSize(),r=n.width,a=n.height,o=r*this._getInitialZoomFactor()*this._zoomFactor,i=a*this._getInitialZoomFactor()*this._zoomFactor,l=v({containerDimension:t.width,childDimension:o,padding:this.props.horizontalPadding,centerContained:this.props.centerContained}),s=l[0],u=l[1],c=v({containerDimension:t.height,childDimension:i,padding:this.props.verticalPadding,centerContained:this.props.centerContained}),d=c[0],f=c[1];return{x:I(s,u,e.x),y:I(d,f,e.y)}},t.prototype.alignCenter=function(e){var t=this,n=o({duration:250,animated:!0},e),r=n.x,a=n.y,i=n.scale,l=n.animated,s=n.duration,u=this._zoomFactor,c=o({},this._offset),d=this._getContainerRect(),f={x:d.width/2,y:d.height/2};if(this._zoomFactor=1,this._offset={x:-(f.x-r),y:-(f.y-a)},this._scaleTo(i,f),this._stopAnimation(),!l)return this._update();var p=this._zoomFactor-u,h=this._offset.x-c.x,m=this._offset.y-c.y;this._zoomFactor=u,this._offset=o({},c);this._animate((function(e){var n=c.x+h*e,r=c.y+m*e;t._zoomFactor=u+p*e,t._offset=t._sanitizeOffset({x:n,y:r}),t._update()}),{callback:function(){return t._sanitize()},duration:s})},t.prototype.scaleTo=function(e){var t=this,n=o({duration:250,animated:!0},e),r=n.x,a=n.y,i=n.scale,l=n.animated,s=n.duration,u=this._zoomFactor,c=o({},this._offset);if(this._zoomFactor=1,this._offset={x:0,y:0},this._scaleTo(i,{x:r,y:a}),this._stopAnimation(),!l)return this._update();var d=this._zoomFactor-u,f=this._offset.x-c.x,p=this._offset.y-c.y;this._zoomFactor=u,this._offset=o({},c);this._animate((function(e){var n=c.x+f*e,r=c.y+p*e;t._zoomFactor=u+d*e,t._offset={x:n,y:r},t._update()}),{callback:function(){return t._sanitize()},duration:s})},t.prototype._scaleTo=function(e,t){this._scale(e/this._zoomFactor,t),this._offset=this._sanitizeOffset(this._offset)},t.prototype._scale=function(e,t){e=this._scaleZoomFactor(e),this._addOffset({x:(e-1)*(t.x+this._offset.x),y:(e-1)*(t.y+this._offset.y)}),this.props.onZoomUpdate()},t.prototype._scaleZoomFactor=function(e){var t=this._zoomFactor;return this._zoomFactor*=e,this._zoomFactor=I(this.props.minZoom,this.props.maxZoom,this._zoomFactor),this._zoomFactor/t},t.prototype._canDrag=function(){return this.props.draggableUnZoomed||!((e=this._zoomFactor)>(t=1)-.01&&e<t+.01);var e,t},t.prototype._drag=function(e,t){if(t){var n=-(e.y-t.y),r=-(e.x-t.x);this.props.lockDragAxis?y(r)>y(n)?this._addOffset({x:r,y:0}):this._addOffset({y:n,x:0}):this._addOffset({x:r,y:n}),this.props.onDragUpdate()}},t.prototype._virtualDrag=function(e,t){if(t){var n=-(e.y-t.y),r=-(e.x-t.x);this._draggingPoint={x:r+this._draggingPoint.x,y:n+this._draggingPoint.y}}},t.prototype._addOffset=function(e){var t=this._offset,n=t.x,r=t.y;this._offset={x:n+e.x,y:r+e.y}},t.prototype._sanitize=function(){this._zoomFactor<this.props.zoomOutFactor?(this._resetInertia(),this._zoomOutAnimation()):this._isInsaneOffset()&&this._sanitizeOffsetAnimation()},t.prototype._isInsaneOffset=function(){var e=this._offset,t=this._sanitizeOffset(e);return t.x!==e.x||t.y!==e.y},t.prototype._sanitizeOffsetAnimation=function(){var e=this,t=this._sanitizeOffset(this._offset),n=o({},this._offset);this._animate((function(r){var a=n.x+r*(t.x-n.x),o=n.y+r*(t.y-n.y);e._offset={x:a,y:o},e._update()}))},t.prototype._zoomOutAnimation=function(){var e=this;if(1!==this._zoomFactor){var t=this._zoomFactor,n=this._getCurrentZoomCenter();this._animate((function(r){var a=t+r*(1-t);e._scaleTo(a,n)}))}},t.prototype._getInitialZoomFactor=function(){return this._initialZoomFactor},t.prototype._getCurrentZoomCenter=function(){var e=this._offset,t=e.x,n=e.y,r=t-this._initialOffset.x,a=n-this._initialOffset.y;return{x:-1*t-r/(1/this._zoomFactor-1),y:-1*n-a/(1/this._zoomFactor-1)}},t.prototype._getOffsetByFirstTouch=function(e){return this._getOffsetTouches(e)[0]},t.prototype._getOffsetTouches=function(e){var t=this.props._document,n=t.documentElement,r=t.body,a=this._getContainerRect(),o=a.top,i=a.left,l=n.scrollTop||r.scrollTop,s=n.scrollLeft||r.scrollLeft,u=o+l,c=i+s;return P(e.touches).map((function(e){var t=e.x,n=e.y;return{x:t-c,y:n-u}}))},t.prototype._animate=function(e,t){var n=this,r=(new Date).getTime(),a=o({timeFn:O,callback:function(){},duration:this.props.animationDuration},t),i=a.timeFn,l=a.callback,s=a.duration,u=function(){if(n._inAnimation){var t=(new Date).getTime()-r,a=t/s;t>=s?(e(1),n._stopAnimation(),l(),n._update()):(a=i(a),e(a),n._update({isAnimation:!0}),requestAnimationFrame(u))}};this._inAnimation=!0,requestAnimationFrame(u)},t.prototype._stopAnimation=function(){this._inAnimation=!1},t.prototype._end=function(){this._hasInteraction=!1,this._sanitize(),this._update()},t.prototype._getContainerRect=function(){return this._containerRef.current.getBoundingClientRect()},t.prototype._getChildSize=function(){var e=this._containerRef.current;return function(e){if(e){var t=e.offsetWidth,n=e.offsetHeight;if(t&&n)return{width:t,height:n};var r=getComputedStyle(e),a=parseFloat(r.width),o=parseFloat(r.height);if(o&&a)return{width:a,height:o}}return{width:0,height:0}}(null==e?void 0:e.firstElementChild)},t.prototype._updateInitialZoomFactor=function(){var e=this._getContainerRect(),t=this._getChildSize(),n=e.width/t.width,r=e.height/t.height;this._initialZoomFactor=w(n,r)},t.prototype._bindEvents=function(){var e=this,t=this._containerRef.current;window.ResizeObserver?(this._containerObserver=new ResizeObserver(this._onResize),this._containerObserver.observe(t)):window.addEventListener("resize",this._onResize),this._handlers.forEach((function(e){var n=e[0],r=e[1];(e[2]||t).addEventListener(n,r,!0)})),Array.from(t.querySelectorAll("img")).forEach((function(t){return t.addEventListener("load",e._onResize)}))},t.prototype._unSubscribe=function(){var e=this,t=this._containerRef.current;this._containerObserver&&(this._containerObserver.disconnect(),this._containerObserver=null),window.removeEventListener("resize",this._onResize),this._handlers.forEach((function(e){var n=e[0],r=e[1];(e[2]||t).removeEventListener(n,r,!0)})),Array.from(t.querySelectorAll("img")).forEach((function(t){return t.removeEventListener("load",e._onResize)}))},t.prototype._update=function(e){var t=this;if(!this._updatePlaned){var n=function(){var e=t._getInitialZoomFactor()*t._zoomFactor,n=-t._offset.x/e,r=-t._offset.y/e;t.props.onUpdate({scale:e,x:n,y:r})};if(null==e?void 0:e.isAnimation)return n();this._updatePlaned=!0,requestAnimationFrame((function(){t._updatePlaned=!1,n()}))}},t.prototype._handlerIfEnable=function(e){var t=this;return function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];t.props.enabled&&e.apply(void 0,n)}},t.prototype._setInteraction=function(e,t){var n=this._interaction;n!==e&&(n&&!e&&(S(n)?this._handleZoomEnd():E(n)&&this._handleDragEnd()),S(e)?this._handleZoomStart():E(e)&&this._handleDragStart(t)),this._interaction=e},t.prototype._distanceBetweenNumbers=function(e,t){return e>t?e-t:t-e},t.prototype._enoughToDrag=function(){return this._distanceBetweenNumbers(this._startOffset.x,this._draggingPoint.x)>5||this._distanceBetweenNumbers(this._startOffset.y,this._draggingPoint.y)>5},t.prototype._updateInteraction=function(e){var t=this._fingers;return 2===t?this._setInteraction("zoom",e):1===t&&this._canDrag()?this._setInteraction("drag",e):void this._setInteraction(null,e)},t.prototype._detectDoubleTap=function(e){var t=(new Date).getTime();this._fingers>1&&(this._lastTouchStart=0),t-this._lastTouchStart<300?(C(e),this._handleDoubleTap(e),S(this._interaction)?this._handleZoomEnd():E(this._interaction)&&this._handleDragEnd()):this._isDoubleTap=!1,1===this._fingers&&(this._lastTouchStart=t)},t.prototype.simulate=function(e){var t=this;return function(n){var r=n.pageX,a=n.pageY,o=n.type,i="mouseup"===o;"mousedown"===o&&(n.preventDefault(),t._listenMouseMove=!0),t._listenMouseMove&&(n.touches=i?[]:[{pageX:r,pageY:a}],e(n)),i&&(t._listenMouseMove=!1)}},t.prototype.componentDidMount=function(){this._bindEvents(),this._update()},t.prototype.componentWillUnmount=function(){this._stopAnimation(),this._unSubscribe()},t.prototype.render=function(){var e=this.props,t=e.children,n=e.containerProps,r=i.Children.only(t),a=n||{};return i.createElement(i.Fragment,null,i.createElement("style",null,u),i.createElement("div",o({},a,{ref:this._containerRef,className:b(l,a.className)}),i.cloneElement(r,{className:b(s,r.props.className)})))},t.defaultProps={animationDuration:250,draggableUnZoomed:!0,enforceBoundsDuringZoom:!1,centerContained:!1,enabled:!0,inertia:!0,inertiaFriction:.96,horizontalPadding:0,isTouch:d,lockDragAxis:!1,maxZoom:5,minZoom:.5,onDoubleTap:L,onDragEnd:L,onDragStart:L,onDragUpdate:L,onZoomEnd:L,onZoomStart:L,onZoomUpdate:L,setOffsetsOnce:!1,shouldInterceptWheel:A,shouldCancelHandledTouchEndEvents:!1,tapZoomFactor:1,verticalPadding:0,wheelScaleFactor:1500,zoomOutFactor:1.3,doubleTapZoomOutOnMaxScale:!1,doubleTapToggleZoom:!1,_document:k?null:window.document},t}(i.Component);const M=j},18790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(16550),a=n(87462),o=n(67294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},73727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(16550),a=n(75068),o=n(67294),i=n(42358),l=n(87462),s=n(63366),u=n(38776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},h=o.forwardRef;void 0===h&&(h=p);var m=h((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==h&&t||n,o.createElement("a",c)}));var g=h((function(e,t){var n=e.component,a=void 0===n?m:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",m=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==h?m.ref=t||v:m.innerRef=v,o.createElement(a,m)}))})),v=function(e){return e},b=o.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,h=e.className,m=e.exact,y=e.isActive,w=e.location,x=e.sensitive,k=e.strict,_=e.style,E=e.to,S=e.innerRef,C=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(E,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),O=T?(0,r.LX)(n.pathname,{path:T,exact:m,sensitive:x,strict:k}):null,D=!!(y?y(O,n):O),P="function"==typeof h?h(D):h,N="function"==typeof _?_(D):_;D&&(P=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(P,c),N=(0,l.Z)({},N,p));var I=(0,l.Z)({"aria-current":D&&a||null,className:P,style:N,to:i},C);return v!==b?I.ref=t||S:I.innerRef=S,o.createElement(g,I)}))}))},16550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>P,F0:()=>y,LX:()=>D,TH:()=>B,k6:()=>F,l_:()=>S,rs:()=>j,s6:()=>b});var r=n(75068),a=n(67294),o=n(45697),i=n.n(o),l=n(42358),s=n(38776),u=n(87462),c=n(39658),d=n.n(c),f=(n(59864),n(63366)),p=(n(8679),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var m=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=m();return t.displayName=e,t},v=g("Router-History"),b=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(v.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;var w=function(e){function t(){return e.apply(this,arguments)||this}(0,r.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(a.Component);var x={},k=1e4,_=0;function E(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(x[e])return x[e];var t=d().compile(e);return _<k&&(x[e]=t,_++),t}(e)(t,{pretty:!0})}function S(e){var t=e.computedMatch,n=e.to,r=e.push,o=void 0!==r&&r;return a.createElement(b.Consumer,null,(function(e){e||(0,s.Z)(!1);var r=e.history,i=e.staticContext,c=o?r.push:r.replace,d=(0,l.ob)(t?"string"==typeof n?E(n,t.params):(0,u.Z)({},n,{pathname:E(n.pathname,t.params)}):n);return i?(c(d),null):a.createElement(w,{onMount:function(){c(d)},onUpdate:function(e,t){var n=(0,l.ob)(t.to);(0,l.Hp)(n,(0,u.Z)({},d,{key:n.key}))||c(d)},to:n})}))}var C={},T=1e4,O=0;function D(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=C[n]||(C[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return O<T&&(r[e]=o,O++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce((function(e,t,n){return e[t.name]=f[n],e}),{})}}),null)}var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?D(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function N(e){return"/"===e.charAt(0)?e:"/"+e}function I(e,t){if(!e)return t;var n=N(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function A(e){return"string"==typeof e?e:(0,l.Ep)(e)}function L(e){return function(){(0,s.Z)(!1)}}function R(){}a.Component;var j=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?D(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var M=a.useContext;function F(){return M(v)}function B(){return M(b).location}},39658:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var h=e[i],m=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var x=null!=m&&null!=h&&h!==m,k="+"===y||"*"===y,_="?"===y||"*"===y,E=n[2]||c,S=v||b;r.push({name:g||o++,prefix:m||"",delimiter:E,optional:_,repeat:k,partial:x,asterisk:!!w,pattern:S?u(S):w?".*":"[^"+s(E)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var h=s(n.delimiter||"/"),m=i.slice(-h.length)===h;return a||(i=(m?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=o?"$":a&&m?"":"(?="+h+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},86718:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655).__importDefault(n(45503));t.default=function(e){return!e.prototype?r.default(e):e}},27162:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.divWrapper=void 0;var r=n(70655),a=r.__importStar(n(67294)),o=r.__importDefault(n(86718)),i=a.createElement,l=function(e,t,n,a){var o;return i(e,t?r.__assign(((o={})[t]=a,o),n):r.__assign(r.__assign({},a),n))};t.divWrapper=function(e,t,n,r){return i("div",null,l(e,t,n,r))};t.default=function(e,t,n){void 0===n&&(n=l);var r=function(a,l,s){void 0===l&&(l=t),void 0===s&&(s=null);var u="string"==typeof a;if(u)return function(e){return r(e,a||t,l)};var c=function(t){return i(e,s,(function(e){return n(a,l,t,e)}))};return u?o.default(c):c};return r}},3:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655).__importDefault(n(95364)),a=function(e){return[e]};t.default=function(e,t){return void 0===t&&(t=a),function(n){return r.default(n,e.apply(void 0,t(n)))}}},96260:(e,t,n)=>{"use strict";var r=n(70655);r.__importDefault(n(95364)).default,r.__importDefault(n(27162)).default,r.__importDefault(n(3)).default},95364:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655),a=n(67294),o=parseInt(a.version.substr(0,a.version.indexOf(".")))>15;t.default=function(e,t){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];var l=e.render,s=e.children,u=void 0===s?l:s,c=e.component,d=e.comp,f=void 0===d?c:d;return"function"==typeof u?u.apply(void 0,r.__spreadArrays([t],n)):f?a.createElement(f,t):u instanceof Array?o?u:a.createElement.apply(void 0,r.__spreadArrays(["div",null],u)):u&&u instanceof Object?"string"==typeof u.type?u:a.cloneElement(u,Object.assign({},u.props,t)):u||null}},45503:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655),a=r.__importStar(n(67294));t.default=function(e){var t=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n.prototype.render=function(){return e(this.props,this.context)},n}(a.Component);return t}},89164:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createBreakpoint:()=>Ae,createGlobalState:()=>xn,createMemo:()=>o,createReducer:()=>u,createReducerContext:()=>i,createStateContext:()=>c,ensuredForwardRef:()=>ue,useAsync:()=>h,useAsyncFn:()=>p,useAsyncRetry:()=>m,useAudio:()=>y,useBattery:()=>O,useBeforeUnload:()=>D,useBoolean:()=>I,useClickAway:()=>L,useCookie:()=>M,useCopyToClipboard:()=>z,useCounter:()=>q,useCss:()=>J,useCustomCompareEffect:()=>ee,useDebounce:()=>ne,useDeepCompareEffect:()=>re,useDefault:()=>ae,useDrop:()=>oe,useDropArea:()=>ie,useEffectOnce:()=>le,useEnsuredForwardedRef:()=>se,useError:()=>he,useEvent:()=>pe,useFavicon:()=>me,useFirstMountState:()=>l,useFullscreen:()=>be,useGeolocation:()=>ye,useGetSet:()=>V,useGetSetState:()=>we,useHarmonicIntervalFn:()=>_e,useHash:()=>kn,useHover:()=>Se,useHoverDirty:()=>Ce,useIdle:()=>De,useIntersection:()=>Pe,useInterval:()=>Ne,useIsomorphicLayoutEffect:()=>Y,useKey:()=>Ie,useKeyPress:()=>Le,useKeyPressEvent:()=>Re,useLatest:()=>je,useLifecycles:()=>Me,useList:()=>Fe,useLocalStorage:()=>Be,useLocation:()=>He,useLockBodyScroll:()=>Ye,useLogger:()=>Xe,useLongPress:()=>Je,useMap:()=>et,useMeasure:()=>gn,useMedia:()=>tt,useMediaDevices:()=>nt,useMediatedState:()=>rt,useMethods:()=>at,useMotion:()=>it,useMount:()=>lt,useMountedState:()=>f,useMouse:()=>ct,useMouseHovered:()=>ft,useMouseWheel:()=>pt,useMultiStateValidator:()=>fn,useNetworkState:()=>vt,useNumber:()=>bt,useObservable:()=>yt,useOrientation:()=>xt,usePageLeave:()=>kt,usePermission:()=>_t,usePinchZoom:()=>bn,usePrevious:()=>Et,usePreviousDistinct:()=>Ct,usePromise:()=>Tt,useQueue:()=>Ot,useRaf:()=>Dt,useRafLoop:()=>Pt,useRafState:()=>ut,useRendersCount:()=>yn,useScratch:()=>Lt,useScroll:()=>Rt,useScrollbarWidth:()=>dn,useScrolling:()=>jt,useSearchParam:()=>It,useSessionStorage:()=>Mt,useSet:()=>wn,useSetState:()=>g,useShallowCompareEffect:()=>zt,useSize:()=>Vt,useSlider:()=>qt,useSpeech:()=>Gt,useStartTyping:()=>Zt,useStateList:()=>Yt,useStateValidator:()=>un,useStateWithHistory:()=>Qt,useThrottle:()=>Xt,useThrottleFn:()=>Kt,useTimeout:()=>Jt,useTimeoutFn:()=>te,useTitle:()=>tn,useToggle:()=>N,useTween:()=>rn,useUnmount:()=>st,useUnmountPromise:()=>an,useUpdate:()=>U,useUpdateEffect:()=>s,useUpsert:()=>on,useVibrate:()=>ln,useVideo:()=>sn,useWindowScroll:()=>pn,useWindowSize:()=>hn});var r=n(67294),a=n.t(r,2);const o=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return(0,r.useMemo)((function(){return e.apply(void 0,t)}),t)}};const i=function(e,t){var n=(0,r.createContext)(void 0);return[function(){var e=(0,r.useContext)(n);if(null==e)throw new Error("useReducerContext must be used inside a ReducerProvider.");return e},function(a){var o=a.children,i=a.initialState;return function(e,t){return(0,r.createElement)(n.Provider,e,t)}({value:(0,r.useReducer)(e,void 0!==i?i:t)},o)},n]};function l(){var e=(0,r.useRef)(!0);return e.current?(e.current=!1,!0):e.current}const s=function(e,t){var n=l();(0,r.useEffect)((function(){if(!n)return e()}),t)};const u=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n,a=(n=e,function(e,t){return n.reduceRight((function(t,n){return n(e)(t)}),t)});return function(e,t,n){void 0===n&&(n=function(e){return e});var o=(0,r.useRef)(n(t)),i=(0,r.useState)(o.current)[1],l=(0,r.useCallback)((function(t){return o.current=e(o.current,t),i(o.current),t}),[e]),u=(0,r.useRef)(a({getState:function(){return o.current},dispatch:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return u.current.apply(u,e)}},l));return s((function(){u.current=a({getState:function(){return o.current},dispatch:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return u.current.apply(u,e)}},l)}),[l]),[o.current,u.current]}};const c=function(e){var t=(0,r.createContext)(void 0);return[function(){var e=(0,r.useContext)(t);if(null==e)throw new Error("useStateContext must be used inside a StateProvider.");return e},function(n){var a=n.children,o=n.initialValue;return function(e,n){return(0,r.createElement)(t.Provider,e,n)}({value:(0,r.useState)(void 0!==o?o:e)},a)},t]};var d=n(70655);function f(){var e=(0,r.useRef)(!1),t=(0,r.useCallback)((function(){return e.current}),[]);return(0,r.useEffect)((function(){return e.current=!0,function(){e.current=!1}}),[]),t}function p(e,t,n){void 0===t&&(t=[]),void 0===n&&(n={loading:!1});var a=(0,r.useRef)(0),o=f(),i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=++a.current;return l.loading||s((function(e){return(0,d.__assign)((0,d.__assign)({},e),{loading:!0})})),e.apply(void 0,t).then((function(e){return o()&&r===a.current&&s({value:e,loading:!1}),e}),(function(e){return o()&&r===a.current&&s({error:e,loading:!1}),e}))}),t);return[l,u]}function h(e,t){void 0===t&&(t=[]);var n=p(e,t,{loading:!0}),a=n[0],o=n[1];return(0,r.useEffect)((function(){o()}),[o]),a}const m=function(e,t){void 0===t&&(t=[]);var n=(0,r.useState)(0),a=n[0],o=n[1],i=h(e,(0,d.__spreadArrays)(t,[a])),l=i.loading,s=(0,r.useCallback)((function(){l||o((function(e){return e+1}))}),(0,d.__spreadArrays)(t,[l]));return(0,d.__assign)((0,d.__assign)({},i),{retry:s})};const g=function(e){void 0===e&&(e={});var t=(0,r.useState)(e),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(e){a((function(t){return Object.assign({},t,e instanceof Function?e(t):e)}))}),[])]};function v(e){for(var t=[],n=0;n<e.length;n++)t.push({start:e.start(n),end:e.end(n)});return t}function b(e){return function(t){var n,a;a=r.isValidElement(t)?(n=t).props:t;var o=g({buffered:[],time:0,duration:0,paused:!0,muted:!1,volume:1,playing:!1}),i=o[0],l=o[1],s=(0,r.useRef)(null),u=function(e,t){return function(n){try{t&&t(n)}finally{e&&e(n)}}},c=function(){return l({paused:!1})},f=function(){return l({playing:!0})},p=function(){return l({playing:!1})},h=function(){return l({paused:!0,playing:!1})},m=function(){var e=s.current;e&&l({muted:e.muted,volume:e.volume})},b=function(){var e=s.current;if(e){var t=e.duration,n=e.buffered;l({duration:t,buffered:v(n)})}},y=function(){var e=s.current;e&&l({time:e.currentTime})},w=function(){var e=s.current;e&&l({buffered:v(e.buffered)})};n=n?r.cloneElement(n,(0,d.__assign)((0,d.__assign)({controls:!1},a),{ref:s,onPlay:u(a.onPlay,c),onPlaying:u(a.onPlaying,f),onWaiting:u(a.onWaiting,p),onPause:u(a.onPause,h),onVolumeChange:u(a.onVolumeChange,m),onDurationChange:u(a.onDurationChange,b),onTimeUpdate:u(a.onTimeUpdate,y),onProgress:u(a.onProgress,w)})):r.createElement(e,(0,d.__assign)((0,d.__assign)({controls:!1},a),{ref:s,onPlay:u(a.onPlay,c),onPlaying:u(a.onPlaying,f),onWaiting:u(a.onWaiting,p),onPause:u(a.onPause,h),onVolumeChange:u(a.onVolumeChange,m),onDurationChange:u(a.onDurationChange,b),onTimeUpdate:u(a.onTimeUpdate,y),onProgress:u(a.onProgress,w)}));var x=!1,k={play:function(){var e=s.current;if(e&&!x){var t=e.play();if("object"==typeof t){x=!0;var n=function(){x=!1};t.then(n,n)}return t}},pause:function(){var e=s.current;if(e&&!x)return e.pause()},seek:function(e){var t=s.current;t&&void 0!==i.duration&&(e=Math.min(i.duration,Math.max(0,e)),t.currentTime=e)},volume:function(e){var t=s.current;t&&(e=Math.min(1,Math.max(0,e)),t.volume=e,l({volume:e}))},mute:function(){var e=s.current;e&&(e.muted=!0)},unmute:function(){var e=s.current;e&&(e.muted=!1)}};return(0,r.useEffect)((function(){var e=s.current;e&&(l({volume:e.volume,muted:e.muted,paused:e.paused}),a.autoPlay&&e.paused&&k.play())}),[a.src]),[n,i,k,s]}}const y=b("audio");var w=function(){};function x(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e&&e.addEventListener&&e.addEventListener.apply(e,t)}function k(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e&&e.removeEventListener&&e.removeEventListener.apply(e,t)}var _="undefined"!=typeof window,E="undefined"!=typeof navigator,S=n(38252);const C=n.n(S)();var T=E?navigator:void 0;const O=T&&"function"==typeof T.getBattery?function(){var e=(0,r.useState)({isSupported:!0,fetched:!1}),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=!0,r=null,a=function(){if(e&&r){var a={isSupported:!0,fetched:!0,level:r.level,charging:r.charging,dischargingTime:r.dischargingTime,chargingTime:r.chargingTime};!C(t,a)&&n(a)}};return T.getBattery().then((function(t){e&&(x(r=t,"chargingchange",a),x(r,"chargingtimechange",a),x(r,"dischargingtimechange",a),x(r,"levelchange",a),a())})),function(){e=!1,r&&(k(r,"chargingchange",a),k(r,"chargingtimechange",a),k(r,"dischargingtimechange",a),k(r,"levelchange",a))}}),[]),t}:function(){return{isSupported:!1}};const D=function(e,t){void 0===e&&(e=!0);var n=(0,r.useCallback)((function(n){if("function"!=typeof e||e())return n.preventDefault(),t&&(n.returnValue=t),t}),[e,t]);(0,r.useEffect)((function(){if(e)return x(window,"beforeunload",n),function(){return k(window,"beforeunload",n)}}),[e,n])};var P=function(e,t){return"boolean"==typeof t?t:!e};const N=function(e){return(0,r.useReducer)(P,e)},I=N;var A=["mousedown","touchstart"];const L=function(e,t,n){void 0===n&&(n=A);var a=(0,r.useRef)(t);(0,r.useEffect)((function(){a.current=t}),[t]),(0,r.useEffect)((function(){for(var t=function(t){var n=e.current;n&&!n.contains(t.target)&&a.current(t)},r=0,o=n;r<o.length;r++){var i=o[r];x(document,i,t)}return function(){for(var e=0,r=n;e<r.length;e++){var a=r[e];k(document,a,t)}}}),[n,e])};var R=n(36808),j=n.n(R);const M=function(e){var t=(0,r.useState)((function(){return j().get(e)||null})),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(t,n){j().set(e,t,n),a(t)}),[e]),(0,r.useCallback)((function(){j().remove(e),a(null)}),[e])]};var F=n(20640),B=n.n(F);const z=function(){var e=f(),t=g({value:void 0,error:void 0,noUserInteraction:!0}),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(t){var n,r;if(e())try{if("string"!=typeof t&&"number"!=typeof t){var o=new Error("Cannot copy typeof "+typeof t+" to clipboard, must be a string");return void a({value:t,error:o,noUserInteraction:!0})}if(""===t){o=new Error("Cannot copy empty string to clipboard.");return void a({value:t,error:o,noUserInteraction:!0})}r=t.toString(),n=B()(r),a({value:r,error:void 0,noUserInteraction:n})}catch(o){a({value:r,error:o,noUserInteraction:n})}}),[])]};var $=function(e){return(e+1)%1e6};function U(){return(0,r.useReducer)($,0)[1]}function H(e,t){return"function"==typeof e?e.length?e(t):e():e}function V(e){var t=(0,r.useRef)(H(e)),n=U();return(0,r.useMemo)((function(){return[function(){return t.current},function(e){t.current=H(e,t.current),n()}]}),[])}function q(e,t,n){void 0===e&&(e=0),void 0===t&&(t=null),void 0===n&&(n=null);var a=H(e);"number"!=typeof a&&console.error("initialValue has to be a number, got "+typeof e),"number"==typeof n?a=Math.max(a,n):null!==n&&console.error("min has to be a number, got "+typeof n),"number"==typeof t?a=Math.min(a,t):null!==t&&console.error("max has to be a number, got "+typeof t);var o=V(a),i=o[0],l=o[1];return[i(),(0,r.useMemo)((function(){var e=function(e){var r=i(),a=H(e,r);r!==a&&("number"==typeof n&&(a=Math.max(a,n)),"number"==typeof t&&(a=Math.min(a,t)),r!==a&&l(a))};return{get:i,set:e,inc:function(t){void 0===t&&(t=1);var n=H(t,i());"number"!=typeof n&&console.error("delta has to be a number or function returning a number, got "+typeof n),e((function(e){return e+n}))},dec:function(t){void 0===t&&(t=1);var n=H(t,i());"number"!=typeof n&&console.error("delta has to be a number or function returning a number, got "+typeof n),e((function(e){return e-n}))},reset:function(t){void 0===t&&(t=a);var n=H(t,i());"number"!=typeof n&&console.error("value has to be a number or function returning a number, got "+typeof n),a=n,e(n)}}}),[a,n,t])]}var W=n(40818),G=n(97142),Z=n(52099),Q=n(87749);const Y=_?r.useLayoutEffect:r.useEffect;var X=(0,W.U)();(0,G.I)(X),(0,Z.I)(X);var K=0;const J=function(e){var t=(0,r.useMemo)((function(){return"react-use-css-"+(K++).toString(36)}),[]),n=(0,r.useMemo)((function(){return new X.VSheet}),[]);return Y((function(){var r={};return(0,Q.z)(r,e,"."+t,""),n.diff(r),function(){n.diff({})}})),t};const ee=function(e,t,n){var a=(0,r.useRef)(void 0);a.current&&n(t,a.current)||(a.current=t),(0,r.useEffect)(e,a.current)};function te(e,t){void 0===t&&(t=0);var n=(0,r.useRef)(!1),a=(0,r.useRef)(),o=(0,r.useRef)(e),i=(0,r.useCallback)((function(){return n.current}),[]),l=(0,r.useCallback)((function(){n.current=!1,a.current&&clearTimeout(a.current),a.current=setTimeout((function(){n.current=!0,o.current()}),t)}),[t]),s=(0,r.useCallback)((function(){n.current=null,a.current&&clearTimeout(a.current)}),[]);return(0,r.useEffect)((function(){o.current=e}),[e]),(0,r.useEffect)((function(){return l(),s}),[t]),[i,s,l]}function ne(e,t,n){void 0===t&&(t=0),void 0===n&&(n=[]);var a=te(e,t),o=a[0],i=a[1],l=a[2];return(0,r.useEffect)(l,n),[o,i]}const re=function(e,t){ee(e,t,C)};const ae=function(e,t){var n=(0,r.useState)(t),a=n[0],o=n[1];return null==a?[e,o]:[a,o]};const oe=function(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);var n=e.onFiles,a=e.onText,o=e.onUri,i=(0,r.useState)(!1),l=i[0],s=i[1],u=(0,r.useCallback)(s,[]),c=(0,r.useMemo)((function(){return function(e){return function(t,n){var r=t.getData("text/uri-list");if(r)(e.onUri||w)(r,n);else if(t.files&&t.files.length)(e.onFiles||w)(Array.from(t.files),n);else if(n.clipboardData){var a=n.clipboardData.getData("text");(e.onText||w)(a,n)}}}(e)}),[n,a,o]);return(0,r.useEffect)((function(){var e=function(e){e.preventDefault(),u(!0)},t=function(e){e.preventDefault(),u(!0)},n=function(){u(!1)},r=function(){u(!1)},o=function(e){e.preventDefault(),u(!1),c(e.dataTransfer,e)},i=function(e){c(e.clipboardData,e)};return x(document,"dragover",e),x(document,"dragenter",t),x(document,"dragleave",n),x(document,"dragexit",r),x(document,"drop",o),a&&x(document,"paste",i),function(){k(document,"dragover",e),k(document,"dragenter",t),k(document,"dragleave",n),k(document,"dragexit",r),k(document,"drop",o),k(document,"paste",i)}}),(0,d.__spreadArrays)([c],t)),{over:l}};const ie=function(e){void 0===e&&(e={});var t=e.onFiles,n=e.onText,a=e.onUri,o=f(),i=(0,r.useState)(!1),l=i[0],s=i[1],u=(0,r.useMemo)((function(){return function(e,t){return function(n,r){var a=n.getData("text/uri-list");a?(e.onUri||w)(a,r):n.files&&n.files.length?(e.onFiles||w)(Array.from(n.files),r):n.items&&n.items.length&&n.items[0].getAsString((function(n){t&&(e.onText||w)(n,r)}))}}(e,o())}),[t,n,a]),c=(0,r.useMemo)((function(){return function(e,t){return{onDragOver:function(e){e.preventDefault()},onDragEnter:function(e){e.preventDefault(),t(!0)},onDragLeave:function(){t(!1)},onDrop:function(n){n.preventDefault(),n.persist(),t(!1),e(n.dataTransfer,n)},onPaste:function(t){t.persist(),e(t.clipboardData,t)}}}(u,s)}),[u,s]);return[c,{over:l}]};const le=function(e){(0,r.useEffect)(e,[])};function se(e){var t=(0,r.useRef)(e&&e.current);return(0,r.useEffect)((function(){e&&(e.current=t.current)}),[e]),t}function ue(e){return(0,r.forwardRef)((function(t,n){var r=se(n);return e(t,r)}))}var ce=_?window:null,de=function(e){return!!e.addEventListener},fe=function(e){return!!e.on};const pe=function(e,t,n,a){void 0===n&&(n=ce),(0,r.useEffect)((function(){if(t&&n)return de(n)?x(n,e,t,a):fe(n)&&n.on(e,t,a),function(){de(n)?k(n,e,t,a):fe(n)&&n.off(e,t,a)}}),[e,t,n,JSON.stringify(a)])};const he=function(){var e=(0,r.useState)(null),t=e[0],n=e[1];return(0,r.useEffect)((function(){if(t)throw t}),[t]),(0,r.useCallback)((function(e){n(e)}),[])};const me=function(e){(0,r.useEffect)((function(){var t=document.querySelector("link[rel*='icon']")||document.createElement("link");t.type="image/x-icon",t.rel="shortcut icon",t.href=e,document.getElementsByTagName("head")[0].appendChild(t)}),[e])};var ge=n(10577),ve=n.n(ge);const be=function(e,t,n){void 0===n&&(n={});var a=n.video,o=n.onClose,i=void 0===o?w:o,l=(0,r.useState)(t),s=l[0],u=l[1];return Y((function(){if(t&&e.current){var n=function(){(null==a?void 0:a.current)&&k(a.current,"webkitendfullscreen",n),i()},r=function(){if(ve().isEnabled){var e=ve().isFullscreen;u(e),e||i()}};if(ve().isEnabled){try{ve().request(e.current),u(!0)}catch(l){i(l),u(!1)}ve().on("change",r)}else a&&a.current&&a.current.webkitEnterFullscreen?(a.current.webkitEnterFullscreen(),x(a.current,"webkitendfullscreen",n),u(!0)):(i(),u(!1));return function(){if(u(!1),ve().isEnabled)try{ve().off("change",r),ve().exit()}catch(o){}else a&&a.current&&a.current.webkitExitFullscreen&&(k(a.current,"webkitendfullscreen",n),a.current.webkitExitFullscreen())}}}),[t,a,e]),s};const ye=function(e){var t,n=(0,r.useState)({loading:!0,accuracy:null,altitude:null,altitudeAccuracy:null,heading:null,latitude:null,longitude:null,speed:null,timestamp:Date.now()}),a=n[0],o=n[1],i=!0,l=function(e){i&&o({loading:!1,accuracy:e.coords.accuracy,altitude:e.coords.altitude,altitudeAccuracy:e.coords.altitudeAccuracy,heading:e.coords.heading,latitude:e.coords.latitude,longitude:e.coords.longitude,speed:e.coords.speed,timestamp:e.timestamp})},s=function(e){return i&&o((function(t){return(0,d.__assign)((0,d.__assign)({},t),{loading:!1,error:e})}))};return(0,r.useEffect)((function(){return navigator.geolocation.getCurrentPosition(l,s,e),t=navigator.geolocation.watchPosition(l,s,e),function(){i=!1,navigator.geolocation.clearWatch(t)}}),[]),a};const we=function(e){void 0===e&&(e={});var t=U(),n=(0,r.useRef)((0,d.__assign)({},e));return[(0,r.useCallback)((function(){return n.current}),[]),(0,r.useCallback)((function(e){e&&(Object.assign(n.current,e),t())}),[])]};var xe=0,ke={};const _e=function(e,t){void 0===t&&(t=0);var n=(0,r.useRef)((function(){}));(0,r.useEffect)((function(){n.current=e})),(0,r.useEffect)((function(){if(null!==t){var e=function(e,t){var n,r=xe++;if(ke[t])ke[t].listeners[r]=e;else{var a=setInterval((function(){for(var e,n=ke[t].listeners,r=!1,a=0,o=Object.values(n);a<o.length;a++){var i=o[a];try{i()}catch(l){r=!0,e=l}}if(r)throw e}),t);ke[t]={ms:t,timer:a,listeners:(n={},n[r]=e,n)}}return{bucket:ke[t],id:r}}((function(){return n.current()}),t);return function(){return function(e){var t=e.bucket,n=e.id;delete t.listeners[n];var r=!1;for(var a in t.listeners){r=!0;break}r||(clearInterval(t.timer),delete ke[t.ms])}(e)}}}),[t])};var Ee=r.useState;const Se=function(e){var t,n,a=Ee(!1),o=a[0],i=a[1];return"function"==typeof e&&(e=e(o)),[r.cloneElement(e,{onMouseEnter:(n=e.props.onMouseEnter,function(e){(n||w)(e),i(!0)}),onMouseLeave:(t=e.props.onMouseLeave,function(e){(t||w)(e),i(!1)})}),o]};const Ce=function(e,t){void 0===t&&(t=!0);var n=(0,r.useState)(!1),a=n[0],o=n[1];return(0,r.useEffect)((function(){var n=function(){return o(!0)},r=function(){return o(!1)};t&&e&&e.current&&(x(e.current,"mouseover",n),x(e.current,"mouseout",r));var a=e.current;return function(){t&&a&&(k(a,"mouseover",n),k(a,"mouseout",r))}}),[t,e]),a};function Te(e,t,n,r){var a,o=!1,i=0;function l(){a&&clearTimeout(a)}function s(){for(var s=arguments.length,u=new Array(s),c=0;c<s;c++)u[c]=arguments[c];var d=this,f=Date.now()-i;function p(){i=Date.now(),n.apply(d,u)}o||(r&&!a&&p(),l(),void 0===r&&f>e?p():!0!==t&&(a=setTimeout(r?function(){a=void 0}:p,void 0===r?e-f:e)))}return"boolean"!=typeof t&&(r=n,n=t,t=void 0),s.cancel=function(){l(),o=!0},s}var Oe=["mousemove","mousedown","resize","keydown","touchstart","wheel"];const De=function(e,t,n){void 0===e&&(e=6e4),void 0===t&&(t=!1),void 0===n&&(n=Oe);var a=(0,r.useState)(t),o=a[0],i=a[1];return(0,r.useEffect)((function(){for(var t,r=!0,a=o,l=function(e){r&&(a=e,i(e))},s=Te(50,(function(){a&&l(!1),clearTimeout(t),t=setTimeout((function(){return l(!0)}),e)})),u=function(){document.hidden||s()},c=0;c<n.length;c++)x(window,n[c],s);return x(document,"visibilitychange",u),t=setTimeout((function(){return l(!0)}),e),function(){r=!1;for(var e=0;e<n.length;e++)k(window,n[e],s);k(document,"visibilitychange",u)}}),[e,n]),o};const Pe=function(e,t){var n=(0,r.useState)(null),a=n[0],o=n[1];return(0,r.useEffect)((function(){if(e.current&&"function"==typeof IntersectionObserver){var n=new IntersectionObserver((function(e){o(e[0])}),t);return n.observe(e.current),function(){o(null),n.disconnect()}}return function(){}}),[e.current,t.threshold,t.root,t.rootMargin]),a};const Ne=function(e,t){var n=(0,r.useRef)((function(){}));(0,r.useEffect)((function(){n.current=e})),(0,r.useEffect)((function(){if(null!==t){var e=setInterval((function(){return n.current()}),t||0);return function(){return clearInterval(e)}}}),[t])};const Ie=function(e,t,n,a){void 0===t&&(t=w),void 0===n&&(n={}),void 0===a&&(a=[e]);var o=n.event,i=void 0===o?"keydown":o,l=n.target,s=n.options,u=(0,r.useMemo)((function(){var n,r="function"==typeof(n=e)?n:"string"==typeof n?function(e){return e.key===n}:n?function(){return!0}:function(){return!1};return function(e){if(r(e))return t(e)}}),a);pe(i,u,l,s)};const Ae=function(e){return void 0===e&&(e={laptopL:1440,laptop:1024,tablet:768}),function(){var t=(0,r.useState)(_?window.innerWidth:0),n=t[0],a=t[1];(0,r.useEffect)((function(){var e=function(){a(window.innerWidth)};return e(),x(window,"resize",e),function(){k(window,"resize",e)}}));var o=(0,r.useMemo)((function(){return Object.entries(e).sort((function(e,t){return e[1]>=t[1]?1:-1}))}),[e]),i=o.reduce((function(e,t){var r=t[0],a=t[1];return n>=a?r:e}),o[0][0]);return i}};const Le=function(e){var t=(0,r.useState)([!1,null]),n=t[0],a=t[1];return Ie(e,(function(e){return a([!0,e])}),{event:"keydown"},[n]),Ie(e,(function(e){return a([!1,e])}),{event:"keyup"},[n]),n};const Re=function(e,t,n,r){void 0===r&&(r=Le);var a=r(e),o=a[0],i=a[1];s((function(){!o&&n?n(i):o&&t&&t(i)}),[o])};const je=function(e){var t=(0,r.useRef)(e);return t.current=e,t};const Me=function(e,t){(0,r.useEffect)((function(){return e&&e(),function(){t&&t()}}),[])};const Fe=function(e){void 0===e&&(e=[]);var t=(0,r.useRef)(H(e)),n=U(),a=(0,r.useMemo)((function(){var r={set:function(e){t.current=H(e,t.current),n()},push:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];e.length&&a.set((function(t){return t.concat(e)}))},updateAt:function(e,t){a.set((function(n){var r=n.slice();return r[e]=t,r}))},insertAt:function(e,t){a.set((function(n){var r=n.slice();return e>r.length?r[e]=t:r.splice(e,0,t),r}))},update:function(e,t){a.set((function(n){return n.map((function(n){return e(n,t)?t:n}))}))},updateFirst:function(e,n){var r=t.current.findIndex((function(t){return e(t,n)}));r>=0&&a.updateAt(r,n)},upsert:function(e,n){var r=t.current.findIndex((function(t){return e(t,n)}));r>=0?a.updateAt(r,n):a.push(n)},sort:function(e){a.set((function(t){return t.slice().sort(e)}))},filter:function(e,t){a.set((function(n){return n.slice().filter(e,t)}))},removeAt:function(e){a.set((function(t){var n=t.slice();return n.splice(e,1),n}))},clear:function(){a.set([])},reset:function(){a.set(H(e).slice())}};return r.remove=r.removeAt,r}),[]);return[t.current,a]};const Be=function(e,t,n){if(!_)return[t,w,w];if(!e)throw new Error("useLocalStorage key may not be falsy");var a=n?n.raw?function(e){return e}:n.deserializer:JSON.parse,o=(0,r.useRef)((function(e){try{var r=n?n.raw?String:n.serializer:JSON.stringify,o=localStorage.getItem(e);return null!==o?a(o):(t&&localStorage.setItem(e,r(t)),t)}catch(i){return t}})),i=(0,r.useState)((function(){return o.current(e)})),l=i[0],s=i[1];(0,r.useLayoutEffect)((function(){return s(o.current(e))}),[e]);var u=(0,r.useCallback)((function(t){try{var r="function"==typeof t?t(l):t;if(void 0===r)return;var o=void 0;o=n?n.raw?"string"==typeof r?r:JSON.stringify(r):n.serializer?n.serializer(r):JSON.stringify(r):JSON.stringify(r),localStorage.setItem(e,o),s(a(o))}catch(i){}}),[e,s]),c=(0,r.useCallback)((function(){try{localStorage.removeItem(e),s(void 0)}catch(i){}}),[e,s]);return[l,u,c]};var ze=function(e){var t=window.history,n=t[e];t[e]=function(t){var r=n.apply(this,arguments),a=new Event(e.toLowerCase());return a.state=t,window.dispatchEvent(a),r}};_&&(ze("pushState"),ze("replaceState"));var $e=function(e){var t=window.history,n=t.state,r=t.length,a=window.location;return{trigger:e,state:n,length:r,hash:a.hash,host:a.host,hostname:a.hostname,href:a.href,origin:a.origin,pathname:a.pathname,port:a.port,protocol:a.protocol,search:a.search}},Ue="function"==typeof Event;const He=_&&Ue?function(){var e=(0,r.useState)($e("load")),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(){return n($e("popstate"))},t=function(){return n($e("pushstate"))},r=function(){return n($e("replacestate"))};return x(window,"popstate",e),x(window,"pushstate",t),x(window,"replacestate",r),function(){k(window,"popstate",e),k(window,"pushstate",t),k(window,"replacestate",r)}}),[]),t}:function(){return{trigger:"load",length:1}};function Ve(e){if(!e)return null;if("BODY"===e.tagName)return e;if("IFRAME"===e.tagName){var t=e.contentDocument;return t?t.body:null}return e.offsetParent?Ve(e.offsetParent):null}function qe(e){var t=e||window.event;return t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1)}var We=_&&window.navigator&&window.navigator.platform&&/iP(ad|hone|od)/.test(window.navigator.platform),Ge=new Map,Ze="object"==typeof document?document:void 0,Qe=!1;const Ye=Ze?function(e,t){void 0===e&&(e=!0);var n=(0,r.useRef)(Ze.body);t=t||n;var a=function(e){var t=Ge.get(e);t&&(1===t.counter?(Ge.delete(e),We?(e.ontouchmove=null,Qe&&(k(document,"touchmove",qe),Qe=!1)):e.style.overflow=t.initialOverflow):Ge.set(e,{counter:t.counter-1,initialOverflow:t.initialOverflow}))};(0,r.useEffect)((function(){var n=Ve(t.current);n&&(e?function(e){var t=Ge.get(e);t?Ge.set(e,{counter:t.counter+1,initialOverflow:t.initialOverflow}):(Ge.set(e,{counter:1,initialOverflow:e.style.overflow}),We?Qe||(x(document,"touchmove",qe,{passive:!1}),Qe=!0):e.style.overflow="hidden")}(n):a(n))}),[e,t.current]),(0,r.useEffect)((function(){var e=Ve(t.current);if(e)return function(){a(e)}}),[])}:function(e,t){void 0===e&&(e=!0)};const Xe=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];le((function(){return console.log.apply(console,(0,d.__spreadArrays)([e+" mounted"],t)),function(){return console.log(e+" unmounted")}})),s((function(){console.log.apply(console,(0,d.__spreadArrays)([e+" updated"],t))}))};var Ke=function(e){(function(e){return"touches"in e})(e)&&e.touches.length<2&&e.preventDefault&&e.preventDefault()};const Je=function(e,t){var n=void 0===t?{}:t,a=n.isPreventDefault,o=void 0===a||a,i=n.delay,l=void 0===i?300:i,s=(0,r.useRef)(),u=(0,r.useRef)(),c=(0,r.useCallback)((function(t){o&&t.target&&(x(t.target,"touchend",Ke,{passive:!1}),u.current=t.target),s.current=setTimeout((function(){return e(t)}),l)}),[e,l,o]),d=(0,r.useCallback)((function(){s.current&&clearTimeout(s.current),o&&u.current&&k(u.current,"touchend",Ke)}),[o]);return{onMouseDown:function(e){return c(e)},onTouchStart:function(e){return c(e)},onMouseUp:d,onMouseLeave:d,onTouchEnd:d}};const et=function(e){void 0===e&&(e={});var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useMemo)((function(){return{set:function(e,t){a((function(n){var r;return(0,d.__assign)((0,d.__assign)({},n),((r={})[e]=t,r))}))},setAll:function(e){a(e)},remove:function(e){a((function(t){var n=t,r=e;n[r];return(0,d.__rest)(n,["symbol"==typeof r?r:r+""])}))},reset:function(){return a(e)}}}),[a]),i=(0,d.__assign)({get:(0,r.useCallback)((function(e){return n[e]}),[n])},o);return[n,i]};const tt=function(e,t){var n=(0,r.useState)(function(e,t){return void 0!==t?t:!!_&&window.matchMedia(e).matches}(e,t)),a=n[0],o=n[1];return(0,r.useEffect)((function(){var t=!0,n=window.matchMedia(e),r=function(){t&&o(!!n.matches)};return n.addListener(r),o(n.matches),function(){t=!1,n.removeListener(r)}}),[e]),a};const nt=E&&navigator.mediaDevices?function(){var e=(0,r.useState)({}),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=!0,t=function(){navigator.mediaDevices.enumerateDevices().then((function(t){e&&n({devices:t.map((function(e){return{deviceId:e.deviceId,groupId:e.groupId,kind:e.kind,label:e.label}}))})})).catch(w)};return x(navigator.mediaDevices,"devicechange",t),t(),function(){e=!1,k(navigator.mediaDevices,"devicechange",t)}}),[]),t}:function(){return{}};function rt(e,t){var n=(0,r.useRef)(e),a=(0,r.useState)(t),o=a[0],i=a[1];return[o,(0,r.useCallback)((function(e){2===n.current.length?n.current(e,i):i(n.current(e))}),[o])]}const at=function(e,t){var n=(0,r.useMemo)((function(){return function(t,n){var r;return(r=e(t))[n.type].apply(r,n.payload)}}),[e]),a=(0,r.useReducer)(n,t),o=a[0],i=a[1],l=(0,r.useMemo)((function(){return Object.keys(e(t)).reduce((function(e,t){return e[t]=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return i({type:t,payload:e})},e}),{})}),[e,t]);return[o,l]};var ot={acceleration:{x:null,y:null,z:null},accelerationIncludingGravity:{x:null,y:null,z:null},rotationRate:{alpha:null,beta:null,gamma:null},interval:16};const it=function(e){void 0===e&&(e=ot);var t=(0,r.useState)(e),n=t[0],a=t[1];return(0,r.useEffect)((function(){var e=function(e){var t=e.acceleration,n=e.accelerationIncludingGravity,r=e.rotationRate,o=e.interval;a({acceleration:{x:t.x,y:t.y,z:t.z},accelerationIncludingGravity:{x:n.x,y:n.y,z:n.z},rotationRate:{alpha:r.alpha,beta:r.beta,gamma:r.gamma},interval:o})};return x(window,"devicemotion",e),function(){k(window,"devicemotion",e)}}),[]),n};const lt=function(e){le((function(){e()}))};const st=function(e){var t=(0,r.useRef)(e);t.current=e,le((function(){return function(){return t.current()}}))};const ut=function(e){var t=(0,r.useRef)(0),n=(0,r.useState)(e),a=n[0],o=n[1],i=(0,r.useCallback)((function(e){cancelAnimationFrame(t.current),t.current=requestAnimationFrame((function(){o(e)}))}),[]);return st((function(){cancelAnimationFrame(t.current)})),[a,i]};const ct=function(e){var t=ut({docX:0,docY:0,posX:0,posY:0,elX:0,elY:0,elH:0,elW:0}),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=function(t){if(e&&e.current){var n=e.current.getBoundingClientRect(),r=n.left,o=n.top,i=n.width,l=n.height,s=r+window.pageXOffset,u=o+window.pageYOffset,c=t.pageX-s,d=t.pageY-u;a({docX:t.pageX,docY:t.pageY,posX:s,posY:u,elX:c,elY:d,elH:l,elW:i})}};return x(document,"mousemove",t),function(){k(document,"mousemove",t)}}),[e]),n};var dt={current:null};const ft=function(e,t){void 0===t&&(t={});var n=!!t.whenHovered,r=!!t.bound,a=Ce(e,n),o=ct(n&&!a?dt:e);return r&&(o.elX=Math.max(0,Math.min(o.elX,o.elW)),o.elY=Math.max(0,Math.min(o.elY,o.elH))),o},pt=function(){var e=(0,r.useState)(0),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(e){n(e.deltaY+t)};return x(window,"wheel",e,!1),function(){return k(window,"wheel",e)}})),t};var ht=E?navigator:void 0,mt=ht&&(ht.connection||ht.mozConnection||ht.webkitConnection);function gt(e){var t=null==ht?void 0:ht.onLine,n=null==e?void 0:e.online;return{online:t,previous:n,since:t!==n?new Date:null==e?void 0:e.since,downlink:null==mt?void 0:mt.downlink,downlinkMax:null==mt?void 0:mt.downlinkMax,effectiveType:null==mt?void 0:mt.effectiveType,rtt:null==mt?void 0:mt.rtt,saveData:null==mt?void 0:mt.saveData,type:null==mt?void 0:mt.type}}function vt(e){var t=(0,r.useState)(null!=e?e:gt),n=t[0],a=t[1];return(0,r.useEffect)((function(){var e=function(){a(gt)};return x(window,"online",e,{passive:!0}),x(window,"offline",e,{passive:!0}),mt&&x(mt,"change",e,{passive:!0}),function(){k(window,"online",e),k(window,"offline",e),mt&&k(mt,"change",e)}}),[]),n}const bt=q;const yt=function(e,t){var n=(0,r.useState)(t),a=n[0],o=n[1];return Y((function(){var t=e.subscribe(o);return function(){return t.unsubscribe()}}),[e]),a};var wt={angle:0,type:"landscape-primary"};const xt=function(e){void 0===e&&(e=wt);var t=(0,r.useState)(e),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=window.screen,n=!0,r=function(){if(n){var r=t.orientation;if(r){var o=r.angle,i=r.type;a({angle:o,type:i})}else void 0!==window.orientation?a({angle:"number"==typeof window.orientation?window.orientation:0,type:""}):a(e)}};return x(window,"orientationchange",r),r(),function(){n=!1,k(window,"orientationchange",r)}}),[]),n};const kt=function(e,t){void 0===t&&(t=[]),(0,r.useEffect)((function(){if(e){var t=function(t){var n=(t=t||window.event).relatedTarget||t.toElement;n&&"HTML"!==n.nodeName||e()};return x(document,"mouseout",t),function(){k(document,"mouseout",t)}}}),t)};const _t=function(e){var t=(0,r.useState)(""),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=!0,n=null,r=function(){t&&a((function(){var e;return null!==(e=null==n?void 0:n.state)&&void 0!==e?e:""}))};return navigator.permissions.query(e).then((function(e){x(n=e,"change",r),r()})).catch(w),function(){n&&k(n,"change",r),t=!1,n=null}}),[e]),n};function Et(e){var t=(0,r.useRef)();return(0,r.useEffect)((function(){t.current=e})),t.current}var St=function(e,t){return e===t};function Ct(e,t){void 0===t&&(t=St);var n=(0,r.useRef)(),a=(0,r.useRef)(e);return l()||t(a.current,e)||(n.current=a.current,a.current=e),n.current}const Tt=function(){var e=f();return(0,r.useCallback)((function(t){return new Promise((function(n,r){t.then((function(t){e()&&n(t)}),(function(t){e()&&r(t)}))}))}),[])};const Ot=function(e){void 0===e&&(e=[]);var t=(0,r.useState)(e),n=t[0],a=t[1];return{add:function(e){a((function(t){return(0,d.__spreadArrays)(t,[e])}))},remove:function(){var e;return a((function(t){var n=t[0],r=t.slice(1);return e=n,r})),e},get first(){return n[0]},get last(){return n[n.length-1]},get size(){return n.length}}};const Dt=function(e,t){void 0===e&&(e=1e12),void 0===t&&(t=0);var n=(0,r.useState)(0),a=n[0],o=n[1];return Y((function(){var n,r,a,i=function(){var t=Math.min(1,(Date.now()-a)/e);o(t),l()},l=function(){n=requestAnimationFrame(i)},s=setTimeout((function(){r=setTimeout((function(){cancelAnimationFrame(n),o(1)}),e),a=Date.now(),l()}),t);return function(){clearTimeout(r),clearTimeout(s),cancelAnimationFrame(n)}}),[e,t]),a};function Pt(e,t){void 0===t&&(t=!0);var n=(0,r.useRef)(null),a=(0,r.useRef)(!1),o=(0,r.useRef)(e);o.current=e;var i=(0,r.useCallback)((function(e){a.current&&(o.current(e),n.current=requestAnimationFrame(i))}),[]),l=(0,r.useMemo)((function(){return[function(){a.current&&(a.current=!1,n.current&&cancelAnimationFrame(n.current))},function(){a.current||(a.current=!0,n.current=requestAnimationFrame(i))},function(){return a.current}]}),[]);return(0,r.useEffect)((function(){return t&&l[1](),l[0]}),[]),l}var Nt=function(e,t){return new URLSearchParams(e).get(t)};const It=_?function(e){var t=window.location,n=(0,r.useState)((function(){return Nt(t.search,e)})),a=n[0],o=n[1];return(0,r.useEffect)((function(){var n=function(){o(Nt(t.search,e))};return x(window,"popstate",n),x(window,"pushstate",n),x(window,"replacestate",n),function(){k(window,"popstate",n),k(window,"pushstate",n),k(window,"replacestate",n)}}),[]),a}:function(){return null};n(96260);var At=function(e){void 0===e&&(e={});var t=e.disabled,n=je(e),a=(0,r.useState)({isScratching:!1}),o=a[0],i=a[1],l=(0,r.useRef)(o),s=(0,r.useRef)(!1),u=(0,r.useRef)(null),c=(0,r.useState)(null),f=c[0],p=c[1];return(0,r.useEffect)((function(){if(!t&&f){var e,r,a=function(e,t){cancelAnimationFrame(u.current),u.current=requestAnimationFrame((function(){var r=f.getBoundingClientRect(),a=r.left,o=r.top,s=a+window.scrollX,u=o+window.scrollY,c=e-s,p=t-u;i((function(e){var t=(0,d.__assign)((0,d.__assign)({},e),{dx:c-(e.x||0),dy:p-(e.y||0),end:Date.now(),isScratching:!0});return l.current=t,(n.current.onScratch||w)(t),t}))}))},o=function(e){a(e.pageX,e.pageY)},c=function(e){a(e.changedTouches[0].pageX,e.changedTouches[0].pageY)},p=function(){s.current&&(s.current=!1,l.current=(0,d.__assign)((0,d.__assign)({},l.current),{isScratching:!1}),(n.current.onScratchEnd||w)(l.current),i({isScratching:!1}),k(window,"mousemove",o),k(window,"touchmove",c),k(window,"mouseup",e),k(window,"touchend",r))};e=p,r=p;var h=function(t,a){if(s.current){var u=f.getBoundingClientRect(),d=u.left,p=u.top,h=d+window.scrollX,m=p+window.scrollY,g=t-h,v=a-m,b=Date.now(),y={isScratching:!0,start:b,end:b,docX:t,docY:a,x:g,y:v,dx:0,dy:0,elH:f.offsetHeight,elW:f.offsetWidth,elX:h,elY:m};l.current=y,(n.current.onScratchStart||w)(y),i(y),x(window,"mousemove",o),x(window,"touchmove",c),x(window,"mouseup",e),x(window,"touchend",r)}},m=function(e){s.current=!0,h(e.pageX,e.pageY)},g=function(e){s.current=!0,h(e.changedTouches[0].pageX,e.changedTouches[0].pageY)};return x(f,"mousedown",m),x(f,"touchstart",g),function(){k(f,"mousedown",m),k(f,"touchstart",g),k(window,"mousemove",o),k(window,"touchmove",c),k(window,"mouseup",e),k(window,"touchend",r),u.current&&cancelAnimationFrame(u.current),u.current=null,s.current=!1,l.current={isScratching:!1},i(l.current)}}}),[f,t,n]),[p,o]};const Lt=At;const Rt=function(e){var t=ut({x:0,y:0}),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=function(){e.current&&a({x:e.current.scrollLeft,y:e.current.scrollTop})};return e.current&&x(e.current,"scroll",t,{capture:!1,passive:!0}),function(){e.current&&k(e.current,"scroll",t)}}),[e]),n};const jt=function(e){var t=(0,r.useState)(!1),n=t[0],a=t[1];return(0,r.useEffect)((function(){if(e.current){var t,n=function(){a(!0),clearTimeout(t),t=setTimeout((function(){a(!1)}),150)};return x(e.current,"scroll",n,!1),function(){e.current&&k(e.current,"scroll",n,!1)}}return function(){}}),[e]),n};const Mt=function(e,t,n){if(!_)return[t,function(){}];var a=(0,r.useState)((function(){try{var r=sessionStorage.getItem(e);return"string"!=typeof r?(sessionStorage.setItem(e,n?String(t):JSON.stringify(t)),t):n?r:JSON.parse(r||"null")}catch(a){return t}})),o=a[0],i=a[1];return(0,r.useEffect)((function(){try{var t=n?String(o):JSON.stringify(o);sessionStorage.setItem(e,t)}catch(a){}})),[o,i]};var Ft=n(99376),Bt=function(e,t){return e.every((function(e,n){return(0,Ft.D)(e,t[n])}))};const zt=function(e,t){ee(e,t,Bt)};var $t=r.useState,Ut=r.useEffect,Ht=r.useRef;const Vt=function(e,t){var n=void 0===t?{}:t,o=n.width,i=void 0===o?1/0:o,l=n.height,s=void 0===l?1/0:l;if(!_)return["function"==typeof e?e({width:i,height:s}):e,{width:i,height:s}];var u=$t({width:i,height:s}),c=u[0],f=u[1];"function"==typeof e&&(e=e(c));var p=e.props.style||{},h=Ht(null),m=null,g=function(){var e=h.current,t=e?{width:e.offsetWidth,height:e.offsetHeight}:{width:i,height:s};f(t)},v=function(e){x(e,"resize",g),setTimeout(g,35)};return Ut((function(){var e=h.current;if(e){if(e.contentWindow)m=e.contentWindow,v(m);else{var t=function(){x(e,"load",t),m=e.contentWindow,v(m)};k(e,"load",t)}return function(){m&&m.removeEventListener&&k(m,"resize",g)}}}),[]),p.position="relative",[r.cloneElement.apply(a,(0,d.__spreadArrays)([e,{style:p}],(0,d.__spreadArrays)([r.createElement("iframe",{ref:h,style:{background:"transparent",border:"none",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:-1}})],r.Children.toArray(e.props.children)))),c]};const qt=function(e,t){void 0===t&&(t={});var n=f(),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useRef)(0),l=g({isSliding:!1,value:0}),s=l[0],u=l[1];return o.current=s.value,(0,r.useEffect)((function(){if(_){var r=void 0===t.styles||t.styles,l=void 0!==t.reverse&&t.reverse;e.current&&r&&(e.current.style.userSelect="none");var s=function(){!a.current&&n()&&((t.onScrubStart||w)(),a.current=!0,u({isSliding:!0}),m())},c=function(){a.current&&n()&&((t.onScrubStop||w)(o.current),a.current=!1,u({isSliding:!1}),g())},d=function(e){s(),f(e)},f=t.vertical?function(e){return v(e.clientY)}:function(e){return v(e.clientX)},p=function(e){s(),h(e)},h=t.vertical?function(e){return v(e.changedTouches[0].clientY)}:function(e){return v(e.changedTouches[0].clientX)},m=function(){x(document,"mousemove",f),x(document,"mouseup",c),x(document,"touchmove",h),x(document,"touchend",c)},g=function(){k(document,"mousemove",f),k(document,"mouseup",c),k(document,"touchmove",h),k(document,"touchend",c)},v=function(r){cancelAnimationFrame(i.current),i.current=requestAnimationFrame((function(){if(n()&&e.current){var a=e.current.getBoundingClientRect(),o=t.vertical?a.top:a.left,i=t.vertical?a.height:a.width;if(!i)return;var s=(r-o)/i;s>1?s=1:s<0&&(s=0),l&&(s=1-s),u({value:s}),(t.onScrub||w)(s)}}))};return x(e.current,"mousedown",d),x(e.current,"touchstart",p),function(){k(e.current,"mousedown",d),k(e.current,"touchstart",p)}}}),[e,t.vertical]),s};var Wt;!function(e){e[e.init=0]="init",e[e.play=1]="play",e[e.pause=2]="pause",e[e.end=3]="end"}(Wt||(Wt={}));const Gt=function(e,t){var n=(0,r.useRef)(!1),a=(0,r.useState)((function(){var e=t.voice||{},n=e.lang,r=void 0===n?"default":n,a=e.name,o=void 0===a?"":a;return{isPlaying:!1,status:Wt[Wt.init],lang:t.lang||"default",voiceInfo:{lang:r,name:o},rate:t.rate||1,pitch:t.pitch||1,volume:t.volume||1}})),o=a[0],i=a[1],l=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!0,status:Wt[Wt.play]})}))}),[]),s=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!1,status:Wt[Wt.pause]})}))}),[]),u=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!1,status:Wt[Wt.end]})}))}),[]);return(0,r.useEffect)((function(){n.current=!0;var r=new SpeechSynthesisUtterance(e);return t.lang&&(r.lang=t.lang),t.voice&&(r.voice=t.voice),r.rate=t.rate||1,r.pitch=t.pitch||1,r.volume=t.volume||1,r.onstart=l,r.onpause=s,r.onresume=l,r.onend=u,window.speechSynthesis.speak(r),function(){n.current=!1}}),[]),o};const Zt=function(e){Y((function(){var t=function(t){var n,r,a,o,i;!function(){var e=document.activeElement,t=document.body;if(!e)return!1;if(e===t)return!1;switch(e.tagName){case"INPUT":case"TEXTAREA":return!0}return e.hasAttribute("contenteditable")}()&&(r=(n=t).keyCode,a=n.metaKey,o=n.ctrlKey,i=n.altKey,!(a||o||i)&&(r>=48&&r<=57||r>=65&&r<=90))&&e(t)};return x(document,"keydown",t),function(){k(document,"keydown",t)}}),[])};function Qt(e,t,n){if(void 0===t&&(t=10),t<1)throw new Error("Capacity has to be greater than 1, got '"+t+"'");var a=l(),o=(0,r.useState)(e),i=o[0],s=o[1],u=(0,r.useRef)(null!=n?n:[]),c=(0,r.useRef)(0);return a&&(u.current.length?(u.current[u.current.length-1]!==e&&u.current.push(e),u.current.length>t&&(u.current=u.current.slice(u.current.length-t))):u.current.push(e),c.current=u.current.length&&u.current.length-1),[i,(0,r.useCallback)((function(e){s((function(n){return(e=H(e,n))!==n&&(c.current<u.current.length-1&&(u.current=u.current.slice(0,c.current+1)),c.current=u.current.push(e)-1,u.current.length>t&&(u.current=u.current.slice(u.current.length-t))),e}))}),[i,t]),(0,r.useMemo)((function(){return{history:u.current,position:c.current,capacity:t,back:function(e){void 0===e&&(e=1),c.current&&s((function(){return c.current-=Math.min(e,c.current),u.current[c.current]}))},forward:function(e){void 0===e&&(e=1),c.current!==u.current.length-1&&s((function(){return c.current=Math.min(c.current+e,u.current.length-1),u.current[c.current]}))},go:function(e){e!==c.current&&s((function(){return c.current=e<0?Math.max(u.current.length+e,0):Math.min(u.current.length-1,e),u.current[c.current]}))}}}),[i])]}function Yt(e){void 0===e&&(e=[]);var t=f(),n=U(),a=(0,r.useRef)(0);s((function(){e.length<=a.current&&(a.current=e.length-1,n())}),[e.length]);var o=(0,r.useMemo)((function(){return{next:function(){return o.setStateAt(a.current+1)},prev:function(){return o.setStateAt(a.current-1)},setStateAt:function(r){t()&&e.length&&r!==a.current&&(a.current=r>=0?r%e.length:e.length+r%e.length,n())},setState:function(r){if(t()){var o=e.length?e.indexOf(r):-1;if(-1===o)throw new Error("State '"+r+"' is not a valid state (does not exist in state list)");a.current=o,n()}}}}),[e]);return(0,d.__assign)({state:e[a.current],currentIndex:a.current},o)}const Xt=function(e,t){void 0===t&&(t=200);var n=(0,r.useState)(e),a=n[0],o=n[1],i=(0,r.useRef)(),l=(0,r.useRef)(null),s=(0,r.useRef)(0);return(0,r.useEffect)((function(){if(i.current)l.current=e,s.current=!0;else{o(e);var n=function(){s.current?(s.current=!1,o(l.current),i.current=setTimeout(n,t)):i.current=void 0};i.current=setTimeout(n,t)}}),[e]),st((function(){i.current&&clearTimeout(i.current)})),a};const Kt=function(e,t,n){void 0===t&&(t=200);var a=(0,r.useState)(null),o=a[0],i=a[1],l=(0,r.useRef)(),s=(0,r.useRef)();return(0,r.useEffect)((function(){if(l.current)s.current=n;else{i(e.apply(void 0,n));var r=function(){s.current?(i(e.apply(void 0,s.current)),s.current=void 0,l.current=setTimeout(r,t)):l.current=void 0};l.current=setTimeout(r,t)}}),n),st((function(){l.current&&clearTimeout(l.current)})),o};function Jt(e){return void 0===e&&(e=0),te(U(),e)}var en={restoreOnUnmount:!1};const tn="undefined"!=typeof document?function(e,t){void 0===t&&(t=en);var n=(0,r.useRef)(document.title);document.title!==e&&(document.title=e),(0,r.useEffect)((function(){return t&&t.restoreOnUnmount?function(){document.title=n.current}:void 0}),[])}:function(e){};var nn=n(75534);const rn=function(e,t,n){return void 0===e&&(e="inCirc"),void 0===t&&(t=200),void 0===n&&(n=0),(0,nn.U[e])(Dt(t,n))};const an=function(){var e=(0,r.useRef)(!1);return le((function(){return function(){e.current=!0}})),(0,r.useMemo)((function(){return function(t,n){return new Promise((function(r,a){t.then((function(t){e.current||r(t)}),(function(t){e.current?n?n(t):console.error("useUnmountPromise",t):a(t)}))}))}}),[])};function on(e,t){void 0===t&&(t=[]);var n=Fe(t),r=n[0],a=n[1];return[r,(0,d.__assign)((0,d.__assign)({},a),{upsert:function(t){a.upsert(e,t)}})]}const ln=E&&"vibrate"in navigator?function(e,t,n){void 0===e&&(e=!0),void 0===t&&(t=[1e3,1e3]),void 0===n&&(n=!0),(0,r.useEffect)((function(){var r;if(e&&(navigator.vibrate(t),n)){var a=t instanceof Array?t.reduce((function(e,t){return e+t})):t;r=setInterval((function(){navigator.vibrate(t)}),a)}return function(){e&&(navigator.vibrate(0),n&&clearInterval(r))}}),[e])}:w;const sn=b("video");function un(e,t,n){void 0===n&&(n=[void 0]);var a=(0,r.useRef)(t),o=(0,r.useRef)(e);a.current=t,o.current=e;var i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){a.current.length>=2?a.current(o.current,s):s(a.current(o.current))}),[s]);return(0,r.useEffect)((function(){u()}),[e]),[l,u]}var cn=function(e){if("undefined"==typeof document)return 0;if(document.body&&(!document.readyState||"loading"!==document.readyState)){if(!0!==e&&"number"==typeof cn.__cache)return cn.__cache;var t=document.createElement("div"),n=t.style;n.display="block",n.position="absolute",n.width="100px",n.height="100px",n.left="-999px",n.top="-999px",n.overflow="scroll",document.body.insertBefore(t,null);var r=t.clientWidth;if(0!==r)return cn.__cache=100-r,document.body.removeChild(t),cn.__cache;document.body.removeChild(t)}};function dn(){var e=(0,r.useState)(cn()),t=e[0],n=e[1];return(0,r.useEffect)((function(){if(void 0===t){var e=requestAnimationFrame((function(){n(cn())}));return function(){return cancelAnimationFrame(e)}}}),[]),t}function fn(e,t,n){if(void 0===n&&(n=[void 0]),"object"!=typeof e)throw new Error("states expected to be an object or array, got "+typeof e);var a=(0,r.useRef)(t),o=(0,r.useRef)(e);a.current=t,o.current=e;var i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){a.current.length>=2?a.current(o.current,s):s(a.current(o.current))}),[s]);return(0,r.useEffect)((function(){u()}),Object.values(e)),[l,u]}const pn=function(){var e=ut((function(){return{x:_?window.pageXOffset:0,y:_?window.pageYOffset:0}})),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(){n((function(e){var t=window.pageXOffset,n=window.pageYOffset;return e.x!==t||e.y!==n?{x:t,y:n}:e}))};return e(),x(window,"scroll",e,{capture:!1,passive:!0}),function(){k(window,"scroll",e)}}),[]),t};const hn=function(e,t){void 0===e&&(e=1/0),void 0===t&&(t=1/0);var n=ut({width:_?window.innerWidth:e,height:_?window.innerHeight:t}),a=n[0],o=n[1];return(0,r.useEffect)((function(){if(_){var e=function(){o({width:window.innerWidth,height:window.innerHeight})};return x(window,"resize",e),function(){k(window,"resize",e)}}}),[]),a};var mn={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};const gn=_&&void 0!==window.ResizeObserver?function(){var e=(0,r.useState)(null),t=e[0],n=e[1],a=(0,r.useState)(mn),o=a[0],i=a[1],l=(0,r.useMemo)((function(){return new window.ResizeObserver((function(e){if(e[0]){var t=e[0].contentRect,n=t.x,r=t.y,a=t.width,o=t.height,l=t.top,s=t.left,u=t.bottom,c=t.right;i({x:n,y:r,width:a,height:o,top:l,left:s,bottom:u,right:c})}}))}),[]);return Y((function(){if(t)return l.observe(t),function(){l.disconnect()}}),[t]),[n,o]}:function(){return[w,mn]};var vn;!function(e){e.ZOOMING_IN="ZOOMING_IN",e.ZOOMING_OUT="ZOOMING_OUT"}(vn||(vn={}));const bn=function(e){var t=(0,r.useMemo)((function(){return{evCache:[],prevDiff:-1}}),[e.current]),n=(0,r.useState)(),a=n[0],o=n[1],i=function(e){for(var n=0;n<t.evCache.length;n++)if(e.pointerId==t.evCache[n].pointerId){t.evCache[n]=e;break}if(2==t.evCache.length){var r=Math.abs(t.evCache[0].clientX-t.evCache[1].clientX);t.prevDiff>0&&(r>t.prevDiff&&o([vn.ZOOMING_IN,r]),r<t.prevDiff&&o([vn.ZOOMING_OUT,r])),t.prevDiff=r}},l=function(e){t.evCache.push(e)},s=function(e){u(e),t.evCache.length<2&&(t.prevDiff=-1)},u=function(e){for(var n=0;n<t.evCache.length;n++)if(t.evCache[n].pointerId==e.pointerId){t.evCache.splice(n,1);break}};return(0,r.useEffect)((function(){(null==e?void 0:e.current)&&(e.current.onpointerdown=l,e.current.onpointermove=i,e.current.onpointerup=s,e.current.onpointercancel=s,e.current.onpointerout=s,e.current.onpointerleave=s)}),[null==e?void 0:e.current]),a?{zoomingState:a[0],pinchState:a[1]}:{zoomingState:null,pinchState:0}};function yn(){return++(0,r.useRef)(0).current}const wn=function(e){void 0===e&&(e=new Set);var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useMemo)((function(){return{add:function(e){return a((function(t){return new Set((0,d.__spreadArrays)(Array.from(t),[e]))}))},remove:function(e){return a((function(t){return new Set(Array.from(t).filter((function(t){return t!==e})))}))},toggle:function(e){return a((function(t){return t.has(e)?new Set(Array.from(t).filter((function(t){return t!==e}))):new Set((0,d.__spreadArrays)(Array.from(t),[e]))}))},reset:function(){return a(e)}}}),[a]),i=(0,d.__assign)({has:(0,r.useCallback)((function(e){return n.has(e)}),[n])},o);return[n,i]};function xn(e){var t={state:e instanceof Function?e():e,setState:function(e){t.state=H(e,t.state),t.setters.forEach((function(e){return e(t.state)}))},setters:[]};return function(){var e=(0,r.useState)(t.state),n=e[0],a=e[1];return le((function(){return function(){t.setters=t.setters.filter((function(e){return e!==a}))}})),Y((function(){t.setters.includes(a)||t.setters.push(a)})),[n,t.setState]}}var kn=function(){var e=(0,r.useState)((function(){return window.location.hash})),t=e[0],n=e[1],a=(0,r.useCallback)((function(){n(window.location.hash)}),[]);Me((function(){x(window,"hashchange",a)}),(function(){k(window,"hashchange",a)}));var o=(0,r.useCallback)((function(e){e!==t&&(window.location.hash=e)}),[t]);return[t,o]}},72408:(e,t,n)=>{"use strict";var r=n(27418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m={};function g(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},x=Object.prototype.hasOwnProperty,k={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,r)&&!k.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var S=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(S,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(E(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(S,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+C(l=e[u],u);s+=T(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=T(l=l.value,t,n,c=r+C(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function O(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function D(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var P={current:null};function N(){var e=P.current;if(null===e)throw Error(p(321));return e}var I={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:O,forEach:function(e,t,n){O(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return O(e,(function(){t++})),t},toArray:function(e){return O(e,(function(e){return e}))||[]},only:function(e){if(!E(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=I,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)x.call(t,c)&&!k.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=_,t.createFactory=function(e){var t=_.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:D}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return N().useCallback(e,t)},t.useContext=function(e,t){return N().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return N().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return N().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return N().useLayoutEffect(e,t)},t.useMemo=function(e,t){return N().useMemo(e,t)},t.useReducer=function(e,t,n){return N().useReducer(e,t,n)},t.useRef=function(e){return N().useRef(e)},t.useState=function(e){return N().useState(e)},t.version="17.0.2"},67294:(e,t,n)=>{"use strict";e.exports=n(72408)},60053:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var h=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof h&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var m=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,x=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?x.postMessage(null):(m=!1,g=null)}catch(n){throw x.postMessage(null),n}}else m=!1},n=function(e){g=e,m||(m=!0,x.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},a=function(){p(v),v=-1}}function k(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<S(a,t)))break e;e[r]=t,e[n]=a,n=r}}function _(e){return void 0===(e=e[0])?null:e}function E(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>S(i,n))void 0!==s&&0>S(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>S(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function S(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],O=1,D=null,P=3,N=!1,I=!1,A=!1;function L(e){for(var t=_(T);null!==t;){if(null===t.callback)E(T);else{if(!(t.startTime<=e))break;E(T),t.sortIndex=t.expirationTime,k(C,t)}t=_(T)}}function R(e){if(A=!1,L(e),!I)if(null!==_(C))I=!0,n(j);else{var t=_(T);null!==t&&r(R,t.startTime-e)}}function j(e,n){I=!1,A&&(A=!1,a()),N=!0;var o=P;try{for(L(n),D=_(C);null!==D&&(!(D.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=D.callback;if("function"==typeof i){D.callback=null,P=D.priorityLevel;var l=i(D.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?D.callback=l:D===_(C)&&E(C),L(n)}else E(C);D=_(C)}if(null!==D)var s=!0;else{var u=_(T);null!==u&&r(R,u.startTime-n),s=!1}return s}finally{D=null,P=o,N=!1}}var M=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){I||N||(I=!0,n(j))},t.unstable_getCurrentPriorityLevel=function(){return P},t.unstable_getFirstCallbackNode=function(){return _(C)},t.unstable_next=function(e){switch(P){case 1:case 2:case 3:var t=3;break;default:t=P}var n=P;P=t;try{return e()}finally{P=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=M,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=P;P=e;try{return t()}finally{P=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:O++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,k(T,e),null===_(C)&&e===_(T)&&(A?a():A=!0,r(R,i-l))):(e.sortIndex=s,k(C,e),I||N||(I=!0,n(j))),e},t.unstable_wrapCallback=function(e){var t=P;return function(){var n=P;P=t;try{return e.apply(this,arguments)}finally{P=n}}}},63840:(e,t,n)=>{"use strict";e.exports=n(60053)},10577:e=>{!function(){"use strict";var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=e.exports,r=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,a=n.length,o={};r<a;r++)if((e=n[r])&&e[1]in t){for(r=0;r<e.length;r++)o[n[0][r]]=e[r];return o}return!1}(),a={change:r.fullscreenchange,error:r.fullscreenerror},o={request:function(e,n){return new Promise(function(a,o){var i=function(){this.off("change",i),a()}.bind(this);this.on("change",i);var l=(e=e||t.documentElement)[r.requestFullscreen](n);l instanceof Promise&&l.then(i).catch(o)}.bind(this))},exit:function(){return new Promise(function(e,n){if(this.isFullscreen){var a=function(){this.off("change",a),e()}.bind(this);this.on("change",a);var o=t[r.exitFullscreen]();o instanceof Promise&&o.then(a).catch(n)}else e()}.bind(this))},toggle:function(e,t){return this.isFullscreen?this.exit():this.request(e,t)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,n){var r=a[e];r&&t.addEventListener(r,n,!1)},off:function(e,n){var r=a[e];r&&t.removeEventListener(r,n,!1)},raw:r};r?(Object.defineProperties(o,{isFullscreen:{get:function(){return Boolean(t[r.fullscreenElement])}},element:{enumerable:!0,get:function(){return t[r.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return Boolean(t[r.fullscreenEnabled])}}}),n?e.exports=o:window.screenfull=o):n?e.exports={isEnabled:!1}:window.screenfull={isEnabled:!1}}()},96774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},11742:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r<e.rangeCount;r++)n.push(e.getRangeAt(r));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}},75534:(e,t)=>{"use strict";t.U={linear:function(e){return e},quadratic:function(e){return e*(-e*e*e+4*e*e-6*e+4)},cubic:function(e){return e*(4*e*e-9*e+6)},elastic:function(e){return e*(33*e*e*e*e-106*e*e*e+126*e*e-67*e+15)},inQuad:function(e){return e*e},outQuad:function(e){return e*(2-e)},inOutQuad:function(e){return e<.5?2*e*e:(4-2*e)*e-1},inCubic:function(e){return e*e*e},outCubic:function(e){return--e*e*e+1},inOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},inQuart:function(e){return e*e*e*e},outQuart:function(e){return 1- --e*e*e*e},inOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},inQuint:function(e){return e*e*e*e*e},outQuint:function(e){return 1+--e*e*e*e*e},inOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e},inSine:function(e){return 1-Math.cos(e*(Math.PI/2))},outSine:function(e){return Math.sin(e*(Math.PI/2))},inOutSine:function(e){return-(Math.cos(Math.PI*e)-1)/2},inExpo:function(e){return Math.pow(2,10*(e-1))},outExpo:function(e){return 1-Math.pow(2,-10*e)},inOutExpo:function(e){return(e/=.5)<1?Math.pow(2,10*(e-1))/2:(e--,(2-Math.pow(2,-10*e))/2)},inCirc:function(e){return 1-Math.sqrt(1-e*e)},outCirc:function(e){return Math.sqrt(1-(e-=1)*e)},inOutCirc:function(e){return(e/=.5)<1?-(Math.sqrt(1-e*e)-1)/2:(e-=2,(Math.sqrt(1-e*e)+1)/2)}}},70655:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>S,__asyncGenerator:()=>E,__asyncValues:()=>C,__await:()=>_,__awaiter:()=>h,__classPrivateFieldGet:()=>N,__classPrivateFieldIn:()=>A,__classPrivateFieldSet:()=>I,__createBinding:()=>g,__decorate:()=>l,__esDecorate:()=>u,__exportStar:()=>v,__extends:()=>a,__generator:()=>m,__importDefault:()=>P,__importStar:()=>D,__makeTemplateObject:()=>T,__metadata:()=>p,__param:()=>s,__propKey:()=>d,__read:()=>y,__rest:()=>i,__runInitializers:()=>c,__setFunctionName:()=>f,__spread:()=>w,__spreadArray:()=>k,__spreadArrays:()=>x,__values:()=>b});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};function i(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}function l(e,t,n,r){var a,o=arguments.length,i=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,u="getter"===s?"get":"setter"===s?"set":"value",c=!t&&e?r.static?e:e.prototype:null,d=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var h={};for(var m in r)h[m]="access"===m?{}:r[m];for(var m in r.access)h.access[m]=r.access[m];h.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var g=(0,n[p])("accessor"===s?{get:d.get,set:d.set}:d[u],h);if("accessor"===s){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(l=i(g.get))&&(d.get=l),(l=i(g.set))&&(d.set=l),(l=i(g.init))&&a.push(l)}else(l=i(g))&&("field"===s?a.push(l):d[u]=l)}c&&Object.defineProperty(c,r.name,d),f=!0}function c(e,t,n){for(var r=arguments.length>2,a=0;a<t.length;a++)n=r?t[a].call(e,n):t[a].call(e);return r?n:void 0}function d(e){return"symbol"==typeof e?e:"".concat(e)}function f(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function p(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function h(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(t){o(t)}}function l(e){try{s(r.throw(e))}catch(t){o(t)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}s((r=r.apply(e,t||[])).next())}))}function m(e,t){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){i.label=l[1];break}if(6===l[0]&&i.label<a[1]){i.label=a[1],a=l;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(l);break}a[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(s){l=[6,s],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}var g=Object.create?function(e,t,n,r){void 0===r&&(r=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,a)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function v(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||g(t,e,n)}function b(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(l){a={error:l}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function w(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(y(arguments[t]));return e}function x(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),a=0;for(t=0;t<n;t++)for(var o=arguments[t],i=0,l=o.length;i<l;i++,a++)r[a]=o[i];return r}function k(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}function _(e){return this instanceof _?(this.v=e,this):new _(e)}function E(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,a=n.apply(e,t||[]),o=[];return r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r;function i(e){a[e]&&(r[e]=function(t){return new Promise((function(n,r){o.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=a[e](t)).value instanceof _?Promise.resolve(n.value.v).then(s,u):c(o[0][2],n)}catch(r){c(o[0][3],r)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function c(e,t){e(t),o.shift(),o.length&&l(o[0][0],o[0][1])}}function S(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:_(e[r](t)),done:!1}:a?a(t):t}:a}}function C(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,a){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,a,(t=e[n](t)).done,t.value)}))}}}function T(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var O=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&g(t,e,n);return O(t,e),t}function P(e){return e&&e.__esModule?e:{default:e}}function N(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function I(e,t,n,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(e,n):a?a.value=n:t.set(e,n),n}function A(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}},53250:(e,t,n)=>{"use strict";var r=n(67294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:c},61688:(e,t,n)=>{"use strict";e.exports=n(53250)},36809:(e,t,n)=>{"use strict";n.d(t,{default:()=>r});const r={title:"Waku Documentation",url:"https://docs.waku.org",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en-GB",locales:["en-GB"],path:"i18n",localeConfigs:{}},presets:[["@acid-info/logos-docusaurus-preset",{businessUnit:"Waku",customSiteConfig:!0,docs:{routeBasePath:"/",path:"docs",sidebarPath:"/home/jenkins/workspace/website/dev-docs.waku.org/sidebars.js",editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/",showLastUpdateTime:!0,breadcrumbs:!1},theme:{name:"default",options:{customCss:["/home/jenkins/workspace/website/dev-docs.waku.org/src/css/custom.scss"]}}}]],staticDirectories:["static","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-preset/static/common","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-preset/static/Waku","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-theme/lib/client/static/"],plugins:[["@acid-info/docusaurus-fathom",{siteId:"FUTMI",scriptUrl:"https://fathom.status.im/tracker.js"}]],themeConfig:{docs:{sidebar:{hideable:!1,autoCollapseCategories:!1},versionPersistence:"localStorage"},metadata:[{name:"keywords",content:"waku, web3"},{name:"description",content:"Waku is the communication layer for Web3. Decentralized communication that scales."},{name:"image",content:"theme/image/preview-image.png"}],colorMode:{disableSwitch:!1,defaultMode:"dark",respectPrefersColorScheme:!0},navbar:{title:"",logo:{alt:"Waku",src:"theme/image/logo-black.svg",srcDark:"theme/image/logo.svg",height:26},hideOnScroll:!0,items:[{type:"search",position:"left"},{type:"docSidebar",position:"left",sidebarId:"guides",label:"Guides"},{type:"docSidebar",position:"left",sidebarId:"learn",label:"Learn"},{type:"docSidebar",position:"left",sidebarId:"research",label:"Research"},{href:"https://discord.waku.org",position:"left",label:"Discord"},{href:"https://github.com/waku-org",position:"right",className:"header-github-link",title:"Waku GitHub repository"}]},footer:{logo:{alt:"Waku",src:"theme/image/logo.svg",href:"/",width:22},links:[{title:"Guides",items:[{to:"/guides/nwaku/run-docker-compose",label:"Run a Nwaku Node"},{to:"/guides/js-waku/",label:"JavaScript Waku SDK"}]},{title:"Community",items:[{href:"https://twitter.com/waku_org/",label:"X"},{href:"https://discord.waku.org/",label:"Discord"},{href:"https://github.com/waku-org/",label:"GitHub"},{href:"https://www.youtube.com/@wakuorg",label:"YouTube"},{href:"https://www.linkedin.com/company/waku-org",label:"LinkedIn"},{href:"https://warpcast.com/waku",label:"Farcaster"},{href:"https://t.me/waku_org/",label:"Telegram"}]},{title:"Resources",items:[{href:"https://blog.waku.org/",label:"Blog"},{href:"https://rfc.vac.dev/waku",label:"Waku RFCs"},{href:"https://github.com/waku-org/bounties/",label:"Bounties"},{href:"https://github.com/waku-org/awesome-waku/",label:"Awesome Waku"}]},{title:"Legal",items:[{href:"/terms",label:"Terms of Use"},{href:"/privacy-policy",label:"Privacy Policy"},{href:"/rules-of-engagement",label:"Rules of Engagement"},{href:"/security",label:"Security"}]},{title:"shared:Research",items:[{href:"https://vac.dev",label:"VacP2P"},{href:"https://afaik.institute",label:"AFAIK"}]},{title:"shared:Infrastructure",items:[{href:"https://waku.org/",label:"Waku"},{href:"https://nimbus.team/",label:"Nimbus"},{href:"https://codex.storage",label:"Codex"},{href:"https://nomos.tech",label:"Nomos"}]},{title:"shared:Creative Studio",items:[{href:"https://acid.info",label:"Acid.info"}]},{title:"shared:Movement",items:[{href:"https://logos.co",label:"Logos"}]},{title:"shared:User-facing products",items:[{href:"https://status.im",label:"Status"},{href:"https://keycard.tech",label:"Keycard"}]}],copyright:"Waku",style:"light"},prism:{theme:{plain:{color:"#000000",backgroundColor:"rgba(var(--lsd-surface-secondary), 0.08)"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"rgba(var(--lsd-surface-secondary), 0.08)"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3},mermaid:{theme:{dark:"dark",light:"default"},options:{}}},markdown:{mermaid:!0},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",customFields:{businessUnits:"Waku","logos-docusaurus-theme":{customCss:["/home/jenkins/workspace/website/dev-docs.waku.org/src/css/custom.scss"],docs:{},id:"default"}},themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],tagline:"",titleDelimiter:"|",noIndex:!1,favicon:"theme/image/favicon.ico"}},87462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},75068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},63366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},38776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},57529:e=>{"use strict";e.exports={}},16887:e=>{"use strict";e.exports=JSON.parse('{"/-d04":{"__comp":"1be78505","__context":{"plugin":"3b0eafbc"},"versionMetadata":"935f2afb"},"/-0f1":{"__comp":"17896441","content":"c9ea0dcf"},"/guides/js-waku/-9af":{"__comp":"17896441","content":"488ca57d"},"/guides/js-waku/configure-discovery-dfe":{"__comp":"17896441","content":"4bb5c570"},"/guides/js-waku/debug-waku-dapp-c0d":{"__comp":"17896441","content":"e610d71e"},"/guides/js-waku/faq-1ad":{"__comp":"17896441","content":"a494bfbc"},"/guides/js-waku/light-send-receive-77b":{"__comp":"17896441","content":"c57f3997"},"/guides/js-waku/manage-filter-d72":{"__comp":"17896441","content":"0444839e"},"/guides/js-waku/message-encryption-d96":{"__comp":"17896441","content":"df28445d"},"/guides/js-waku/run-waku-nodejs-30f":{"__comp":"17896441","content":"0f1b9a4a"},"/guides/js-waku/store-retrieve-messages-1c5":{"__comp":"17896441","content":"1f1f54c7"},"/guides/js-waku/use-waku-create-app-76f":{"__comp":"17896441","content":"5277fe18"},"/guides/js-waku/use-waku-react-ed9":{"__comp":"17896441","content":"3b240eda"},"/guides/nwaku/build-source-995":{"__comp":"17896441","content":"f2470003"},"/guides/nwaku/config-methods-c44":{"__comp":"17896441","content":"80ec2a43"},"/guides/nwaku/config-options-def":{"__comp":"17896441","content":"8eff6037"},"/guides/nwaku/configure-discovery-a6b":{"__comp":"17896441","content":"8a655033"},"/guides/nwaku/configure-nwaku-a95":{"__comp":"17896441","content":"60832973"},"/guides/nwaku/faq-ad1":{"__comp":"17896441","content":"20987266"},"/guides/nwaku/find-node-address-786":{"__comp":"17896441","content":"b551b2b5"},"/guides/nwaku/run-docker-d03":{"__comp":"17896441","content":"6e8bfb6f"},"/guides/nwaku/run-docker-compose-ca4":{"__comp":"17896441","content":"7c28fd94"},"/guides/nwaku/run-node-9f1":{"__comp":"17896441","content":"406e0176"},"/guides/nwaku/upgrade-instructions-8ee":{"__comp":"17896441","content":"d3c3b3be"},"/learn/concepts/content-topics-45b":{"__comp":"17896441","content":"c764ec94"},"/learn/concepts/discv5-01f":{"__comp":"17896441","content":"2f51beae"},"/learn/concepts/dns-discovery-c5b":{"__comp":"17896441","content":"a44b8792"},"/learn/concepts/network-domains-5d8":{"__comp":"17896441","content":"b54b2767"},"/learn/concepts/peer-discovery-913":{"__comp":"17896441","content":"6778e957"},"/learn/concepts/peer-exchange-e58":{"__comp":"17896441","content":"80a3009a"},"/learn/concepts/protocols-13a":{"__comp":"17896441","content":"fb5ea66b"},"/learn/concepts/static-peers-9c6":{"__comp":"17896441","content":"e63bb37c"},"/learn/concepts/transports-6fb":{"__comp":"17896441","content":"ef85d46a"},"/learn/faq-74d":{"__comp":"17896441","content":"1067bd84"},"/learn/glossary-cf5":{"__comp":"17896441","content":"4aba8864"},"/learn/research-13c":{"__comp":"17896441","content":"6c6e315a"},"/learn/security-features-72b":{"__comp":"17896441","content":"606377f0"},"/learn/waku-network-f0c":{"__comp":"17896441","content":"b99d0044"},"/learn/waku-vs-libp2p-c45":{"__comp":"17896441","content":"41a4e09e"},"/migrations/js-waku/migration_v0.026_0.027-949":{"__comp":"17896441","content":"63c569e1"},"/privacy-policy-4cd":{"__comp":"17896441","content":"8c5da4da"},"/research/-e8b":{"__comp":"17896441","content":"f7974e9c"},"/research/benchmarks/postgres-adoption-563":{"__comp":"17896441","content":"e168415d"},"/research/research-and-studies/capped-bandwidth-ee6":{"__comp":"17896441","content":"97983a7b"},"/research/research-and-studies/incentivisation-d49":{"__comp":"17896441","content":"4e726341"},"/research/research-and-studies/maximum-bandwidth-80a":{"__comp":"17896441","content":"df0a719b"},"/research/research-and-studies/message-propagation-46a":{"__comp":"17896441","content":"3fbcf129"},"/research/research-and-studies/rln-key-benchmarks-5d8":{"__comp":"17896441","content":"1236ce69"},"/rules-of-engagement-0fc":{"__comp":"17896441","content":"d53fc737"},"/security-2fb":{"__comp":"17896441","content":"db32d859"},"/terms-37d":{"__comp":"17896441","content":"500a151f"}}')}},e=>{e.O(0,[532],(()=>{return t=91091,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.c9eaf7d2.js.LICENSE.txt b/assets/js/main.1bc4136e.js.LICENSE.txt similarity index 100% rename from assets/js/main.c9eaf7d2.js.LICENSE.txt rename to assets/js/main.1bc4136e.js.LICENSE.txt diff --git a/assets/js/runtime~main.59a16814.js b/assets/js/runtime~main.d69b4a24.js similarity index 68% rename from assets/js/runtime~main.59a16814.js rename to assets/js/runtime~main.d69b4a24.js index 4eb6812..87e3a3f 100644 --- a/assets/js/runtime~main.59a16814.js +++ b/assets/js/runtime~main.d69b4a24.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,t,r,c={},b={};function d(e){var a=b[e];if(void 0!==a)return a.exports;var f=b[e]={id:e,loaded:!1,exports:{}};return c[e].call(f.exports,f,f.exports,d),f.loaded=!0,f.exports}d.m=c,d.c=b,e=[],d.O=(a,f,t,r)=>{if(!f){var c=1/0;for(i=0;i<e.length;i++){f=e[i][0],t=e[i][1],r=e[i][2];for(var b=!0,o=0;o<f.length;o++)(!1&r||c>=r)&&Object.keys(d.O).every((e=>d.O[e](f[o])))?f.splice(o--,1):(b=!1,r<c&&(c=r));if(b){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}r=r||0;for(var i=e.length;i>0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);d.r(r);var c={};a=a||[null,f({}),f([]),f(f)];for(var b=2&t&&e;"object"==typeof b&&!~a.indexOf(b);b=f(b))Object.getOwnPropertyNames(b).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,d.d(r,c),r},d.d=(e,a)=>{for(var f in a)d.o(a,f)&&!d.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,f)=>(d.f[f](e,a),a)),[])),d.u=e=>"assets/js/"+({53:"935f2afb",101:"b551b2b5",161:"4bb5c570",175:"0444839e",231:"2f51beae",357:"4aba8864",617:"e610d71e",727:"b54b2767",906:"7c28fd94",1160:"63c569e1",1201:"b99d0044",1374:"5277fe18",1385:"8a655033",1923:"8c5da4da",1937:"97983a7b",2285:"1f1f54c7",2355:"df28445d",2588:"4e726341",2675:"a494bfbc",2811:"f2470003",2941:"c9ea0dcf",3076:"c764ec94",3116:"80a3009a",3178:"3b240eda",3235:"1236ce69",3292:"6778e957",3634:"80ec2a43",3855:"406e0176",4545:"500a151f",5158:"0f1b9a4a",5306:"e168415d",5447:"1067bd84",5740:"fb5ea66b",5787:"a44b8792",5832:"606377f0",5838:"f7974e9c",5844:"8eff6037",6059:"df0a719b",6167:"3b0eafbc",6321:"e63bb37c",6471:"d53fc737",6512:"6e8bfb6f",6618:"ef85d46a",6653:"db32d859",6839:"488ca57d",7304:"60832973",7442:"20987266",7683:"c57f3997",7918:"17896441",8173:"3fbcf129",8319:"6c6e315a",8824:"d3c3b3be",9169:"41a4e09e",9514:"1be78505"}[e]||e)+"."+{53:"1792a91d",101:"0fbd8316",161:"a12d2dd5",175:"d0f6c90a",231:"805c3453",357:"449560fb",617:"365aa55a",727:"cefd340c",906:"ae19f178",1160:"5eea62b8",1201:"af2c9cb5",1374:"12068a2f",1385:"0ca2bbe1",1923:"4d4d7c9b",1937:"214ae4ba",2285:"5f12efa7",2355:"fe682b5d",2568:"2380ad9e",2588:"f7167ffc",2675:"57ff26f9",2811:"7d961fa4",2941:"0032e3c1",3076:"db763f0f",3116:"a9c45f09",3178:"95c52b37",3235:"9e98a0a1",3292:"17e97b76",3634:"411fafd5",3855:"849f2378",4545:"01e42fd8",4881:"a6f0238e",5158:"3c262cd0",5306:"8560c9af",5447:"6c8cc264",5740:"59c6536a",5787:"283e071b",5832:"753fc738",5838:"92d2b8a1",5844:"543dde6f",6059:"d07d3a9d",6167:"8d8cfda4",6316:"3369c858",6321:"a162a954",6471:"9a7348b2",6512:"220df2ee",6618:"d78ec69c",6653:"6e7f647e",6839:"eca64d58",7304:"4d77b4c2",7442:"4d20d509",7683:"8f7f6d89",7724:"3b85eed4",7918:"37881d61",8173:"95c152b1",8319:"741b14f0",8824:"07fdb66c",9169:"b0acfbee",9487:"434e6b9b",9514:"f2d7708f"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="waku-guide:",d.l=(e,a,f,c)=>{if(t[e])t[e].push(a);else{var b,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==r+f){b=u;break}}b||(o=!0,(b=document.createElement("script")).charset="utf-8",b.timeout=120,d.nc&&b.setAttribute("nonce",d.nc),b.setAttribute("data-webpack",r+f),b.src=e),t[e]=[a];var l=(a,f)=>{b.onerror=b.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],b.parentNode&&b.parentNode.removeChild(b),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),o&&document.head.appendChild(b)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),d.p="/",d.gca=function(e){return e={17896441:"7918",20987266:"7442",60832973:"7304","935f2afb":"53",b551b2b5:"101","4bb5c570":"161","0444839e":"175","2f51beae":"231","4aba8864":"357",e610d71e:"617",b54b2767:"727","7c28fd94":"906","63c569e1":"1160",b99d0044:"1201","5277fe18":"1374","8a655033":"1385","8c5da4da":"1923","97983a7b":"1937","1f1f54c7":"2285",df28445d:"2355","4e726341":"2588",a494bfbc:"2675",f2470003:"2811",c9ea0dcf:"2941",c764ec94:"3076","80a3009a":"3116","3b240eda":"3178","1236ce69":"3235","6778e957":"3292","80ec2a43":"3634","406e0176":"3855","500a151f":"4545","0f1b9a4a":"5158",e168415d:"5306","1067bd84":"5447",fb5ea66b:"5740",a44b8792:"5787","606377f0":"5832",f7974e9c:"5838","8eff6037":"5844",df0a719b:"6059","3b0eafbc":"6167",e63bb37c:"6321",d53fc737:"6471","6e8bfb6f":"6512",ef85d46a:"6618",db32d859:"6653","488ca57d":"6839",c57f3997:"7683","3fbcf129":"8173","6c6e315a":"8319",d3c3b3be:"8824","41a4e09e":"9169","1be78505":"9514"}[e]||e,d.p+d.u(e)},(()=>{var e={1303:0,532:0};d.f.j=(a,f)=>{var t=d.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var c=d.p+d.u(a),b=new Error;d.l(c,(f=>{if(d.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;b.message="Loading chunk "+a+" failed.\n("+r+": "+c+")",b.name="ChunkLoadError",b.type=r,b.request=c,t[1](b)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,c=f[0],b=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(t in b)d.o(b,t)&&(d.m[t]=b[t]);if(o)var i=o(d)}for(a&&a(f);n<c.length;n++)r=c[n],d.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return d.O(i)},f=self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[];f.forEach(a.bind(null,0)),f.push=a.bind(null,f.push.bind(f))})()})(); \ No newline at end of file +(()=>{"use strict";var e,a,f,t,r,b={},c={};function d(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={id:e,loaded:!1,exports:{}};return b[e].call(f.exports,f,f.exports,d),f.loaded=!0,f.exports}d.m=b,d.c=c,e=[],d.O=(a,f,t,r)=>{if(!f){var b=1/0;for(i=0;i<e.length;i++){f=e[i][0],t=e[i][1],r=e[i][2];for(var c=!0,o=0;o<f.length;o++)(!1&r||b>=r)&&Object.keys(d.O).every((e=>d.O[e](f[o])))?f.splice(o--,1):(c=!1,r<b&&(b=r));if(c){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}r=r||0;for(var i=e.length;i>0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);d.r(r);var b={};a=a||[null,f({}),f([]),f(f)];for(var c=2&t&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,d.d(r,b),r},d.d=(e,a)=>{for(var f in a)d.o(a,f)&&!d.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,f)=>(d.f[f](e,a),a)),[])),d.u=e=>"assets/js/"+({53:"935f2afb",101:"b551b2b5",161:"4bb5c570",175:"0444839e",231:"2f51beae",357:"4aba8864",617:"e610d71e",727:"b54b2767",906:"7c28fd94",1160:"63c569e1",1201:"b99d0044",1374:"5277fe18",1385:"8a655033",1923:"8c5da4da",1937:"97983a7b",2285:"1f1f54c7",2355:"df28445d",2588:"4e726341",2675:"a494bfbc",2811:"f2470003",2941:"c9ea0dcf",3076:"c764ec94",3116:"80a3009a",3178:"3b240eda",3235:"1236ce69",3292:"6778e957",3634:"80ec2a43",3855:"406e0176",4545:"500a151f",5158:"0f1b9a4a",5306:"e168415d",5447:"1067bd84",5740:"fb5ea66b",5787:"a44b8792",5832:"606377f0",5838:"f7974e9c",5844:"8eff6037",6059:"df0a719b",6167:"3b0eafbc",6321:"e63bb37c",6471:"d53fc737",6512:"6e8bfb6f",6618:"ef85d46a",6653:"db32d859",6839:"488ca57d",7304:"60832973",7442:"20987266",7683:"c57f3997",7918:"17896441",8173:"3fbcf129",8319:"6c6e315a",8824:"d3c3b3be",9169:"41a4e09e",9514:"1be78505"}[e]||e)+"."+{53:"1792a91d",101:"0fbd8316",161:"a12d2dd5",175:"d0f6c90a",231:"805c3453",357:"449560fb",617:"365aa55a",727:"cefd340c",906:"ae19f178",1160:"5eea62b8",1201:"af2c9cb5",1374:"12068a2f",1385:"0ca2bbe1",1923:"4d4d7c9b",1937:"214ae4ba",2285:"5f12efa7",2355:"fe682b5d",2568:"2380ad9e",2588:"f7167ffc",2675:"57ff26f9",2811:"7d961fa4",2941:"0032e3c1",3076:"db763f0f",3116:"a9c45f09",3178:"95c52b37",3235:"9e98a0a1",3292:"17e97b76",3634:"411fafd5",3855:"849f2378",4545:"01e42fd8",4881:"a6f0238e",5158:"3c262cd0",5306:"8560c9af",5447:"6c8cc264",5740:"59c6536a",5787:"283e071b",5832:"753fc738",5838:"92d2b8a1",5844:"4cd33f64",6059:"d07d3a9d",6167:"8d8cfda4",6316:"3369c858",6321:"a162a954",6471:"9a7348b2",6512:"220df2ee",6618:"d78ec69c",6653:"6e7f647e",6839:"eca64d58",7304:"4d77b4c2",7442:"4d20d509",7683:"8f7f6d89",7724:"3b85eed4",7918:"37881d61",8173:"95c152b1",8319:"741b14f0",8824:"07fdb66c",9169:"b0acfbee",9487:"434e6b9b",9514:"f2d7708f"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="waku-guide:",d.l=(e,a,f,b)=>{if(t[e])t[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==r+f){c=u;break}}c||(o=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,d.nc&&c.setAttribute("nonce",d.nc),c.setAttribute("data-webpack",r+f),c.src=e),t[e]=[a];var l=(a,f)=>{c.onerror=c.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),d.p="/",d.gca=function(e){return e={17896441:"7918",20987266:"7442",60832973:"7304","935f2afb":"53",b551b2b5:"101","4bb5c570":"161","0444839e":"175","2f51beae":"231","4aba8864":"357",e610d71e:"617",b54b2767:"727","7c28fd94":"906","63c569e1":"1160",b99d0044:"1201","5277fe18":"1374","8a655033":"1385","8c5da4da":"1923","97983a7b":"1937","1f1f54c7":"2285",df28445d:"2355","4e726341":"2588",a494bfbc:"2675",f2470003:"2811",c9ea0dcf:"2941",c764ec94:"3076","80a3009a":"3116","3b240eda":"3178","1236ce69":"3235","6778e957":"3292","80ec2a43":"3634","406e0176":"3855","500a151f":"4545","0f1b9a4a":"5158",e168415d:"5306","1067bd84":"5447",fb5ea66b:"5740",a44b8792:"5787","606377f0":"5832",f7974e9c:"5838","8eff6037":"5844",df0a719b:"6059","3b0eafbc":"6167",e63bb37c:"6321",d53fc737:"6471","6e8bfb6f":"6512",ef85d46a:"6618",db32d859:"6653","488ca57d":"6839",c57f3997:"7683","3fbcf129":"8173","6c6e315a":"8319",d3c3b3be:"8824","41a4e09e":"9169","1be78505":"9514"}[e]||e,d.p+d.u(e)},(()=>{var e={1303:0,532:0};d.f.j=(a,f)=>{var t=d.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var b=d.p+d.u(a),c=new Error;d.l(b,(f=>{if(d.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+r+": "+b+")",c.name="ChunkLoadError",c.type=r,c.request=b,t[1](c)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,b=f[0],c=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(t in c)d.o(c,t)&&(d.m[t]=c[t]);if(o)var i=o(d)}for(a&&a(f);n<b.length;n++)r=b[n],d.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return d.O(i)},f=self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[];f.forEach(a.bind(null,0)),f.push=a.bind(null,f.push.bind(f))})()})(); \ No newline at end of file diff --git a/build.json b/build.json index f439e62..5ee4293 100644 --- a/build.json +++ b/build.json @@ -1,15 +1,15 @@ { - "timestamp": "2024-09-20T09:40:28Z", + "timestamp": "2024-09-23T12:09:53Z", "git": { - "commit": "35c06b3d42b0b84c1d231077186486579775a08c", + "commit": "edb6b637fe056fbb1d45c59f19009db9c804f83a", "branch": "origin/develop", "url": "git@github.com:waku-org/docs.waku.org.git" }, "build": { - "id": "157", - "number": "157", + "id": "158", + "number": "158", "name": "website/dev-docs.waku.org", "slave": "linux-02", - "url": "https://ci.infra.status.im/job/website/job/dev-docs.waku.org/157/" + "url": "https://ci.infra.status.im/job/website/job/dev-docs.waku.org/158/" } } \ No newline at end of file diff --git a/guides/js-waku/configure-discovery/index.html b/guides/js-waku/configure-discovery/index.html index fea57d1..f488e57 100644 --- a/guides/js-waku/configure-discovery/index.html +++ b/guides/js-waku/configure-discovery/index.html @@ -5,8 +5,8 @@ <meta name="generator" content="Docusaurus v2.4.1"> <title data-rh="true">Bootstrap Nodes and Discover Peers | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Bootstrap Nodes and Discover Peers

This guide provides detailed steps to bootstrap your your node using Static Peers and discover peers in the Waku Network using DNS Discovery.

info

If you do not set up a bootstrap node or discovery mechanism, your node will not connect to any remote peer.

tip

Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.

Default bootstrap method

The @waku/sdk package provides a built-in bootstrapping method that uses DNS Discovery to locate peers from the waku v2.prod ENR tree.

import { createLightNode } from "@waku/sdk";

// Bootstrap node using the default bootstrap method
const node = await createLightNode({ defaultBootstrap: true });

Configure static peers

To set static peers, a list of multiaddr to bootstrap the node should be passed to the bootstrapPeers parameter of the createLightNode() function:

import { createLightNode } from "@waku/sdk";

// Bootstrap node using static peers
const node = await createLightNode({
bootstrapPeers: ["[PEER MULTIADDR]"],
});

For example, consider a node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003 with WebSocket enabled:

// Define the list of static peers to bootstrap
const peers = [
"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H",
"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ",
];

// Bootstrap node using the static peers
const node = await createLightNode({
bootstrapPeers: peers,
});

Alternatively, you can dial a particular node like this:

// Define the list of static peers to bootstrap
const peers = [
"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H",
"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ",
];


const node = await createLightNode();

// In case nodes are using `ws` protocol - additional configuration is needed:
/*
import { webSockets } from "@libp2p/websockets";
import { all as filterAll } from "@libp2p/websockets/filters";

const node = await createLightNode({
libp2p: {
transports: [webSockets({ filter: filterAll })],
},
});
*/

const promises = peers.map(multiaddr => node.dial(multiaddr));

await Promise.all(promises);
tip

For local development using a nwaku node, use a ws address instead of wss. Remember that this setup is functional only when your web server is running locally. You can check how to get multi address of your locally run node in Find node address.

Configure DNS discovery

To bootstrap a node using DNS Discovery, first install the @waku/dns-discovery package:

npm install @waku/dns-discovery
yarn add @waku/dns-discovery

Then, use the wakuDnsDiscovery() function to provide a list of URLs for DNS node list in the format enrtree://<key>@<fqdn>:

import { createLightNode } from "@waku/sdk";
import { wakuDnsDiscovery } from "@waku/dns-discovery";

// Define DNS node list
const enrTree = "enrtree://[PUBLIC KEY]@[DOMAIN NAME]";

// Define node requirements
const NODE_REQUIREMENTS = {
store: 3,
lightPush: 3,
filter: 3,
};

// Bootstrap node using DNS Discovery
const node = await createLightNode({
libp2p: {
peerDiscovery: [
wakuDnsDiscovery(
[enrTree],
NODE_REQUIREMENTS,
),
],
},
});

For example, consider a node that uses the waku v2.prod and waku v2.test ENR trees for DNS Discovery:

import { enrTree } from "@waku/dns-discovery";

// Bootstrap node using DNS Discovery
const node = await createLightNode({
libp2p: {
peerDiscovery: [
wakuDnsDiscovery(
[enrTree["PROD"], enrTree["TEST"]],
NODE_REQUIREMENTS,
),
],
},
});

Configure DNS discovery and static peers

You can also bootstrap your node using DNS Discovery and Static Peers simultaneously:

import { createLightNode } from "@waku/sdk";
import { bootstrap } from "@libp2p/bootstrap";
import { enrTree, wakuDnsDiscovery } from "@waku/dns-discovery";

// Define the list of static peers to bootstrap
const peers = [
"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H",
"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ",
];

// Define node requirements
const NODE_REQUIREMENTS = {
store: 3,
lightPush: 3,
filter: 3,
};

// Bootstrap node using DNS Discovery and static peers
const node = await createLightNode({
libp2p: {
bootstrapPeers: peers,
peerDiscovery: [
wakuDnsDiscovery(
[enrTree["PROD"]],
NODE_REQUIREMENTS,
),
],
},
});

Retrieving connected peers

You can retrieve the array of peers connected to a node using the libp2p.getPeers() function within the @waku/sdk package:

import { createLightNode, waitForRemotePeer } from "@waku/sdk";

const node = await createLightNode({ defaultBootstrap: true });
await waitForRemotePeer(node);

// Retrieve array of peers connected to the node
console.log(node.libp2p.getPeers());
- - + + \ No newline at end of file diff --git a/guides/js-waku/debug-waku-dapp/index.html b/guides/js-waku/debug-waku-dapp/index.html index 6b11804..b938ff9 100644 --- a/guides/js-waku/debug-waku-dapp/index.html +++ b/guides/js-waku/debug-waku-dapp/index.html @@ -5,8 +5,8 @@ Debug Your Waku DApp and WebSocket | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Debug Your Waku DApp and WebSocket

This guide provides detailed steps to enable and use debug logs to troubleshoot your Waku DApp, whether in a NodeJS or browser environment and check your WebSocket connections in nwaku.

Enabling debug logs

When resolving issues in your Waku DApp, debug logs can be helpful. The @waku/sdk and libp2p packages use the debug tool to handle and show logs that help you debug effectively.

NodeJS environments

To enable debug logs for @waku/sdk on NodeJS, you must set the DEBUG environment variable. To only enable debug logs for @waku/sdk:

export DEBUG=waku*

To enable debug logs for both @waku/sdk and libp2p:

export DEBUG=waku*,libp2p*

To enable debug logs for all components:

export DEBUG=*

Browser environments

To view debug logs in your browser's console, modify the local storage and add the debug key. Here are guides for various modern browsers:

KEYVALUEDESCRIPTION
debugwaku*Enables @waku/sdk debug logs
debugwaku*,libp2p*Enables @waku/sdk and libp2p debug logs
debug*Enables all debug logs

Checking WebSocket setup

Nwaku provides native support for WebSocket (ws) and WebSocket Secure (wss) protocols. These are the only transports supported for connecting to the Waku Network via browsers.

It's important to note that browsers impose certain limitations on WebSocket usage:

  • Secure Context Requirement: Insecure subroutines are prohibited in secure contexts. On an https:// webpage, only wss connections are permitted, while ws connections are not allowed. This restriction does not apply if the webpage is served locally, like on localhost or 127.0.0.1.
  • Certificate Validation: Certificate validation rules are consistent for https and wss connections. Certificates must not be expired, issued by a recognized Certificate Authority (CA), and match the domain name, among other criteria.
  • User Feedback on Errors: Web browsers do not display errors related to subroutines to the user. If a WebSocket connection encounters an issue, users won't be alerted directly; you'll need to check the browser's console for error details.

If you encounter difficulties when connecting to a remote node using wss, follow these steps:

Try Websocat for connection

Attempt to connect using websocat, a tool for WebSocket interactions. Test the WebSocket port using the command:

websocat -v wss://[WEBSOCKET HOST]:[WEBSOCKET PORT]

For example, consider a nwaku node with the multiaddr as /dns4/nwakunode.com/tcp/1234/wss/p2p/16...:

$ websocat -v wss://nwakunode.com:1234
# ...
[INFO websocat::ws_client_peer] Connected to ws

The connection works if the [INFO websocat::ws_client_peer] Connected to ws log entry appears. If not, check that the certificate is valid

Check certificate validity

Verify the certificate's validity by passing the -k or --insecure flag to handle invalid certificates in websocat:

websocat -v -k wss://nwakunode.com:1234

If this works, the certificate's invalidity is the problem, and you should investigate the cause of the error if not, check if the WebSocket port is accessible.

Check WebSocket port accessibility

Use telnet or another networking tool to verify if the WebSocket port is open and accessible. For example, if the multiaddr is /dns4/nwakunode.com/tcp/1234/wss/p2p/16..., use the command:

$ telnet nwakunode.com 1234
Trying 123.123.123.123...
Connected to nwakunode.com.
# ...

If the connection succeeds, there might be an issue with nwaku. Consider seeking support on the Waku Discord or raise an issue. If the connection fails, ensure that the WebSocket port is open.

- - + + \ No newline at end of file diff --git a/guides/js-waku/faq/index.html b/guides/js-waku/faq/index.html index a6d8d81..5f49ae0 100644 --- a/guides/js-waku/faq/index.html +++ b/guides/js-waku/faq/index.html @@ -5,8 +5,8 @@ JavaScript SDK FAQ | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

JavaScript SDK FAQ

You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started.
Protocol Buffers ensure consistent formatting, interoperability, and backward compatibility for your application's messages, with a smaller payload size than JSON. Check out the installation guide and Protobuf documentation to learn more.
Check out the Retrieve Messages Using Store Protocol guide to learn how to retrieve and filter historical messages using the Store protocol.
When creating your message encoder, you can configure the ephemeral option to prevent Store peers from keeping your messages on the Waku Network.
You can encrypt and decrypt your messages using symmetric, ECIES, and noise encryption methods. Check out the Encrypt, Decrypt, and Sign Your Messages guide to get started.
Waku has a specialized SDK designed for building React applications. Check out the Build React DApps Using @waku/react guide for instructions on installation and usage.
The JavaScript SDK has a default bootstrap method that can be configured with Static Peers and DNS Discovery. Check out the Bootstrap Nodes and Discover Peers guide for setting up peer discovery for your node.
Though the JavaScript SDK isn't directly usable in NodeJS due to certain limitations, we recommend running nwaku in a Docker container and consuming its REST API in a NodeJS application.
Check out the Debug Your Waku DApp and WebSocket guide to discover how to use debug logs to troubleshoot your Waku DApp and resolve connection issues with nwaku WebSockets.
We recommend regularly pinging peers to check for an active connection and reinitiating the subscription when it disconnects. Check out the Manage Your Filter Subscriptions guide for a detailed explanation and step-by-step instructions.
While it's possible to transmit media such as images as bytes on Waku, we recommend uploading your media to a CDN or a file system like IPFS and then sharing the corresponding URL via Waku.
To manually set your own node as a starting point use Configure static peers.
- - + + \ No newline at end of file diff --git a/guides/js-waku/index.html b/guides/js-waku/index.html index 10c03e7..431537f 100644 --- a/guides/js-waku/index.html +++ b/guides/js-waku/index.html @@ -5,8 +5,8 @@ JavaScript Waku SDK | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

JavaScript Waku SDK

caution

Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future.

The JavaScript Waku SDK (@waku/sdk) provides a TypeScript implementation of the Waku protocol designed for web browser environments. Developers can seamlessly integrate Waku functionalities into web applications, enabling efficient communication and collaboration among users using the @waku/sdk package.

Installation

Install the @waku/sdk package using your preferred package manager:

npm install @waku/sdk

You can also use the @waku/sdk package via a CDN without installing it on your system:

import * as waku from "https://unpkg.com/@waku/sdk@latest/bundle/index.js";

Message structure

We recommend creating a message structure for your application using Protocol Buffers for the following reasons:

  1. Consistency: Ensures uniform message format for easy parsing and processing.
  2. Interoperability: Facilitates effective communication between different parts of your application.
  3. Compatibility: Allows smooth communication between older and newer app versions.
  4. Payload Size: Minimizes payload overhead, especially for byte arrays, unlike JSON which adds significant overhead.

To get started, install the protobufjs package using your preferred package manager:

npm install protobufjs

You can also use the protobufjs package via a CDN without installing it on your system:

// Import the CDN
import "https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js";
<!-- Or include the protobufjs script -->
<script src="https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js"></script>

Getting started

Have a look at the quick start guide and comprehensive tutorials to learn how to build applications using @waku/sdk:

GuideDescription
Send and Receive Messages Using Light Push and FilterLearn how to send and receive messages on light nodes using the Light Push and Filter protocols
Retrieve Messages Using Store ProtocolLearn how to retrieve and filter historical messages on light nodes using the Store protocol
Encrypt, Decrypt, and Sign Your MessagesLearn how to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages
Build React DApps Using @waku/reactLearn how to use the @waku/react package seamlessly integrate @waku/sdk into a React application
Scaffold DApps Using @waku/create-appLearn how to use the @waku/create-app package to bootstrap your next @waku/sdk project from various example templates
Bootstrap Nodes and Discover PeersLearn how to bootstrap your node using Static Peers and discover peers using DNS Discovery
Run @waku/sdk in a NodeJS ApplicationLearn our suggested approach for using the @waku/sdk package within a NodeJS application
Debug Your Waku DApp and WebSocketLearn how to troubleshoot your Waku DApp using debug logs and check WebSocket connections in nwaku
Manage Your Filter SubscriptionsLearn how to manage filter subscriptions and handle node disconnections in your application
tip

Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.

Get help and report issues

To engage in general discussions, seek assistance, or stay updated with the latest news, visit the #support and #js-waku-contribute channels on the Waku Discord.

If you discover bugs or want to suggest new features, do not hesitate to open an issue in the js-waku repository. Your feedback and contributions are highly valued and will help improve the @waku/sdk package.

- - + + \ No newline at end of file diff --git a/guides/js-waku/light-send-receive/index.html b/guides/js-waku/light-send-receive/index.html index 37e768b..147aab4 100644 --- a/guides/js-waku/light-send-receive/index.html +++ b/guides/js-waku/light-send-receive/index.html @@ -5,8 +5,8 @@ Send and Receive Messages Using Light Push and Filter | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Send and Receive Messages Using Light Push and Filter

This guide provides detailed steps to start using the @waku/sdk package by setting up a Light Node to send messages using the Light Push protocol, and receive messages using the Filter protocol. Have a look at the installation guide for steps on adding @waku/sdk to your project.

Create a light node

Use the createLightNode() function to create a Light Node and interact with the Waku Network:

import { createLightNode } from "@waku/sdk";

// Create and start a Light Node
const node = await createLightNode({ defaultBootstrap: true });
await node.start();

// Use the stop() function to stop a running node
// await node.stop();
info

When the defaultBootstrap parameter is set to true, your node will be bootstrapped using the default bootstrap method. Have a look at the Bootstrap Nodes and Discover Peers guide to learn more methods to bootstrap nodes.

Connect to remote peers

Use the waitForRemotePeer() function to wait for the node to connect with peers on the Waku Network:

import { waitForRemotePeer } from "@waku/sdk";

// Wait for a successful peer connection
await waitForRemotePeer(node);

The protocols parameter allows you to specify the protocols that the remote peers should have enabled:

import { waitForRemotePeer, Protocols } from "@waku/sdk";

// Wait for peer connections with specific protocols
await waitForRemotePeer(node, [
Protocols.LightPush,
Protocols.Filter,
]);

Choose a content topic

Choose a content topic for your application and create a message encoder and decoder:

import { createEncoder, createDecoder } from "@waku/sdk";

// Choose a content topic
const contentTopic = "/light-guide/1/message/proto";

// Create a message encoder and decoder
const encoder = createEncoder({ contentTopic });
const decoder = createDecoder(contentTopic);

The ephemeral parameter allows you to specify whether messages should NOT be stored by Store peers:

const encoder = createEncoder({
contentTopic: contentTopic, // message content topic
ephemeral: true, // allows messages NOT be stored on the network
});
info

In this example, users send and receive messages on a shared content topic. However, real applications may have users broadcasting messages while others listen or only have 1:1 exchanges. Waku supports all these use cases.

Create a message structure

Create your application's message structure using Protobuf's valid message fields:

import protobuf from "protobufjs";

// Create a message structure using Protobuf
const ChatMessage = new protobuf.Type("ChatMessage")
.add(new protobuf.Field("timestamp", 1, "uint64"))
.add(new protobuf.Field("sender", 2, "string"))
.add(new protobuf.Field("message", 3, "string"));
info

Have a look at the Protobuf installation guide for adding the protobufjs package to your project.

Send messages using light push

To send messages over the Waku Network using the Light Push protocol, create a new message object and use the lightPush.send() function:

// Create a new message object
const protoMessage = ChatMessage.create({
timestamp: Date.now(),
sender: "Alice",
message: "Hello, World!",
});

// Serialise the message using Protobuf
const serialisedMessage = ChatMessage.encode(protoMessage).finish();

// Send the message using Light Push
await node.lightPush.send(encoder, {
payload: serialisedMessage,
});

Receive messages using filter

To receive messages using the Filter protocol, create a callback function for message processing, then use the filter.subscribe() function to subscribe to a content topic:

// Create the callback function
const callback = (wakuMessage) => {
// Check if there is a payload on the message
if (!wakuMessage.payload) return;
// Render the messageObj as desired in your application
const messageObj = ChatMessage.decode(wakuMessage.payload);
console.log(messageObj);
};

// Create a Filter subscription
const { error, subscription } = await node.filter.createSubscription({ contentTopics: [contentTopic] });

if (error) {
// handle errors if happens
throw Error(error);
}

// Subscribe to content topics and process new messages
await subscription.subscribe([decoder], callback);

You can use the subscription.unsubscribe() function to stop receiving messages from a content topic:

await subscription.unsubscribe([contentTopic]);
Congratulations!

You have successfully sent and received messages over the Waku Network using the Light Push and Filter protocols. Have a look at the light-js and light-chat examples for working demos.

- - + + \ No newline at end of file diff --git a/guides/js-waku/manage-filter/index.html b/guides/js-waku/manage-filter/index.html index 6195905..f51643f 100644 --- a/guides/js-waku/manage-filter/index.html +++ b/guides/js-waku/manage-filter/index.html @@ -5,8 +5,8 @@ Manage Your Filter Subscriptions | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Manage Your Filter Subscriptions

This guide provides detailed steps to manage Filter subscriptions and handle node disconnections in your application. Have a look at the Send and Receive Messages Using Light Push and Filter guide for using the Light Push and Filter protocols.

Overview

Occasionally, your Filter subscriptions might disconnect from the Waku Network, resulting in messages not being received by your application. To manage your subscriptions, periodically ping peers to check for an active connection. The error message "peer has no subscriptions" indicates a failed ping due to disconnection. You can stop the pings if the disconnection/unsubscription is deliberate.

Pinging filter subscriptions

The @waku/sdk package provides a Filter.ping() function to ping subscriptions and check for an active connection. To begin, create a Filter subscription:

// Create a Filter subscription
const { error, subscription } = await node.filter.createSubscription({ contentTopics: [contentTopic] });

if (error) {
// handle errors if happens
throw Error(error);
}

// Subscribe to content topics and process new messages
await subscription.subscribe([decoder], callback);

Next, create a function to ping and reinitiate the subscription:

const pingAndReinitiateSubscription = async () => {
try {
// Ping the subscription
await subscription.ping();
} catch (error) {
if (
// Check if the error message includes "peer has no subscriptions"
error instanceof Error &&
error.message.includes("peer has no subscriptions")
) {
// Reinitiate the subscription if the ping fails
await subscription.subscribe([decoder], callback);
} else {
throw error;
}
}
};

// Periodically ping the subscription
await pingAndReinitiateSubscription();
info

Pings will fail when there are temporary network degradations or reachability issues. This does not mean that the underlying connection has been closed.

Congratulations!

You have successfully managed your Filter subscriptions to handle node disconnections in your application.

- - + + \ No newline at end of file diff --git a/guides/js-waku/message-encryption/index.html b/guides/js-waku/message-encryption/index.html index 3a6c930..0a8cd49 100644 --- a/guides/js-waku/message-encryption/index.html +++ b/guides/js-waku/message-encryption/index.html @@ -5,8 +5,8 @@ Encrypt, Decrypt, and Sign Your Messages | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Encrypt, Decrypt, and Sign Your Messages

This guide provides detailed steps to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages using Waku message payload encryption methods.

info

Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to freely use custom protocols or Waku message payload encryption methods.

Installation

Install the required packages for integrating @waku/message-encryption using your preferred package manager:

npm install @waku/message-encryption @waku/utils

Symmetric encryption

Symmetric encryption uses a single, shared key for message encryption and decryption. Use the generateSymmetricKey() function to generate a random symmetric key:

import { generateSymmetricKey } from "@waku/message-encryption";

// Generate a random symmetric key
const symmetricKey = generateSymmetricKey();

To send encrypted messages, create a Symmetric message encoder and send the message as usual:

Sender client
import { createEncoder } from "@waku/message-encryption/symmetric";

// Create a symmetric message encoder
const encoder = createEncoder({
contentTopic: contentTopic, // message content topic
symKey: symmetricKey, // symmetric key for encrypting messages
});

// Send the message using Light Push
await node.lightPush.send(encoder, { payload });

To decrypt the messages you receive, create a symmetric message decoder and process the messages as usual:

Receiver client
import { createDecoder } from "@waku/message-encryption/symmetric";

// Create a symmetric message decoder
const decoder = createDecoder(contentTopic, symmetricKey);

// Receive messages from a Filter subscription
await subscription.subscribe([decoder], callback);

// Retrieve messages from Store peers
await node.store.queryWithOrderedCallback([decoder], callback);
tip

The symmetric key exchange between users can happen through an out-of-band method. For example, where the key is embedded within the URL shared by a user to access a specific resource.

ECIES encryption

ECIES encryption uses a public key for encryption and a private key for decryption. Use the generatePrivateKey() function to generate a random ECDSA private key:

import { generatePrivateKey, getPublicKey } from "@waku/message-encryption";

// Generate a random ECDSA private key, keep secure
const privateKey = generatePrivateKey();

// Generate a public key from the private key, provide to the sender
const publicKey = getPublicKey(privateKey);

To send encrypted messages, create an ECIES message encoder with the public key and send the message as usual:

Sender client
import { createEncoder } from "@waku/message-encryption/ecies";

// Create an ECIES message encoder
const encoder = createEncoder({
contentTopic: contentTopic, // message content topic
publicKey: publicKey, // ECIES public key for encrypting messages
});

// Send the message using Light Push
await node.lightPush.send(encoder, { payload });

To decrypt the messages you receive, create an ECIES message decoder with the private key and process the messages as usual:

Receiver client
import { createDecoder } from "@waku/message-encryption/ecies";

// Create an ECIES message decoder
const decoder = createDecoder(contentTopic, privateKey);

// Receive messages from a Filter subscription
await subscription.subscribe([decoder], callback);

// Retrieve messages from Store peers
await node.store.queryWithOrderedCallback([decoder], callback);
tip

Users can share their public key through broadcasting or out-of-band methods, such as embedding it in a URL or sending an unencrypted message on another content topic for others to retrieve.

Signing encrypted messages

Message signing helps in proving the authenticity of received messages. By attaching a signature to a message, you can verify its origin and integrity with absolute certainty.

info

Signing messages is only possible when encrypted, but if your application does not require encryption, you can generate a symmetric key through hardcoded or deterministic methods using information available to all users.

The sigPrivKey parameter allows the Symmetric and ECIES message encoders to sign the message before encryption using an ECDSA private key:

Alice (sender) client
import { generatePrivateKey, getPublicKey } from "@waku/message-encryption";
import { createEncoder as createSymmetricEncoder } from "@waku/message-encryption/symmetric";
import { createEncoder as createECIESEncoder } from "@waku/message-encryption/ecies";

// Generate a random ECDSA private key for signing messages
// ECIES encryption and message signing both use ECDSA keys
// For this example, we'll call the sender of the message Alice
const alicePrivateKey = generatePrivateKey();
const alicePublicKey = getPublicKey(alicePrivateKey);

// Create a symmetric encoder that signs messages
const symmetricEncoder = createSymmetricEncoder({
contentTopic: contentTopic, // message content topic
symKey: symmetricKey, // symmetric key for encrypting messages
sigPrivKey: alicePrivateKey, // private key for signing messages before encryption
});

// Create an ECIES encoder that signs messages
const ECIESEncoder = createECIESEncoder({
contentTopic: contentTopic, // message content topic
publicKey: publicKey, // ECIES public key for encrypting messages
sigPrivKey: alicePrivateKey, // private key for signing messages before encryption
});

// Send and receive your messages as usual with Light Push and Filter
await subscription.subscribe([symmetricEncoder], callback);
await node.lightPush.send(symmetricEncoder, { payload });

await subscription.subscribe([ECIESEncoder], callback);
await node.lightPush.send(ECIESEncoder, { payload });

You can extract the signature and its public key (signaturePublicKey) from the DecodedMessage and compare it with the expected public key or use the verifySignature() function to verify the message origin:

Bob (receiver) client
import { generatePrivateKey } from "@waku/message-encryption";
import { createEncoder } from "@waku/message-encryption/symmetric";

// Generate a random private key for signing messages
// For this example, we'll call the receiver of the message Bob
const bobPrivateKey = generatePrivateKey();

// Create an encoder that signs messages
const encoder = createEncoder({
contentTopic: contentTopic,
symKey: symmetricKey,
sigPrivKey: bobPrivateKey,
});

// Modify the callback function to verify message signature
const callback = (wakuMessage) => {
// Extract the message signature and public key of the signature
// You can compare the signaturePublicKey with Alice public key
const signature = wakuMessage.signature;
const signaturePublicKey = wakuMessage.signaturePublicKey;

// Verify the message was actually signed and sent by Alice
// Alice's public key can be gotten from broadcasting or out-of-band methods
if (wakuMessage.verifySignature(alicePublicKey)) {
console.log("This message was signed by Alice");
} else {
console.log("This message was NOT signed by Alice");
}
};

await subscription.subscribe([encoder], callback);

Storing encryption keys

We used randomly generated keys for encryption and message signing in the provided examples, but real-world applications require consistent keys among client restarts. Have a look at the Key Pair Handling example, which demonstrates the secure storage and retrieval of key information from local storage using Subtle Crypto.

If you need a simple way to store your keys in hexadecimal format across your application, you can use the @waku/utils package:

import { bytesToHex, hexToBytes } from "@waku/utils/bytes";

// Generate random symmetric and private keys
const symmetricKey = generateSymmetricKey();
const privateKey = generatePrivateKey();

// Store the keys in hexadecimal format
const symmetricKeyHex = bytesToHex(symmetricKey);
const privateKeyHex = bytesToHex(privateKey);

// Restore the keys from hexadecimal format
const restoredSymmetricKey = hexToBytes(symmetricKeyHex);
const restoredPrivateKey = hexToBytes(privateKeyHex);
Congratulations!

You have successfully encrypted, decrypted, and signed your messages using Symmetric and ECIES encryption methods. Have a look at the eth-pm example for a working demo.

- - + + \ No newline at end of file diff --git a/guides/js-waku/run-waku-nodejs/index.html b/guides/js-waku/run-waku-nodejs/index.html index be89c8e..c9be149 100644 --- a/guides/js-waku/run-waku-nodejs/index.html +++ b/guides/js-waku/run-waku-nodejs/index.html @@ -5,8 +5,8 @@ Run @waku/sdk in a NodeJS Application | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run @waku/sdk in a NodeJS Application

While the @waku/sdk package is primarily designed for browser environments, you can use it in a NodeJS application. However, there are certain limitations and considerations to keep in mind. This guide provides a comprehensive overview of using @waku/sdk in NodeJS.

Limitations

API compatibility

@waku/sdk prioritises browser compatibility, avoiding NodeJS APIs for simpler bundling. This design choice enhances browser API compatibility but sacrifices NodeJS optimisation. While many browser APIs work in NodeJS, they might need better optimisation.

Protocol implementation

@waku/sdk focuses on the client side of the Request/Response protocol. We'll have to replicate all the functionalities added to nwaku to implement extra features.

Codebase complexity

@waku/sdk aims to provide optimal default for the browser, striking a balance between browser and NodeJS compatibility while ensuring simplicity will add complexity.

Browser-specific protocols

Certain features in @waku/sdk are tailored for browsers and might not translate seamlessly to NodeJS. For example, only WebSocket is supported in the browser, whereas a NodeJS application can benefit from using transport methods like TCP.

@waku/sdk default peer management caters to the browser's ephemeral nature, which is different for NodeJS. This is why DNS Discovery and Peer Exchange are the default discovery mechanisms for the browser but not for NodeJS and desktop applications.

Recommendations

Before using @waku/sdk in a NodeJS environment, take into account these limitations. For a more optimised solution, we recommend running nwaku in a Docker container and consuming its REST API.

Future developments

There are plans to release a NodeJS package based on nwaku to streamline the process of using Waku Network features in NodeJS applications. You can track the progress and updates here: https://github.com/waku-org/nwaku/issues/1332.

- - + + \ No newline at end of file diff --git a/guides/js-waku/store-retrieve-messages/index.html b/guides/js-waku/store-retrieve-messages/index.html index a8c0346..de0d9ab 100644 --- a/guides/js-waku/store-retrieve-messages/index.html +++ b/guides/js-waku/store-retrieve-messages/index.html @@ -5,8 +5,8 @@ Retrieve Messages Using Store Protocol | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Retrieve Messages Using Store Protocol

This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.

Create a light node

Use the createLightNode() function to create a Light Node and interact with the Waku Network:

import { createLightNode } from "@waku/sdk";

// Create and start a Light Node
const node = await createLightNode({ defaultBootstrap: true });
await node.start();

Connect to store peers

Use the waitForRemotePeer() function to wait for the node to connect with Store peers:

import { waitForRemotePeer, Protocols } from "@waku/sdk";

// Wait for a successful peer connection
await waitForRemotePeer(node, [Protocols.Store]);

Choose a content topic

Choose a content topic for filtering the messages to retrieve and create a message decoder:

import { createDecoder } from "@waku/sdk";

// Choose a content topic
const contentTopic = "/store-guide/1/message/proto";

// Create a message decoder
const decoder = createDecoder(contentTopic);

Retrieve messages

@waku/sdk provides the queryWithOrderedCallback() and queryGenerator() functions for querying Store nodes and retrieving historical or missed messages. The responses from Store nodes are paginated and require you to process each page sequentially.

queryWithOrderedCallback

The store.queryWithOrderedCallback() function provides a straightforward method for querying Store nodes and processing messages in chronological order through a callback function. It accepts these parameters:

  • decoders: List of decoders that specify the content topic to query for and their message decryption methods.
  • callback: The callback function for processing the retrieved messages.
  • options (optional): Query options to filter the retrieved messages.
// Create the callback function
const callback = (wakuMessage) => {
// Render the message/payload in your application
console.log(wakuMessage);
};

// Query the Store peer
await node.store.queryWithOrderedCallback([decoder], callback);
info

The queryWithOrderedCallback() function always returns the most recent messages in a page first.

queryGenerator

The store.queryGenerator() function provides more control and flexibility over processing messages retrieved from Store nodes through Async Generators. It accepts these parameters:

  • decoders: List of decoders that specify the content topic to query for and their message decryption methods.
  • options (optional): Query options to filter the retrieved messages.
// Create the store query
const storeQuery = node.store.queryGenerator([decoder]);

// Process the messages
for await (const messagesPromises of storeQuery) {
// Fulfil the messages promises
const messages = await Promise.all(
messagesPromises.map(async (p) => {
const msg = await p;
// Render the message/payload in your application
console.log(msg);
})
);
}
info

The queryGenerator() function always returns the oldest messages in a page first.

Store query options

pageDirection

The pageDirection option specifies the direction in which pages are retrieved:

  • BACKWARD (default): Most recent page first.
  • FORWARD: Oldest page first.
import { PageDirection } from "@waku/sdk";

// Retrieve recent messages first
const queryOptions = {
pageDirection: PageDirection.BACKWARD,
};

// Retrieve oldest messages first
const queryOptions = {
pageDirection: PageDirection.FORWARD,
};

// Query the Store peer with options
await node.store.queryWithOrderedCallback([decoder], callback, options);
const storeQuery = node.store.queryGenerator([decoder, options]);

cursor

The cursor option specifies the starting index for retrieving messages. For example, consider a query that retrieves the first page messages and then continues with the next page:

import { waku } from "@waku/sdk";

// Create the callback function
const messages = [];
const callback = (wakuMessage) => {
messages.push(wakuMessage);
// Return "true" to stop retrieving pages
// Here, it retrieves only the first page
return true;
};

// Retrieve the first page of messages
// This retrieves all the messages if "return true" is not present
await node.store.queryWithOrderedCallback([decoder], callback);

// Create the cursor
const lastMessage = messages[messages.length - 1];
const cursor = await waku.createCursor(lastMessage);

// Retrieve the next page of messages
// The message at the cursor index is excluded from the result
await node.store.queryWithOrderedCallback([decoder], callback, {
cursor: cursor,
});
console.log(messages);
info

If you omit the cursor option, the query will start from the beginning or end of the history, depending on the page direction.

timeFilter

The timeFilter option specifies a time frame to retrieve messages from. For example, consider a query that retrieves messages from the previous week:

// Get the time frame
const endTime = new Date();
const startTime = new Date();
startTime.setDate(endTime.getDate() - 7);

// Retrieve a week of messages
const queryOptions = {
timeFilter: {
startTime,
endTime,
},
};

// Query the Store peer with options
await node.store.queryWithOrderedCallback([decoder], callback, options);
const storeQuery = node.store.queryGenerator([decoder, options]);
info

The timeFilter option significantly reduces message retrieval performance. To optimise it, consider resuming message retrieval using a cursor that starts from the last seen message.

Congratulations!

You have successfully retrieved and filtered historical messages on a Light Node using the Store protocol. Have a look at the store-js and store-reactjs-chat examples for working demos.

- - + + \ No newline at end of file diff --git a/guides/js-waku/use-waku-create-app/index.html b/guides/js-waku/use-waku-create-app/index.html index 4d135d5..34e7283 100644 --- a/guides/js-waku/use-waku-create-app/index.html +++ b/guides/js-waku/use-waku-create-app/index.html @@ -5,8 +5,8 @@ Scaffold DApps Using @waku/create-app | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Scaffold DApps Using @waku/create-app

This guide provides detailed steps to bootstrap your next @waku/sdk project from various example templates using the @waku/create-app package.

Usage

Initialise a new @waku/sdk template using any of the following methods:

npx @waku/create-app [PROJECT DIRECTORY]

Next, select a template to initialise your app from:

waku create app demo

tip

If you have previously installed @waku/create-app globally, we recommend uninstalling the package to ensure that npx always uses the latest version.

Contributing new templates

We welcome and appreciate the contributions of templates for the @waku/create-app package. To contribute a template, please follow these steps:

  1. Create the template, ensuring it is user-friendly and thoroughly tested.
  2. Place the template in the examples folder in the js-waku-examples repository's root.
  3. Commit your changes with a detailed message and push them to your forked repository.
  4. Finally, submit a pull request to the js-waku-examples repository.
  5. Our team will carefully review and merge your submission upon approval.

Waku also provides bounties to encourage community members to contribute to the network and earn rewards. To participate in the bounty program, head to https://github.com/waku-org/bounties.

- - + + \ No newline at end of file diff --git a/guides/js-waku/use-waku-react/index.html b/guides/js-waku/use-waku-react/index.html index 097e03c..db7e7ba 100644 --- a/guides/js-waku/use-waku-react/index.html +++ b/guides/js-waku/use-waku-react/index.html @@ -5,8 +5,8 @@ Build React DApps Using @waku/react | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Build React DApps Using @waku/react

caution

Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future.

The @waku/react package provides components and UI adapters to integrate @waku/sdk into React applications effortlessly. This guide provides detailed steps for using @waku/react in your project.

Install the dependencies

First, set up a project using any production-grade React framework or an existing React application. For this guide, we will create a boilerplate using ViteJS:

npm create vite@latest [PROJECT DIRECTORY] -- --template react

Next, install the required packages for integrating @waku/sdk using your preferred package manager:

npm install @waku/react @waku/sdk protobufjs

Initialise the Waku provider

In the main.jsx file, which serves as the entry point for a React app, we will set up the LightNodeProvider context provider to wrap the entire application within the Waku provider. Import the following on top of your file:

src/main.jsx
import { LightNodeProvider } from "@waku/react";

// Set the Light Node options
const NODE_OPTIONS = { defaultBootstrap: true };

ReactDOM.createRoot(document.getElementById('root')).render(
// Use the Light Node context provider
<React.StrictMode>
<LightNodeProvider options={NODE_OPTIONS}>
<App />
</LightNodeProvider>
</React.StrictMode>,
)

Next, create and start a Light Node using the useWaku() function within the App.jsx file:

src/App.jsx
import { useWaku } from "@waku/react";

function App() {
// Create and start a Light Node
const { node, error, isLoading } = useWaku();

// "node" is the created Light Node
// "error" captures any error that occurs during node creation
// "isLoading" indicates whether the node is still being created
}

Build the application interface

Let's build a user interface for sending messages and viewing past messages, modify the App.jsx file with the following code block:

src/App.jsx
import { useState, useEffect } from 'react';
import { useWaku } from "@waku/react";
import { createEncoder, createDecoder } from "@waku/sdk";
import protobuf from 'protobufjs';
import './App.css'

function App() {
const [inputMessage, setInputMessage] = useState("");
const [messages, setMessages] = useState([]);

// Update the inputMessage state as the user input changes
const handleInputChange = (e) => {
setInputMessage(e.target.value);
};

// Create and start a Light Node
const { node, error, isLoading } = useWaku();

// Create a message encoder and decoder
const contentTopic = "/waku-react-guide/1/chat/proto";
const encoder = createEncoder({ contentTopic });
const decoder = createDecoder(contentTopic);

// Create a message structure using Protobuf
const ChatMessage = new protobuf.Type("ChatMessage")
.add(new protobuf.Field("timestamp", 1, "uint64"))
.add(new protobuf.Field("message", 2, "string"));

// Send the message using Light Push
const sendMessage = async () => {}

return (
<>
<div className="chat-interface">
<h1>Waku React Demo</h1>
<div className="chat-body">
{messages.map((message, index) => (
<div key={index} className="chat-message">
<span>{new Date(message.timestamp).toUTCString()}</span>
<div className="message-text">{message.message}</div>
</div>
))}
</div>
<div className="chat-footer">
<input
type="text"
id="message-input"
value={inputMessage}
onChange={handleInputChange}
placeholder="Type your message..."
/>
<button className="send-button" onClick={sendMessage}>Send</button>
</div>
</div>
</>
)
}

export default App
info

In the code above, we also created a message encoder and decoder using the createEncoder() and createDecoder() functions, along with the application message structure with Protobuf.

Next, modify the App.css file with the following code block:

src/App.css
#root {
margin: 0 auto;
}

.chat-interface {
display: flex;
flex-direction: column;
height: 100vh;
border: 1px solid #ccc;
}

.chat-body {
flex-grow: 1;
overflow-y: auto;
padding: 10px;
}

.message-text {
background-color: #f1f1f1;
color: #000;
padding: 10px;
margin-bottom: 10px;
}

.chat-footer {
display: flex;
padding: 10px;
background-color: #f1f1f1;
align-items: center;
}

#message-input {
flex-grow: 1;
border-radius: 4px;
padding: 10px;
margin-right: 10px;
}

.send-button {
background-color: #007bff;
border-radius: 4px;
}

Send messages using light push

To send messages in our application, we need to modify the sendMessage() function to serialize user input into our Protobuf structure and push it to the network using the useLightPush() function:

src/App.jsx
import { useLightPush } from "@waku/react";

function App() {
// Bind push method to a node and encoder
const { push } = useLightPush({ node, encoder });

// Send the message using Light Push
const sendMessage = async () => {
if (!push || inputMessage.length === 0) return;

// Create a new message object
const timestamp = Date.now();
const protoMessage = ChatMessage.create({
timestamp: timestamp,
message: inputMessage
});

// Serialise the message and push to the network
const payload = ChatMessage.encode(protoMessage).finish();
const { recipients, errors } = await push({ payload, timestamp });

// Check for errors
if (errors.length === 0) {
setInputMessage("");
console.log("MESSAGE PUSHED");
} else {
console.log(errors);
}
};
}

Receive messages using filter

To display messages in our application, we need to use the useFilterMessages() function to create a Filter subscription, receive incoming messages, and render them in our interface:

src/App.jsx
import { useFilterMessages } from "@waku/react";

function App() {
// Receive messages from Filter subscription
const { messages: filterMessages } = useFilterMessages({ node, decoder });

// Render the list of messages
useEffect(() => {
setMessages(filterMessages.map((wakuMessage) => {
if (!wakuMessage.payload) return;
return ChatMessage.decode(wakuMessage.payload);
}));
}, [filterMessages]);
}

Retrieve messages using store

To display messages from the past, we need to retrieve them from the Store protocol using the useStoreMessages() function when our application initialises and then render them alongside newly received messages:

src/App.jsx
import { useFilterMessages, useStoreMessages } from "@waku/react";

function App() {
// Query Store peers for past messages
const { messages: storeMessages } = useStoreMessages({ node, decoder });

// Receive messages from Filter subscription
const { messages: filterMessages } = useFilterMessages({ node, decoder });

// Render both past and new messages
useEffect(() => {
const allMessages = storeMessages.concat(filterMessages);
setMessages(allMessages.map((wakuMessage) => {
if (!wakuMessage.payload) return;
return ChatMessage.decode(wakuMessage.payload);
}));
}, [filterMessages, storeMessages]);
}
info

To explore the available Store query options, have a look at the Retrieve Messages Using Store Protocol guide.

tip

You have successfully integrated @waku/sdk into a React application using the @waku/react package. Have a look at the web-chat example for a working demo and the Building a Tic-Tac-Toe Game with Waku tutorial to learn more.

- - + + \ No newline at end of file diff --git a/guides/nwaku/build-source/index.html b/guides/nwaku/build-source/index.html index 5e919ba..7ee3117 100644 --- a/guides/nwaku/build-source/index.html +++ b/guides/nwaku/build-source/index.html @@ -5,8 +5,8 @@ Build Nwaku from Source | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Build Nwaku from Source

This guide provides detailed steps to build a nwaku node from the source code to access the latest development version or a specific commit or release of nwaku. For your convenience, you may want to download a pre-compiled binary instead.

info
  • A minimum of 2GB of RAM is required to build nwaku.
  • Nwaku is available for Linux and macOS, with experimental Windows support.

Prerequisites

To build nwaku, you need the standard developer tools, including a C compiler, GNU Make, Bash, Git, Rustup, and PostgreSQL client library.

sudo apt-get install build-essential git libpq5 jq
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

Clone the repository

Get the source code from the GitHub repository. The default branch is master, the release candidate for major updates.

git clone https://github.com/waku-org/nwaku
cd nwaku
tip

You can use git tag -l to check specific version tags.

Build the binary

Build the nwaku binary:

make wakunode2

The first make invocation updates to all Git submodules. After each git pull, run make update to keep the submodules updated in the future.

make update

Run the binary

Nwaku will create the wakunode2 binary in the ./build/ directory.

# Run with default configuration
./build/wakunode2

# See available command line options
./build/wakunode2 --help

To learn more about running nwaku, have a look at these guides:

Run test suite

Run the tests for Waku:

make test
Congratulations!

You have successfully built the nwaku binary from the source code. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.

- - + + \ No newline at end of file diff --git a/guides/nwaku/config-methods/index.html b/guides/nwaku/config-methods/index.html index 8f49c3c..798e4e4 100644 --- a/guides/nwaku/config-methods/index.html +++ b/guides/nwaku/config-methods/index.html @@ -5,8 +5,8 @@ Node Configuration Methods | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Node Configuration Methods

Waku nodes can be configured using a combination of the following methods:

  1. Command line options and flags
  2. Environment variables
  3. TOML configuration files (currently the only supported format)
  4. Default values
info

Take note of the precedence order: Each configuration method overrides the one below it (e.g., command line options override environment variables and configuration files).

Command line options

Node configuration is primarily done using command line options, which override other methods. Specify configuration options by providing them in this format after the binary name:

./build/wakunode2 --tcp-port=65000

When running your node with Docker, provide the command line options after the image name in this format:

docker run statusteam/nim-waku --tcp-port=65000

Environment variables

Nodes can be configured using environment variables by prefixing the variable name with WAKUNODE2_ and using the configuration option in SCREAMING_SNAKE_CASE format.

To set the tcp-port configuration, the wakunode2 binary should be called in this format:

WAKUNODE2_TCP_PORT=65000 ./build/wakunode2

When running your node with Docker, start the node using the -e command option:

docker run -e "WAKUNODE2_TCP_PORT=65000" statusteam/nim-waku
info

This is the second configuration method in order of precedence. Command Line Options override environment variables.

Configuration files

Nodes can be configured using a configuration file following the TOML format:

TOML Config File
log-level = "DEBUG"
tcp-port = 65000
topic = ["/waku/2/default-waku/proto"]
metrics-logging = false

The config-file configuration option lets you specify the configuration file path:

./build/wakunode2 --config-file=[TOML CONFIGURATION FILE]

You can also specify the configuration file via environment variables:

# Using environment variables
WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE] ./build/wakunode2

# Using environment variables with Docker
docker run -e "WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE]" statusteam/nim-waku
info

This is the third configuration method in order of precedence. Command Line Options and Environment Variables override configuration files.

Default configuration values

The default configuration is used when no other options are specified. By default, a nwaku node does the following:

  • Generate a new Node Key and PeerID.
  • Listen for incoming libp2p connections on the default TCP port (60000).
  • Subscribe to the default Pub/Sub topic (/waku/2/default-waku/proto).
  • Enable the Relay protocol for relaying messages.
  • Enable the Store protocol as a client, allowing it to query peers for historical messages but not store any message itself.

To see the default values of all configuration options, run wakunode2 --help:

./build/wakunode2 --help
tip

To explore the available node configuration options, have a look at the Node Configuration Options guide.

- - + + \ No newline at end of file diff --git a/guides/nwaku/config-options/index.html b/guides/nwaku/config-options/index.html index 4f6462a..c32e13a 100644 --- a/guides/nwaku/config-options/index.html +++ b/guides/nwaku/config-options/index.html @@ -5,8 +5,8 @@ Node Configuration Options | Waku Documentation - - + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Node Configuration Options

Here are the available node configuration options, along with their default values and descriptions:

Application-level config

NameDefault ValueDescription
config-fileLoads configuration from a TOML file (cmd-line parameters take precedence)
protected-topicnewSeq[ProtectedTopic](0)Topics and its public key to be used for message validation, topic:pubkey. Argument may be repeated

Log config

NameDefault ValueDescription
log-levellogging.LogLevel.INFOSets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL
log-formatlogging.LogFormat.TEXTSpecifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON

General node config

NameDefault ValueDescription
cluster-id0Cluster id that the node is running in. Node in a different cluster id is disconnected
agent-stringnwakuNode agent string which is used as identifier in network
nodekeyP2P node private key as 64-char hex string
listen-addressdefaultListenAddress()Listening address for LibP2P (and Discovery v5, if enabled) traffic
tcp-port60000TCP listening port
ports-shift0Add a shift to all port numbers
natanySpecify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip:<IP>
ext-multiaddrExternal multiaddresses to advertise to the network. Argument may be repeated
ext-multiaddr-onlyfalseOnly announce external multiaddresses
max-connections50Maximum allowed number of libp2p connections
max-relay-peersMaximum allowed number of relay peers
peer-store-capacityMaximum stored peers in the peerstore
peer-persistencefalseEnable peer persistence

DNS addrs config

NameDefault ValueDescription
dns-addrstrueEnable resolution of dnsaddr, dns4 or dns6 multiaddrs
dns-addrs-name-server["1.1.1.1", "1.0.0.1"]DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated
dns4-domain-nameThe domain name resolving to the node's public IPv4 address

Relay config

NameDefault ValueDescription
relaytrueEnable relay protocol: true|false
relay-peer-exchangefalseEnable gossipsub peer exchange in relay protocol: true|false
rln-relayfalseEnable spam protection through rln-relay: true|false
rln-relay-cred-pathThe path for persisting rln-relay credential
rln-relay-membership-indexThe index of the onchain commitment to use
rln-relay-dynamicfalseEnable waku-rln-relay with on-chain dynamic group management: true|false
rln-relay-id-keyRln relay identity secret key as a Hex string
rln-relay-id-commitment-keyRln relay identity commitment key as a Hex string
rln-relay-eth-client-addressws://localhost:8540/WebSocket address of an Ethereum testnet client e.g., ws://localhost:8540/
rln-relay-eth-contract-addressAddress of membership contract on an Ethereum testnet
rln-relay-eth-private-keyPrivate key for broadcasting transactions
executefalseRuns the registration function on-chain. By default, a dry-run will occur
rln-relay-cred-passwordPassword for encrypting RLN credentials
rln-relay-tree-pathPath to the RLN merkle tree sled db (https://github.com/spacejam/sled)
rln-relay-bandwidth-threshold0 # to maintain backwards compatibilityMessage rate in bytes/sec after which verification of proofs should happen
staticnodePeer multiaddr to directly connect with. Argument may be repeated
keep-alivefalseEnable keep-alive for idle connections: true|false
pubsub-topicDefault pubsub topic to subscribe to. Argument may be repeated. Deprecated! Please use shard and/or content-topic instead
shardShard to subscribe to. Argument may be repeated
content-topicDefault content topic to subscribe to. Argument may be repeated
reliabilityfalseEnable experimental reliability protocol true|false

Store and message store config

NameDefault ValueDescription
storefalseEnable/disable waku store protocol
storenodePeer multiaddress to query for storage
store-message-retention-policytime:172800Message store retention policy. Time retention policy: time:<seconds>. Capacity retention policy: capacity:<count>. Size retention policy: size:<xMB/xGB>. Set to none to disable
store-message-db-urlsqlite://store.sqlite3The database connection URL for persistent storage
store-message-db-vacuumfalseEnable database vacuuming at start. Only supported by SQLite database engine
store-message-db-migrationtrueEnable database migration at start

Filter config

NameDefault ValueDescription
filterfalseEnable filter protocol: true|false
filternodePeer multiaddr to request content filtering of messages
filter-subscription-timeout300 # 5 minutesTimeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol
filter-max-peers-to-serve1000Maximum number of peers to serve at a time. Only for v2 filter protocol
filter-max-criteria1000Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol

Light push config

NameDefault ValueDescription
lightpushfalseEnable lightpush protocol: true|false
lightpushnodePeer multiaddr to request lightpush of published messages

REST HTTP config

NameDefault ValueDescription
restfalseEnable Waku REST HTTP server: true|false
rest-address127.0.0.1Listening address of the REST HTTP server
rest-port8645Listening port of the REST HTTP server
rest-relay-cache-capacity30Capacity of the Relay REST API message cache
rest-adminfalseEnable access to REST HTTP Admin API: true|false
rest-allow-originAllow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,*) for defining URLs and ports such as localhost:*, 127.0.0.1:8080, or allow any website with *

Metrics config

NameDefault ValueDescription
metrics-serverfalseEnable the metrics server: true|false
metrics-server-address127.0.0.1Listening address of the metrics server
metrics-server-port8008Listening HTTP port of the metrics server
metrics-loggingtrueEnable metrics logging: true|false

DNS discovery config

NameDefault ValueDescription
dns-discoveryfalseEnable discovering nodes via DNS
dns-discovery-urlURL for DNS node list in format 'enrtree://<key>@<fqdn>'
dns-discovery-name-server["1.1.1.1", "1.0.0.1"]DNS name server IPs to query. Argument may be repeated

Discv5 config

NameDefault ValueDescription
discv5-discoveryfalseEnable discovering nodes via Node Discovery v5
discv5-udp-port9000Listening UDP port for Node Discovery v5
discv5-bootstrap-nodeText-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated
discv5-enr-auto-updatefalseDiscovery can automatically update its ENR with the IP address
discv5-table-ip-limit10Maximum amount of nodes with the same IP in discv5 routing tables
discv5-bucket-ip-limit2Maximum amount of nodes with the same IP in discv5 routing table buckets
discv5-bits-per-hop1Kademlia's b variable, increase for less hops per lookup

Waku peer exchange config

NameDefault ValueDescription
peer-exchangefalseEnable waku peer exchange protocol (responder side): true|false
peer-exchange-nodePeer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)

WebSocket config

NameDefault ValueDescription
websocket-supportfalseEnable websocket: true|false
websocket-port8000WebSocket listening port
websocket-secure-supportfalseEnable secure websocket: true|false
websocket-secure-key-pathSecure websocket key path: '/path/to/key.txt'
websocket-secure-cert-pathSecure websocket Certificate path: '/path/to/cert.txt'
tip

To configure your node using the provided configuration options, have a look at the Node Configuration Methods guide.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Node Configuration Options

Here are the available node configuration options, along with their default values and descriptions:

Application-level config

NameDefault ValueDescription
config-fileLoads configuration from a TOML file (cmd-line parameters take precedence)
protected-topicnewSeq[ProtectedTopic](0)Topics and its public key to be used for message validation, topic:pubkey. Argument may be repeated

Log config

NameDefault ValueDescription
log-levellogging.LogLevel.INFOSets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL
log-formatlogging.LogFormat.TEXTSpecifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON

General node config

NameDefault ValueDescription
cluster-id0Cluster id that the node is running in. Node in a different cluster id is disconnected
agent-stringnwakuNode agent string which is used as identifier in network
nodekeyP2P node private key as 64-char hex string
listen-addressdefaultListenAddress()Listening address for LibP2P (and Discovery v5, if enabled) traffic
tcp-port60000TCP listening port
ports-shift0Add a shift to all port numbers
natanySpecify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip:<IP>
ext-multiaddrExternal multiaddresses to advertise to the network. Argument may be repeated
ext-multiaddr-onlyfalseOnly announce external multiaddresses
max-connections50Maximum allowed number of libp2p connections
max-relay-peersMaximum allowed number of relay peers
peer-store-capacityMaximum stored peers in the peerstore
peer-persistencefalseEnable peer persistence

DNS addrs config

NameDefault ValueDescription
dns-addrstrueEnable resolution of dnsaddr, dns4 or dns6 multiaddrs
dns-addrs-name-server["1.1.1.1", "1.0.0.1"]DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated
dns4-domain-nameThe domain name resolving to the node's public IPv4 address

Relay config

NameDefault ValueDescription
relaytrueEnable relay protocol: true|false
relay-peer-exchangefalseEnable gossipsub peer exchange in relay protocol: true|false
rln-relayfalseEnable spam protection through rln-relay: true|false
rln-relay-cred-pathThe path for persisting rln-relay credential
rln-relay-membership-indexThe index of the onchain commitment to use
rln-relay-dynamicfalseEnable waku-rln-relay with on-chain dynamic group management: true|false
rln-relay-id-keyRln relay identity secret key as a Hex string
rln-relay-id-commitment-keyRln relay identity commitment key as a Hex string
rln-relay-eth-client-addressws://localhost:8540/WebSocket address of an Ethereum testnet client e.g., ws://localhost:8540/
rln-relay-eth-contract-addressAddress of membership contract on an Ethereum testnet
rln-relay-eth-private-keyPrivate key for broadcasting transactions
executefalseRuns the registration function on-chain. By default, a dry-run will occur
rln-relay-cred-passwordPassword for encrypting RLN credentials
rln-relay-tree-pathPath to the RLN merkle tree sled db (https://github.com/spacejam/sled)
rln-relay-bandwidth-threshold0 # to maintain backwards compatibilityMessage rate in bytes/sec after which verification of proofs should happen
staticnodePeer multiaddr to directly connect with. Argument may be repeated
keep-alivefalseEnable keep-alive for idle connections: true|false
pubsub-topicDefault pubsub topic to subscribe to. Argument may be repeated. Deprecated! Please use shard and/or content-topic instead
shardShard to subscribe to. Argument may be repeated
content-topicDefault content topic to subscribe to. Argument may be repeated
reliabilityfalseEnable experimental reliability protocol true|false

Store and message store config

NameDefault ValueDescription
storefalseEnable/disable waku store protocol
storenodePeer multiaddress to query for storage
store-message-retention-policytime:172800Message store retention policy. Time retention policy: time:<seconds>. Capacity retention policy: capacity:<count>. Size retention policy: size:<xMB/xGB>. Set to none to disable
store-message-db-urlsqlite://store.sqlite3The database connection URL for persistent storage
store-message-db-vacuumfalseEnable database vacuuming at start. Only supported by SQLite database engine
store-message-db-migrationtrueEnable database migration at start

Filter config

NameDefault ValueDescription
filterfalseEnable filter protocol: true|false
filternodePeer multiaddr to request content filtering of messages
filter-subscription-timeout300 # 5 minutesTimeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol
filter-max-peers-to-serve1000Maximum number of peers to serve at a time. Only for v2 filter protocol
filter-max-criteria1000Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol

Light push config

NameDefault ValueDescription
lightpushfalseEnable lightpush protocol: true|false
lightpushnodePeer multiaddr to request lightpush of published messages

REST HTTP config

NameDefault ValueDescription
restfalseEnable Waku REST HTTP server: true|false
rest-address127.0.0.1Listening address of the REST HTTP server
rest-port8645Listening port of the REST HTTP server
rest-relay-cache-capacity30Capacity of the Relay REST API message cache
rest-adminfalseEnable access to REST HTTP Admin API: true|false
rest-allow-originAllow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,*) for defining URLs and ports such as localhost:*, 127.0.0.1:8080, or allow any website with *

Metrics config

NameDefault ValueDescription
metrics-serverfalseEnable the metrics server: true|false
metrics-server-address127.0.0.1Listening address of the metrics server
metrics-server-port8008Listening HTTP port of the metrics server
metrics-loggingtrueEnable metrics logging: true|false

DNS discovery config

NameDefault ValueDescription
dns-discoveryfalseEnable discovering nodes via DNS
dns-discovery-urlURL for DNS node list in format 'enrtree://<key>@<fqdn>'
dns-discovery-name-server["1.1.1.1", "1.0.0.1"]DNS name server IPs to query. Argument may be repeated

Discv5 config

NameDefault ValueDescription
discv5-discoveryfalseEnable discovering nodes via Node Discovery v5
discv5-udp-port9000Listening UDP port for Node Discovery v5
discv5-bootstrap-nodeText-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated
discv5-enr-auto-updatefalseDiscovery can automatically update its ENR with the IP address
discv5-table-ip-limit10Maximum amount of nodes with the same IP in discv5 routing tables
discv5-bucket-ip-limit2Maximum amount of nodes with the same IP in discv5 routing table buckets
discv5-bits-per-hop1Kademlia's b variable, increase for less hops per lookup

Waku peer exchange config

NameDefault ValueDescription
peer-exchangefalseEnable waku peer exchange protocol (responder side): true|false
peer-exchange-nodePeer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)

WebSocket config

NameDefault ValueDescription
websocket-supportfalseEnable websocket: true|false
websocket-port8000WebSocket listening port
websocket-secure-supportfalseEnable secure websocket: true|false
websocket-secure-key-pathSecure websocket key path: '/path/to/key.txt'
websocket-secure-cert-pathSecure websocket Certificate path: '/path/to/cert.txt'

Non relay, request-response protocol DOS protection configuration

NameDefault ValueDescription
rate-limitThis is a repeatable option. Each one of them can describe spefic rate limit configuration for a particular protocol.
\<protocol>:volume/period\<time-unit>
- if protocol is not given, settings will be taken as default for un-set protocols. Ex: 80/2s
-Supported protocols are: lightpush|filter|px|store|storev2|storev3
-volume must be an integer value, representing number of requests over the period of time allowed.
-period\<time-unit> must be an integer with defined unit as one of h|m|s|ms
- storev2 and storev3 takes precedence over store which can easy set both store protocols at once.
- In case of multiple set of the same protocol limit, last one will take place.
- if config is not set it means unlimited requests are allowed.
-filter has a bit different approach. It has a default setting applied if not overridden. Rate limit setting for filter will be applied per subscriber-peers, not globally - it must be considered when changing the setting.

Examples:
- 100/1s - default for all protocols if not set otherwise.
-lightpush:0/0s - lightpush protocol will be not rate limited.
-store:130/1500ms - both store-v3 and store-v2 will apply 130 request per each 1500ms separately.
-px:10/1h PeerExchange will serve only 10 requests in every hour.
-filter:8/5m - will allow 8 subs/unsubs/ping requests for each subscribers within every 5 min.
tip

To configure your node using the provided configuration options, have a look at the Node Configuration Methods guide.

+ + \ No newline at end of file diff --git a/guides/nwaku/configure-discovery/index.html b/guides/nwaku/configure-discovery/index.html index 8225dc4..e394680 100644 --- a/guides/nwaku/configure-discovery/index.html +++ b/guides/nwaku/configure-discovery/index.html @@ -5,8 +5,8 @@ Configure Peer Discovery | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Configure Peer Discovery

This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network.

info

You can configure a nwaku node to use multiple peer discovery mechanisms simultaneously.

Configure static peers

You can provide static peers to a nwaku node during startup using the staticnode configuration option. To connect to multiple peers on startup, repeat the staticnode option:

./build/wakunode2 \
--staticnode=[PEER MULTIADDR 1] \
--staticnode=[PEER MULTIADDR 2]

For example, consider a nwaku node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003:

./build/wakunode2 \
--staticnode=/ip4/0.0.0.0/tcp/60002/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H \
--staticnode=/ip4/0.0.0.0/tcp/60003/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ

Configure DNS discovery

To enable DNS Discovery in a nwaku node, use the following configuration options:

  • dns-discovery: Enables DNS Discovery on the node (disabled by default).
  • dns-discovery-url: URL for DNS node list in the format enrtree://<key>@<fqdn> where <fqdn> is the fully qualified domain name and <key> is the base32 encoding of the compressed 32-byte public key that signed the list at that location.
  • dns-discovery-name-server (optional): DNS name server IPs to query. You can repeat this option to provide multiple DNS name servers.
./build/wakunode2 \
--dns-discovery=true \
--dns-discovery-url=enrtree://[PUBLIC KEY]@[DOMAIN NAME] \
--dns-discovery-name-server=[DNS NAME SERVER IP]
info

If you omit the dns-discovery-name-server option, nwaku will attempt to use the CloudFlare servers 1.1.1.1 and 1.0.0.1.

For example, consider a nwaku node that enables DNS Discovery, connects to a DNS node list, and queries the IPs 8.8.8.8 and 8.8.4.4:

./build/wakunode2 \
--dns-discovery=true \
--dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \
--dns-discovery-name-server=8.8.8.8 \
--dns-discovery-name-server=8.8.4.4

Configure Discv5

To enable Discv5 in a nwaku node, use the following configuration options:

  • discv5-discovery: Enables Discv5 on the node (disabled by default).
  • discv5-bootstrap-node: ENR for Discv5 routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries.
./build/wakunode2 \
--discv5-discovery=true \
--discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 1] \
--discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 2]

For example, consider a nwaku node that enables Discv5 and bootstraps its routing table using a static ENR:

./build/wakunode2 \
--discv5-discovery=true \
--discv5-bootstrap-node=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw
info

When Discv5 is enabled and used with DNS Discovery, the nwaku node will attempt to bootstrap the Discv5 routing table by extracting ENRs from peers discovered through DNS.

Configure peer exchange

To enable Peer Exchange in a nwaku node, use the following configuration options:

  • peer-exchange: Enables Peer Exchange on the node as a responder (disabled by default).
  • peer-exchange-node (optional): Multiaddr for bootstrap node with the peer exchange protocol enabled.
./build/wakunode2 \
--peer-exchange=true \
--peer-exchange-node=[PEER MULTIADDR WITH EXCHANGE ENABLED]

For example, consider two nwaku nodes configured as a server (peer exchange responder node) and client (node using peer exchange) on the same local host (IP: 0.0.0.0):

Server: Nwaku Node with Peer Exchange Enabled
./build/wakunode2 --peer-exchange=true
Client: Nwaku Node Bootstrapping with Peer Exchange
./build/wakunode2 \
--tcp-port=30305 \
--ports-shift=1 \
--peer-exchange-node=/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLCe6zVqCS6KMqqRbbhyoJjfYZGr1Q3thTSbyKzibQkFR
info

nwaku provides a relay-peer-exchange option via libp2p for peer exchange, allowing network growth through neighbouring nodes. However, this feature can compromise security and network robustness, so we recommend only using it in high-trust environments.

- - + + \ No newline at end of file diff --git a/guides/nwaku/configure-nwaku/index.html b/guides/nwaku/configure-nwaku/index.html index 7d24445..971a4ac 100644 --- a/guides/nwaku/configure-nwaku/index.html +++ b/guides/nwaku/configure-nwaku/index.html @@ -5,8 +5,8 @@ Node Configuration Examples | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Node Configuration Examples

This guide provides detailed steps to configure a nwaku node for different use cases.

Connect to other peers

To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms:

Configure a domain name

You can set up an IPv4 DNS domain name that resolves to the public IPv4 address of a node using the dns4-domain-name option. This allows the node's publicly announced multiaddrs to use the /dns4 scheme.

./build/wakunode2 --dns4-domain-name=[DOMAIN NAME]

For example, consider the domain name nwakunode.com, which resolves to a nwaku node:

./build/wakunode2 --dns4-domain-name=nwakunode.com

Browser nodes can only connect to nodes with a domain name and secure WebSocket (wss) configured. These nodes will generate a discoverable ENR with /wss as the multiaddr and /dns4 as the domain name. This configuration is essential for verifying domain certificates when establishing a secure connection.

info

This example describes configuring a domain name that resolves to your node's IP address and is unrelated to DNS Discovery.

tip

You can use the domain name provided by your cloud provider to configure the domain name for your node.

Configure store protocol and message store

To enable message caching and serve them to network peers, enable the Store protocol using the following configuration options:

  • store: Enables storing messages to serve them to peers (disabled by default).
  • store-message-retention-policy: Retention policy of the store node (how long messages will be stored). Three different retention policies are supported:
    • Time retention policy: time:<duration-in-seconds> (e.g., time:14400)
    • Capacity retention policy: capacity:<messages-count> (e.g, capacity:25000)
    • Size retention policy: size:<storage-in-MB/GB> (e.g, size:512MB or size:10GB)
    • Set this option to none to disable the retention policy. If you omit this option, it will default to time:172800 (48 hours).
  • store-message-db-url: Database connection URL for storing messages in the SQLAlchemy database URL format. Setting this option to an empty string will instruct the node to use the fallback in-memory message store. If you omit this option, it will default to sqlite://store.sqlite3.
./build/wakunode2 \
--store=true \
--store-message-retention-policy=[MESSAGE RETENTION POLICY] \
--store-message-db-url=[DATABASE CONNECTION URL]

For example, consider a nwaku node that is configured to be a Store protocol and retain messages received in the last 21600 seconds (6 hours):

./build/wakunode2 \
--store=true \
--store-message-retention-policy=time:21600 \
--store-message-db-url=sqlite://store.sqlite3

You can configure nwaku as a Store client using the storenode option. This allows the node to query peers for historical messages but not store any message itself.

./build/wakunode2 --storenode=[STORE PEER MULTIADDR]

For example, consider a nwaku node that does not store messages but can query peers for historical messages:

./build/wakunode2 --storenode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV

Generate and configure a node key

Nodes generate new random key pairs at each boot, leading to different multiaddrs. To maintain consistency, you can use a pre-generated private key with the nodekey option:

./build/wakunode2 --nodekey=[NODE PRIVATE KEY]

This option takes a Secp256k1 private key (64-char hex string). On Linux, you can use the OpenSSL rand command for a pseudo-random 32-byte hex string:

openssl rand -hex 32

# 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8

On Linux, you can create a reusable key file using OpenSSL. To get the 32-byte private key in hex format, use the ecparam command and some standard utilities:

# Generate key file
openssl ecparam -genkey -name secp256k1 -out my_private_key.pem

# Extract 32-byte private key
openssl ec -in my_private_key.pem -outform DER | tail -c +8 | head -c 32| xxd -p -c 32

# read EC key
# writing EC key
# 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8

You can use the output 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 as a Node Key for nwaku:

./build/wakunode2 --nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8

Configure WebSocket transport

WebSocket is the only transport method browser nodes support using @waku/sdk. To enable WebSocket in nwaku to serve browser peers, use the following configuration options:

  • websocket-support: Enables WebSocket (ws) on the node (disabled by default).
  • websocket-port (optional): WebSocket listening port. If you omit this option, it will default to 8000.
  • websocket-secure-support: Enables Secure WebSocket (wss) on the node (disabled by default).
  • websocket-secure-key-path: Secure WebSocket key path.
  • websocket-secure-cert-path: Secure WebSocket Certificate path.
./build/wakunode2 \
--websocket-support=true \
--websocket-port=[WEBSOCKET LISTENING PORT] \
--websocket-secure-support=true \
--websocket-secure-key-path=[SECURE WEBSOCKET KEY PATH] \
--websocket-secure-cert-path=[SECURE WEBSOCKET CERTIFICATE PATH]

For example, consider a nwaku node that enabled WebSocket (unencrypted) for local testing on port 8001:

./build/wakunode2 \
--websocket-support=true \
--websocket-port=8001

Consider a nwaku node that enabled Secure WebSocket (encrypted) using its key and certificate (privkey.pem and fullchain.pem) on port 8002:

./build/wakunode2 \
--websocket-secure-support=true \
--websocket-secure-key-path=privkey.pem \
--websocket-secure-cert-path=fullchain.pem \
--websocket-port=8002
tip

You can use Let's Encrypt or Certbot to generate a valid certificate for your nwaku node:

sudo certbot certonly -d <your.domain.name>

Configure REST API server

Nwaku provides a REST API to interact with the node and Waku Network. To enable the REST API, use the following configuration options:

  • rest: Enables the REST API server on the node (disabled by default).
  • rest-address (optional): Listening address of the REST API server. If you omit this option, it will default to 127.0.0.1.
  • rest-port (optional): Listening port of the REST API server. If you omit this option, it will default to 8645.
  • rest-relay-cache-capacity (optional): Capacity of the Relay REST API message cache. If you omit this option, it will default to 30.
  • rest-admin (optional): Enables access to REST admin API (disabled by default).
  • rest-private (optional): Enables access to REST private API (disabled by default).
./build/wakunode2 \
--rest=true \
--rest-address=[REST SERVER LISTENING ADDRESS] \
--rest-port=[REST SERVER LISTENING PORT] \
--rest-relay-cache-capacity=[MESSAGE CACHE CAPACITY] \
--rest-admin=[true|false] \
--rest-private=[true|false]

For example, consider a nwaku node that enabled the REST API server on port 9000:

./build/wakunode2 \
--rest=true \
--rest-port=9000 \
--rest-address=127.0.0.1

Consider a nwaku node that enabled the REST admin and private API with a message cache capacity of 100:

./build/wakunode2 \
--rest=true \
--rest-admin=true \
--rest-private=true \
--rest-relay-cache-capacity=100

Configure filter protocol

To enable nwaku to serve light clients, enable the Filter protocol using filter option:

./build/wakunode2 --filter=true

You can configure nwaku as a Filter client using the filternode and filter-timeout options. This allows the node to request content filtering of messages from peers.

./build/wakunode2 \
--filternode=[FILTER PEER MULTIADDR] \
--filter-timeout=[FILTER PEER TIMEOUT]

For example, consider a nwaku node that requests content filtering of messages from peers with a timeout of 21600 seconds (6 hours):

./build/wakunode2 \
--filternode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV \
--filter-timeout=21600
info

If you omit the filter-timeout option, it will default to 14400 seconds (4 hours).

Configure light push protocol

To enable nwaku to serve light clients, enable the Light Push protocol using the lightpush option:

./build/wakunode2 --lightpush=true

You can configure nwaku as a Light Push client using the lightpushnode option. This allows the node to request lightpush of published messages from peers.

./build/wakunode2 --lightpushnode=[LIGHT PUSH PEER MULTIADDR]

For example, consider a nwaku node that requests lightpush of published messages from peers:

./build/wakunode2 --lightpushnode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV

Run nwaku behind a reverse proxy

When using a reverse proxy server for SSL/TLS encryption, you only want to announce the proxy server's IP or domain. Nwaku provides the ext-multiaddr-only and ext-multiaddr options for specifying published multiaddr:

./build/wakunode2 \
--ext-multiaddr-only=true \
--ext-multiaddr=[MULTIADDR TO PUBLISH]
info

The ext-multiaddr-only option takes precedence over the nat and dns4-domain-name options, using the values provided by the ext-multiaddr option instead.

- - + + \ No newline at end of file diff --git a/guides/nwaku/faq/index.html b/guides/nwaku/faq/index.html index b345b40..e8234b0 100644 --- a/guides/nwaku/faq/index.html +++ b/guides/nwaku/faq/index.html @@ -5,8 +5,8 @@ Nwaku FAQ | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Nwaku FAQ

Check out the Run Nwaku with Docker Compose guide to learn the simplest and fastest way to run a node. You can also check the comprehensive Run a Nwaku Node guide to explore other options like downloading binaries and building from source.
We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.
You can interact with a running nwaku node using the REST API interface or the JavaScript Waku SDK.
To check your node logs in Docker, use the command: "docker-compose logs -f nwaku"
You can configure Nwaku nodes using command line options and flags, environment variables, and TOML configuration files. Check out the Node Configuration Methods guide to understand their usage and priority.
Check out the Node Configuration Options guide for available node configuration options, their default values and descriptions. For examples of common configuration use cases, visit the Node Configuration Examples guide.
You can configure peer discovery for nwaku nodes through options like Static Peers, DNS Discovery, DiscV5, and Peer Exchange. Check out the Configure Peer Discovery guide for setting up your node.
The node listening and ENR addresses can be found through the node's logs and REST API. Check out the Find the node addresses section to understand how to locate your node addresses.
- - + + \ No newline at end of file diff --git a/guides/nwaku/find-node-address/index.html b/guides/nwaku/find-node-address/index.html index f09892f..0e518b2 100644 --- a/guides/nwaku/find-node-address/index.html +++ b/guides/nwaku/find-node-address/index.html @@ -5,8 +5,8 @@ Find Your Node Address | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Find Your Node Address

info

When starting the node, nwaku will display all the public listening and discovery addresses at the INFO log level.

You can find the addresses of a running node through its logs or by calling the Get node info endpoint of the REST API.

Listening addresses

Look for the log entry that begins with Listening on, for example:

Nwaku Log Output
INF 2023-06-15 16:09:54.448+01:00 Listening on                               topics="waku node" tid=1623445 file=waku_node.nim:922 full=[/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn][/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn]
# Listening TCP transport address
/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn

# Listening WebSocket address
/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn

Discoverable ENR addresses

A nwaku node can encode its addressing information in an Ethereum Node Record (ENR).

ENR for DNS discovery

Look for the log entry that begins with DNS: discoverable ENR, for example:

Nwaku Log Output
INF 2023-06-15 16:09:54.448+01:00 DNS: discoverable ENR                      topics="waku node" tid=1623445 file=waku_node.nim:923 enr=enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB
# ENR the node addresses are encoded in
enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB

ENR for Discv5

Look for the log entry that begins with Discv5: discoverable ENR, for example:

Nwaku Log Output
INF 2023-06-15 16:09:54.448+01:00 Discv5: discoverable ENR                   topics="waku node" tid=1623445 file=waku_node.nim:924 enr=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw
# ENR the node addresses are encoded in
enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw
Congratulations!

You have successfully found the listening and discoverable addresses for your nwaku node. Have a look at the Configure Peer Discovery](/guides/nwaku/configure-discovery) guide to learn how to discover and connect with peers in the network.

- - + + \ No newline at end of file diff --git a/guides/nwaku/run-docker-compose/index.html b/guides/nwaku/run-docker-compose/index.html index 5461470..a918627 100644 --- a/guides/nwaku/run-docker-compose/index.html +++ b/guides/nwaku/run-docker-compose/index.html @@ -5,8 +5,8 @@ Run Nwaku with Docker Compose | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run Nwaku with Docker Compose

nwaku-compose is a ready-to-use Docker Compose setup that configures the following automatically:

  • nwaku node running Relay and Store protocols with RLN enabled.
  • Simple frontend to interact with the node and Waku network to send and receive messages.
  • Grafana metrics dashboard for advanced users and node operators to monitor the node.

Video tutorial

tip

Check out the Waku Node Operator Cheatsheet to learn how to easily run, monitor, and interact with a node.

Prerequisites

info

We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.

Clone the repository

git clone https://github.com/waku-org/nwaku-compose
cd nwaku-compose

Configure the setup

Docker Compose reads the .env file from the filesystem. You can use .env.example as a template to provide the configuration values. The recommended process for working with .env files is to duplicate .env.example, rename it as .env, and then make the necessary value edits.

cp .env.example .env
${EDITOR} .env
caution

Ensure that you do NOT include any secrets in the .env.example file, as it could accidentally be shared in your Git repository.

Register for RLN membership

The RLN membership is your access key to The Waku Network. Its registration is done on-chain, allowing your nwaku node to send messages decentralised and privately, respecting some rate limits. Other peers won't relay messages that exceed the rate limit.

This command registers your membership and saves it in the keystore/keystore.json file. You should have Docker running at this step:

./register_rln.sh
tip

If you only want to relay traffic without sending messages to the network, you don't need to register for RLN membership.

Run the node

Launch all the processes: nwaku node, database for storing messages, and Grafana for metrics with the following command. Your RLN membership is loaded into nwaku under the hood:

docker-compose up -d

View the logs of the node to confirm that it is running correctly:

docker-compose logs -f nwaku

Monitor the node

Visit http://localhost:3000/d/yns_4vFVk/nwaku-monitoring to view your node metrics in real time.

nwaku compose dashboard

tip

To access Grafana from outside your machine, remove 127.0.0.1 and open the port. Consider setting up a password for Grafana to ensure security.

Interact with the node

Your nwaku node provides a REST API on port 8645 for interacting with it:

# Get nwaku version
curl --location 'http://127.0.0.1:8645/debug/v1/version'

# Get nwaku info
curl --location 'http://127.0.0.1:8645/debug/v1/info'

Send a message to a contentTopic, which all subscribers will receive. Please note that the payload is encoded in base64.

curl --location 'http://127.0.0.1:8645/relay/v1/auto/messages' \
--header 'Content-Type: application/json' \
--data '{
"payload": "'$(echo -n "Hello Waku Network - from Anonymous User" | base64)'",
"contentTopic": "/my-app/2/chatroom-1/proto"
}'

Retrieve messages sent to a contentTopic. Please note that this query can be made to any Store node within the network:

curl --location 'http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true' \
--header 'Accept: application/json'
tip

If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord.

Congratulations!

You have successfully started a nwaku node with RLN enabled using Docker Compose. Have a look at the Node Configuration Examples and Advanced Configuration guides to learn how to configure nwaku for different use cases.

- - + + \ No newline at end of file diff --git a/guides/nwaku/run-docker/index.html b/guides/nwaku/run-docker/index.html index 3f40736..9d462d6 100644 --- a/guides/nwaku/run-docker/index.html +++ b/guides/nwaku/run-docker/index.html @@ -5,8 +5,8 @@ Run Nwaku in a Docker Container | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run Nwaku in a Docker Container

This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.

Prerequisites

Ensure Docker is installed on your system using the appropriate instructions provided in the Docker documentation.

info

We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.

Get Docker image

The Nwaku Docker images are available on the Docker Hub public registry under the statusteam/nim-waku repository. Please visit statusteam/nim-waku/tags for images of specific releases.

Build Docker image

You can also build the Docker image locally:

# Clone the repository
git clone --recurse-submodules https://github.com/waku-org/nwaku
cd nwaku

# Build docker image
make docker-image

Run Docker container

Run nwaku in a new Docker container:

docker run [OPTIONS] [IMAGE] [ARG...]

Run nwaku using the most typical configuration:

docker run -i -t -p 60000:60000 -p 9000:9000/udp statusteam/nim-waku:v0.20.0 \
--dns-discovery=true \
--dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \
--discv5-discovery=true \
--nat=extip:[YOUR PUBLIC IP] # or, if you are behind a nat: --nat=any

To find your public IP, use:

dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print $2}'
info

We recommend using explicit port mappings (-p) when exposing ports accessible from outside the host (listening and discovery ports, API servers).

tip

If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord.

Congratulations!

You have successfully built and started a nwaku node in a Docker container. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.

- - + + \ No newline at end of file diff --git a/guides/nwaku/run-node/index.html b/guides/nwaku/run-node/index.html index a1a3abc..49b0d47 100644 --- a/guides/nwaku/run-node/index.html +++ b/guides/nwaku/run-node/index.html @@ -5,8 +5,8 @@ Run a Nwaku Node | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run a Nwaku Node

Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources.

waku architecture

This guide provides detailed steps to download, build, configure, and connect a nwaku node to the Waku Network. It also includes interacting with the node and finding its addresses.

info

We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.

Get the node binary

To run a node, you must have the nwaku binary. Nwaku provides multiple options for running a node:

We recommend using Docker Compose to run a node because it's the simplest and fastest way to configure and run one:

DescriptionDocumentation
Docker ComposeRun a nwaku node with Docker ComposeRun Nwaku with Docker Compose
Docker ContainerRun a nwaku node in a Docker ContainerRun Nwaku in a Docker Container

Download the binary

DescriptionDocumentation
Precompiled BinaryDownload a precompiled binary of the nwaku nodeDownload Nwaku Binary
Nightly ReleaseTry the latest nwaku updates without compiling the binariesDownload Nightly Release

Build the binary

DescriptionDocumentation
Build from SourceBuild the node from the nwaku source codeBuild Nwaku from Source
tip

You can run the nwaku binaries and Docker images on cloud service providers like Google Cloud, Microsoft Azure, Amazon Web Services, and DigitalOcean.

Run the node

Once you have gotten the nwaku binary, run it using the default configuration:

# Run the Docker Compose
docker-compose up -d

# Run the standalone binary
./build/wakunode2
tip

To learn how to customise the configuration of a nwaku node, have a look at the Node Configuration Methods and Node Configuration Examples guides.

Bootstrap the node

To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms:

DescriptionDocumentation
Static PeersConfigure the bootstrap nodes that nwaku should establish connections upon startupConfigure Static Peers
DNS DiscoveryEnable nwaku to bootstrap nodes using the DNS Discovery mechanismConfigure DNS Discovery
Discv5Enable nwaku to discover peers using the Discv5 mechanismConfigure Discv5
Peer ExchangeEnable Peer Exchange protocol for light nodes to request peers from your nwaku nodeConfigure Peer Exchange
tip

We suggest configuring WebSocket transport for your node to enable support and serving of browser peers using @waku/sdk.

Interact with the node

You can interact with a running nwaku node through the REST API, such as querying the node information using the Get node info endpoint:

curl --location 'http://127.0.0.1:8645/debug/v1/info' \
--header 'Accept: application/json'
info

The listenAddresses field stores the node's listening addresses, while the enrUri field stores the discoverable ENR URI for peer discovery.

Check the node health status

You can check the health status of the node by calling the Get node health status endpoint of the REST API:

curl --location 'http://127.0.0.1:8645/health' \
--header 'Accept: text/plain'
tip

If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord.

Congratulations!

You have successfully started, configured, and connected a nwaku node to the Waku Network. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.

- - + + \ No newline at end of file diff --git a/guides/nwaku/upgrade-instructions/index.html b/guides/nwaku/upgrade-instructions/index.html index ce80cd3..51d1b49 100644 --- a/guides/nwaku/upgrade-instructions/index.html +++ b/guides/nwaku/upgrade-instructions/index.html @@ -5,8 +5,8 @@ Upgrade Instructions | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Upgrade Instructions

If you are currently using Nwaku, running an old version and want to upgrade your node, please follow the below migration instructions for each target release newer than your current running version in ascending order.

For example, if you are interested in the version v0.32.0 and are currently running v0.30.0, follow the instructions for v0.31.0 and then the ones for v0.32.0

Target Releases

The --protected-topic CLI config was deprecated and is replaced by the new --protected-shard configuration. Instead of configuring topic:public_key you will now need to configure shard:public_key

For example, if you used to run your node with --protected-topic="waku/2/rs/3/4:your_public_key" you will need to replace this configuration for --protected-shard="4:your_public_key"

Named sharding was deprecated in this version. This means that pubsub topics will only be supported if they comply with the static sharding format: /waku/2/rs/<CLUSTER_ID>/<SHARD_ID>

In order to migrate your existing application, you need to:

  1. Make sure that your clients are sending messages to pubsub topics in the required format. Check that in your interactions with Nwaku's REST API or when using js-waku, the configured pubsub topics follow the static sharding format defined above.
  2. When running a node with the --pubsub-topic CLI flag, the values provided should comply with the static sharding format.
  3. If your application relies on nodes or clients that may not be updated immediately, keep your node on an older version while subscribing to both the current pubsub topic and the new pubsub topic that will comply with the static sharding format. In that case, you can keep backward compatibility for a migration period.
- - + + \ No newline at end of file diff --git a/index.html b/index.html index 9c7bf49..471545e 100644 --- a/index.html +++ b/index.html @@ -5,8 +5,8 @@ Introduction to Waku | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Introduction to Waku

Waku is a family of robust, censorship-resistant, peer-to-peer communication protocols that enable privacy-focused messaging for Web3 applications, allowing you to integrate decentralised communication features into your dApp without compromising security or privacy.

tip

Check out our Learn section, YouTube channel, and Blog to dive into how Waku works behind the scenes!

What isn’t Waku?

  • Waku is not a blockchain but a network composed of protocols designed for Web3 communication, operating without the need for gas fees.
  • Waku is not just for messaging applications; it supports the development of complex applications that require secure and private data transmission.
  • Waku is not a long-term data storage network; it focuses on short, ephemeral, real-time messaging.

What can Waku be used for?

  1. Chat Messengers: Waku can be used to build private, decentralised chat apps resistant to censorship.
  2. Voting and Proposals: Exchange votes on proposals off-chain via Waku to save gas fees, then submit aggregated results to the blockchain.
  3. NFT Marketplaces: Use Waku to handle off-chain NFT bids and offers for gas savings, and to integrate social interactions like likes and comments.
  4. State Channels: Establish and maintain state channels with Waku, facilitating seamless message exchanges and updates without blockchain interaction.
  5. Signature Exchange for Multi-Signature Wallets: Allow multi-signature wallet owners to exchange signatures privately and securely through Waku.
  6. Game Mechanics Communication: Implement Waku as a communication layer for decentralised, peer-to-peer gaming, avoiding centralised infrastructure.
  7. Layer 2 Coordination (Open Market, Spam Protected Mempool): Broadcast and aggregate Layer 2 transactions via Waku to enhance privacy and scalability, reducing network load.
  8. Social Media Platforms: Beyond chat messengers, use Waku for decentralised, censorship-resistant social media platforms like news feeds and multimedia sharing.
tip

Looking for what to build with Waku? Discover a collection of sample ideas and use cases for inspiration, curated by our community at: https://ideas.waku.org/ and Awesome Waku.

Case studies

Getting started

Run a Waku node

Waku is a decentralised, permissionless system where anyone can run a node, use the network, and contribute to its support. We recommend following the Run Nwaku with Docker Compose guide and Waku Node Operator Cheatsheet to easily run a node.

tip

If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord.

Integrate using SDKs

Waku is implemented in multiple SDKs, allowing it to integrate with different languages and address various use cases efficiently.

DescriptionDocumentation
@waku/sdkJavaScript/TypeScript SDK designed for browser environmentsJavaScript Waku SDK
@waku/reactReact components and UI adapters designed for seamless integration with @waku/sdkBuild React DApps Using @waku/react

Other integrations

DescriptionDocumentation
REST APIREST API interface provided by nwaku and go-waku to interact with the Waku NetworkWaku Node REST API Reference
@waku/create-appStarter kit to bootstrap your next @waku/sdk project from various example templatesScaffold DApps Using @waku/create-app
tip

Explore some example apps built using Waku at https://examples.waku.org/ and view a list of projects and workshops from previous hackathons at Awesome Waku.

- - + + \ No newline at end of file diff --git a/learn/concepts/content-topics/index.html b/learn/concepts/content-topics/index.html index 6519336..f48a8c2 100644 --- a/learn/concepts/content-topics/index.html +++ b/learn/concepts/content-topics/index.html @@ -5,8 +5,8 @@ Content Topics | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Content Topics

Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.

Naming format

Here is the recommended format for content topics:

/{application-name}/{version}/{content-topic-name}/{encoding}

  • application-name: This is the unique name of your decentralised application (DApp) to prevent conflicts with other DApps.
  • version: Typically starting at 1, this field helps track breaking changes in your messages.
  • content-topic-name: The specific name of the content topic used for filtering.
  • encoding: The message encoding or serialisation format, with Protocol Buffers (proto) being the recommended choice.

For example, if your DApp is called SuperCrypto and it allows users to receive notifications and send private messages, you can consider using the following content topics:

  • /supercrypto/1/notification/proto
  • /supercrypto/1/private-message/proto
tip

While you can choose any encoding format for your Content Topic, we highly recommend using Protocol Buffers (proto) because of its efficiency. Choosing a lightweight format ensures optimal performance of your DApp.

Naming considerations

When choosing a content topic, it is essential to consider the privacy implications. Here are several factors to keep in mind:

Protocols disclose content topics to peers

The Filter, Store, and Light Push protocols share content topics with peers, allowing them to link IP and content topic interests. The Relay protocol, using GossipSub, provides recipient anonymity, which can be compromised if the content topic exposes user information.

For example, instead of using Personally Identifiable Information (PII) in the content topic (e.g., a public key), you can create buckets (e.g., based on the first 4 bytes of the public key hash).

info

Waku is developing privacy-preserving features like Anonymous Filter Subscription for the Filter protocol and Anonymous Query for the Store protocol to hide content topics from potential adversaries.

Increasing k-anonymity preserves user anonymity

You can increase k-anonymity within the network by using a unified content topic across the entire application or targeting specific features like notifications or private messages, allowing multiple users to share it.

We recommend switching functionality using the Protocol Buffer (proto) message format. By doing so, applications can retain a high granularity and functionality while using a single content topic, preserving user privacy. For example:

message NotificationPayload {
...
}

message FeatureAbcPayload {
...
}

// By default, all fields in protobuf are optional so only field may be encoded at a time
message Payload {
NotificationPayload notification = 1;
FeatureAbcPayload feature_abc = 2;
}

Creating buckets help in distributing traffic

When an application uses a single content topic, all users using request/response protocols (Filter, Store) receive all its messages. For heavy traffic, developers can create buckets by hashing a unique identifier (e.g., recipient's ID, public key, or app domain topic) and adding its first byte to the content topic, like /my-app/0/a/proto.

This approach divides traffic into multiple topics, reducing the messages users have to download. Developers can add more first bytes to the content topic over time to improve efficiency and privacy based on messages and user needs.

info

The k value of k-anonymity equals the number of IDs for which the first character of the hash is "a". For example, using a single content topic in an application with 10,000 users results in k = 10,000. However, using the hash ID's first character, k reduces to 10,000 / 16 = 625.

- - + + \ No newline at end of file diff --git a/learn/concepts/discv5/index.html b/learn/concepts/discv5/index.html index d16faa1..85010c9 100644 --- a/learn/concepts/discv5/index.html +++ b/learn/concepts/discv5/index.html @@ -5,8 +5,8 @@ Discv5 | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Discv5

Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more.

Pros

  • Decentralised with random sampling from a global view.
  • Continuously researched and improved.

Cons

  • Requires lots of connections and involves frequent churn.
  • Relies on User Datagram Protocol (UDP), which is not supported in web browsers.

Overview

  1. DNS Discovery protocol is executed.
  2. Alice retrieves Bob's ENR (Ethereum Node Record) from DNS Server.
  3. Alice executes the Discv5 protocol with Bob using UDP connection details from ENR.
  4. Bob returns Carol's, David's and Erin's ENRs to Alice.
  5. Alice decodes ENRs and extracts the details of Carol, David, and Erin's TCP and UDP connections.
  6. Alice executes the Discv5 protocol with Carol using UDP connection details from ENR.
  7. Carol returns Frank's, Gwen's and Harry's ENRs to Alice.
  8. Alice decodes ENRs and extracts Frank's, Gwen's and Harry's TCP and UDP connection details.
  9. Alice selects to dial David, Frank and Gwen.
  10. Alice dials David, Frank and Gwen over libp2p using TCP connection details from ENRs.
- - + + \ No newline at end of file diff --git a/learn/concepts/dns-discovery/index.html b/learn/concepts/dns-discovery/index.html index 568ccf3..dfcab26 100644 --- a/learn/concepts/dns-discovery/index.html +++ b/learn/concepts/dns-discovery/index.html @@ -5,8 +5,8 @@ DNS Discovery | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

DNS Discovery

Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr.

This bootstrapping method allows anyone to register and publish a domain name for the network, promoting increased decentralisation.

Pros

  • Low latency, low resource requirements.
  • Easy bootstrap list updates by modifying the domain name, eliminating the need for code changes.
  • Ability to reference a larger list of nodes by including other domain names in the code or ENR tree.

Cons

  • Vulnerable to censorship: Domain names can be blocked or restricted.
  • Limited scalability: The listed nodes are at risk of being overwhelmed by receiving all queries. Also, operators must provide their ENR to the domain owner for listing.

Overview

  1. DNS lookup query to retrieve TXT data stored on example.com domain.
  2. enrtree-root is returned, and the value of e is the enr-root, the root hash of the node subtree.
  3. DNS lookup query to retrieve TXT data stored on <enr-root>.example.com domain.
  4. enrtree-branch is returned; this tree contains hashes of node subtrees.
  5. DNS lookup query to retrieve TXT data stored on DU...VQ.example.com domain, the first leaf of enrtree-branch.
  6. enr record is returned.
  7. Returned value is decoded, and peer connection details such as IP address and port are learned.
- - + + \ No newline at end of file diff --git a/learn/concepts/network-domains/index.html b/learn/concepts/network-domains/index.html index 106fac4..cdfb442 100644 --- a/learn/concepts/network-domains/index.html +++ b/learn/concepts/network-domains/index.html @@ -5,8 +5,8 @@ Network Domains | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Network Domains

Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialised purposes and contribute to the robust functionality of Waku, forming its foundation.

Discovery domain

Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as Discv5 and Peer Exchange. These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.

Gossip domain

GossipSub derives its name from the practice within Pub/Sub networks where peers gossip about the messages they have encountered, thus establishing a message delivery network.

Waku employs gossiping through Relay to distribute messages across the network. Additionally, Waku introduces RLN Relay, an experimental mechanism that combines privacy preservation and economic spam protection.

Request/response domain

Waku provides a set of protocols to optimise its performance in resource-limited environments like low bandwidth or mostly offline scenarios for multiple purposes.

  • Store enables the retrieval of historical messages.
  • Filter efficiently retrieves a subset of messages to conserve bandwidth.
  • Light Push facilitates message publication for nodes with limited bandwidth and short connection windows.

Overview of protocol interaction

Here is a diagram illustrating the interaction between different protocols within the Waku Network.

The Pub/Sub topic pubtopic1 serves as a means of routing messages (the network employs a default Pub/Sub topic) and indicates that it is subscribed to messages on that topic for a relay. Node D serves as a Store and is responsible for storing messages.

  1. Node A creates a WakuMessage msg1 with Content Topic contentTopic1.
  2. Node F requests to get messages filtered by Pub/Sub topic pubtopic1 and Content Topic contentTopic1. Node D subscribes F to this filter and will forward messages that match that filter in the future.
  3. Node A publishes msg1 on pubtopic1. The message is sent from Node A to Node B and then forwarded to Node D.
  4. Node D, upon receiving msg1, stores the message for future retrieval by other nodes and forwards it to Node C.
  5. Node D also pushes msg1 to Node F, informing it about the arrival of a new message.
  6. At a later time, Node E comes online and requests messages matching pubtopic1 and contentTopic1 from Node D. Node D responds with msg1 and potentially other messages that match the query.
- - + + \ No newline at end of file diff --git a/learn/concepts/peer-discovery/index.html b/learn/concepts/peer-discovery/index.html index 4dc100c..6f2cdf0 100644 --- a/learn/concepts/peer-discovery/index.html +++ b/learn/concepts/peer-discovery/index.html @@ -5,8 +5,8 @@ Peer Discovery | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Peer Discovery

When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping.

Once a connection is established, the node must actively seek out additional peers to have:

  • Sufficient peers in the Relay mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed.
  • Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections.
  • Peers with specific capabilities: The node seeks out peers with specific capabilities, such as Store, Light Push, or Filter. This allows for targeted interactions and enhanced functionality based on the desired capabilities.

Waku supports multiple peer discovery mechanisms, such as:

- - + + \ No newline at end of file diff --git a/learn/concepts/peer-exchange/index.html b/learn/concepts/peer-exchange/index.html index 8de0c9f..a3b1a5b 100644 --- a/learn/concepts/peer-exchange/index.html +++ b/learn/concepts/peer-exchange/index.html @@ -5,8 +5,8 @@ Peer Exchange | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Peer Exchange

The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network.

info

Peer Exchange enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood.

Pros

  • Low resource requirements.
  • Decentralised with random sampling of nodes from a global view using Discv5.

Cons

  • Decreased anonymity.
  • Imposes additional load on responder nodes.

Overview

  1. DNS Discovery protocol is executed.
  2. Alice retrieves Bob's websocket multiaddr from DNS Server.
  3. Alice dials Bob using libp2p protocols.
  4. Alice executes a Peer Exchange query to Bob.
  5. Bob returns Carol's and David's ENR to Alice.
  6. Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs.
  7. Alice dials Carol and David.
  8. Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network.
- - + + \ No newline at end of file diff --git a/learn/concepts/protocols/index.html b/learn/concepts/protocols/index.html index 107c631..2117396 100644 --- a/learn/concepts/protocols/index.html +++ b/learn/concepts/protocols/index.html @@ -5,8 +5,8 @@ Protocols | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Protocols

Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:

Relay

Relay protocol employs a Pub/Sub architecture to facilitate the sending and receiving of messages among peers. It extends the libp2p GossipSub protocol to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. It also scales the Waku Network to accommodate many nodes efficiently.

RLN relay

RLN Relay protocol extends the Relay protocol by using Rate Limit Nullifiers (RLN) to provide efficient and economic spam-prevention. It enforces a rate limit on messages over time for all peers in the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the RLN Relay blog post.

Filter

Filter protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network, particularly tailored for devices with limited bandwidth.

info

Filter protocol helps optimise bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages.

Store

Store protocol is responsible for storing messages relayed in the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection.

info

Using Relay and Filter protocols is recommended when a node is online, as Store does not guarantee data availability. The Store protocol is suitable for retrieving messages when connecting to the network, like when a DApp starts.

Light push

Light Push is a Request/Response protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the Relay network.

info

While the Light Push protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation.

Waku message

Waku Message specifies the structure and format of messages in the Waku Network. It includes the following attributes:

  • content_topic attribute for content-based filtering.
  • payload attribute containing the message data payload to be sent.
  • meta attribute for conveying additional details to various protocols for application-specific processing.
  • timestamp attribute signifying the time at which the message was generated by its sender.
  • ephemeral attribute specifying whether the network should not store the message.
- - + + \ No newline at end of file diff --git a/learn/concepts/static-peers/index.html b/learn/concepts/static-peers/index.html index 4743bf2..0c99e7e 100644 --- a/learn/concepts/static-peers/index.html +++ b/learn/concepts/static-peers/index.html @@ -5,8 +5,8 @@ Static Peers | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Static Peers

Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node.

Pros

  • Low latency.
  • Low resource requirements.

Cons

  • Vulnerable to censorship: Node IPs can be blocked or restricted.
  • Limited scalability: The number of nodes is fixed and cannot easily be expanded.
  • Maintenance challenges: Updating the node list requires modifying the code, which can be cumbersome and involves releasing and deploying.

Overview

Alice establishes connections with Bob and Carol using their node details, which are predefined (hard-coded) into Alice's node.

- - + + \ No newline at end of file diff --git a/learn/concepts/transports/index.html b/learn/concepts/transports/index.html index c2c23a8..beb0a31 100644 --- a/learn/concepts/transports/index.html +++ b/learn/concepts/transports/index.html @@ -5,8 +5,8 @@ Transports | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Transports

Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery.

Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended:

  • TCP: By default, Waku nodes use TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes.
  • Secure WebSocket: In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely.
  • Other protocols like WebRTC, WebTransport, and QUIC have been researched and studied for potential integration.
info

Waku ensures compatibility and improved communication capabilities by following these recommended transports.

- - + + \ No newline at end of file diff --git a/learn/faq/index.html b/learn/faq/index.html index 237e270..412db39 100644 --- a/learn/faq/index.html +++ b/learn/faq/index.html @@ -5,8 +5,8 @@ Waku FAQ | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Waku FAQ

Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node.
No, sending and receiving messages on Waku involves no gas fee.
Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to use custom protocols or Waku message payload encryption methods freely.
Waku's Store protocol is designed to temporarily store messages within the network. However, Waku does not guarantee the message's availability and recommends using Codex for long-term storage.
No, Waku is flexible and imposes no specific rules on identifiers.
Waku focuses on short, ephemeral, real-time time messages, while IPFS focuses on large, long-term data storage. Although there's an overlap between the two technologies, Waku does not currently support large data for privacy reasons.
Rate Limiting Nullifier is a zero-knowledge (ZK) protocol enabling spam protection in a decentralized network while preserving privacy. Each message must be accompanied by a ZK proof, which Relay nodes verify to ensure the publishers do not send more messages than they are allowed. The ZK proof does not leak any private information about message publishers - it only proves they are members of a set of users allowed to publish a certain number of messages per given time frame.
Follow the README instructions at nwaku-compose.
- - + + \ No newline at end of file diff --git a/learn/glossary/index.html b/learn/glossary/index.html index 14391f9..d24bb8f 100644 --- a/learn/glossary/index.html +++ b/learn/glossary/index.html @@ -5,8 +5,8 @@ Glossary | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Waku Docs Glossary

Definitions and usage of the terminology used in the Waku ecosystem.

Bootstrapping

Bootstrapping is the initial entry point of a node to the Waku Network. Once connected, other peer discovery methods can be employed to locate other peers in the network.

Content topic

A content topic is a string attached to messages to enable protocol-level features like selective message processing and retrieval based on specific criteria.

Dappnode

Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including Waku.

Discv5

Discv5 is a peer discovery mechanism using a Distributed Hash Table (DHT) to store ENR records, providing censorship resistance, load distribution, and enhanced network resilience.

DNS discovery

DNS discovery is a peer discovery mechanism that allows the retrieval of an ENR tree from the TXT field of a domain name, enabling the storage of node connection details and promoting decentralisation.

ENR

Ethereum Node Record (ENR) is a specification used to represent and identify nodes, facilitating discovery and communication within the network. Besides connection details, ENR also includes node configuration information like enabled protocol and shards.

Filter

Filter is a protocol that enables light nodes to selectively subscribe to specific messages transmitted by peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network.

GossipSub

GossipSub is a protocol for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems.

Libp2p

Libp2p is a modular network stack and protocol suite that allows developers to build decentralised, peer-to-peer applications across various network protocols.

Light node

A light node is a resource-limited device or client that leverages service nodes to access the Relay network.

Light push

Light push is a protocol enabling light nodes to send messages to the Relay network and receive acknowledgements confirming that a peer has received them.

Mostly offline

Mostly offline devices are clients who spend most of their time offline or disconnected from the internet and only occasionally to the internet and Waku Network. Examples include browsers and mobile phones.

Node

A node is a device or client that implements Waku protocols and leverages the Waku Network to enable secure and private peer-to-peer web3 communication.

Node key

A node key is a Secp256k1 (64-char hex string) private key for generating the PeerID, listening addresses, and discovery addresses of a Waku node.

Out-of-band

Out-of-band refers to exchanging information through a separate, secure channel distinct from the main communication method to enhance security.

Payload

The payload field in a Waku Message contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in Waku Message Payload Encryption.

Peer

A peer refers to other nodes and participants of the Waku Network with whom communication and interaction are possible.

Peer discovery

Peer discovery is when a node locates and gets information about other peers in the Waku Network.

Peer exchange

Peer exchange is a peer discovery mechanism that enables light nodes to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on Discv5.

Peer ID

PeerID is the unique identifier of a node in the Waku Network generated from the cryptographic hash of the node's public key.

Protocol

A protocol is a set of rules that enables nodes within the Waku Network to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more.

Pub/Sub

Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication.

Pub/Sub topic

A Pub/Sub topic is a string that serves as an identifier for the topic of interest among GossipSub peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic.

Rate limit nullifiers

Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity.

Relay

Relay is a protocol that extends the GossipSub protocol to enable secure and censorship resistant message sending and receiving among peers while preserving privacy. It also scales the Waku Network to accommodate many nodes efficiently.

Resource-limited

Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power.

RLN relay

RLN Relay is an extension of the Relay protocol that uses Rate Limit Nullifiers (RLN) to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers.

SDK

SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications.

Store

Store is a protocol that enables the storage of relayed messages in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network.

Transport

A transport is a network mechanism that establishes connections between peers and enables efficient transmission, routing, and delivery of data packets.

Waku

Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication protocols designed to operate in resource-limited environments and suitable for node or desktop application use. Additionally, these protocols collectively form the Waku Network.

Waku message

Waku Message defines the structure of messages in the Waku Network, including the content topic, payload, and metadata for application-specific processing.

Waku message payload encryption

Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the Waku Network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability.

Waku network

The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to resource limited devices.

Waku noise

Waku Noise is a specified way to use the Noise Protocol Framework to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties.

- - + + \ No newline at end of file diff --git a/learn/research/index.html b/learn/research/index.html index b9cc768..cea5a35 100644 --- a/learn/research/index.html +++ b/learn/research/index.html @@ -5,8 +5,8 @@ Research | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Research

The following features are currently experimental and under research and initial implementation:

Economic spam resistance

We aim to enable an incentivised spam protection technique to enhance Relay by using Rate Limit Nullifiers (RLN). In this advanced method, peers are limited to a certain messaging rate per epoch, and an immediate financial penalty is enforced for spammers who break this rate. You can find more details in the RLN Relay blog post.

We have prepared a PoC implementation of this method in JS: https://examples.waku.org/rln-js/

Prevention of denial of service (DoS) and node incentivisation

Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: https://github.com/vacp2p/research/issues/148.

In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivising the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in Store and Filter to protect against DoS attacks.

Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: https://vac.dev/building-privacy-protecting-infrastructure

You can also read more about the ongoing challenges the Waku team is working on here: https://github.com/waku-org/research

- - + + \ No newline at end of file diff --git a/learn/security-features/index.html b/learn/security-features/index.html index b61719f..1e76d85 100644 --- a/learn/security-features/index.html +++ b/learn/security-features/index.html @@ -5,8 +5,8 @@ Security Features | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Security Features

Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations.

Some of the Waku's security features include the following:

Pseudonymity

Waku ensures pseudonymity across its protocol layers, using libp2p PeerID as identifiers instead of disclosing true identities. However, it is important to note that pseudonymity does not provide complete anonymity. Actions performed under the same pseudonym (PeerID) can be linked, leading to the potential re-identification of the actual actor.

Anonymity/unlinkability

Anonymity means an adversary cannot connect an actor to their actions or data. To achieve anonymity, avoiding linking activities with actors or their Personally Identifiable Information (PII) is crucial. In Waku, the following anonymity features are provided:

Spam protection

The spam protection feature in Relay ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the scoring mechanism of GossipSub v1.1. Peers assign scores to their connections based on their behaviour and remove peers with low scores.

Ongoing research is being conducted, including developing Rate Limit Nullifiers (RLN), which can be explored further at: https://github.com/vacp2p/research/issues/148.

Data confidentiality, integrity, and authenticity

Confidentiality in Waku is ensured through data encryption, while integrity and authenticity are achieved through digital signatures. These security measures are available in Waku Message (version 1) and Noise protocols, which offer payload encryption and encrypted signatures. Noise protocols also facilitate secure channel negotiation within the Waku Network.

Security considerations

In protocols like Store and Filter, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their PeerID to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's PeerID, considered Personally Identifiable Information (PII). In Store, the queried node can link the querying node's PeerID to the topics being queried. Similarly, in Filter, a node can link the PeerID of a light node to its content filter.

- - + + \ No newline at end of file diff --git a/learn/waku-network/index.html b/learn/waku-network/index.html index db35762..4af9293 100644 --- a/learn/waku-network/index.html +++ b/learn/waku-network/index.html @@ -5,8 +5,8 @@ The Waku Network | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

The Waku Network

The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include:

  1. DoS/spam protection with privacy-preserving Rate-Limiting Nullifiers.
  2. Scalability by sharding traffic into 8 pubsub topics.
  3. Automatic shard selection based on content topic.
  4. Services for resource-restricted nodes, including historical message storage and retrieval, filtering, etc.
tip

If you want to learn more about the Waku Network, the The Waku Network: Technical Overview article provides an in-depth look under the hood.

Why join the Waku network?

  1. Applications or projects can build decentralized communication components on this network, gaining from the fault-tolerance of shared infrastructure, the out-of-the-box censorship resistance of a p2p network and the privacy-preservation of Waku protocols.
  2. Supporters of public goods and decentralized infrastructure can run their nodes to support the network.
  3. We are also working on incentivisation vectors to encourage more node operators to provide services to the network.

Prerequisites

  1. Ethereum Sepolia HTTPS endpoint, which can be yours or from a third party. Have a look at the Access a Sepolia Node Using Infura guide for a free Infura option. This node is used to interact with the on-chain RLN membership contract.
  2. Wallet with Sepolia Ethereum (less than 0.1 Sepolia ETH). Have a look at the Create a Sepolia Ethereum Wallet and Obtain Sepolia Ethereum from Faucet guides to get a Sepolia wallet and fund it with some Sepolia Ethereum. This wallet is required to register RLN membership, which is essential for publishing on the network.

Running a Waku network node

Have a look at the Run Nwaku with Docker Compose guide for instructions on running a nwaku node in the Waku Network. Use the Sepolia node and wallet you obtained above.

info

The public Waku Network replaces the previous experimental shared routing layer based on a default pubsub topic (/waku/2/default-waku/proto). If your project currently uses this or any other shared pubsub topics, we encourage you to migrate to the public Waku Network with built-in DoS protection, scalability, and reasonable bandwidth usage.

- - + + \ No newline at end of file diff --git a/learn/waku-vs-libp2p/index.html b/learn/waku-vs-libp2p/index.html index 25645cf..eea0c73 100644 --- a/learn/waku-vs-libp2p/index.html +++ b/learn/waku-vs-libp2p/index.html @@ -5,8 +5,8 @@ Comparing Waku and libp2p | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Comparing Waku and libp2p

Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.

Waku as a service network

Waku intends to incentivise mechanisms to run nodes, but it is not part of libp2p's scope. Additionally, users or developers do not have to deploy their infrastructure as a prerequisite to use Waku. It is a service network. However, you are encouraged to run a node to support and decentralise the network.

Waku as a turnkey solution

Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment.

Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, Store/Light Push/Filter caters to those use cases.

Economic spam protection

libp2p does not have strong spam protection guarantees, RLN Relay is a protocol being developed by the Waku team towards this goal.

- - + + \ No newline at end of file diff --git a/migrations/js-waku/migration_v0.026_0.027/index.html b/migrations/js-waku/migration_v0.026_0.027/index.html index aa62ac2..e945aaa 100644 --- a/migrations/js-waku/migration_v0.026_0.027/index.html +++ b/migrations/js-waku/migration_v0.026_0.027/index.html @@ -5,8 +5,8 @@ Migrating to Waku v0.027 | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Migrating to Waku v0.027

A migration guide for refactoring your application code from Waku v0.026 to v0.027.

Table of Contents

Network Configuration

The way to configure network settings for a Waku node has been simplified. The new NetworkConfig type only allows for Static Sharding or Auto Sharding.

Default Network Configuration

If no network configuration is provided when creating a Light Node, The Waku Network configuration will be used by default.

Before

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode();
// This would use the default pubsub topic, that was, `/waku/2/default-waku/proto`

After

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode();
// This will now use The Waku Network configuration by default:
// { clusterId: 1, shards: [0,1,2,3,4,5,6,7] }

Static Sharding

Before

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode({
shardInfo: {
clusterId: 1,
shards: [0, 1, 2, 3]
}
});

After

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode({
networkConfig: {
clusterId: 1,
shards: [0, 1, 2, 3]
}
});

Auto Sharding

Before

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode({
shardInfo: {
clusterId: 1,
contentTopics: ["/my-app/1/notifications/proto"]
}
});

After

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode({
networkConfig: {
clusterId: 1,
contentTopics: ["/my-app/1/notifications/proto"]
}
});

Pubsub Topic Configuration

Named pubsub topics are no longer supported. You must use either Static Sharding or Auto Sharding to configure pubsub topics.

Before

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode({
pubsubTopics: ["/waku/2/default-waku/proto"]
});

After

Use Static Sharding:

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode({
networkConfig: {
clusterId: 1,
shards: [0, 1, 2, 3, 4, 5, 6, 7]
}
});

Or use Auto Sharding:

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode({
networkConfig: {
clusterId: 1,
contentTopics: ["/your-app/1/default/proto"]
}
});

Removed APIs

The following APIs have been removed:

  • ApplicationInfo type: Use string for application and version in NetworkConfig instead.
  • shardInfo option in createLightNode: Use networkConfig instead.
  • pubsubTopics option in createLightNode: Use networkConfig with Static Sharding or Auto Sharding instead.

If you were using ApplicationInfo before, you should now use ContentTopicInfo (Auto Sharding) and specify your application and version in the content topic string.

Before

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode({
shardInfo: {
clusterId: 1,
application: "my-app",
version: "1"
}
});

After

import { createLightNode } from "@waku/sdk";

const waku = await createLightNode({
networkConfig: {
clusterId: 1,
contentTopics: ["/my-app/1/default/proto"]
}
});

Type Changes

  • ShardingParams has been removed. Use NetworkConfig instead.
  • NetworkConfig is now defined as StaticSharding | AutoSharding.
  • StaticSharding is equivalent to the previous ShardInfo.
  • AutoSharding is equivalent to the previous ContentTopicInfo.

Internal/Private Utility Function Changes

Several utility functions have been updated or added:

  • ensureShardingConfigured has been removed. Use derivePubsubTopicsFromNetworkConfig instead.
  • New function derivePubsubTopicsFromNetworkConfig has been added to derive pubsub topics from the network configuration.
  • shardInfoToPubsubTopics now accepts Partial<NetworkConfig> instead of Partial<ShardingParams>.
  • New function pubsubTopicsToShardInfo has been added to convert pubsub topics to a ShardInfo object.

If you were using any of these utility functions directly, you'll need to update your code accordingly.

Before

import { ensureShardingConfigured } from "@waku/utils";

const result = ensureShardingConfigured(shardInfo);

After

import { derivePubsubTopicsFromNetworkConfig } from "@waku/utils";

const pubsubTopics = derivePubsubTopicsFromNetworkConfig(networkConfig);

Note: The default NetworkConfig for The Waku Network is now { clusterId: 1, shards: [0,1,2,3,4,5,6,7] }.

- - + + \ No newline at end of file diff --git a/privacy-policy/index.html b/privacy-policy/index.html index ebd3058..66a13e6 100644 --- a/privacy-policy/index.html +++ b/privacy-policy/index.html @@ -5,8 +5,8 @@ Privacy Policy | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Privacy Policy

Last updated: 9 February 2024

This Privacy Policy is intended to inform users of our approach to privacy in respect of this website ("Website"). In this regard, if you are visiting our Website, this Privacy Policy applies to you.

1) Who we are

For the purposes of this Privacy Policy and the collection and processing of personal data as a controller, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at

Logos Collective Association
c/o PST Consulting GmbH
Baarerstrasse 10
6300 Zug
Switzerland

Whenever we refer to “Logos”, “we” or other similar references, we are referring to the Logos Collective Association.

2) We limit the collection and processing of personal data from your use of the Website

We aim to limit the collection and collection and processing of personal data from users of the Website. We only collect and process certain personal data for specific purposes and where we have the legal basis to do so under applicable privacy legislation. We will not collect or process any personal data that we don’t need and where we do store any personal data, we will only store it for the least amount of time needed for the indicated purpose.

In this regard, we collect and process the following personal data from your use of the Website:

  • IP address: As part of such use of the Website we briefly process your IP address but we have no way of identifying you. We however have a legitimate interest in processing such IP addresses to ensure the technical functionality and enhance the security measures of the Website. This IP address is not stored by us over time.

3) Third party processing of personal data

In addition to our limited and collection of personal data, third parties may collect or process personal data as a result of the Website making use of certain features or to provide certain content. To the extent you interact with such third party content or features, their respective privacy policies will apply.

4) Security measures we take in respect of the Website

As a general approach, we take data security seriously and we have implemented a variety of security measures on the Website to maintain the safety of your personal data when you submit such information to us.

5) Exporting data outside the European Union and Switzerland

We are obliged to protect the privacy of personal data that you may have submitted in the unlikely event that we export your personal data to places outside the European Union or Switzerland. This means that personal data will only be processed in countries or by parties that provide an adequate level of protection as deemed by Switzerland or the European Commission. Otherwise, we will use other forms of protections, such as specific forms of contractual clauses to ensure such personal data is provided the same protection as required in Switzerland or Europe. In any event, the transmission of personal data outside the European Union and Switzerland will always occur in conformity with applicable privacy legislation.

6) Your choices and rights

As explained in this Privacy Policy, we limit our collection and processing of your personal data wherever possible. Nonetheless, you still have certain choices and rights in respect of the personal data which we do collect and process. As laid out in relevant privacy legislation, you have the right to:

  • Ask us to correct or update your personal data (where reasonably possible);

  • Ask us to remove your personal data from our systems;

  • Ask us for a copy of your personal data, which may also be transferred to another data controller at your request;

  • Withdraw your consent to process your personal data (only if consent was asked for a processing activity), which only affects processing activities that are based on your consent and doesn’t affect the validity of such processing activities before you have withdrawn your consent;

  • Object to the processing of your personal data; and

  • File a complaint with the Federal Data Protection and Information Commissioner (FDPIC), if you believe that your personal data has been processed unlawfully.

On this Website, you may come across links to third party websites. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these third party websites.

8) This Privacy Policy might change

We may modify or replace any part of this Privacy Policy at any time and without notice. Please check the Website periodically for any changes. The new Privacy Policy will be effective immediately upon its posting on our Website.

9) Contact information

To the extent that you have any questions about the Privacy Policy, please contact us at legal@free.technology.

This document is licensed under CC-BY-SA.

- - + + \ No newline at end of file diff --git a/research/benchmarks/postgres-adoption/index.html b/research/benchmarks/postgres-adoption/index.html index cfadbf7..653b7c1 100644 --- a/research/benchmarks/postgres-adoption/index.html +++ b/research/benchmarks/postgres-adoption/index.html @@ -5,8 +5,8 @@ PostgreSQL | Waku Documentation - - + +
@@ -19,7 +19,7 @@ The following diagram shows the scenery used for such analysis.

Insert time distribution Postgres
Query time distribution Postgres

In this case, the insert time gets more spread because the insert operations are shared amongst five more nodes. The Store query time remains the same on average.

  1. Five nwaku-postgres-additional inserting messages plus 100 db-postgres-hammer making 10 selects per second. This case is similar to 2. but stressing more the database.
    Insert time distribution Postgres
    Query time distribution Postgres
- - + + \ No newline at end of file diff --git a/research/index.html b/research/index.html index aa0df6c..18acc00 100644 --- a/research/index.html +++ b/research/index.html @@ -5,8 +5,8 @@ Research | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Research

Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Waku RFCs website.

Benchmarks: Results of implementations and engineering-related benchmarks for Waku clients.

- - + + \ No newline at end of file diff --git a/research/research-and-studies/capped-bandwidth/index.html b/research/research-and-studies/capped-bandwidth/index.html index 853e840..cfdda6d 100644 --- a/research/research-and-studies/capped-bandwidth/index.html +++ b/research/research-and-studies/capped-bandwidth/index.html @@ -5,8 +5,8 @@ Capped Bandwidth in Waku | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Capped Bandwidth in Waku

This issue explains i) why The Waku Network requires a capped bandwidth per shard and ii) how to solve it by rate limiting with RLN by daily requests (instead of every x seconds), which would require RLN v2, or some modifications in the current circuits to work. It also explains why the current rate limiting RLN approach (limit 1 message every x seconds) is not practical to solve this problem.

Problem

First of all, lets begin with the terminology. We have talked in the past about "predictable" bandwidth, but a better name would be "capped" bandwidth. This is because it is totally fine that the waku traffic is not predictable, as long as its capped. And it has to be capped because otherwise no one will be able to run a node.

Since we aim that everyone is able to run a full waku node (at least subscribed to a single shard) its of paramount importance that the bandwidth requirements (up/down) are i) reasonable to run with a residential internet connection in every country and ii) limited to an upper value, aka capped. If the required bandwidth to stay up to date with a topic is higher than what the node has available, then it will start losing messages and won't be able to stay up to date with the topic messages. And not to mention the problems this will cause to other services and applications being used by the user.

The main problem is that one can't just chose the bandwidth it allocates to relay. One could set the maximum bandwidth willing to allocate to store but this is not how relay works. The required bandwidth is not set by the node, but by the network. If a pubsub topic a has a traffic of 50 Mbps (which is the sum of all messages being sent multiplied by its size, times the D_out degree), then if a node wants to stay up to date in that topic, and relay traffic in it, then it will require 50 Mbps. There is no thing such as "partially contribute" to the topic (with eg 25Mbps) because then you will be losing messages, becoming an unreliable peer. The network sets the pace.

So waku needs an upper boundary on the in/out bandwidth (mbps) it consumes. Just like apps have requirements on cpu and memory, we should set a requirement on bandwidth, and then guarantee that if you have that bandwidth, you will be able to run a node without any problem. And this is the tricky part.

Current approach

With the recent productisation effort of RLN, we have part of the problem solved, but not entirely. RLN offers an improvement, since now have a pseudo-identity (RLN membership) that can be used to rate limit users, enforcing a limit on how often it can send a message (eg 1 message every 10 seconds). We assume of course, that getting said RLN membership requires to pay something, or put something at stake, so that it can't be sibyl attacked.

Rate limiting with RLN so that each entity just sends 1 message every x seconds indeed solves the spam problem but it doesn't per se cap the traffic. In order to cap the traffic, we would first need to cap the amount of memberships we allow. Lets see an example:

  • We limit to 10.000 RLN memberships
  • Each ones is rate limited to send 1 message/10 seconds
  • Message size of 50 kBytes

Having this, the worst case bandwidth that we can theoretically have, would be if all of the memberships publish messages at the same time, with the maximum size, continuously. That is 10.000 messages/sec * 50 kBytes = 500 MBytes/second. This would be a burst every 10 seconds, but enough to leave out the majority of the nodes. Of course this assumption is not realistic as most likely not everyone will continuously send messages at the same time and the size will vary. But in theory this could happen.

A naive (and not practical) way of fixing this, would be to design the network for this worst case. So if we want to cap the maximum bandwidth to 5 MBytes/s then we would have different options on the maximum i) amount of RLN memberships and ii) maximum message size:

  • 1.000 RLN memberships, 5 kBytes message size: 1000 * 5 = 5 MBytes/s
  • 10.000 RLN memberships, 500 Bytes message size: 10000 * 0.5 = 5 MBytes/s

In both cases we cap the traffic, however, if we design The Waku Network like this, it will be massively underutilized. As an alternative, the approach we should follow is to rely on statistics, and assume that i) not everyone will be using the network at the same time and ii) message size will vary. So while its impossible to guarantee any capped bandwidth, we should be able to guarantee that with 95 or 99% confidence the bandwidth will stay around a given value, with a maximum variance.

The current RLN approach of rate limiting 1 message every x seconds is not very practical. The current RLN limitations are enforced on 1 message every x time (called epoch). So we currently can allow 1 msg per second or 1 msg per 10 seconds by just modifying the epoch size. But this has some drawbacks. Unfortunately, neither of the options are viable for waku:

  1. A small epoch size (eg 1 seconds) would allow a membership to publish 24*3600/1=86400 messages a day, which would be too much. In exchange, this allows a user to publish messages right after the other, since it just have to wait 1 second between messages. Problem is that having an rln membership being able to publish this amount of messages, is a bit of a liability for waku, and hinders scalability.
  2. A high epoch size (eg 240 seconds) would allow a membership to publish 24*3600/240=360 messages a day, which is a more reasonable limit, but this won't allow a user to publish two messages one right after the other, meaning that if you publish a message, you have to way 240 seconds to publish the next one. Not practical, a no go.

But what if we widen the window size, and allow multiple messages within that window?

Solution

In order to fix this, we need bigger windows sizes, to smooth out particular bursts. Its fine that a user publishes 20 messages in one second, as long as in a wider window it doesn't publish more than, lets say 500. This wider window could be a day. So we could say that a membership can publish 250 msg/day. With this we solve i) and ii) from the previous section.

Some quick napkin math on how this can scale:

  • 10.000 RLN memberships
  • Each RLN membership allow to publish 250 msg/day
  • Message size of 5 kBytes

Assuming a completely random distribution:

  • 10.000 * 250 = 2 500 000 messages will be published a day (at max)
  • A day has 86 400 seconds. So with a random distribution we can say that 30 msg/sec (at max)
  • 30 msg/sec * 5 kBytes/msg = 150 kBytes/sec (at max)
  • Assuming D_out=8: 150 kBytes/sec * 8 = 1.2 MBytes/sec (9.6 Mbits/sec)

So while its still not possible to guarantee 100% the maximum bandwidth, if we rate limit per day we can have better guarantees. Looking at these numbers, considering a single shard, it would be feasible to serve 10.000 users considering a usage of 250 msg/day.

TODO: Analysis on 95%/99% interval confidence on bandwidth given a random distribution.

TLDR

  • Waku should guarantee a capped bandwidth so that everyone can run a node.
  • The guarantee is a "statistical guarantee", since there is no way of enforcing a strict limit.
  • Current RLN approach is to rate limit 1 message every x seconds. A better approach would be x messages every day, which helps achieving such bandwidth limit.
  • To follow up: Variable RLN memberships. Eg. allow to chose tier 1 (100msg/day) tier 2 (200msg/day) etc.
- - + + \ No newline at end of file diff --git a/research/research-and-studies/incentivisation/index.html b/research/research-and-studies/incentivisation/index.html index 91ce6e3..bf91bb6 100644 --- a/research/research-and-studies/incentivisation/index.html +++ b/research/research-and-studies/incentivisation/index.html @@ -5,8 +5,8 @@ Incentivisation | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Incentivisation

Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour.

The goal of this document is to outline and contextualize our approach to TWN i13n. After providing an overview of Waku and relevant prior work, we focus on Waku Store - a client-server protocol for querying historical messages. We introduce a minimal viable addition to Store to enable i13n, and list research directions for future work.

Incentivisation in decentralised networks

Incentivisation tools

We can think of incentivisation tools as a two-by-two matrix:

  • rewards vs punishment;
  • monetary vs reputation.

In other words, there are four quadrants:

  • monetary reward: the node gets rewarded;
  • monetary punishment: the nodes deposits funds that are taken away (slashed) if it misbehaves;
  • reputation reward: the node's reputation increases if it behaves well;
  • reputation punishment: the node's reputation decreases if it behaves badly.

Reputation only works if high reputation brings tangible benefits. For example, if nodes chose neighbors based on reputation, low-reputation nodes miss out on potential revenue. Reputation scores may be local (a node assigns scores to its neighbors) or global (each node gets a uniform score). Global reputation in its simplest form involves a trusted third party, although decentralised approaches are also possible.

Prior work

We may split incentivized decentralised networks into early file-sharing, blockchains, and decentralised storage.

Early P2P file-sharing

Early P2P file-sharing networks employ reputation-based approaches and sticky defaults. For instance, the BitTorrent protocol rewards uploading peers with faster downloads. The download bandwidth available to a peer depends on how much it has uploaded. Moreover, peers share pieces of a file before having received it in whole. This non-monetary i13n policy has been proved to work in practice.

Blockchains

Bitcoin has introduced proof-of-work (PoW) for native monetary rewards in a P2P network. PoW miners are automatically assigned newly mined coins for generating blocks. Miners must expend physical resources to generate a block. If the block is invalid, these expenses are not compensated (implicit monetary punishment). Proof-of-stake (PoS), used in Ethereum and many other cryptocurrencies, introduces explicit monetary punishments. PoS validators lock up (stake) native tokens and get rewarded for validating blocks or slashed for misbehaviour.

Decentralised storage

Post-Bitcoin decentralised storage networks include Codex, Storj, Sia, Filecoin, IPFS. Their i13n methods combine techniques from early P2P file-sharing with blockchain-inspired reward mechanisms.

Waku background

Waku is a family of protocols for a modular privacy-preserving censorship-resistant decentralised communication network. The backbone of Waku is the Relay protocol (and its spam-protected version RLN-Relay). Additionally, there are light protocols: Store, Filter, and Lightpush. Light protocols are also referred to as client-server protocols and request-response protocols.

A server is a node running Relay and a server-side of at least one light protocol. A client is a node running a client-side of any of the light protocols. A server may sometimes be referred to as a full node, and a client as a light node. There is no strict definition of a full node vs a light node in Waku (see discussion).

In light protocols, a client sends a request to a server, and a server performs some actions and returns a response:

  • Store: the server responds with messages relayed that match a set of criteria;
  • Filter: the server will relay (only) messages that pass a filter to the client;
  • Lightpush: the server publishes the client's message to the Relay network.

Waku i13n challenges

Waku has no consensus and no native token, which brings it closer to reputation-incentivised file-sharing networks. As of late 2023, Waku only operates under reputation-based rewards and punishments. While RLN-Relay adds monetary punishments for spammers, slashing is yet to be activated.

Monetary rewards and punishments should ideally be atomically linked with the node's behaviour. A benefit of blockchains in this respect is that the desired behaviour of miners or validators can be verified automatically. Enforcing atomicity in a communication network is more challenging: it is non-trivial to prove that a given piece of data has been relayed.

Our goal is to combine monetary and reputation-based incentives for Waku. Monetary incentives have demonstrated their robustness in blockchains. We think they are necessary to scale the network beyond the initial phase when it's maintained altruistically.

Waku Store

Waku Store is a light protocol for querying historic messages that works as follows:

  1. the client sends a HistoryQuery to the server;
  2. the server sends a HistoryResponse to the client.

The response may be split into multiple parts, as specified by pagination parameters in PagingInfo.

We define a relevant message as a message that matches client-defined criteria (e.g., relayed within a given time frame). Upon receiving a request, a server should quickly send back a response containing all and only relevant messages.

Waku Store incentivisation

An incentivised Store protocol has the following extra steps:

  1. pricing:
    1. cost calculation
    2. price advertisement
    3. price negotiation
  2. payment:
    1. payment itself
    2. proof of payment
  3. reputation
  4. results cross-checking

In this document, we focus on the simplest proof-of-concept (PoC) i13n for Store. Compared to the fully-fledged protocol, the PoC version is simplified in the following ways:

  • cost calculation is based on a common-knowledge price;
  • there is no price advertisement and no price negotiation;
  • each query is paid for in a separate transaction, txid acts a proof of payment;
  • the reputation system is simplified (see below);
  • the results are not cross-checked.

In the PoC protocol:

  1. the client calculates the price based on the known rate per hour of history;
  2. the client pays the appropriate amount to the server's address;
  3. the client sends a HistoryQuery to the server alongside the proof of payment (txid);
  4. the server checks that the txid corresponds to a confirmed transaction with at least the required amount;
  5. the server sends a HistoryResponse to the client.

In further subsections, we list the potential direction for future work towards a fully-fledged i13n mechanism.

Pricing

For PoC, we assume a constant price per hour of history. This price and the blockchain address of the server are assumed to be common knowledge. This simplifies the client-server interaction, avoiding the price negotiation step.

In the future versions of the protocol, the price will be negotiated and will depend on multiple parameters, such as the total size of the relevant messages in the response.

Future work

Payment

For the PoC, each request is paid for with a separate transaction. The transaction hash (txid) acts as a proof of payment. The server verifies the payment by ensuring that:

  1. the transaction has been confirmed;
  2. the transaction is paying the proper amount to the server's account;
  3. the txid does not correspond to any prior response.

The client gives proof of payment before it receives the response. Other options could be:

  1. the client pays after the fact;
  2. the client pays partly upfront and partly after the fact;
  3. a centralised third party (either trusted or semi-trusted, like a smart contract) ensures atomicity;
  4. cryptographically ensured atomicity (similar to atomic swaps, Lightning, or Hopr).

Our design considerations are:

  • the PoC protocol should be simple;
  • servers are more "permanent" entities and are more likely to have long-lived identities;
  • it is more important to protect the clients's privacy than the server's privacy.

In light of these criteria, we suggest that the client pays first. This is simpler than splitting the payment, or involving an extra atomicity-enforcing mechanism. Moreover, pre-payment is arguably more privacy-preserving than post-payment, which encourages servers to deanonymise clients to prevent fraud.

Future work

Reputation

We use reputation to discourage the server from taking the payment and not responding. The client keeps track of the server's reputation:

  • all servers start with zero reputation points;
  • if the server honours the request, it gets +n points;
  • if the server does not respond before a timeout, it gets -m points.
  • if the server's reputation drops below k points, the client will never query it again.

n, m, and k are subject to configuration.

Optionally, a client may treat a given server as trusted, assigning it a constant positive reputation.

Potential issues:

  • An attacker can establish new server identities and continue running away with clients' money. Countermeasures:
    • a client only queries trusted servers (which however leads to centralisation);
    • when querying a new server, a client first sends a small (i.e. cheap) request as a test;
    • more generally, the client selects a server on a case-by-case basis, weighing the payment amount against the server's reputation.
  • The ban mechanism can theoretically be abused. For instance, a competitor may attack the victim server and cause the clients who were awaiting the response to ban that server. Countermeasure: prevent DoS-attacks.

Future work

Design a more comprehensive reputation system:

Results cross-checking

As there is no consensus over past messages, a client may want to query multiple servers and merge their responses. Cross-checking helps ensure that servers are a) not censoring real messages; b) not injecting fake messages into history. Cross-checking is absent in PoC but may be considered later.

Future work

Evaluation

We should think about what the success metrics for an incentivised protocol are, and how to measure them both in simulated settings, as well as in a live network.

Longer-term future work

- - + + \ No newline at end of file diff --git a/research/research-and-studies/maximum-bandwidth/index.html b/research/research-and-studies/maximum-bandwidth/index.html index e1e7e59..259f6a0 100644 --- a/research/research-and-studies/maximum-bandwidth/index.html +++ b/research/research-and-studies/maximum-bandwidth/index.html @@ -5,8 +5,8 @@ Maximum Bandwidth for Global Adoption | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Maximum Bandwidth for Global Adoption

TLDR: This issue aims to set the maximum bandwidth in x Mbps that each waku shard should consume so that the maximum amount of people can run a full waku node. It is up to https://github.com/waku-org/research/issues/22 to specify how this maximum will be enforced.

Conclusion: Limit to 10 Mbps each waku shard.

Introduction

Waku is designed in a way that everyone should be able to run a full node on an average laptop with a residential Internet connection, at least in one shard. This will enable true decentralization and give power to the users, since they won't need to rely on third parties to send/receive messages. Professional node operators running in data centers, can of course contribute to multiple shards, but we should keep the bandwidth/hardware requirements of single shard rather low.

This vision opposes the federated approach, where a few nodes requiring vast amounts of resources (cpu, memory, bandwidth) run in data centres, taking the power from the user. While federated approaches are an improvement from traditional client-server architectures, waku envisions a fully peer-to-peer architecture where anyone should be able to run a node.

In order to ensure that anyone can run a node in desktop, there are two main limiting factors:

  1. Bandwidth consumption in Mbps
  2. CPU/memory resources (mainly limited by RLN proof verification)

This issue focuses on i) bandwidth consumption and https://github.com/waku-org/research/issues/30 on ii) CPU/memory resources. Note that on https://github.com/waku-org/research/issues/23 an analysis on the impact on RLN was already made, but wasn't focused on scalability. Said issues do.

In https://github.com/waku-org/research/issues/22 we discussed why and how to limit the maximum bandwidth per shard, but we haven't come up with a specific number in Mbps. This issue i) presents data from the available bandwidth at different locations and ii) suggests a maximum bandwidth in Mbps that waku should enforce.

Bandwidth availability and usage

The following tables show:

  • Table [1] The Q25, Q75 and average bandwidth (upload/download) in Mbps available on different continents. Raw data is available here and credits to @leobago for the summarized version. Note: The below numbers were rounded to the nearest integer.
  • Table [2] The median global bandwidth (upload/download) in Mbps, taken from speedtest (accessed 12 Oct 2023).
  • Table [3] Download bandwidth requirements in Mbps for Netflix video streaming, source.
Table [1]Download (Mbps)Upload (Mbps)
Q25AverageQ75Q25AverageQ75
North-America58107137386885
South-America215472133344
Europe4993119305672
Asia235371153750
Oceania4484108275063
Africa12263371722
Table [2]Median Download (Mbps)Median Upload (Mbps)
Global8338
Table [3] Video resolutionRecommended Bandwidth
HD3 Mbps
Full HD5 Mbps
4K/UHD15 Mbps

Selecting a maximum bandwidth

With the above data, we should be informed to take a decision on the maximum bandwidth that we should enforce per shard. With this number, we will apply the techniques explained in https://github.com/waku-org/research/issues/22 to ensure (with some statistical confidence) that the bandwidth won't exceed that number.

The trade-off is clear:

  • We enforce a low bandwidth: more people can run full waku nodes, overall network throughput is less, network decentralization is easier, gives power to the user as its fully sovereign.
  • We don't enforce a low bandwidth: not possible to run full waku nodes in laptops acting as a centralization force, nodes are run by few professional operators in data centers, waku users just use light clients, network throughput can scale way easier, federated approach.

So it's about where to draw this line.

Points to take into account:

  • Relay contributes to bandwidth the most: Relay is the protocol that mostly contributes to bandwidth usage, and it can't choose to allocate fewer bandwidth resources like other protocols (eg store can choose to provide less resources and it will work). In other words, the network sets the relay bandwidth requirements, and if the node can't meet them, it just wont work.
  • Upload and download bandwidth are the same: Due to how gossipsub works, and hence relay, the bandwidth consumption is symmetric, meaning that upload and download bandwidth is the same. This is because of D and the reciprocity of the connections, meaning that one node upload is another download.
  • Nodes not meeting requirements can use light clients. Note that nodes not meeting the bandwidth requirements can still use waku, but they will have to use light protocols, which are a great alternative, especially on mobile, but with some drawbacks (trust assumptions, less reliability, etc)
  • Waku can't take all the bandwidth: Waku is meant to be used in conjunction with other services, so it shouldn't consume all the existing bandwidth. If Waku consumes x Mbps and someone bandwidth is x Mpbs, the UX won't be good.
  • Compare with existing well-known services: As shown in Table [3], Netflix 4K video streaming takes 15Mbps, so that is an order of magnitude to take into account.

Coming up with a number:

  • Lowest average download speed across continents is Africa (26 Mbps)
  • Lowest average upload speed across continents is Africa (17 Mbps)
  • Since in waku the bandwidth consumption is symmetric, we are limited by the lowest (17 Mpbs)
  • However waku should not consume all bandwidth, leaving some room for other applications.
  • We could set 10 Mbps, which is between Full HD video and 4K.
  • With 10Mbps the % of average bandwidth waku will consume is:
    • North-America 9 %
    • South-America 18 %
    • Europe 11 %
    • Asia 18 %
    • Oceania 12 %
    • Africa 38 %

Conclusion: Limit to 10 Mbps each waku shard. How? Not trivial, see https://github.com/waku-org/research/issues/22#issuecomment-1727795042

Note: This number is not set in stone and is subject to modifications, but it will most likely stay in the same order of magnitude if changed.

- - + + \ No newline at end of file diff --git a/research/research-and-studies/message-propagation/index.html b/research/research-and-studies/message-propagation/index.html index 7d75eba..ecb428d 100644 --- a/research/research-and-studies/message-propagation/index.html +++ b/research/research-and-studies/message-propagation/index.html @@ -5,8 +5,8 @@ Message Propagation Times With Waku-RLN | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Message Propagation Times With Waku-RLN

TLDR: We present the results of 1000 nwaku nodes running rln using different message sizes, in a real network with bandwidth limitations and network delays. The goal is to study the message propagation delay distribution, and how it's affected by i) rln and ii) message size in a real environment. We observe that for messages of 10kB the average end-to-end propagation delay is 508 ms. We can also observe that the message propagation delays are severely affected when increasing the message size, which indicates that it is not a good idea to use waku for messages of eg. 500kB. See simulation parameters.

Introduction

Waku uses relay as a routing protocol, which is an adaptation of gossipsub. It routes messages following a publisher/subscriber architecture, where nodes can publish messages or subscribe to topics. If message m is published to topic t, all i nodes n_1...n_i subscribed to t will get m. The relay protocol ensures that every node gets the messages of the topics it is subscribed to.

However, since relay works in a decentralized manner, all nodes contribute to the gossiping of a message, until it has successfully reached all the interested nodes (subscribed to it). This means that a message can travel multiple hops until it reaches all nodes. The amount of hops determines the message propagation time, which is measured as the time difference of when the node published the message and when another node received.

This issue aims to go from theory to practice, by i) understanding message propagation times in theory and ii) presenting nwaku simulation results in an end-to-end setup with rln, with real message propagation times.

Theory

Let's start with message propagation times in theory. On a high level, it depends on:

  • The gossipsub configuration, being D one of the most important parameters. This sets the hops that a message will travel to reach all nodes. Higher D, less hops, less delay. Note that a higher D implies more bandwidth consumption.
  • The node. Different nodes will see different propagation times, because a message can travel different paths. A node connected directly to the publisher (1 hop) will see lower propagation times than other nodes further away.
  • Individual propagation times. Since a message can travel multiple hops to reach its destination, each hop adds a contribution to the overall message propagation time. This individual propagation time depends on the characteristics on the nodes involved in the connections.

In a D-regular graph, like the one formed by waku nodes around a topic, the maximum amount of hops that a message can travel to reach all nodes can be calculated as ceil(log(total_nodes)/log(D)). For example, with log(1000)/log(6) = 3.85 = 4. So in a network with 1000 nodes and D=6, no matter which node publishes the message, in 4 hops it will reach all the nodes.

Notice the "worst case" since some nodes might be directly connected to the publisher, so they will get the message in just 1 hop.

But how long does it take to jump each hop? It depends on:

  • The latency between nodes. Can be measured as the time to respond to a ping.
  • The size of the messages. The bigger the message, the more time it takes to transmit.
  • Nodes bandwidth. Sender upload bandwidth and receiver download bandwidth. More important when using big message sizes.
  • Message validation time. When each node receives a message, it applies some validation to decide if the message is further gossiped or not. In the case of waku, this is RLN (paper, rfc)

Assuming a message m that travels 4 hops from node n1 (publisher) to n5 (subscriber) we can calculate the message propagation time mpt=ipt_1+ipt_2+ipt_3+ipt_4 where ipt is the individual propagation time between each node in the chain.

However, specific message propagation times are useless, we need average times under specific conditions. And for this, we need simulations.

Simulations

Using shadow simulator, we have developed a tool that allows to simulate message propagation delays of nwaku (using a slightly modified branch, mainly to instrument it with tools to measure the times + starting from an already connected mesh. Thanks @Menduist for the help. Note that running this simulation requires a significant amount of resources, done with 256 GB of RAM.

The configuration of the simulation is (see config):

  • latency=100ms. Average latency in our current waku network. Thanks @vpavlin for the measurements. See this for live data.
  • down_bandwidth=83Mbps, up_bandwidth=38Mbps. As shown in Table 2 that's the worldwide median speed.
  • D=6, which is the current nwaku configuration.
  • nodes=1000. Amount of nodes used in the simulation
  • nwaku was used with a minor modification
  • A total of 10 messages were published, that led to 9990 received messages.
  • Since shadow doesn't take into account CPU times (by now), we simulate it with sleepAsync as per https://github.com/waku-org/research/issues/23 findings. 0.012 seconds for proof verification and 0.15 seconds for proof generation.

Results

The following figure shows the message propagation time with real simulations, showing the distribution in a network with the above configuration with three different message sizes: 10kB, 100kB, 500kB. Note that the whiskers indicate the best/worst values and the box contains P25 to P75 values. Average mu and P95 are also shown. Raw data here.

message-latency-distribution

Important note. The first messages sent in the simulations are omitted, since they show an abnormal propagation delay that doesn't reflect reality. This is due to how flow control works in TCP, where right after connection, the sender node has no idea of the "bandwidth" of the receiver node, so it will start sending packages at a lower rate. This translates into high transmission times, and it's more pronounced when dealing with big message sizes.

In other words, in a 100Mpbs link, 100Mbits won't be sent in 1 second, or at least not a the beginning, when the node is slowly increasing the rate until based on ACK/NACK ratio. For more information about this, this is explained in here.

Conclusions:

  • Using small messages 10kB the average propagation delay is 508 ms, quite reasonable for applications using waku. The variance is acceptable, with 95% of the messages arriving in <627 ms.
  • When using a size of 10kB we can see that the best case propagation delay is 263 ms. This corresponds to the nodes that are just 1 hop from the publisher. The proof generation time 0.15 seconds affects the most, where the rest is the inter-node latency and the transmission of the message itself.
  • We can see that the message propagation delay increases with big messages, 100kB and 500kB. So its probably not a good idea to use waku for such big messages. Note that these simulations had 1000 nodes, so if we scale it to 10000 or beyond, propagation times would be worse.
  • Best case propagation time (lower part of the whisker) is quite similar in all cases. This is because it corresponds to the node that is just 1 hop away from the publisher.

Future work:

  • Current waku D values (average of 6 ranging from 4 to 12) have a huge impact on the bandwidth that a node consumes. Are we willing to lower D in order to reduce bandwidth but increase message propagation times?
  • Since shadow doesn't take CPU time into account, it's currently simulated for rln, which should be the biggest bottleneck. Once shadow has this feature times would be more accurate.
- - + + \ No newline at end of file diff --git a/research/research-and-studies/rln-key-benchmarks/index.html b/research/research-and-studies/rln-key-benchmarks/index.html index 36c7277..90daa2e 100644 --- a/research/research-and-studies/rln-key-benchmarks/index.html +++ b/research/research-and-studies/rln-key-benchmarks/index.html @@ -5,8 +5,8 @@ RLN Key Benchmarks | Waku Documentation - - + +
@@ -17,7 +17,7 @@ ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

RLN Key Benchmarks

Introduction

Since RLN has been chosen as the spamming protection mechanism for waku, we must understand the practical implications of using it. This issue explains the main differences between relay and rln-relay and gives some benchmarks after running simulations using waku-simulator, in a network with the following characteristics:

  • 100 nwaku nodes, each one with a valid rln membership and publishing a message every 10 seconds to a common topic.
  • rln contract deployed in Ethereum Sepolia
  • 10.000 memberships registered in the contract
  • pure relay (store and light protocols disabled)

The main deltas rln vs rln-relay are:

  • New proof field in WakuMessage containing 384 extra bytes. This field must be generated and attached to each message.
  • New validator, that uses proof to Accept or Reject the message. The proof has to be verified.
  • New dependency on a blockchain, Ethereum, or any EVM chain, to keep track of the members allowed to publish.

But what are the practical implications of these?

TLDR:

  • Proof generation is constant-ish. 0.15 second for each proof
  • Proof verification is constant-ish, 0.012 seconds. In a network with 10k nodes and D=6 this would add an overhead delay of 0.06 seconds.
  • Gossipsub scoring drops connections from spammer peers, which acts as the punishment (instead of slashing). Validated in the simulation.
  • Rln doesn't have any impact on memory consumption.

Proof generation times

Seems that proof generation times stay constant no matter the size of the message. In the following simulation it was increased from: 1kB, 10kB, 50kB, 150kB. On average it takes 0.15 seconds to calculate the message proof. This means that when a node wants to send a message, it will need to spend this time generating the proof. It seems very reasonable and it actually acts as a mini proof of work, where a consumer computer won't be able to publish a really high number of messages per second.

proof-generation-times

Proof verification times

On the other hand, rln also adds an overhead in the gossipsub validation process. On average it takes 0.012 seconds to verify the proof. It seems that when we increase the message size, validation time seems to increase a bit, which can be for any other reason besides rln itself (eg deserializing the message might take longer).

This number seems reasonable and shouldn't affect that much the average delay of a message. Assuming a d-regular graph, with 10k nodes and D=6, we can have up to log(total_nodes)/log(D)=5 hops. So in the worst case, rln will add a network latency of 0.012*5 = 0.06 seconds

proof-verification-times

Spam protection

For the initial release of RLN, slashing won't be implemented and it still remains unclear if it will be implemented in the future. Luckily, even if slashing is not implemented rln can be used to detect spam and punish the sender off-chain (instead of slashing an onchain collateral). This is done with gossipsub scoring.

In the following simulation, we can see 100 nwaku interconnected nodes, where one of them suddenly starts spamming the network with multiple valid rln messages 3000 messages/minute. Since its rate limited to 1msg/10 seconds, we can see that in almost no time, every node in the network disconnects from the spammer peer (see red node), leaving it with 0 peers, which disincentivise such attacks and without requiring a financial slashing.

connected-peers

RLN tree sync

Using RLN implies that waku should now piggyback on a blockchain (the case study uses Ethereum Sepolia) and has to stay up to date with the latest events emitted by the rln smart contract. These events are used to locally construct a tree that contains all members allowed to create valid proofs to send messages. Some numbers:

  • A tree with 10k members takes 2Mbytes of space. Negligible.
  • A tree with 10k members takes `<4 minutes to synchronize. Assumable since it's done just once.
  • With a block range of 5000 blocks for each request, we would need 520 requests to synchronize 1 year of historical data from the tree. Assumable since most of the free endpoints out there allow 100k/day.

Performance relay vs. rln-relay

Same simulation with 100 nodes was executed with rln and without rln:

  • Memory consumption is almost identical

with rln

with-rln

without rln

without-rln

  • Couldn't capture cpu metrics
  • Minor differences in messages per seconds is due to injection technique, nothing related to rln itself.
- - + + \ No newline at end of file diff --git a/rules-of-engagement/index.html b/rules-of-engagement/index.html index 8506f0f..6cd4de3 100644 --- a/rules-of-engagement/index.html +++ b/rules-of-engagement/index.html @@ -5,8 +5,8 @@ Rules of Engagement | Waku Documentation - - + +
@@ -17,7 +17,7 @@ ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Rules of Engagement

Waku is a nascent technology and the Waku community is still growing. Hence, the Waku team is keen to work closely with projects to help leverage Waku technology to drive the success of their own applications.

We describe below the expected flow for working with Waku and some rules of engagement to set expectations for project teams interacting with the Waku team.

1. Initial discussion

We encourage the initial discussion to happen over a video call. However, in-person event or online discussions are also an option.

During this initial interaction, the project team should present their product and the needs they have in relation to peer-to-peer communication and real time interaction.

The Waku team will provide an overview of Waku and point to specific protocol and software that should help fulfil such needs.

Benefits and caveats are highlighted and further documentation and examples will be provided.

2. Solution design

Projects should review Waku documentations and libraries in their own time; start building a PoC using Waku.

Projects should start designing over Waku and come up with skeleton design or user flows about specific friction points or complex area (e.g. user experience, scaling).

Project should appoint one or two Waku SME (Subject Matter Expert) to drive most discussions with Waku team to start acquire expertise on Waku behaviour.

Project's Waku SMEs should present unresolved design issues to Waku team.

The Waku team will then review and provide skeleton design solutions on how to overcome said unresolved or complex issues.

3. Commitment

The project should finalise a design, solution or protocol they will build using Waku.

If they wish to, they can present this solution to the Waku team to get feedback and identify technical gaps.

The Waku team can provide feedback, highlight potential caveats, and communicate on delivery timeline for gaps, if any.

note

While the Waku team can provide feedback or even design potential solution on how Waku could be integrated in an application. It is the responsibility of the project team to understand the potential caveats and limitations that may incur with such a design.

The Waku team can provide options, but it is up to the project team to decide on the final solution.

4. Building

The project then start building their MVP using Waku. The Waku team can provide support regarding API usage, bugs encountered, documentation gaps.

Waku team will use feedback raised by project to improve APIs, fix bugs and enhance documentation. Waku team continues R&D to deliver any committed technical gaps.

Project delivers their MVP.

note

The Waku team is keen to help any usage of Waku library. Please note that code snippets are necessary for preliminary investigations of issues.

Sometimes, a code snippet is not enough; in this case, a minimal reproduction repo is necessary to allow us to do further investigation. If the project is open-source, then the Waku team might try to further investigate using it, as long as the reproduction steps are easy.

If no code is provided to help with the investigation, then there is nothing the Waku team can do.

For any unresolved issue, the project must open an issue on the related GitHub repository under the waku-org organisation.

5. Ongoing relation

Once the project application is live, the Waku team is keen to maintain regular contact. This can include discussion around performance, bugs found by users, etc.

The Waku team is keen to regularly present new and upcoming development to project team, highlight items that are particularly relevant.

If a project wishes to take onboard any new Waku protocol, or decide to extend their product with a new functionality using Waku, the circle can resume from step 1.

- - + + \ No newline at end of file diff --git a/search-index.json b/search-index.json index 3277790..28244d0 100644 --- a/search-index.json +++ b/search-index.json @@ -1 +1 @@ -[{"documents":[{"i":1,"t":"Introduction to Waku","u":"/","b":["Guides"]},{"i":15,"t":"Debug Your Waku DApp and WebSocket","u":"/guides/js-waku/debug-waku-dapp","b":["Guides","JavaScript Waku SDK"]},{"i":31,"t":"JavaScript Waku SDK","u":"/guides/js-waku/","b":["Guides","JavaScript Waku SDK"]},{"i":41,"t":"Send and Receive Messages Using Light Push and Filter","u":"/guides/js-waku/light-send-receive","b":["Guides","JavaScript Waku SDK"]},{"i":55,"t":"Bootstrap Nodes and Discover Peers","u":"/guides/js-waku/configure-discovery","b":["Guides","JavaScript Waku SDK"]},{"i":67,"t":"JavaScript SDK FAQ","u":"/guides/js-waku/faq","b":["Guides","JavaScript Waku SDK"]},{"i":69,"t":"Scaffold DApps Using @waku/create-app","u":"/guides/js-waku/use-waku-create-app","b":["Guides","JavaScript Waku SDK"]},{"i":75,"t":"Manage Your Filter Subscriptions","u":"/guides/js-waku/manage-filter","b":["Guides","JavaScript Waku SDK"]},{"i":81,"t":"Encrypt, Decrypt, and Sign Your Messages","u":"/guides/js-waku/message-encryption","b":["Guides","JavaScript Waku SDK"]},{"i":93,"t":"Node Configuration Options","u":"/guides/nwaku/config-options","b":["Guides","Run a Nwaku Node"]},{"i":123,"t":"Run @waku/sdk in a NodeJS Application","u":"/guides/js-waku/run-waku-nodejs","b":["Guides","JavaScript Waku SDK"]},{"i":138,"t":"Retrieve Messages Using Store Protocol","u":"/guides/js-waku/store-retrieve-messages","b":["Guides","JavaScript Waku SDK"]},{"i":159,"t":"Build Nwaku from Source","u":"/guides/nwaku/build-source","b":["Guides","Run a Nwaku Node"]},{"i":171,"t":"Configure Peer Discovery","u":"/guides/nwaku/configure-discovery","b":["Guides","Run a Nwaku Node"]},{"i":181,"t":"Build React DApps Using @waku/react","u":"/guides/js-waku/use-waku-react","b":["Guides","JavaScript Waku SDK"]},{"i":195,"t":"Nwaku FAQ","u":"/guides/nwaku/faq","b":["Guides","Run a Nwaku Node"]},{"i":197,"t":"Node Configuration Methods","u":"/guides/nwaku/config-methods","b":["Guides","Run a Nwaku Node"]},{"i":207,"t":"Node Configuration Examples","u":"/guides/nwaku/configure-nwaku","b":["Guides","Run a Nwaku Node"]},{"i":227,"t":"Find Your Node Address","u":"/guides/nwaku/find-node-address","b":["Guides","Run a Nwaku Node"]},{"i":237,"t":"Run Nwaku in a Docker Container","u":"/guides/nwaku/run-docker","b":["Guides","Run a Nwaku Node"]},{"i":247,"t":"Upgrade Instructions","u":"/guides/nwaku/upgrade-instructions","b":["Guides","Run a Nwaku Node"]},{"i":251,"t":"Run Nwaku with Docker Compose","u":"/guides/nwaku/run-docker-compose","b":["Guides","Run a Nwaku Node"]},{"i":269,"t":"Run a Nwaku Node","u":"/guides/nwaku/run-node","b":["Guides","Run a Nwaku Node"]},{"i":281,"t":"Content Topics","u":"/learn/concepts/content-topics","b":["Learn","Concepts"]},{"i":293,"t":"Discv5","u":"/learn/concepts/discv5","b":["Learn","Concepts","Peer Discovery"]},{"i":297,"t":"Network Domains","u":"/learn/concepts/network-domains","b":["Learn","Concepts"]},{"i":307,"t":"Peer Exchange","u":"/learn/concepts/peer-exchange","b":["Learn","Concepts","Peer Discovery"]},{"i":311,"t":"Peer Discovery","u":"/learn/concepts/peer-discovery","b":["Learn","Concepts","Peer Discovery"]},{"i":313,"t":"Protocols","u":"/learn/concepts/protocols","b":["Learn","Concepts"]},{"i":327,"t":"Static Peers","u":"/learn/concepts/static-peers","b":["Learn","Concepts","Peer Discovery"]},{"i":331,"t":"DNS Discovery","u":"/learn/concepts/dns-discovery","b":["Learn","Concepts","Peer Discovery"]},{"i":335,"t":"Research","u":"/learn/research","b":["Learn"]},{"i":341,"t":"Waku FAQ","u":"/learn/faq","b":["Learn"]},{"i":343,"t":"Transports","u":"/learn/concepts/transports","b":["Learn","Concepts"]},{"i":345,"t":"Waku Docs Glossary","u":"/learn/glossary","b":["Learn"]},{"i":417,"t":"Security Features","u":"/learn/security-features","b":["Learn"]},{"i":429,"t":"Comparing Waku and libp2p","u":"/learn/waku-vs-libp2p","b":["Learn"]},{"i":437,"t":"The Waku Network","u":"/learn/waku-network","b":["Learn"]},{"i":445,"t":"Research","u":"/research/","b":["Research"]},{"i":447,"t":"Migrating to Waku v0.027","u":"/migrations/js-waku/migration_v0.026_0.027","b":[]},{"i":467,"t":"Capped Bandwidth in Waku","u":"/research/research-and-studies/capped-bandwidth","b":["Research","Research and Studies"]},{"i":477,"t":"Privacy Policy","u":"/privacy-policy","b":[]},{"i":497,"t":"Incentivisation","u":"/research/research-and-studies/incentivisation","b":["Research","Research and Studies"]},{"i":539,"t":"Maximum Bandwidth for Global Adoption","u":"/research/research-and-studies/maximum-bandwidth","b":["Research","Research and Studies"]},{"i":547,"t":"PostgreSQL","u":"/research/benchmarks/postgres-adoption","b":["Research","Benchmarks"]},{"i":564,"t":"Message Propagation Times With Waku-RLN","u":"/research/research-and-studies/message-propagation","b":["Research","Research and Studies"]},{"i":574,"t":"RLN Key Benchmarks","u":"/research/research-and-studies/rln-key-benchmarks","b":["Research","Research and Studies"]},{"i":589,"t":"Terms of Use","u":"/terms","b":[]},{"i":613,"t":"Rules of Engagement","u":"/rules-of-engagement","b":[]},{"i":625,"t":"Security","u":"/security","b":[]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,3.974,1,1.781]],["t/15",[1,1.335,2,2.979,3,2.263,4,2.979]],["t/31",[1,1.526,5,2.912,6,2.912]],["t/41",[7,2.165,8,2.165,9,1.491,10,1.368,11,2.165,12,2.165,13,1.852]],["t/55",[14,2.979,15,1.74,16,2.979,17,1.881]],["t/67",[5,2.912,6,2.912,18,2.587]],["t/69",[3,2.011,10,1.672,19,2.647,20,2.647,21,2.647]],["t/75",[13,2.912,22,3.405,23,3.405]],["t/81",[9,2.051,24,2.979,25,2.979,26,2.979]],["t/93",[15,1.989,27,2.344,28,3.405]],["t/123",[29,2.051,30,2.979,31,2.979,32,2.979]],["t/138",[9,1.823,10,1.672,33,2.647,34,2.647,35,2.264]],["t/159",[36,2.912,37,2.151,38,3.405]],["t/171",[17,2.151,27,2.344,39,2.587]],["t/181",[3,2.011,10,1.672,36,2.264,40,2.647,41,2.647]],["t/195",[18,3.019,37,2.51]],["t/197",[15,1.989,27,2.344,42,3.405]],["t/207",[15,1.989,27,2.344,43,3.405]],["t/227",[15,1.989,44,3.405,45,3.405]],["t/237",[29,2.051,37,1.881,46,2.547,47,2.979]],["t/247",[48,3.974,49,3.974]],["t/251",[29,2.051,37,1.881,46,2.547,50,2.979]],["t/269",[15,1.989,29,2.344,37,2.151]],["t/281",[51,3.974,52,3.974]],["t/293",[53,4.771]],["t/297",[54,3.398,55,3.974]],["t/307",[17,2.51,56,3.974]],["t/311",[17,2.51,39,3.019]],["t/313",[35,4.08]],["t/327",[17,2.51,57,3.974]],["t/331",[39,3.019,58,3.974]],["t/335",[59,4.08]],["t/341",[1,1.781,18,3.019]],["t/343",[60,4.771]],["t/345",[1,1.526,61,3.405,62,3.405]],["t/417",[63,3.398,64,3.974]],["t/429",[1,1.526,65,3.405,66,3.405]],["t/437",[1,1.781,54,3.398]],["t/445",[59,4.08]],["t/447",[1,1.526,67,3.405,68,3.405]],["t/467",[1,1.526,69,3.405,70,2.912]],["t/477",[71,3.974,72,3.974]],["t/497",[73,4.771]],["t/539",[70,2.547,74,2.979,75,2.979,76,2.979]],["t/547",[77,4.771]],["t/564",[1,1.187,9,1.823,78,2.647,79,2.647,80,2.264]],["t/574",[80,2.912,81,3.405,82,3.405]],["t/589",[10,2.51,83,3.974]],["t/613",[84,3.974,85,3.974]],["t/625",[63,4.08]]],"invertedIndex":[["address",{"_index":45,"t":{"227":{"position":[[15,7]]}}}],["adopt",{"_index":76,"t":{"539":{"position":[[29,8]]}}}],["app",{"_index":21,"t":{"69":{"position":[[34,3]]}}}],["applic",{"_index":32,"t":{"123":{"position":[[26,11]]}}}],["bandwidth",{"_index":70,"t":{"467":{"position":[[7,9]]},"539":{"position":[[8,9]]}}}],["benchmark",{"_index":82,"t":{"574":{"position":[[8,10]]}}}],["bootstrap",{"_index":14,"t":{"55":{"position":[[0,9]]}}}],["build",{"_index":36,"t":{"159":{"position":[[0,5]]},"181":{"position":[[0,5]]}}}],["cap",{"_index":69,"t":{"467":{"position":[[0,6]]}}}],["compar",{"_index":65,"t":{"429":{"position":[[0,9]]}}}],["compos",{"_index":50,"t":{"251":{"position":[[22,7]]}}}],["configur",{"_index":27,"t":{"93":{"position":[[5,13]]},"171":{"position":[[0,9]]},"197":{"position":[[5,13]]},"207":{"position":[[5,13]]}}}],["contain",{"_index":47,"t":{"237":{"position":[[22,9]]}}}],["content",{"_index":51,"t":{"281":{"position":[[0,7]]}}}],["dapp",{"_index":3,"t":{"15":{"position":[[16,4]]},"69":{"position":[[9,5]]},"181":{"position":[[12,5]]}}}],["debug",{"_index":2,"t":{"15":{"position":[[0,5]]}}}],["decrypt",{"_index":25,"t":{"81":{"position":[[9,8]]}}}],["discov",{"_index":16,"t":{"55":{"position":[[20,8]]}}}],["discoveri",{"_index":39,"t":{"171":{"position":[[15,9]]},"311":{"position":[[5,9]]},"331":{"position":[[4,9]]}}}],["discv5",{"_index":53,"t":{"293":{"position":[[0,6]]}}}],["dn",{"_index":58,"t":{"331":{"position":[[0,3]]}}}],["doc",{"_index":61,"t":{"345":{"position":[[5,4]]}}}],["docker",{"_index":46,"t":{"237":{"position":[[15,6]]},"251":{"position":[[15,6]]}}}],["domain",{"_index":55,"t":{"297":{"position":[[8,7]]}}}],["encrypt",{"_index":24,"t":{"81":{"position":[[0,8]]}}}],["engag",{"_index":85,"t":{"613":{"position":[[9,10]]}}}],["exampl",{"_index":43,"t":{"207":{"position":[[19,8]]}}}],["exchang",{"_index":56,"t":{"307":{"position":[[5,8]]}}}],["faq",{"_index":18,"t":{"67":{"position":[[15,3]]},"195":{"position":[[6,3]]},"341":{"position":[[5,3]]}}}],["featur",{"_index":64,"t":{"417":{"position":[[9,8]]}}}],["filter",{"_index":13,"t":{"41":{"position":[[47,6]]},"75":{"position":[[12,6]]}}}],["find",{"_index":44,"t":{"227":{"position":[[0,4]]}}}],["global",{"_index":75,"t":{"539":{"position":[[22,6]]}}}],["glossari",{"_index":62,"t":{"345":{"position":[[10,8]]}}}],["incentivis",{"_index":73,"t":{"497":{"position":[[0,15]]}}}],["instruct",{"_index":49,"t":{"247":{"position":[[8,12]]}}}],["introduct",{"_index":0,"t":{"1":{"position":[[0,12]]}}}],["javascript",{"_index":5,"t":{"31":{"position":[[0,10]]},"67":{"position":[[0,10]]}}}],["key",{"_index":81,"t":{"574":{"position":[[4,3]]}}}],["libp2p",{"_index":66,"t":{"429":{"position":[[19,6]]}}}],["light",{"_index":11,"t":{"41":{"position":[[32,5]]}}}],["manag",{"_index":22,"t":{"75":{"position":[[0,6]]}}}],["maximum",{"_index":74,"t":{"539":{"position":[[0,7]]}}}],["messag",{"_index":9,"t":{"41":{"position":[[17,8]]},"81":{"position":[[32,8]]},"138":{"position":[[9,8]]},"564":{"position":[[0,7]]}}}],["method",{"_index":42,"t":{"197":{"position":[[19,7]]}}}],["migrat",{"_index":67,"t":{"447":{"position":[[0,9]]}}}],["network",{"_index":54,"t":{"297":{"position":[[0,7]]},"437":{"position":[[9,7]]}}}],["node",{"_index":15,"t":{"55":{"position":[[10,5]]},"93":{"position":[[0,4]]},"197":{"position":[[0,4]]},"207":{"position":[[0,4]]},"227":{"position":[[10,4]]},"269":{"position":[[12,4]]}}}],["nodej",{"_index":31,"t":{"123":{"position":[[19,6]]}}}],["nwaku",{"_index":37,"t":{"159":{"position":[[6,5]]},"195":{"position":[[0,5]]},"237":{"position":[[4,5]]},"251":{"position":[[4,5]]},"269":{"position":[[6,5]]}}}],["option",{"_index":28,"t":{"93":{"position":[[19,7]]}}}],["peer",{"_index":17,"t":{"55":{"position":[[29,5]]},"171":{"position":[[10,4]]},"307":{"position":[[0,4]]},"311":{"position":[[0,4]]},"327":{"position":[[7,5]]}}}],["polici",{"_index":72,"t":{"477":{"position":[[8,6]]}}}],["postgresql",{"_index":77,"t":{"547":{"position":[[0,10]]}}}],["privaci",{"_index":71,"t":{"477":{"position":[[0,7]]}}}],["propag",{"_index":78,"t":{"564":{"position":[[8,11]]}}}],["protocol",{"_index":35,"t":{"138":{"position":[[30,8]]},"313":{"position":[[0,9]]}}}],["push",{"_index":12,"t":{"41":{"position":[[38,4]]}}}],["react",{"_index":40,"t":{"181":{"position":[[6,5]]}}}],["receiv",{"_index":8,"t":{"41":{"position":[[9,7]]}}}],["research",{"_index":59,"t":{"335":{"position":[[0,8]]},"445":{"position":[[0,8]]}}}],["retriev",{"_index":33,"t":{"138":{"position":[[0,8]]}}}],["rln",{"_index":80,"t":{"564":{"position":[[36,3]]},"574":{"position":[[0,3]]}}}],["rule",{"_index":84,"t":{"613":{"position":[[0,5]]}}}],["run",{"_index":29,"t":{"123":{"position":[[0,3]]},"237":{"position":[[0,3]]},"251":{"position":[[0,3]]},"269":{"position":[[0,3]]}}}],["scaffold",{"_index":19,"t":{"69":{"position":[[0,8]]}}}],["sdk",{"_index":6,"t":{"31":{"position":[[16,3]]},"67":{"position":[[11,3]]}}}],["secur",{"_index":63,"t":{"417":{"position":[[0,8]]},"625":{"position":[[0,8]]}}}],["send",{"_index":7,"t":{"41":{"position":[[0,4]]}}}],["sign",{"_index":26,"t":{"81":{"position":[[22,4]]}}}],["sourc",{"_index":38,"t":{"159":{"position":[[17,6]]}}}],["static",{"_index":57,"t":{"327":{"position":[[0,6]]}}}],["store",{"_index":34,"t":{"138":{"position":[[24,5]]}}}],["subscript",{"_index":23,"t":{"75":{"position":[[19,13]]}}}],["term",{"_index":83,"t":{"589":{"position":[[0,5]]}}}],["time",{"_index":79,"t":{"564":{"position":[[20,5]]}}}],["topic",{"_index":52,"t":{"281":{"position":[[8,6]]}}}],["transport",{"_index":60,"t":{"343":{"position":[[0,10]]}}}],["upgrad",{"_index":48,"t":{"247":{"position":[[0,7]]}}}],["us",{"_index":10,"t":{"41":{"position":[[26,5]]},"69":{"position":[[15,5]]},"138":{"position":[[18,5]]},"181":{"position":[[18,5]]},"589":{"position":[[9,3]]}}}],["v0.027",{"_index":68,"t":{"447":{"position":[[18,6]]}}}],["waku",{"_index":1,"t":{"1":{"position":[[16,4]]},"15":{"position":[[11,4]]},"31":{"position":[[11,4]]},"341":{"position":[[0,4]]},"345":{"position":[[0,4]]},"429":{"position":[[10,4]]},"437":{"position":[[4,4]]},"447":{"position":[[13,4]]},"467":{"position":[[20,4]]},"564":{"position":[[31,4]]}}}],["waku/cr",{"_index":20,"t":{"69":{"position":[[21,12]]}}}],["waku/react",{"_index":41,"t":{"181":{"position":[[24,11]]}}}],["waku/sdk",{"_index":30,"t":{"123":{"position":[[4,9]]}}}],["websocket",{"_index":4,"t":{"15":{"position":[[25,9]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"What isn’t Waku?","u":"/","h":"#what-isnt-waku","p":1},{"i":5,"t":"What can Waku be used for?","u":"/","h":"#what-can-waku-be-used-for","p":1},{"i":7,"t":"Case studies","u":"/","h":"#case-studies","p":1},{"i":8,"t":"Getting started","u":"/","h":"#getting-started","p":1},{"i":9,"t":"Run a Waku node","u":"/","h":"#run-a-waku-node","p":1},{"i":11,"t":"Integrate using SDKs","u":"/","h":"#integrate-using-sdks","p":1},{"i":13,"t":"Other integrations","u":"/","h":"#other-integrations","p":1},{"i":17,"t":"Enabling debug logs","u":"/guides/js-waku/debug-waku-dapp","h":"#enabling-debug-logs","p":15},{"i":19,"t":"NodeJS environments","u":"/guides/js-waku/debug-waku-dapp","h":"#nodejs-environments","p":15},{"i":21,"t":"Browser environments","u":"/guides/js-waku/debug-waku-dapp","h":"#browser-environments","p":15},{"i":23,"t":"Checking WebSocket setup","u":"/guides/js-waku/debug-waku-dapp","h":"#checking-websocket-setup","p":15},{"i":25,"t":"Try Websocat for connection","u":"/guides/js-waku/debug-waku-dapp","h":"#try-websocat-for-connection","p":15},{"i":27,"t":"Check certificate validity","u":"/guides/js-waku/debug-waku-dapp","h":"#check-certificate-validity","p":15},{"i":29,"t":"Check WebSocket port accessibility","u":"/guides/js-waku/debug-waku-dapp","h":"#check-websocket-port-accessibility","p":15},{"i":33,"t":"Installation","u":"/guides/js-waku/","h":"#installation","p":31},{"i":35,"t":"Message structure","u":"/guides/js-waku/","h":"#message-structure","p":31},{"i":37,"t":"Getting started","u":"/guides/js-waku/","h":"#getting-started","p":31},{"i":39,"t":"Get help and report issues","u":"/guides/js-waku/","h":"#get-help-and-report-issues","p":31},{"i":43,"t":"Create a light node","u":"/guides/js-waku/light-send-receive","h":"#create-a-light-node","p":41},{"i":45,"t":"Connect to remote peers","u":"/guides/js-waku/light-send-receive","h":"#connect-to-remote-peers","p":41},{"i":47,"t":"Choose a content topic","u":"/guides/js-waku/light-send-receive","h":"#choose-a-content-topic","p":41},{"i":49,"t":"Create a message structure","u":"/guides/js-waku/light-send-receive","h":"#create-a-message-structure","p":41},{"i":51,"t":"Send messages using light push","u":"/guides/js-waku/light-send-receive","h":"#send-messages-using-light-push","p":41},{"i":53,"t":"Receive messages using filter","u":"/guides/js-waku/light-send-receive","h":"#receive-messages-using-filter","p":41},{"i":57,"t":"Default bootstrap method","u":"/guides/js-waku/configure-discovery","h":"#default-bootstrap-method","p":55},{"i":59,"t":"Configure static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-static-peers","p":55},{"i":61,"t":"Configure DNS discovery","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery","p":55},{"i":63,"t":"Configure DNS discovery and static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery-and-static-peers","p":55},{"i":65,"t":"Retrieving connected peers","u":"/guides/js-waku/configure-discovery","h":"#retrieving-connected-peers","p":55},{"i":71,"t":"Usage","u":"/guides/js-waku/use-waku-create-app","h":"#usage","p":69},{"i":73,"t":"Contributing new templates","u":"/guides/js-waku/use-waku-create-app","h":"#contributing-new-templates","p":69},{"i":77,"t":"Overview","u":"/guides/js-waku/manage-filter","h":"#overview","p":75},{"i":79,"t":"Pinging filter subscriptions","u":"/guides/js-waku/manage-filter","h":"#pinging-filter-subscriptions","p":75},{"i":83,"t":"Installation","u":"/guides/js-waku/message-encryption","h":"#installation","p":81},{"i":85,"t":"Symmetric encryption","u":"/guides/js-waku/message-encryption","h":"#symmetric-encryption","p":81},{"i":87,"t":"ECIES encryption","u":"/guides/js-waku/message-encryption","h":"#ecies-encryption","p":81},{"i":89,"t":"Signing encrypted messages","u":"/guides/js-waku/message-encryption","h":"#signing-encrypted-messages","p":81},{"i":91,"t":"Storing encryption keys","u":"/guides/js-waku/message-encryption","h":"#storing-encryption-keys","p":81},{"i":95,"t":"Application-level config","u":"/guides/nwaku/config-options","h":"#application-level-config","p":93},{"i":97,"t":"Log config","u":"/guides/nwaku/config-options","h":"#log-config","p":93},{"i":99,"t":"General node config","u":"/guides/nwaku/config-options","h":"#general-node-config","p":93},{"i":101,"t":"DNS addrs config","u":"/guides/nwaku/config-options","h":"#dns-addrs-config","p":93},{"i":103,"t":"Relay config","u":"/guides/nwaku/config-options","h":"#relay-config","p":93},{"i":105,"t":"Store and message store config","u":"/guides/nwaku/config-options","h":"#store-and-message-store-config","p":93},{"i":107,"t":"Filter config","u":"/guides/nwaku/config-options","h":"#filter-config","p":93},{"i":109,"t":"Light push config","u":"/guides/nwaku/config-options","h":"#light-push-config","p":93},{"i":111,"t":"REST HTTP config","u":"/guides/nwaku/config-options","h":"#rest-http-config","p":93},{"i":113,"t":"Metrics config","u":"/guides/nwaku/config-options","h":"#metrics-config","p":93},{"i":115,"t":"DNS discovery config","u":"/guides/nwaku/config-options","h":"#dns-discovery-config","p":93},{"i":117,"t":"Discv5 config","u":"/guides/nwaku/config-options","h":"#discv5-config","p":93},{"i":119,"t":"Waku peer exchange config","u":"/guides/nwaku/config-options","h":"#waku-peer-exchange-config","p":93},{"i":121,"t":"WebSocket config","u":"/guides/nwaku/config-options","h":"#websocket-config","p":93},{"i":125,"t":"Limitations","u":"/guides/js-waku/run-waku-nodejs","h":"#limitations","p":123},{"i":126,"t":"API compatibility","u":"/guides/js-waku/run-waku-nodejs","h":"#api-compatibility","p":123},{"i":128,"t":"Protocol implementation","u":"/guides/js-waku/run-waku-nodejs","h":"#protocol-implementation","p":123},{"i":130,"t":"Codebase complexity","u":"/guides/js-waku/run-waku-nodejs","h":"#codebase-complexity","p":123},{"i":132,"t":"Browser-specific protocols","u":"/guides/js-waku/run-waku-nodejs","h":"#browser-specific-protocols","p":123},{"i":134,"t":"Recommendations","u":"/guides/js-waku/run-waku-nodejs","h":"#recommendations","p":123},{"i":136,"t":"Future developments","u":"/guides/js-waku/run-waku-nodejs","h":"#future-developments","p":123},{"i":140,"t":"Create a light node","u":"/guides/js-waku/store-retrieve-messages","h":"#create-a-light-node","p":138},{"i":142,"t":"Connect to store peers","u":"/guides/js-waku/store-retrieve-messages","h":"#connect-to-store-peers","p":138},{"i":144,"t":"Choose a content topic","u":"/guides/js-waku/store-retrieve-messages","h":"#choose-a-content-topic","p":138},{"i":146,"t":"Retrieve messages","u":"/guides/js-waku/store-retrieve-messages","h":"#retrieve-messages","p":138},{"i":148,"t":"queryWithOrderedCallback","u":"/guides/js-waku/store-retrieve-messages","h":"#querywithorderedcallback","p":138},{"i":150,"t":"queryGenerator","u":"/guides/js-waku/store-retrieve-messages","h":"#querygenerator","p":138},{"i":152,"t":"Store query options","u":"/guides/js-waku/store-retrieve-messages","h":"#store-query-options","p":138},{"i":153,"t":"pageDirection","u":"/guides/js-waku/store-retrieve-messages","h":"#pagedirection","p":138},{"i":155,"t":"cursor","u":"/guides/js-waku/store-retrieve-messages","h":"#cursor","p":138},{"i":157,"t":"timeFilter","u":"/guides/js-waku/store-retrieve-messages","h":"#timefilter","p":138},{"i":161,"t":"Prerequisites","u":"/guides/nwaku/build-source","h":"#prerequisites","p":159},{"i":163,"t":"Clone the repository","u":"/guides/nwaku/build-source","h":"#clone-the-repository","p":159},{"i":165,"t":"Build the binary","u":"/guides/nwaku/build-source","h":"#build-the-binary","p":159},{"i":167,"t":"Run the binary","u":"/guides/nwaku/build-source","h":"#run-the-binary","p":159},{"i":169,"t":"Run test suite","u":"/guides/nwaku/build-source","h":"#run-test-suite","p":159},{"i":173,"t":"Configure static peers","u":"/guides/nwaku/configure-discovery","h":"#configure-static-peers","p":171},{"i":175,"t":"Configure DNS discovery","u":"/guides/nwaku/configure-discovery","h":"#configure-dns-discovery","p":171},{"i":177,"t":"Configure Discv5","u":"/guides/nwaku/configure-discovery","h":"#configure-discv5","p":171},{"i":179,"t":"Configure peer exchange","u":"/guides/nwaku/configure-discovery","h":"#configure-peer-exchange","p":171},{"i":183,"t":"Install the dependencies","u":"/guides/js-waku/use-waku-react","h":"#install-the-dependencies","p":181},{"i":185,"t":"Initialise the Waku provider","u":"/guides/js-waku/use-waku-react","h":"#initialise-the-waku-provider","p":181},{"i":187,"t":"Build the application interface","u":"/guides/js-waku/use-waku-react","h":"#build-the-application-interface","p":181},{"i":189,"t":"Send messages using light push","u":"/guides/js-waku/use-waku-react","h":"#send-messages-using-light-push","p":181},{"i":191,"t":"Receive messages using filter","u":"/guides/js-waku/use-waku-react","h":"#receive-messages-using-filter","p":181},{"i":193,"t":"Retrieve messages using store","u":"/guides/js-waku/use-waku-react","h":"#retrieve-messages-using-store","p":181},{"i":199,"t":"Command line options","u":"/guides/nwaku/config-methods","h":"#command-line-options","p":197},{"i":201,"t":"Environment variables","u":"/guides/nwaku/config-methods","h":"#environment-variables","p":197},{"i":203,"t":"Configuration files","u":"/guides/nwaku/config-methods","h":"#configuration-files","p":197},{"i":205,"t":"Default configuration values","u":"/guides/nwaku/config-methods","h":"#default-configuration-values","p":197},{"i":209,"t":"Connect to other peers","u":"/guides/nwaku/configure-nwaku","h":"#connect-to-other-peers","p":207},{"i":211,"t":"Configure a domain name","u":"/guides/nwaku/configure-nwaku","h":"#configure-a-domain-name","p":207},{"i":213,"t":"Configure store protocol and message store","u":"/guides/nwaku/configure-nwaku","h":"#configure-store-protocol-and-message-store","p":207},{"i":215,"t":"Generate and configure a node key","u":"/guides/nwaku/configure-nwaku","h":"#generate-and-configure-a-node-key","p":207},{"i":217,"t":"Configure WebSocket transport","u":"/guides/nwaku/configure-nwaku","h":"#configure-websocket-transport","p":207},{"i":219,"t":"Configure REST API server","u":"/guides/nwaku/configure-nwaku","h":"#configure-rest-api-server","p":207},{"i":221,"t":"Configure filter protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-filter-protocol","p":207},{"i":223,"t":"Configure light push protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-light-push-protocol","p":207},{"i":225,"t":"Run nwaku behind a reverse proxy","u":"/guides/nwaku/configure-nwaku","h":"#run-nwaku-behind-a-reverse-proxy","p":207},{"i":229,"t":"Listening addresses","u":"/guides/nwaku/find-node-address","h":"#listening-addresses","p":227},{"i":231,"t":"Discoverable ENR addresses","u":"/guides/nwaku/find-node-address","h":"#discoverable-enr-addresses","p":227},{"i":233,"t":"ENR for DNS discovery","u":"/guides/nwaku/find-node-address","h":"#enr-for-dns-discovery","p":227},{"i":235,"t":"ENR for Discv5","u":"/guides/nwaku/find-node-address","h":"#enr-for-discv5","p":227},{"i":239,"t":"Prerequisites","u":"/guides/nwaku/run-docker","h":"#prerequisites","p":237},{"i":241,"t":"Get Docker image","u":"/guides/nwaku/run-docker","h":"#get-docker-image","p":237},{"i":243,"t":"Build Docker image","u":"/guides/nwaku/run-docker","h":"#build-docker-image","p":237},{"i":245,"t":"Run Docker container","u":"/guides/nwaku/run-docker","h":"#run-docker-container","p":237},{"i":249,"t":"Target Releases","u":"/guides/nwaku/upgrade-instructions","h":"#target-releases","p":247},{"i":253,"t":"Video tutorial","u":"/guides/nwaku/run-docker-compose","h":"#video-tutorial","p":251},{"i":255,"t":"Prerequisites","u":"/guides/nwaku/run-docker-compose","h":"#prerequisites","p":251},{"i":257,"t":"Clone the repository","u":"/guides/nwaku/run-docker-compose","h":"#clone-the-repository","p":251},{"i":259,"t":"Configure the setup","u":"/guides/nwaku/run-docker-compose","h":"#configure-the-setup","p":251},{"i":261,"t":"Register for RLN membership","u":"/guides/nwaku/run-docker-compose","h":"#register-for-rln-membership","p":251},{"i":263,"t":"Run the node","u":"/guides/nwaku/run-docker-compose","h":"#run-the-node","p":251},{"i":265,"t":"Monitor the node","u":"/guides/nwaku/run-docker-compose","h":"#monitor-the-node","p":251},{"i":267,"t":"Interact with the node","u":"/guides/nwaku/run-docker-compose","h":"#interact-with-the-node","p":251},{"i":271,"t":"Get the node binary","u":"/guides/nwaku/run-node","h":"#get-the-node-binary","p":269},{"i":273,"t":"Run the node","u":"/guides/nwaku/run-node","h":"#run-the-node","p":269},{"i":275,"t":"Bootstrap the node","u":"/guides/nwaku/run-node","h":"#bootstrap-the-node","p":269},{"i":277,"t":"Interact with the node","u":"/guides/nwaku/run-node","h":"#interact-with-the-node","p":269},{"i":279,"t":"Check the node health status","u":"/guides/nwaku/run-node","h":"#check-the-node-health-status","p":269},{"i":283,"t":"Naming format","u":"/learn/concepts/content-topics","h":"#naming-format","p":281},{"i":285,"t":"Naming considerations","u":"/learn/concepts/content-topics","h":"#naming-considerations","p":281},{"i":287,"t":"Protocols disclose content topics to peers","u":"/learn/concepts/content-topics","h":"#protocols-disclose-content-topics-to-peers","p":281},{"i":289,"t":"Increasing k-anonymity preserves user anonymity","u":"/learn/concepts/content-topics","h":"#increasing-k-anonymity-preserves-user-anonymity","p":281},{"i":291,"t":"Creating buckets help in distributing traffic","u":"/learn/concepts/content-topics","h":"#creating-buckets-help-in-distributing-traffic","p":281},{"i":295,"t":"Overview","u":"/learn/concepts/discv5","h":"#overview","p":293},{"i":299,"t":"Discovery domain","u":"/learn/concepts/network-domains","h":"#discovery-domain","p":297},{"i":301,"t":"Gossip domain","u":"/learn/concepts/network-domains","h":"#gossip-domain","p":297},{"i":303,"t":"Request/response domain","u":"/learn/concepts/network-domains","h":"#requestresponse-domain","p":297},{"i":305,"t":"Overview of protocol interaction","u":"/learn/concepts/network-domains","h":"#overview-of-protocol-interaction","p":297},{"i":309,"t":"Overview","u":"/learn/concepts/peer-exchange","h":"#overview","p":307},{"i":315,"t":"Relay","u":"/learn/concepts/protocols","h":"#relay","p":313},{"i":317,"t":"RLN relay","u":"/learn/concepts/protocols","h":"#rln-relay","p":313},{"i":319,"t":"Filter","u":"/learn/concepts/protocols","h":"#filter","p":313},{"i":321,"t":"Store","u":"/learn/concepts/protocols","h":"#store","p":313},{"i":323,"t":"Light push","u":"/learn/concepts/protocols","h":"#light-push","p":313},{"i":325,"t":"Waku message","u":"/learn/concepts/protocols","h":"#waku-message","p":313},{"i":329,"t":"Overview","u":"/learn/concepts/static-peers","h":"#overview","p":327},{"i":333,"t":"Overview","u":"/learn/concepts/dns-discovery","h":"#overview","p":331},{"i":337,"t":"Economic spam resistance","u":"/learn/research","h":"#economic-spam-resistance","p":335},{"i":339,"t":"Prevention of denial of service (DoS) and node incentivisation","u":"/learn/research","h":"#prevention-of-denial-of-service-dos-and-node-incentivisation","p":335},{"i":347,"t":"Bootstrapping","u":"/learn/glossary","h":"#bootstrapping","p":345},{"i":349,"t":"Content topic","u":"/learn/glossary","h":"#content-topic","p":345},{"i":351,"t":"Dappnode","u":"/learn/glossary","h":"#dappnode","p":345},{"i":353,"t":"Discv5","u":"/learn/glossary","h":"#discv5","p":345},{"i":355,"t":"DNS discovery","u":"/learn/glossary","h":"#dns-discovery","p":345},{"i":357,"t":"ENR","u":"/learn/glossary","h":"#enr","p":345},{"i":359,"t":"Filter","u":"/learn/glossary","h":"#filter","p":345},{"i":361,"t":"GossipSub","u":"/learn/glossary","h":"#gossipsub","p":345},{"i":363,"t":"Libp2p","u":"/learn/glossary","h":"#libp2p","p":345},{"i":365,"t":"Light node","u":"/learn/glossary","h":"#light-node","p":345},{"i":367,"t":"Light push","u":"/learn/glossary","h":"#light-push","p":345},{"i":369,"t":"Mostly offline","u":"/learn/glossary","h":"#mostly-offline","p":345},{"i":371,"t":"Node","u":"/learn/glossary","h":"#node","p":345},{"i":373,"t":"Node key","u":"/learn/glossary","h":"#node-key","p":345},{"i":375,"t":"Out-of-band","u":"/learn/glossary","h":"#out-of-band","p":345},{"i":377,"t":"Payload","u":"/learn/glossary","h":"#payload","p":345},{"i":379,"t":"Peer","u":"/learn/glossary","h":"#peer","p":345},{"i":381,"t":"Peer discovery","u":"/learn/glossary","h":"#peer-discovery","p":345},{"i":383,"t":"Peer exchange","u":"/learn/glossary","h":"#peer-exchange","p":345},{"i":385,"t":"Peer ID","u":"/learn/glossary","h":"#peer-id","p":345},{"i":387,"t":"Protocol","u":"/learn/glossary","h":"#protocol","p":345},{"i":389,"t":"Pub/Sub","u":"/learn/glossary","h":"#pubsub","p":345},{"i":391,"t":"Pub/Sub topic","u":"/learn/glossary","h":"#pubsub-topic","p":345},{"i":393,"t":"Rate limit nullifiers","u":"/learn/glossary","h":"#rate-limit-nullifiers","p":345},{"i":395,"t":"Relay","u":"/learn/glossary","h":"#relay","p":345},{"i":397,"t":"Resource-limited","u":"/learn/glossary","h":"#resource-limited","p":345},{"i":399,"t":"RLN relay","u":"/learn/glossary","h":"#rln-relay","p":345},{"i":401,"t":"SDK","u":"/learn/glossary","h":"#sdk","p":345},{"i":403,"t":"Store","u":"/learn/glossary","h":"#store","p":345},{"i":405,"t":"Transport","u":"/learn/glossary","h":"#transport","p":345},{"i":407,"t":"Waku","u":"/learn/glossary","h":"#waku","p":345},{"i":409,"t":"Waku message","u":"/learn/glossary","h":"#waku-message","p":345},{"i":411,"t":"Waku message payload encryption","u":"/learn/glossary","h":"#waku-message-payload-encryption","p":345},{"i":413,"t":"Waku network","u":"/learn/glossary","h":"#waku-network","p":345},{"i":415,"t":"Waku noise","u":"/learn/glossary","h":"#waku-noise","p":345},{"i":419,"t":"Pseudonymity","u":"/learn/security-features","h":"#pseudonymity","p":417},{"i":421,"t":"Anonymity/unlinkability","u":"/learn/security-features","h":"#anonymityunlinkability","p":417},{"i":423,"t":"Spam protection","u":"/learn/security-features","h":"#spam-protection","p":417},{"i":425,"t":"Data confidentiality, integrity, and authenticity","u":"/learn/security-features","h":"#data-confidentiality-integrity-and-authenticity","p":417},{"i":427,"t":"Security considerations","u":"/learn/security-features","h":"#security-considerations","p":417},{"i":431,"t":"Waku as a service network","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-service-network","p":429},{"i":433,"t":"Waku as a turnkey solution","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-turnkey-solution","p":429},{"i":435,"t":"Economic spam protection","u":"/learn/waku-vs-libp2p","h":"#economic-spam-protection","p":429},{"i":439,"t":"Why join the Waku network?","u":"/learn/waku-network","h":"#why-join-the-waku-network","p":437},{"i":441,"t":"Prerequisites","u":"/learn/waku-network","h":"#prerequisites","p":437},{"i":443,"t":"Running a Waku network node","u":"/learn/waku-network","h":"#running-a-waku-network-node","p":437},{"i":449,"t":"Table of Contents","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#table-of-contents","p":447},{"i":451,"t":"Network Configuration","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#network-configuration","p":447},{"i":453,"t":"Default Network Configuration","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#default-network-configuration","p":447},{"i":455,"t":"Static Sharding","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#static-sharding","p":447},{"i":457,"t":"Auto Sharding","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#auto-sharding","p":447},{"i":459,"t":"Pubsub Topic Configuration","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#pubsub-topic-configuration","p":447},{"i":461,"t":"Removed APIs","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#removed-apis","p":447},{"i":463,"t":"Type Changes","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#type-changes","p":447},{"i":465,"t":"Internal/Private Utility Function Changes","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#internalprivate-utility-function-changes","p":447},{"i":469,"t":"Problem","u":"/research/research-and-studies/capped-bandwidth","h":"#problem","p":467},{"i":471,"t":"Current approach","u":"/research/research-and-studies/capped-bandwidth","h":"#current-approach","p":467},{"i":473,"t":"Solution","u":"/research/research-and-studies/capped-bandwidth","h":"#solution","p":467},{"i":475,"t":"TLDR","u":"/research/research-and-studies/capped-bandwidth","h":"#tldr","p":467},{"i":479,"t":"1) Who we are","u":"/privacy-policy","h":"#1-who-we-are","p":477},{"i":481,"t":"2) We limit the collection and processing of personal data from your use of the Website","u":"/privacy-policy","h":"#2-we-limit-the-collection-and-processing-of-personal-data-from-your-use-of-the-website","p":477},{"i":483,"t":"3) Third party processing of personal data","u":"/privacy-policy","h":"#3-third-party-processing-of-personal-data","p":477},{"i":485,"t":"4) Security measures we take in respect of the Website","u":"/privacy-policy","h":"#4-security-measures-we-take-in-respect-of-the-website","p":477},{"i":487,"t":"5) Exporting data outside the European Union and Switzerland","u":"/privacy-policy","h":"#5-exporting-data-outside-the-european-union-and-switzerland","p":477},{"i":489,"t":"6) Your choices and rights","u":"/privacy-policy","h":"#6-your-choices-and-rights","p":477},{"i":491,"t":"7) Third party links","u":"/privacy-policy","h":"#7-third-party-links","p":477},{"i":493,"t":"8) This Privacy Policy might change","u":"/privacy-policy","h":"#8-this-privacy-policy-might-change","p":477},{"i":495,"t":"9) Contact information","u":"/privacy-policy","h":"#9-contact-information","p":477},{"i":499,"t":"Incentivisation in decentralised networks","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":501,"t":"Incentivisation tools","u":"/research/research-and-studies/incentivisation","h":"#incentivisation-tools","p":497},{"i":503,"t":"Prior work","u":"/research/research-and-studies/incentivisation","h":"#prior-work","p":497},{"i":505,"t":"Early P2P file-sharing","u":"/research/research-and-studies/incentivisation","h":"#early-p2p-file-sharing","p":497},{"i":507,"t":"Blockchains","u":"/research/research-and-studies/incentivisation","h":"#blockchains","p":497},{"i":509,"t":"Decentralised storage","u":"/research/research-and-studies/incentivisation","h":"#decentralised-storage","p":497},{"i":511,"t":"Waku background","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":513,"t":"Waku i13n challenges","u":"/research/research-and-studies/incentivisation","h":"#waku-i13n-challenges","p":497},{"i":515,"t":"Waku Store","u":"/research/research-and-studies/incentivisation","h":"#waku-store","p":497},{"i":517,"t":"Waku Store incentivisation","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":519,"t":"Pricing","u":"/research/research-and-studies/incentivisation","h":"#pricing","p":497},{"i":521,"t":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work","p":497},{"i":523,"t":"Payment","u":"/research/research-and-studies/incentivisation","h":"#payment","p":497},{"i":525,"t":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-1","p":497},{"i":527,"t":"Reputation","u":"/research/research-and-studies/incentivisation","h":"#reputation","p":497},{"i":529,"t":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-2","p":497},{"i":531,"t":"Results cross-checking","u":"/research/research-and-studies/incentivisation","h":"#results-cross-checking","p":497},{"i":533,"t":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-3","p":497},{"i":535,"t":"Evaluation","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":537,"t":"Longer-term future work","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":541,"t":"Introduction","u":"/research/research-and-studies/maximum-bandwidth","h":"#introduction","p":539},{"i":543,"t":"Bandwidth availability and usage","u":"/research/research-and-studies/maximum-bandwidth","h":"#bandwidth-availability-and-usage","p":539},{"i":545,"t":"Selecting a maximum bandwidth","u":"/research/research-and-studies/maximum-bandwidth","h":"#selecting-a-maximum-bandwidth","p":539},{"i":548,"t":"Introduction","u":"/research/benchmarks/postgres-adoption","h":"#introduction","p":547},{"i":550,"t":"How to connect the nwaku to Postgres","u":"/research/benchmarks/postgres-adoption","h":"#how-to-connect-the-nwaku-to-postgres","p":547},{"i":552,"t":"Examples of nwaku using Postgres","u":"/research/benchmarks/postgres-adoption","h":"#examples-of-nwaku-using-postgres","p":547},{"i":554,"t":"Stress tests","u":"/research/benchmarks/postgres-adoption","h":"#stress-tests","p":547},{"i":556,"t":"Insert test results","u":"/research/benchmarks/postgres-adoption","h":"#insert-test-results","p":547},{"i":558,"t":"Query test results (jmeter)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-jmeter","p":547},{"i":560,"t":"Query test results (only Store protocol)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-only-store-protocol","p":547},{"i":562,"t":"Multiple nodes & one single database","u":"/research/benchmarks/postgres-adoption","h":"#multiple-nodes--one-single-database","p":547},{"i":566,"t":"Introduction","u":"/research/research-and-studies/message-propagation","h":"#introduction","p":564},{"i":568,"t":"Theory","u":"/research/research-and-studies/message-propagation","h":"#theory","p":564},{"i":570,"t":"Simulations","u":"/research/research-and-studies/message-propagation","h":"#simulations","p":564},{"i":572,"t":"Results","u":"/research/research-and-studies/message-propagation","h":"#results","p":564},{"i":575,"t":"Introduction","u":"/research/research-and-studies/rln-key-benchmarks","h":"#introduction","p":574},{"i":577,"t":"TLDR:","u":"/research/research-and-studies/rln-key-benchmarks","h":"#tldr","p":574},{"i":579,"t":"Proof generation times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-generation-times","p":574},{"i":581,"t":"Proof verification times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-verification-times","p":574},{"i":583,"t":"Spam protection","u":"/research/research-and-studies/rln-key-benchmarks","h":"#spam-protection","p":574},{"i":585,"t":"RLN tree sync","u":"/research/research-and-studies/rln-key-benchmarks","h":"#rln-tree-sync","p":574},{"i":587,"t":"Performance relay vs. rln-relay","u":"/research/research-and-studies/rln-key-benchmarks","h":"#performance-relay-vs-rln-relay","p":574},{"i":591,"t":"1) Who we are","u":"/terms","h":"#1-who-we-are","p":589},{"i":593,"t":"2) Disclaimers","u":"/terms","h":"#2-disclaimers","p":589},{"i":595,"t":"3) Forward looking statements","u":"/terms","h":"#3-forward-looking-statements","p":589},{"i":597,"t":"4) Intellectual property rights","u":"/terms","h":"#4-intellectual-property-rights","p":589},{"i":599,"t":"5) Third-party website links","u":"/terms","h":"#5-third-party-website-links","p":589},{"i":601,"t":"6) Limitation of liability","u":"/terms","h":"#6-limitation-of-liability","p":589},{"i":603,"t":"7) Indemnity","u":"/terms","h":"#7-indemnity","p":589},{"i":605,"t":"8) Modifications","u":"/terms","h":"#8-modifications","p":589},{"i":607,"t":"9) Governing law","u":"/terms","h":"#9-governing-law","p":589},{"i":609,"t":"10) Disputes","u":"/terms","h":"#10-disputes","p":589},{"i":611,"t":"11) About these Website Terms of Use","u":"/terms","h":"#11-about-these-website-terms-of-use","p":589},{"i":615,"t":"1. Initial discussion","u":"/rules-of-engagement","h":"#1-initial-discussion","p":613},{"i":617,"t":"2. Solution design","u":"/rules-of-engagement","h":"#2-solution-design","p":613},{"i":619,"t":"3. Commitment","u":"/rules-of-engagement","h":"#3-commitment","p":613},{"i":621,"t":"4. Building","u":"/rules-of-engagement","h":"#4-building","p":613},{"i":623,"t":"5. Ongoing relation","u":"/rules-of-engagement","h":"#5-ongoing-relation","p":613}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,5.604,1,2.83]],["t/5",[1,2.83,2,3.499]],["t/7",[3,5.604,4,5.604]],["t/8",[5,5.051,6,5.051]],["t/9",[1,2.397,7,3.158,8,2.397]],["t/11",[2,2.964,9,3.971,10,4.279]],["t/13",[9,5.72]],["t/17",[11,4.747,12,4.747,13,4.279]],["t/19",[14,5.604,15,4.687]],["t/21",[15,4.687,16,5.051]],["t/23",[17,3.557,18,3.741,19,4.279]],["t/25",[20,4.747,21,4.747,22,3.404]],["t/27",[17,3.557,23,4.747,24,4.747]],["t/29",[17,3.085,18,3.244,25,4.117,26,4.117]],["t/33",[27,5.72]],["t/35",[28,3.15,29,5.051]],["t/37",[5,5.051,6,5.051]],["t/39",[30,4.279,31,4.747,32,4.747]],["t/43",[8,2.397,33,3.741,34,3.056]],["t/45",[22,3.404,35,4.747,36,2.669]],["t/47",[37,4.279,38,3.557,39,3.404]],["t/49",[28,2.669,29,4.279,33,3.741]],["t/51",[2,2.27,28,2.044,34,2.34,40,3.277,41,2.607]],["t/53",[2,2.571,28,2.315,42,3.712,43,2.839]],["t/57",[44,3.971,45,3.971,46,4.747]],["t/59",[36,2.669,47,2.351,48,3.741]],["t/61",[47,2.351,49,3.273,50,3.158]],["t/63",[36,2.044,47,1.801,48,2.865,49,2.506,50,2.418]],["t/65",[22,3.404,36,2.669,51,3.971]],["t/71",[52,6.164]],["t/73",[53,4.747,54,4.747,55,4.747]],["t/77",[56,4.903]],["t/79",[43,3.273,57,4.747,58,4.747]],["t/83",[27,5.72]],["t/85",[59,5.604,60,4.199]],["t/87",[60,4.199,61,5.604]],["t/89",[28,2.669,60,3.557,62,4.747]],["t/91",[60,3.557,63,2.881,64,3.971]],["t/95",[65,4.279,66,4.747,67,2.669]],["t/97",[13,5.051,67,3.15]],["t/99",[8,2.397,67,2.669,68,3.971]],["t/101",[49,3.273,67,2.669,69,4.747]],["t/103",[67,3.15,70,4.018]],["t/105",[28,2.315,63,3.672,67,2.315]],["t/107",[43,3.863,67,3.15]],["t/109",[34,3.056,41,3.404,67,2.669]],["t/111",[67,2.669,71,4.279,72,4.747]],["t/113",[67,3.15,73,5.604]],["t/115",[49,3.273,50,3.158,67,2.669]],["t/117",[67,3.15,74,4.416]],["t/119",[1,2.079,36,2.315,67,2.315,75,3.444]],["t/121",[18,4.416,67,3.15]],["t/125",[76,5.123]],["t/126",[77,4.687,78,5.604]],["t/128",[79,3.608,80,5.604]],["t/130",[81,5.604,82,5.604]],["t/132",[16,4.279,79,3.056,83,4.747]],["t/134",[84,6.838]],["t/136",[85,4.018,86,5.604]],["t/140",[8,2.397,33,3.741,34,3.056]],["t/142",[22,3.404,36,2.669,63,2.881]],["t/144",[37,4.279,38,3.557,39,3.404]],["t/146",[28,3.15,51,4.687]],["t/148",[87,6.838]],["t/150",[88,6.838]],["t/152",[63,2.881,89,3.971,90,4.279]],["t/153",[91,6.838]],["t/155",[92,6.838]],["t/157",[93,6.838]],["t/161",[94,5.388]],["t/163",[95,5.051,96,5.051]],["t/165",[97,4.416,98,4.687]],["t/167",[7,3.728,98,4.687]],["t/169",[7,3.158,99,3.557,100,4.747]],["t/173",[36,2.669,47,2.351,48,3.741]],["t/175",[47,2.351,49,3.273,50,3.158]],["t/177",[47,2.776,74,4.416]],["t/179",[36,2.669,47,2.351,75,3.971]],["t/183",[27,4.687,101,5.604]],["t/185",[1,2.397,102,4.747,103,4.747]],["t/187",[65,4.279,97,3.741,104,4.747]],["t/189",[2,2.27,28,2.044,34,2.34,40,3.277,41,2.607]],["t/191",[2,2.571,28,2.315,42,3.712,43,2.839]],["t/193",[2,2.571,28,2.315,51,3.444,63,2.499]],["t/199",[90,4.279,105,4.747,106,4.747]],["t/201",[15,4.687,107,5.604]],["t/203",[47,2.776,108,5.051]],["t/205",[44,3.971,47,2.351,109,4.747]],["t/209",[22,4.018,36,3.15]],["t/211",[47,2.351,110,3.741,111,3.971]],["t/213",[28,2.044,47,1.801,63,3.346,79,2.34]],["t/215",[8,2.079,47,2.04,64,3.444,68,3.444]],["t/217",[18,3.741,47,2.351,112,4.279]],["t/219",[47,2.04,71,3.712,77,3.444,113,4.117]],["t/221",[43,3.273,47,2.351,79,3.056]],["t/223",[34,2.651,41,2.952,47,2.04,79,2.651]],["t/225",[7,2.418,114,3.041,115,3.635,116,3.635,117,3.635]],["t/229",[118,5.604,119,5.051]],["t/231",[119,4.279,120,4.747,121,3.741]],["t/233",[49,3.273,50,3.158,121,3.741]],["t/235",[74,4.416,121,4.416]],["t/239",[94,5.388]],["t/241",[122,4.687,123,5.051]],["t/243",[97,3.741,122,3.971,123,4.279]],["t/245",[7,3.158,122,3.971,124,4.747]],["t/249",[125,5.604,126,5.604]],["t/253",[127,5.604,128,5.604]],["t/255",[94,5.388]],["t/257",[95,5.051,96,5.051]],["t/259",[19,5.051,47,2.776]],["t/261",[129,4.747,130,3.557,131,4.747]],["t/263",[7,3.728,8,2.83]],["t/265",[8,2.83,132,5.604]],["t/267",[8,2.83,133,4.687]],["t/271",[8,2.83,98,4.687]],["t/273",[7,3.728,8,2.83]],["t/275",[8,2.83,45,4.687]],["t/277",[8,2.83,133,4.687]],["t/279",[8,2.079,17,3.085,134,4.117,135,4.117]],["t/283",[111,4.687,136,5.604]],["t/285",[111,4.687,137,5.051]],["t/287",[36,2.044,38,2.724,39,2.607,79,2.34,138,3.635]],["t/289",[139,3.254,140,3.254,141,5.063,142,3.254,143,3.254]],["t/291",[30,3.277,33,2.865,144,3.635,145,3.635,146,3.635]],["t/295",[56,4.903]],["t/299",[50,3.728,110,4.416]],["t/301",[110,4.416,147,5.604]],["t/303",[110,4.416,148,5.604]],["t/305",[56,3.404,79,3.056,133,3.971]],["t/309",[56,4.903]],["t/315",[70,4.903]],["t/317",[70,4.018,130,4.199]],["t/319",[43,4.714]],["t/321",[63,4.15]],["t/323",[34,3.608,41,4.018]],["t/325",[1,2.83,28,3.15]],["t/329",[56,4.903]],["t/333",[56,4.903]],["t/337",[149,4.279,150,3.741,151,4.747]],["t/339",[8,1.643,152,3.254,153,3.254,154,2.933,155,3.254,156,2.564]],["t/347",[45,5.72]],["t/349",[38,4.199,39,4.018]],["t/351",[157,6.838]],["t/353",[74,5.388]],["t/355",[49,3.863,50,3.728]],["t/357",[121,5.388]],["t/359",[43,4.714]],["t/361",[158,6.838]],["t/363",[159,6.838]],["t/365",[8,2.83,34,3.608]],["t/367",[34,3.608,41,4.018]],["t/369",[160,5.604,161,5.604]],["t/371",[8,3.453]],["t/373",[8,2.83,64,4.687]],["t/375",[162,5.604,163,5.604]],["t/377",[164,6.164]],["t/379",[36,3.844]],["t/381",[36,3.15,50,3.728]],["t/383",[36,3.15,75,4.687]],["t/385",[36,3.15,165,5.604]],["t/387",[79,4.402]],["t/389",[166,6.164]],["t/391",[39,4.018,166,5.051]],["t/393",[76,3.557,167,4.747,168,4.747]],["t/395",[70,4.903]],["t/397",[76,4.199,169,5.604]],["t/399",[70,4.018,130,4.199]],["t/401",[10,6.164]],["t/403",[63,4.15]],["t/405",[112,6.164]],["t/407",[1,3.453]],["t/409",[1,2.83,28,3.15]],["t/411",[1,2.079,28,2.315,60,3.085,164,3.712]],["t/413",[1,2.83,170,3.863]],["t/415",[1,2.83,171,5.604]],["t/419",[172,6.838]],["t/421",[173,6.838]],["t/423",[150,4.416,174,4.687]],["t/425",[9,3.444,175,3.244,176,4.117,177,4.117]],["t/427",[137,5.051,178,5.051]],["t/431",[1,2.397,154,4.279,170,3.273]],["t/433",[1,2.397,179,4.747,180,3.971]],["t/435",[149,4.279,150,3.741,174,3.971]],["t/439",[1,2.397,170,3.273,181,4.747]],["t/441",[94,5.388]],["t/443",[1,2.079,7,2.739,8,2.079,170,2.839]],["t/449",[38,4.199,182,5.604]],["t/451",[47,2.776,170,3.863]],["t/453",[44,3.971,47,2.351,170,3.273]],["t/455",[48,4.416,183,5.051]],["t/457",[183,5.051,184,5.604]],["t/459",[39,3.404,47,2.351,185,4.747]],["t/461",[77,4.687,186,5.604]],["t/463",[187,5.604,188,4.687]],["t/465",[188,3.444,189,4.117,190,4.117,191,4.117]],["t/469",[192,6.838]],["t/471",[193,5.604,194,5.604]],["t/473",[180,5.72]],["t/475",[195,6.164]],["t/479",[196,5.72]],["t/481",[2,1.68,76,2.016,175,2.12,197,2.25,198,2.69,199,2.425,200,2.425,201,2.12]],["t/483",[175,2.564,199,2.933,200,2.933,202,2.722,203,2.722,204,2.722]],["t/485",[178,2.933,201,2.564,205,2.722,206,3.254,207,3.254,208,3.254]],["t/487",[175,2.321,209,2.464,210,2.946,211,2.946,212,2.946,213,2.946,214,2.946]],["t/489",[215,4.279,216,4.747,217,4.279]],["t/491",[203,3.444,204,3.444,218,3.712,219,3.712]],["t/493",[188,3.444,220,3.712,221,4.117,222,4.117]],["t/495",[223,4.279,224,4.747,225,4.747]],["t/499",[156,3.741,170,3.273,226,4.279]],["t/501",[156,4.416,227,5.604]],["t/503",[228,5.604,229,4.018]],["t/505",[108,3.712,230,4.117,231,4.117,232,4.117]],["t/507",[233,6.838]],["t/509",[226,5.051,234,5.604]],["t/511",[1,2.83,235,5.604]],["t/513",[1,2.397,236,4.747,237,4.747]],["t/515",[1,2.83,63,3.401]],["t/517",[1,2.397,63,2.881,156,3.741]],["t/519",[238,6.838]],["t/521",[85,4.018,229,4.018]],["t/523",[239,6.838]],["t/525",[85,4.018,229,4.018]],["t/527",[240,6.838]],["t/529",[85,4.018,229,4.018]],["t/531",[17,3.557,241,3.557,242,4.747]],["t/533",[85,4.018,229,4.018]],["t/535",[243,6.838]],["t/537",[85,2.952,229,2.952,244,4.117,245,3.712]],["t/541",[246,5.388]],["t/543",[52,4.279,247,4.279,248,4.747]],["t/545",[247,4.279,249,4.747,250,4.747]],["t/548",[246,5.388]],["t/550",[22,3.404,114,3.971,251,4.279]],["t/552",[2,2.571,114,3.444,251,3.712,252,4.117]],["t/554",[99,4.199,253,5.604]],["t/556",[99,3.557,241,3.557,254,4.747]],["t/558",[89,3.444,99,3.085,241,3.085,255,4.117]],["t/560",[63,2.206,79,2.34,89,3.041,99,2.724,241,2.724]],["t/562",[8,1.643,256,3.254,257,3.254,258,3.254,259,3.254,260,3.254]],["t/566",[246,5.388]],["t/568",[261,6.838]],["t/570",[262,6.838]],["t/572",[241,5.123]],["t/575",[246,5.388]],["t/577",[195,6.164]],["t/579",[68,3.971,263,4.279,264,4.279]],["t/581",[263,4.279,264,4.279,265,4.747]],["t/583",[150,4.416,174,4.687]],["t/585",[130,3.557,266,4.747,267,4.747]],["t/587",[70,3.953,130,2.724,268,3.635,269,3.635]],["t/591",[196,5.72]],["t/593",[197,4.687,270,5.604]],["t/595",[202,3.444,271,4.117,272,4.117,273,4.117]],["t/597",[205,3.444,217,3.712,274,4.117,275,4.117]],["t/599",[201,2.865,203,3.041,204,3.041,209,3.041,219,3.277]],["t/601",[76,3.557,215,4.279,276,4.747]],["t/603",[218,5.051,277,5.604]],["t/605",[220,5.051,278,5.604]],["t/607",[223,4.279,279,4.747,280,4.747]],["t/609",[281,5.604,282,5.604]],["t/611",[2,2.571,201,3.244,245,3.712,283,4.117]],["t/615",[196,3.971,284,4.747,285,4.747]],["t/617",[180,3.971,197,3.971,286,4.747]],["t/619",[202,4.687,287,5.604]],["t/621",[97,4.416,205,4.687]],["t/623",[209,3.971,288,4.747,289,4.747]]],"invertedIndex":[["",{"_index":257,"t":{"562":{"position":[[15,1]]}}}],["1",{"_index":196,"t":{"479":{"position":[[0,2]]},"591":{"position":[[0,2]]},"615":{"position":[[0,2]]}}}],["10",{"_index":281,"t":{"609":{"position":[[0,3]]}}}],["11",{"_index":283,"t":{"611":{"position":[[0,3]]}}}],["2",{"_index":197,"t":{"481":{"position":[[0,2]]},"593":{"position":[[0,2]]},"617":{"position":[[0,2]]}}}],["3",{"_index":202,"t":{"483":{"position":[[0,2]]},"595":{"position":[[0,2]]},"619":{"position":[[0,2]]}}}],["4",{"_index":205,"t":{"485":{"position":[[0,2]]},"597":{"position":[[0,2]]},"621":{"position":[[0,2]]}}}],["5",{"_index":209,"t":{"487":{"position":[[0,2]]},"599":{"position":[[0,2]]},"623":{"position":[[0,2]]}}}],["6",{"_index":215,"t":{"489":{"position":[[0,2]]},"601":{"position":[[0,2]]}}}],["7",{"_index":218,"t":{"491":{"position":[[0,2]]},"603":{"position":[[0,2]]}}}],["8",{"_index":220,"t":{"493":{"position":[[0,2]]},"605":{"position":[[0,2]]}}}],["9",{"_index":223,"t":{"495":{"position":[[0,2]]},"607":{"position":[[0,2]]}}}],["access",{"_index":26,"t":{"29":{"position":[[21,13]]}}}],["addr",{"_index":69,"t":{"101":{"position":[[4,5]]}}}],["address",{"_index":119,"t":{"229":{"position":[[10,9]]},"231":{"position":[[17,9]]}}}],["anonym",{"_index":141,"t":{"289":{"position":[[13,9],[38,9]]}}}],["anonymity/unlink",{"_index":173,"t":{"421":{"position":[[0,23]]}}}],["api",{"_index":77,"t":{"126":{"position":[[0,3]]},"219":{"position":[[15,3]]},"461":{"position":[[8,4]]}}}],["applic",{"_index":65,"t":{"95":{"position":[[0,11]]},"187":{"position":[[10,11]]}}}],["approach",{"_index":194,"t":{"471":{"position":[[8,8]]}}}],["authent",{"_index":177,"t":{"425":{"position":[[37,12]]}}}],["auto",{"_index":184,"t":{"457":{"position":[[0,4]]}}}],["avail",{"_index":248,"t":{"543":{"position":[[10,12]]}}}],["background",{"_index":235,"t":{"511":{"position":[[5,10]]}}}],["band",{"_index":163,"t":{"375":{"position":[[7,4]]}}}],["bandwidth",{"_index":247,"t":{"543":{"position":[[0,9]]},"545":{"position":[[20,9]]}}}],["behind",{"_index":115,"t":{"225":{"position":[[10,6]]}}}],["binari",{"_index":98,"t":{"165":{"position":[[10,6]]},"167":{"position":[[8,6]]},"271":{"position":[[13,6]]}}}],["blockchain",{"_index":233,"t":{"507":{"position":[[0,11]]}}}],["bootstrap",{"_index":45,"t":{"57":{"position":[[8,9]]},"275":{"position":[[0,9]]},"347":{"position":[[0,13]]}}}],["browser",{"_index":16,"t":{"21":{"position":[[0,7]]},"132":{"position":[[0,7]]}}}],["bucket",{"_index":144,"t":{"291":{"position":[[9,7]]}}}],["build",{"_index":97,"t":{"165":{"position":[[0,5]]},"187":{"position":[[0,5]]},"243":{"position":[[0,5]]},"621":{"position":[[3,8]]}}}],["case",{"_index":3,"t":{"7":{"position":[[0,4]]}}}],["certif",{"_index":23,"t":{"27":{"position":[[6,11]]}}}],["challeng",{"_index":237,"t":{"513":{"position":[[10,10]]}}}],["chang",{"_index":188,"t":{"463":{"position":[[5,7]]},"465":{"position":[[34,7]]},"493":{"position":[[29,6]]}}}],["check",{"_index":17,"t":{"23":{"position":[[0,8]]},"27":{"position":[[0,5]]},"29":{"position":[[0,5]]},"279":{"position":[[0,5]]},"531":{"position":[[14,8]]}}}],["choic",{"_index":216,"t":{"489":{"position":[[8,7]]}}}],["choos",{"_index":37,"t":{"47":{"position":[[0,6]]},"144":{"position":[[0,6]]}}}],["clone",{"_index":95,"t":{"163":{"position":[[0,5]]},"257":{"position":[[0,5]]}}}],["codebas",{"_index":81,"t":{"130":{"position":[[0,8]]}}}],["collect",{"_index":198,"t":{"481":{"position":[[16,10]]}}}],["command",{"_index":105,"t":{"199":{"position":[[0,7]]}}}],["commit",{"_index":287,"t":{"619":{"position":[[3,10]]}}}],["compat",{"_index":78,"t":{"126":{"position":[[4,13]]}}}],["complex",{"_index":82,"t":{"130":{"position":[[9,10]]}}}],["confidenti",{"_index":176,"t":{"425":{"position":[[5,16]]}}}],["config",{"_index":67,"t":{"95":{"position":[[18,6]]},"97":{"position":[[4,6]]},"99":{"position":[[13,6]]},"101":{"position":[[10,6]]},"103":{"position":[[6,6]]},"105":{"position":[[24,6]]},"107":{"position":[[7,6]]},"109":{"position":[[11,6]]},"111":{"position":[[10,6]]},"113":{"position":[[8,6]]},"115":{"position":[[14,6]]},"117":{"position":[[7,6]]},"119":{"position":[[19,6]]},"121":{"position":[[10,6]]}}}],["configur",{"_index":47,"t":{"59":{"position":[[0,9]]},"61":{"position":[[0,9]]},"63":{"position":[[0,9]]},"173":{"position":[[0,9]]},"175":{"position":[[0,9]]},"177":{"position":[[0,9]]},"179":{"position":[[0,9]]},"203":{"position":[[0,13]]},"205":{"position":[[8,13]]},"211":{"position":[[0,9]]},"213":{"position":[[0,9]]},"215":{"position":[[13,9]]},"217":{"position":[[0,9]]},"219":{"position":[[0,9]]},"221":{"position":[[0,9]]},"223":{"position":[[0,9]]},"259":{"position":[[0,9]]},"451":{"position":[[8,13]]},"453":{"position":[[16,13]]},"459":{"position":[[13,13]]}}}],["connect",{"_index":22,"t":{"25":{"position":[[17,10]]},"45":{"position":[[0,7]]},"65":{"position":[[11,9]]},"142":{"position":[[0,7]]},"209":{"position":[[0,7]]},"550":{"position":[[7,7]]}}}],["consider",{"_index":137,"t":{"285":{"position":[[7,14]]},"427":{"position":[[9,14]]}}}],["contact",{"_index":224,"t":{"495":{"position":[[3,7]]}}}],["contain",{"_index":124,"t":{"245":{"position":[[11,9]]}}}],["content",{"_index":38,"t":{"47":{"position":[[9,7]]},"144":{"position":[[9,7]]},"287":{"position":[[19,7]]},"349":{"position":[[0,7]]},"449":{"position":[[9,8]]}}}],["contribut",{"_index":53,"t":{"73":{"position":[[0,12]]}}}],["creat",{"_index":33,"t":{"43":{"position":[[0,6]]},"49":{"position":[[0,6]]},"140":{"position":[[0,6]]},"291":{"position":[[0,8]]}}}],["cross",{"_index":242,"t":{"531":{"position":[[8,5]]}}}],["current",{"_index":193,"t":{"471":{"position":[[0,7]]}}}],["cursor",{"_index":92,"t":{"155":{"position":[[0,6]]}}}],["dappnod",{"_index":157,"t":{"351":{"position":[[0,8]]}}}],["data",{"_index":175,"t":{"425":{"position":[[0,4]]},"481":{"position":[[54,4]]},"483":{"position":[[38,4]]},"487":{"position":[[13,4]]}}}],["databas",{"_index":260,"t":{"562":{"position":[[28,8]]}}}],["debug",{"_index":12,"t":{"17":{"position":[[9,5]]}}}],["decentralis",{"_index":226,"t":{"499":{"position":[[19,13]]},"509":{"position":[[0,13]]}}}],["default",{"_index":44,"t":{"57":{"position":[[0,7]]},"205":{"position":[[0,7]]},"453":{"position":[[0,7]]}}}],["denial",{"_index":153,"t":{"339":{"position":[[14,6]]}}}],["depend",{"_index":101,"t":{"183":{"position":[[12,12]]}}}],["design",{"_index":286,"t":{"617":{"position":[[12,6]]}}}],["develop",{"_index":86,"t":{"136":{"position":[[7,12]]}}}],["disclaim",{"_index":270,"t":{"593":{"position":[[3,11]]}}}],["disclos",{"_index":138,"t":{"287":{"position":[[10,8]]}}}],["discover",{"_index":120,"t":{"231":{"position":[[0,12]]}}}],["discoveri",{"_index":50,"t":{"61":{"position":[[14,9]]},"63":{"position":[[14,9]]},"115":{"position":[[4,9]]},"175":{"position":[[14,9]]},"233":{"position":[[12,9]]},"299":{"position":[[0,9]]},"355":{"position":[[4,9]]},"381":{"position":[[5,9]]}}}],["discuss",{"_index":285,"t":{"615":{"position":[[11,10]]}}}],["discv5",{"_index":74,"t":{"117":{"position":[[0,6]]},"177":{"position":[[10,6]]},"235":{"position":[[8,6]]},"353":{"position":[[0,6]]}}}],["disput",{"_index":282,"t":{"609":{"position":[[4,8]]}}}],["distribut",{"_index":145,"t":{"291":{"position":[[25,12]]}}}],["dn",{"_index":49,"t":{"61":{"position":[[10,3]]},"63":{"position":[[10,3]]},"101":{"position":[[0,3]]},"115":{"position":[[0,3]]},"175":{"position":[[10,3]]},"233":{"position":[[8,3]]},"355":{"position":[[0,3]]}}}],["do",{"_index":155,"t":{"339":{"position":[[32,5]]}}}],["docker",{"_index":122,"t":{"241":{"position":[[4,6]]},"243":{"position":[[6,6]]},"245":{"position":[[4,6]]}}}],["domain",{"_index":110,"t":{"211":{"position":[[12,6]]},"299":{"position":[[10,6]]},"301":{"position":[[7,6]]},"303":{"position":[[17,6]]}}}],["earli",{"_index":230,"t":{"505":{"position":[[0,5]]}}}],["eci",{"_index":61,"t":{"87":{"position":[[0,5]]}}}],["econom",{"_index":149,"t":{"337":{"position":[[0,8]]},"435":{"position":[[0,8]]}}}],["enabl",{"_index":11,"t":{"17":{"position":[[0,8]]}}}],["encrypt",{"_index":60,"t":{"85":{"position":[[10,10]]},"87":{"position":[[6,10]]},"89":{"position":[[8,9]]},"91":{"position":[[8,10]]},"411":{"position":[[21,10]]}}}],["enr",{"_index":121,"t":{"231":{"position":[[13,3]]},"233":{"position":[[0,3]]},"235":{"position":[[0,3]]},"357":{"position":[[0,3]]}}}],["environ",{"_index":15,"t":{"19":{"position":[[7,12]]},"21":{"position":[[8,12]]},"201":{"position":[[0,11]]}}}],["european",{"_index":212,"t":{"487":{"position":[[30,8]]}}}],["evalu",{"_index":243,"t":{"535":{"position":[[0,10]]}}}],["exampl",{"_index":252,"t":{"552":{"position":[[0,8]]}}}],["exchang",{"_index":75,"t":{"119":{"position":[[10,8]]},"179":{"position":[[15,8]]},"383":{"position":[[5,8]]}}}],["export",{"_index":210,"t":{"487":{"position":[[3,9]]}}}],["file",{"_index":108,"t":{"203":{"position":[[14,5]]},"505":{"position":[[10,4]]}}}],["filter",{"_index":43,"t":{"53":{"position":[[23,6]]},"79":{"position":[[8,6]]},"107":{"position":[[0,6]]},"191":{"position":[[23,6]]},"221":{"position":[[10,6]]},"319":{"position":[[0,6]]},"359":{"position":[[0,6]]}}}],["format",{"_index":136,"t":{"283":{"position":[[7,6]]}}}],["forward",{"_index":271,"t":{"595":{"position":[[3,7]]}}}],["function",{"_index":191,"t":{"465":{"position":[[25,8]]}}}],["futur",{"_index":85,"t":{"136":{"position":[[0,6]]},"521":{"position":[[0,6]]},"525":{"position":[[0,6]]},"529":{"position":[[0,6]]},"533":{"position":[[0,6]]},"537":{"position":[[12,6]]}}}],["gener",{"_index":68,"t":{"99":{"position":[[0,7]]},"215":{"position":[[0,8]]},"579":{"position":[[6,10]]}}}],["get",{"_index":5,"t":{"8":{"position":[[0,7]]},"37":{"position":[[0,7]]}}}],["gossip",{"_index":147,"t":{"301":{"position":[[0,6]]}}}],["gossipsub",{"_index":158,"t":{"361":{"position":[[0,9]]}}}],["govern",{"_index":279,"t":{"607":{"position":[[3,9]]}}}],["health",{"_index":134,"t":{"279":{"position":[[15,6]]}}}],["help",{"_index":30,"t":{"39":{"position":[[4,4]]},"291":{"position":[[17,4]]}}}],["http",{"_index":72,"t":{"111":{"position":[[5,4]]}}}],["i13n",{"_index":236,"t":{"513":{"position":[[5,4]]}}}],["id",{"_index":165,"t":{"385":{"position":[[5,2]]}}}],["imag",{"_index":123,"t":{"241":{"position":[[11,5]]},"243":{"position":[[13,5]]}}}],["implement",{"_index":80,"t":{"128":{"position":[[9,14]]}}}],["incentivis",{"_index":156,"t":{"339":{"position":[[47,15]]},"499":{"position":[[0,15]]},"501":{"position":[[0,15]]},"517":{"position":[[11,15]]}}}],["increas",{"_index":139,"t":{"289":{"position":[[0,10]]}}}],["indemn",{"_index":277,"t":{"603":{"position":[[3,9]]}}}],["inform",{"_index":225,"t":{"495":{"position":[[11,11]]}}}],["initi",{"_index":284,"t":{"615":{"position":[[3,7]]}}}],["initialis",{"_index":102,"t":{"185":{"position":[[0,10]]}}}],["insert",{"_index":254,"t":{"556":{"position":[[0,6]]}}}],["instal",{"_index":27,"t":{"33":{"position":[[0,12]]},"83":{"position":[[0,12]]},"183":{"position":[[0,7]]}}}],["integr",{"_index":9,"t":{"11":{"position":[[0,9]]},"13":{"position":[[6,12]]},"425":{"position":[[22,10]]}}}],["intellectu",{"_index":274,"t":{"597":{"position":[[3,12]]}}}],["interact",{"_index":133,"t":{"267":{"position":[[0,8]]},"277":{"position":[[0,8]]},"305":{"position":[[21,11]]}}}],["interfac",{"_index":104,"t":{"187":{"position":[[22,9]]}}}],["internal/priv",{"_index":189,"t":{"465":{"position":[[0,16]]}}}],["introduct",{"_index":246,"t":{"541":{"position":[[0,12]]},"548":{"position":[[0,12]]},"566":{"position":[[0,12]]},"575":{"position":[[0,12]]}}}],["isn’t",{"_index":0,"t":{"3":{"position":[[5,5]]}}}],["issu",{"_index":32,"t":{"39":{"position":[[20,6]]}}}],["jmeter",{"_index":255,"t":{"558":{"position":[[19,8]]}}}],["join",{"_index":181,"t":{"439":{"position":[[4,4]]}}}],["k",{"_index":140,"t":{"289":{"position":[[11,1]]}}}],["key",{"_index":64,"t":{"91":{"position":[[19,4]]},"215":{"position":[[30,3]]},"373":{"position":[[5,3]]}}}],["law",{"_index":280,"t":{"607":{"position":[[13,3]]}}}],["level",{"_index":66,"t":{"95":{"position":[[12,5]]}}}],["liabil",{"_index":276,"t":{"601":{"position":[[17,9]]}}}],["libp2p",{"_index":159,"t":{"363":{"position":[[0,6]]}}}],["light",{"_index":34,"t":{"43":{"position":[[9,5]]},"51":{"position":[[20,5]]},"109":{"position":[[0,5]]},"140":{"position":[[9,5]]},"189":{"position":[[20,5]]},"223":{"position":[[10,5]]},"323":{"position":[[0,5]]},"365":{"position":[[0,5]]},"367":{"position":[[0,5]]}}}],["limit",{"_index":76,"t":{"125":{"position":[[0,11]]},"393":{"position":[[5,5]]},"397":{"position":[[9,7]]},"481":{"position":[[6,5]]},"601":{"position":[[3,10]]}}}],["line",{"_index":106,"t":{"199":{"position":[[8,4]]}}}],["link",{"_index":219,"t":{"491":{"position":[[15,5]]},"599":{"position":[[23,5]]}}}],["listen",{"_index":118,"t":{"229":{"position":[[0,9]]}}}],["log",{"_index":13,"t":{"17":{"position":[[15,4]]},"97":{"position":[[0,3]]}}}],["longer",{"_index":244,"t":{"537":{"position":[[0,6]]}}}],["look",{"_index":272,"t":{"595":{"position":[[11,7]]}}}],["maximum",{"_index":250,"t":{"545":{"position":[[12,7]]}}}],["measur",{"_index":206,"t":{"485":{"position":[[12,8]]}}}],["membership",{"_index":131,"t":{"261":{"position":[[17,10]]}}}],["messag",{"_index":28,"t":{"35":{"position":[[0,7]]},"49":{"position":[[9,7]]},"51":{"position":[[5,8]]},"53":{"position":[[8,8]]},"89":{"position":[[18,8]]},"105":{"position":[[10,7]]},"146":{"position":[[9,8]]},"189":{"position":[[5,8]]},"191":{"position":[[8,8]]},"193":{"position":[[9,8]]},"213":{"position":[[29,7]]},"325":{"position":[[5,7]]},"409":{"position":[[5,7]]},"411":{"position":[[5,7]]}}}],["method",{"_index":46,"t":{"57":{"position":[[18,6]]}}}],["metric",{"_index":73,"t":{"113":{"position":[[0,7]]}}}],["modif",{"_index":278,"t":{"605":{"position":[[3,13]]}}}],["monitor",{"_index":132,"t":{"265":{"position":[[0,7]]}}}],["mostli",{"_index":160,"t":{"369":{"position":[[0,6]]}}}],["multipl",{"_index":256,"t":{"562":{"position":[[0,8]]}}}],["name",{"_index":111,"t":{"211":{"position":[[19,4]]},"283":{"position":[[0,6]]},"285":{"position":[[0,6]]}}}],["network",{"_index":170,"t":{"413":{"position":[[5,7]]},"431":{"position":[[18,7]]},"439":{"position":[[18,8]]},"443":{"position":[[15,7]]},"451":{"position":[[0,7]]},"453":{"position":[[8,7]]},"499":{"position":[[33,8]]}}}],["new",{"_index":54,"t":{"73":{"position":[[13,3]]}}}],["node",{"_index":8,"t":{"9":{"position":[[11,4]]},"43":{"position":[[15,4]]},"99":{"position":[[8,4]]},"140":{"position":[[15,4]]},"215":{"position":[[25,4]]},"263":{"position":[[8,4]]},"265":{"position":[[12,4]]},"267":{"position":[[18,4]]},"271":{"position":[[8,4]]},"273":{"position":[[8,4]]},"275":{"position":[[14,4]]},"277":{"position":[[18,4]]},"279":{"position":[[10,4]]},"339":{"position":[[42,4]]},"365":{"position":[[6,4]]},"371":{"position":[[0,4]]},"373":{"position":[[0,4]]},"443":{"position":[[23,4]]},"562":{"position":[[9,5]]}}}],["nodej",{"_index":14,"t":{"19":{"position":[[0,6]]}}}],["nois",{"_index":171,"t":{"415":{"position":[[5,5]]}}}],["nullifi",{"_index":168,"t":{"393":{"position":[[11,10]]}}}],["nwaku",{"_index":114,"t":{"225":{"position":[[4,5]]},"550":{"position":[[19,5]]},"552":{"position":[[12,5]]}}}],["offlin",{"_index":161,"t":{"369":{"position":[[7,7]]}}}],["on",{"_index":258,"t":{"562":{"position":[[17,3]]}}}],["ongo",{"_index":288,"t":{"623":{"position":[[3,7]]}}}],["option",{"_index":90,"t":{"152":{"position":[[12,7]]},"199":{"position":[[13,7]]}}}],["out",{"_index":162,"t":{"375":{"position":[[0,3]]}}}],["outsid",{"_index":211,"t":{"487":{"position":[[18,7]]}}}],["overview",{"_index":56,"t":{"77":{"position":[[0,8]]},"295":{"position":[[0,8]]},"305":{"position":[[0,8]]},"309":{"position":[[0,8]]},"329":{"position":[[0,8]]},"333":{"position":[[0,8]]}}}],["p2p",{"_index":231,"t":{"505":{"position":[[6,3]]}}}],["pagedirect",{"_index":91,"t":{"153":{"position":[[0,13]]}}}],["parti",{"_index":204,"t":{"483":{"position":[[9,5]]},"491":{"position":[[9,5]]},"599":{"position":[[9,5]]}}}],["payload",{"_index":164,"t":{"377":{"position":[[0,7]]},"411":{"position":[[13,7]]}}}],["payment",{"_index":239,"t":{"523":{"position":[[0,7]]}}}],["peer",{"_index":36,"t":{"45":{"position":[[18,5]]},"59":{"position":[[17,5]]},"63":{"position":[[35,5]]},"65":{"position":[[21,5]]},"119":{"position":[[5,4]]},"142":{"position":[[17,5]]},"173":{"position":[[17,5]]},"179":{"position":[[10,4]]},"209":{"position":[[17,5]]},"287":{"position":[[37,5]]},"379":{"position":[[0,4]]},"381":{"position":[[0,4]]},"383":{"position":[[0,4]]},"385":{"position":[[0,4]]}}}],["perform",{"_index":268,"t":{"587":{"position":[[0,11]]}}}],["person",{"_index":200,"t":{"481":{"position":[[45,8]]},"483":{"position":[[29,8]]}}}],["ping",{"_index":57,"t":{"79":{"position":[[0,7]]}}}],["polici",{"_index":222,"t":{"493":{"position":[[16,6]]}}}],["port",{"_index":25,"t":{"29":{"position":[[16,4]]}}}],["postgr",{"_index":251,"t":{"550":{"position":[[28,8]]},"552":{"position":[[24,8]]}}}],["prerequisit",{"_index":94,"t":{"161":{"position":[[0,13]]},"239":{"position":[[0,13]]},"255":{"position":[[0,13]]},"441":{"position":[[0,13]]}}}],["preserv",{"_index":142,"t":{"289":{"position":[[23,9]]}}}],["prevent",{"_index":152,"t":{"339":{"position":[[0,10]]}}}],["price",{"_index":238,"t":{"519":{"position":[[0,7]]}}}],["prior",{"_index":228,"t":{"503":{"position":[[0,5]]}}}],["privaci",{"_index":221,"t":{"493":{"position":[[8,7]]}}}],["problem",{"_index":192,"t":{"469":{"position":[[0,7]]}}}],["process",{"_index":199,"t":{"481":{"position":[[31,10]]},"483":{"position":[[15,10]]}}}],["proof",{"_index":263,"t":{"579":{"position":[[0,5]]},"581":{"position":[[0,5]]}}}],["properti",{"_index":275,"t":{"597":{"position":[[16,8]]}}}],["protect",{"_index":174,"t":{"423":{"position":[[5,10]]},"435":{"position":[[14,10]]},"583":{"position":[[5,10]]}}}],["protocol",{"_index":79,"t":{"128":{"position":[[0,8]]},"132":{"position":[[17,9]]},"213":{"position":[[16,8]]},"221":{"position":[[17,8]]},"223":{"position":[[21,8]]},"287":{"position":[[0,9]]},"305":{"position":[[12,8]]},"387":{"position":[[0,8]]},"560":{"position":[[31,9]]}}}],["provid",{"_index":103,"t":{"185":{"position":[[20,8]]}}}],["proxi",{"_index":117,"t":{"225":{"position":[[27,5]]}}}],["pseudonym",{"_index":172,"t":{"419":{"position":[[0,12]]}}}],["pub/sub",{"_index":166,"t":{"389":{"position":[[0,7]]},"391":{"position":[[0,7]]}}}],["pubsub",{"_index":185,"t":{"459":{"position":[[0,6]]}}}],["push",{"_index":41,"t":{"51":{"position":[[26,4]]},"109":{"position":[[6,4]]},"189":{"position":[[26,4]]},"223":{"position":[[16,4]]},"323":{"position":[[6,4]]},"367":{"position":[[6,4]]}}}],["queri",{"_index":89,"t":{"152":{"position":[[6,5]]},"558":{"position":[[0,5]]},"560":{"position":[[0,5]]}}}],["querygener",{"_index":88,"t":{"150":{"position":[[0,14]]}}}],["querywithorderedcallback",{"_index":87,"t":{"148":{"position":[[0,24]]}}}],["rate",{"_index":167,"t":{"393":{"position":[[0,4]]}}}],["receiv",{"_index":42,"t":{"53":{"position":[[0,7]]},"191":{"position":[[0,7]]}}}],["recommend",{"_index":84,"t":{"134":{"position":[[0,15]]}}}],["regist",{"_index":129,"t":{"261":{"position":[[0,8]]}}}],["relat",{"_index":289,"t":{"623":{"position":[[11,8]]}}}],["relay",{"_index":70,"t":{"103":{"position":[[0,5]]},"315":{"position":[[0,5]]},"317":{"position":[[4,5]]},"395":{"position":[[0,5]]},"399":{"position":[[4,5]]},"587":{"position":[[12,5],[26,5]]}}}],["releas",{"_index":126,"t":{"249":{"position":[[7,8]]}}}],["remot",{"_index":35,"t":{"45":{"position":[[11,6]]}}}],["remov",{"_index":186,"t":{"461":{"position":[[0,7]]}}}],["report",{"_index":31,"t":{"39":{"position":[[13,6]]}}}],["repositori",{"_index":96,"t":{"163":{"position":[[10,10]]},"257":{"position":[[10,10]]}}}],["reput",{"_index":240,"t":{"527":{"position":[[0,10]]}}}],["request/respons",{"_index":148,"t":{"303":{"position":[[0,16]]}}}],["resist",{"_index":151,"t":{"337":{"position":[[14,10]]}}}],["resourc",{"_index":169,"t":{"397":{"position":[[0,8]]}}}],["respect",{"_index":208,"t":{"485":{"position":[[32,7]]}}}],["rest",{"_index":71,"t":{"111":{"position":[[0,4]]},"219":{"position":[[10,4]]}}}],["result",{"_index":241,"t":{"531":{"position":[[0,7]]},"556":{"position":[[12,7]]},"558":{"position":[[11,7]]},"560":{"position":[[11,7]]},"572":{"position":[[0,7]]}}}],["retriev",{"_index":51,"t":{"65":{"position":[[0,10]]},"146":{"position":[[0,8]]},"193":{"position":[[0,8]]}}}],["revers",{"_index":116,"t":{"225":{"position":[[19,7]]}}}],["right",{"_index":217,"t":{"489":{"position":[[20,6]]},"597":{"position":[[25,6]]}}}],["rln",{"_index":130,"t":{"261":{"position":[[13,3]]},"317":{"position":[[0,3]]},"399":{"position":[[0,3]]},"585":{"position":[[0,3]]},"587":{"position":[[22,3]]}}}],["run",{"_index":7,"t":{"9":{"position":[[0,3]]},"167":{"position":[[0,3]]},"169":{"position":[[0,3]]},"225":{"position":[[0,3]]},"245":{"position":[[0,3]]},"263":{"position":[[0,3]]},"273":{"position":[[0,3]]},"443":{"position":[[0,7]]}}}],["sdk",{"_index":10,"t":{"11":{"position":[[16,4]]},"401":{"position":[[0,3]]}}}],["secur",{"_index":178,"t":{"427":{"position":[[0,8]]},"485":{"position":[[3,8]]}}}],["select",{"_index":249,"t":{"545":{"position":[[0,9]]}}}],["send",{"_index":40,"t":{"51":{"position":[[0,4]]},"189":{"position":[[0,4]]}}}],["server",{"_index":113,"t":{"219":{"position":[[19,6]]}}}],["servic",{"_index":154,"t":{"339":{"position":[[24,7]]},"431":{"position":[[10,7]]}}}],["setup",{"_index":19,"t":{"23":{"position":[[19,5]]},"259":{"position":[[14,5]]}}}],["shard",{"_index":183,"t":{"455":{"position":[[7,8]]},"457":{"position":[[5,8]]}}}],["share",{"_index":232,"t":{"505":{"position":[[15,7]]}}}],["sign",{"_index":62,"t":{"89":{"position":[[0,7]]}}}],["simul",{"_index":262,"t":{"570":{"position":[[0,11]]}}}],["singl",{"_index":259,"t":{"562":{"position":[[21,6]]}}}],["solut",{"_index":180,"t":{"433":{"position":[[18,8]]},"473":{"position":[[0,8]]},"617":{"position":[[3,8]]}}}],["spam",{"_index":150,"t":{"337":{"position":[[9,4]]},"423":{"position":[[0,4]]},"435":{"position":[[9,4]]},"583":{"position":[[0,4]]}}}],["specif",{"_index":83,"t":{"132":{"position":[[8,8]]}}}],["start",{"_index":6,"t":{"8":{"position":[[8,7]]},"37":{"position":[[8,7]]}}}],["statement",{"_index":273,"t":{"595":{"position":[[19,10]]}}}],["static",{"_index":48,"t":{"59":{"position":[[10,6]]},"63":{"position":[[28,6]]},"173":{"position":[[10,6]]},"455":{"position":[[0,6]]}}}],["statu",{"_index":135,"t":{"279":{"position":[[22,6]]}}}],["storag",{"_index":234,"t":{"509":{"position":[[14,7]]}}}],["store",{"_index":63,"t":{"91":{"position":[[0,7]]},"105":{"position":[[0,5],[18,5]]},"142":{"position":[[11,5]]},"152":{"position":[[0,5]]},"193":{"position":[[24,5]]},"213":{"position":[[10,5],[37,5]]},"321":{"position":[[0,5]]},"403":{"position":[[0,5]]},"515":{"position":[[5,5]]},"517":{"position":[[5,5]]},"560":{"position":[[25,5]]}}}],["stress",{"_index":253,"t":{"554":{"position":[[0,6]]}}}],["structur",{"_index":29,"t":{"35":{"position":[[8,9]]},"49":{"position":[[17,9]]}}}],["studi",{"_index":4,"t":{"7":{"position":[[5,7]]}}}],["subscript",{"_index":58,"t":{"79":{"position":[[15,13]]}}}],["suit",{"_index":100,"t":{"169":{"position":[[9,5]]}}}],["switzerland",{"_index":214,"t":{"487":{"position":[[49,11]]}}}],["symmetr",{"_index":59,"t":{"85":{"position":[[0,9]]}}}],["sync",{"_index":267,"t":{"585":{"position":[[9,4]]}}}],["tabl",{"_index":182,"t":{"449":{"position":[[0,5]]}}}],["take",{"_index":207,"t":{"485":{"position":[[24,4]]}}}],["target",{"_index":125,"t":{"249":{"position":[[0,6]]}}}],["templat",{"_index":55,"t":{"73":{"position":[[17,9]]}}}],["term",{"_index":245,"t":{"537":{"position":[[7,4]]},"611":{"position":[[24,5]]}}}],["test",{"_index":99,"t":{"169":{"position":[[4,4]]},"554":{"position":[[7,5]]},"556":{"position":[[7,4]]},"558":{"position":[[6,4]]},"560":{"position":[[6,4]]}}}],["theori",{"_index":261,"t":{"568":{"position":[[0,6]]}}}],["third",{"_index":203,"t":{"483":{"position":[[3,5]]},"491":{"position":[[3,5]]},"599":{"position":[[3,5]]}}}],["time",{"_index":264,"t":{"579":{"position":[[17,5]]},"581":{"position":[[19,5]]}}}],["timefilt",{"_index":93,"t":{"157":{"position":[[0,10]]}}}],["tldr",{"_index":195,"t":{"475":{"position":[[0,4]]},"577":{"position":[[0,5]]}}}],["tool",{"_index":227,"t":{"501":{"position":[[16,5]]}}}],["topic",{"_index":39,"t":{"47":{"position":[[17,5]]},"144":{"position":[[17,5]]},"287":{"position":[[27,6]]},"349":{"position":[[8,5]]},"391":{"position":[[8,5]]},"459":{"position":[[7,5]]}}}],["traffic",{"_index":146,"t":{"291":{"position":[[38,7]]}}}],["transport",{"_index":112,"t":{"217":{"position":[[20,9]]},"405":{"position":[[0,9]]}}}],["tree",{"_index":266,"t":{"585":{"position":[[4,4]]}}}],["tri",{"_index":20,"t":{"25":{"position":[[0,3]]}}}],["turnkey",{"_index":179,"t":{"433":{"position":[[10,7]]}}}],["tutori",{"_index":128,"t":{"253":{"position":[[6,8]]}}}],["type",{"_index":187,"t":{"463":{"position":[[0,4]]}}}],["union",{"_index":213,"t":{"487":{"position":[[39,5]]}}}],["us",{"_index":2,"t":{"5":{"position":[[17,4]]},"11":{"position":[[10,5]]},"51":{"position":[[14,5]]},"53":{"position":[[17,5]]},"189":{"position":[[14,5]]},"191":{"position":[[17,5]]},"193":{"position":[[18,5]]},"481":{"position":[[69,3]]},"552":{"position":[[18,5]]},"611":{"position":[[33,3]]}}}],["usag",{"_index":52,"t":{"71":{"position":[[0,5]]},"543":{"position":[[27,5]]}}}],["user",{"_index":143,"t":{"289":{"position":[[33,4]]}}}],["util",{"_index":190,"t":{"465":{"position":[[17,7]]}}}],["valid",{"_index":24,"t":{"27":{"position":[[18,8]]}}}],["valu",{"_index":109,"t":{"205":{"position":[[22,6]]}}}],["variabl",{"_index":107,"t":{"201":{"position":[[12,9]]}}}],["verif",{"_index":265,"t":{"581":{"position":[[6,12]]}}}],["video",{"_index":127,"t":{"253":{"position":[[0,5]]}}}],["vs",{"_index":269,"t":{"587":{"position":[[18,3]]}}}],["waku",{"_index":1,"t":{"3":{"position":[[11,5]]},"5":{"position":[[9,4]]},"9":{"position":[[6,4]]},"119":{"position":[[0,4]]},"185":{"position":[[15,4]]},"325":{"position":[[0,4]]},"407":{"position":[[0,4]]},"409":{"position":[[0,4]]},"411":{"position":[[0,4]]},"413":{"position":[[0,4]]},"415":{"position":[[0,4]]},"431":{"position":[[0,4]]},"433":{"position":[[0,4]]},"439":{"position":[[13,4]]},"443":{"position":[[10,4]]},"511":{"position":[[0,4]]},"513":{"position":[[0,4]]},"515":{"position":[[0,4]]},"517":{"position":[[0,4]]}}}],["websit",{"_index":201,"t":{"481":{"position":[[80,7]]},"485":{"position":[[47,7]]},"599":{"position":[[15,7]]},"611":{"position":[[16,7]]}}}],["websocat",{"_index":21,"t":{"25":{"position":[[4,8]]}}}],["websocket",{"_index":18,"t":{"23":{"position":[[9,9]]},"29":{"position":[[6,9]]},"121":{"position":[[0,9]]},"217":{"position":[[10,9]]}}}],["work",{"_index":229,"t":{"503":{"position":[[6,4]]},"521":{"position":[[7,4]]},"525":{"position":[[7,4]]},"529":{"position":[[7,4]]},"533":{"position":[[7,4]]},"537":{"position":[[19,4]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"Waku is a family of robust, censorship-resistant, peer-to-peer communication protocols that enable privacy-focused messaging for Web3 applications, allowing you to integrate decentralised communication features into your dApp without compromising security or privacy. tip Check out our Learn section, YouTube channel, and Blog to dive into how Waku works behind the scenes!","s":"Introduction to Waku","u":"/","h":"","p":1},{"i":4,"t":"Waku is not a blockchain but a network composed of protocols designed for Web3 communication, operating without the need for gas fees. Waku is not just for messaging applications; it supports the development of complex applications that require secure and private data transmission. Waku is not a long-term data storage network; it focuses on short, ephemeral, real-time messaging.","s":"What isn’t Waku?","u":"/","h":"#what-isnt-waku","p":1},{"i":6,"t":"Chat Messengers: Waku can be used to build private, decentralised chat apps resistant to censorship. Voting and Proposals: Exchange votes on proposals off-chain via Waku to save gas fees, then submit aggregated results to the blockchain. NFT Marketplaces: Use Waku to handle off-chain NFT bids and offers for gas savings, and to integrate social interactions like likes and comments. State Channels: Establish and maintain state channels with Waku, facilitating seamless message exchanges and updates without blockchain interaction. Signature Exchange for Multi-Signature Wallets: Allow multi-signature wallet owners to exchange signatures privately and securely through Waku. Game Mechanics Communication: Implement Waku as a communication layer for decentralised, peer-to-peer gaming, avoiding centralised infrastructure. Layer 2 Coordination (Open Market, Spam Protected Mempool): Broadcast and aggregate Layer 2 transactions via Waku to enhance privacy and scalability, reducing network load. Social Media Platforms: Beyond chat messengers, use Waku for decentralised, censorship-resistant social media platforms like news feeds and multimedia sharing. tip Looking for what to build with Waku? Discover a collection of sample ideas and use cases for inspiration, curated by our community at: https://ideas.waku.org/ and Awesome Waku.","s":"What can Waku be used for?","u":"/","h":"#what-can-waku-be-used-for","p":1},{"i":10,"t":"Waku is a decentralised, permissionless system where anyone can run a node, use the network, and contribute to its support. We recommend following the Run Nwaku with Docker Compose guide and Waku Node Operator Cheatsheet to easily run a node. tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord.","s":"Run a Waku node","u":"/","h":"#run-a-waku-node","p":1},{"i":12,"t":"Waku is implemented in multiple SDKs, allowing it to integrate with different languages and address various use cases efficiently. Description Documentation @waku/sdk JavaScript/TypeScript SDK designed for browser environments JavaScript Waku SDK @waku/react React components and UI adapters designed for seamless integration with @waku/sdk Build React DApps Using @waku/react","s":"Integrate using SDKs","u":"/","h":"#integrate-using-sdks","p":1},{"i":14,"t":"Description Documentation REST API REST API interface provided by nwaku and go-waku to interact with the Waku Network Waku Node REST API Reference @waku/create-app Starter kit to bootstrap your next @waku/sdk project from various example templates Scaffold DApps Using @waku/create-app tip Explore some example apps built using Waku at https://examples.waku.org/ and view a list of projects and workshops from previous hackathons at Awesome Waku.","s":"Other integrations","u":"/","h":"#other-integrations","p":1},{"i":16,"t":"This guide provides detailed steps to enable and use debug logs to troubleshoot your Waku DApp, whether in a NodeJS or browser environment and check your WebSocket connections in nwaku.","s":"Debug Your Waku DApp and WebSocket","u":"/guides/js-waku/debug-waku-dapp","h":"","p":15},{"i":18,"t":"When resolving issues in your Waku DApp, debug logs can be helpful. The @waku/sdk and libp2p packages use the debug tool to handle and show logs that help you debug effectively.","s":"Enabling debug logs","u":"/guides/js-waku/debug-waku-dapp","h":"#enabling-debug-logs","p":15},{"i":20,"t":"To enable debug logs for @waku/sdk on NodeJS, you must set the DEBUG environment variable. To only enable debug logs for @waku/sdk: export DEBUG=waku* To enable debug logs for both @waku/sdk and libp2p: export DEBUG=waku*,libp2p* To enable debug logs for all components: export DEBUG=*","s":"NodeJS environments","u":"/guides/js-waku/debug-waku-dapp","h":"#nodejs-environments","p":15},{"i":22,"t":"To view debug logs in your browser's console, modify the local storage and add the debug key. Here are guides for various modern browsers: Google Chrome Firefox JavaScript KEY VALUE DESCRIPTION debug waku* Enables @waku/sdk debug logs debug waku*,libp2p* Enables @waku/sdk and libp2p debug logs debug * Enables all debug logs","s":"Browser environments","u":"/guides/js-waku/debug-waku-dapp","h":"#browser-environments","p":15},{"i":24,"t":"Nwaku provides native support for WebSocket (ws) and WebSocket Secure (wss) protocols. These are the only transports supported for connecting to the Waku Network via browsers. It's important to note that browsers impose certain limitations on WebSocket usage: Secure Context Requirement: Insecure subroutines are prohibited in secure contexts. On an https:// webpage, only wss connections are permitted, while ws connections are not allowed. This restriction does not apply if the webpage is served locally, like on localhost or 127.0.0.1. Certificate Validation: Certificate validation rules are consistent for https and wss connections. Certificates must not be expired, issued by a recognized Certificate Authority (CA), and match the domain name, among other criteria. User Feedback on Errors: Web browsers do not display errors related to subroutines to the user. If a WebSocket connection encounters an issue, users won't be alerted directly; you'll need to check the browser's console for error details. If you encounter difficulties when connecting to a remote node using wss, follow these steps:","s":"Checking WebSocket setup","u":"/guides/js-waku/debug-waku-dapp","h":"#checking-websocket-setup","p":15},{"i":26,"t":"Attempt to connect using websocat, a tool for WebSocket interactions. Test the WebSocket port using the command: websocat -v wss://[WEBSOCKET HOST]:[WEBSOCKET PORT] For example, consider a nwaku node with the multiaddr as /dns4/nwakunode.com/tcp/1234/wss/p2p/16...: $ websocat -v wss://nwakunode.com:1234 # ... [INFO websocat::ws_client_peer] Connected to ws The connection works if the [INFO websocat::ws_client_peer] Connected to ws log entry appears. If not, check that the certificate is valid","s":"Try Websocat for connection","u":"/guides/js-waku/debug-waku-dapp","h":"#try-websocat-for-connection","p":15},{"i":28,"t":"Verify the certificate's validity by passing the -k or --insecure flag to handle invalid certificates in websocat: websocat -v -k wss://nwakunode.com:1234 If this works, the certificate's invalidity is the problem, and you should investigate the cause of the error if not, check if the WebSocket port is accessible.","s":"Check certificate validity","u":"/guides/js-waku/debug-waku-dapp","h":"#check-certificate-validity","p":15},{"i":30,"t":"Use telnet or another networking tool to verify if the WebSocket port is open and accessible. For example, if the multiaddr is /dns4/nwakunode.com/tcp/1234/wss/p2p/16..., use the command: $ telnet nwakunode.com 1234 Trying 123.123.123.123... Connected to nwakunode.com. # ... If the connection succeeds, there might be an issue with nwaku. Consider seeking support on the Waku Discord or raise an issue. If the connection fails, ensure that the WebSocket port is open.","s":"Check WebSocket port accessibility","u":"/guides/js-waku/debug-waku-dapp","h":"#check-websocket-port-accessibility","p":15},{"i":32,"t":"caution Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future. The JavaScript Waku SDK (@waku/sdk) provides a TypeScript implementation of the Waku protocol designed for web browser environments. Developers can seamlessly integrate Waku functionalities into web applications, enabling efficient communication and collaboration among users using the @waku/sdk package.","s":"JavaScript Waku SDK","u":"/guides/js-waku/","h":"","p":31},{"i":34,"t":"Install the @waku/sdk package using your preferred package manager: NPM Yarn npm install @waku/sdk yarn add @waku/sdk You can also use the @waku/sdk package via a CDN without installing it on your system: import * as waku from \"https://unpkg.com/@waku/sdk@latest/bundle/index.js\";","s":"Installation","u":"/guides/js-waku/","h":"#installation","p":31},{"i":36,"t":"We recommend creating a message structure for your application using Protocol Buffers for the following reasons: Consistency: Ensures uniform message format for easy parsing and processing. Interoperability: Facilitates effective communication between different parts of your application. Compatibility: Allows smooth communication between older and newer app versions. Payload Size: Minimizes payload overhead, especially for byte arrays, unlike JSON which adds significant overhead. To get started, install the protobufjs package using your preferred package manager: NPM Yarn npm install protobufjs yarn add protobufjs You can also use the protobufjs package via a CDN without installing it on your system: // Import the CDN import \"https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js\"; ","s":"Message structure","u":"/guides/js-waku/","h":"#message-structure","p":31},{"i":38,"t":"Have a look at the quick start guide and comprehensive tutorials to learn how to build applications using @waku/sdk: Guide Description Send and Receive Messages Using Light Push and Filter Learn how to send and receive messages on light nodes using the Light Push and Filter protocols Retrieve Messages Using Store Protocol Learn how to retrieve and filter historical messages on light nodes using the Store protocol Encrypt, Decrypt, and Sign Your Messages Learn how to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages Build React DApps Using @waku/react Learn how to use the @waku/react package seamlessly integrate @waku/sdk into a React application Scaffold DApps Using @waku/create-app Learn how to use the @waku/create-app package to bootstrap your next @waku/sdk project from various example templates Bootstrap Nodes and Discover Peers Learn how to bootstrap your node using Static Peers and discover peers using DNS Discovery Run @waku/sdk in a NodeJS Application Learn our suggested approach for using the @waku/sdk package within a NodeJS application Debug Your Waku DApp and WebSocket Learn how to troubleshoot your Waku DApp using debug logs and check WebSocket connections in nwaku Manage Your Filter Subscriptions Learn how to manage filter subscriptions and handle node disconnections in your application tip Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.","s":"Getting started","u":"/guides/js-waku/","h":"#getting-started","p":31},{"i":40,"t":"To engage in general discussions, seek assistance, or stay updated with the latest news, visit the #support and #js-waku-contribute channels on the Waku Discord. If you discover bugs or want to suggest new features, do not hesitate to open an issue in the js-waku repository. Your feedback and contributions are highly valued and will help improve the @waku/sdk package.","s":"Get help and report issues","u":"/guides/js-waku/","h":"#get-help-and-report-issues","p":31},{"i":42,"t":"This guide provides detailed steps to start using the @waku/sdk package by setting up a Light Node to send messages using the Light Push protocol, and receive messages using the Filter protocol. Have a look at the installation guide for steps on adding @waku/sdk to your project.","s":"Send and Receive Messages Using Light Push and Filter","u":"/guides/js-waku/light-send-receive","h":"","p":41},{"i":44,"t":"Use the createLightNode() function to create a Light Node and interact with the Waku Network: import { createLightNode } from \"@waku/sdk\"; // Create and start a Light Node const node = await createLightNode({ defaultBootstrap: true }); await node.start(); // Use the stop() function to stop a running node // await node.stop(); info When the defaultBootstrap parameter is set to true, your node will be bootstrapped using the default bootstrap method. Have a look at the Bootstrap Nodes and Discover Peers guide to learn more methods to bootstrap nodes.","s":"Create a light node","u":"/guides/js-waku/light-send-receive","h":"#create-a-light-node","p":41},{"i":46,"t":"Use the waitForRemotePeer() function to wait for the node to connect with peers on the Waku Network: import { waitForRemotePeer } from \"@waku/sdk\"; // Wait for a successful peer connection await waitForRemotePeer(node); The protocols parameter allows you to specify the protocols that the remote peers should have enabled: import { waitForRemotePeer, Protocols } from \"@waku/sdk\"; // Wait for peer connections with specific protocols await waitForRemotePeer(node, [ Protocols.LightPush, Protocols.Filter, ]);","s":"Connect to remote peers","u":"/guides/js-waku/light-send-receive","h":"#connect-to-remote-peers","p":41},{"i":48,"t":"Choose a content topic for your application and create a message encoder and decoder: import { createEncoder, createDecoder } from \"@waku/sdk\"; // Choose a content topic const contentTopic = \"/light-guide/1/message/proto\"; // Create a message encoder and decoder const encoder = createEncoder({ contentTopic }); const decoder = createDecoder(contentTopic); The ephemeral parameter allows you to specify whether messages should NOT be stored by Store peers: const encoder = createEncoder({ contentTopic: contentTopic, // message content topic ephemeral: true, // allows messages NOT be stored on the network }); info In this example, users send and receive messages on a shared content topic. However, real applications may have users broadcasting messages while others listen or only have 1:1 exchanges. Waku supports all these use cases.","s":"Choose a content topic","u":"/guides/js-waku/light-send-receive","h":"#choose-a-content-topic","p":41},{"i":50,"t":"Create your application's message structure using Protobuf's valid message fields: import protobuf from \"protobufjs\"; // Create a message structure using Protobuf const ChatMessage = new protobuf.Type(\"ChatMessage\") .add(new protobuf.Field(\"timestamp\", 1, \"uint64\")) .add(new protobuf.Field(\"sender\", 2, \"string\")) .add(new protobuf.Field(\"message\", 3, \"string\")); info Have a look at the Protobuf installation guide for adding the protobufjs package to your project.","s":"Create a message structure","u":"/guides/js-waku/light-send-receive","h":"#create-a-message-structure","p":41},{"i":52,"t":"To send messages over the Waku Network using the Light Push protocol, create a new message object and use the lightPush.send() function: // Create a new message object const protoMessage = ChatMessage.create({ timestamp: Date.now(), sender: \"Alice\", message: \"Hello, World!\", }); // Serialise the message using Protobuf const serialisedMessage = ChatMessage.encode(protoMessage).finish(); // Send the message using Light Push await node.lightPush.send(encoder, { payload: serialisedMessage, });","s":"Send messages using light push","u":"/guides/js-waku/light-send-receive","h":"#send-messages-using-light-push","p":41},{"i":54,"t":"To receive messages using the Filter protocol, create a callback function for message processing, then use the filter.subscribe() function to subscribe to a content topic: // Create the callback function const callback = (wakuMessage) => { // Check if there is a payload on the message if (!wakuMessage.payload) return; // Render the messageObj as desired in your application const messageObj = ChatMessage.decode(wakuMessage.payload); console.log(messageObj); }; // Create a Filter subscription const { error, subscription } = await node.filter.createSubscription({ contentTopics: [contentTopic] }); if (error) { // handle errors if happens throw Error(error); } // Subscribe to content topics and process new messages await subscription.subscribe([decoder], callback); You can use the subscription.unsubscribe() function to stop receiving messages from a content topic: await subscription.unsubscribe([contentTopic]); Congratulations! You have successfully sent and received messages over the Waku Network using the Light Push and Filter protocols. Have a look at the light-js and light-chat examples for working demos.","s":"Receive messages using filter","u":"/guides/js-waku/light-send-receive","h":"#receive-messages-using-filter","p":41},{"i":56,"t":"This guide provides detailed steps to bootstrap your your node using Static Peers and discover peers in the Waku Network using DNS Discovery. info If you do not set up a bootstrap node or discovery mechanism, your node will not connect to any remote peer. tip Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.","s":"Bootstrap Nodes and Discover Peers","u":"/guides/js-waku/configure-discovery","h":"","p":55},{"i":58,"t":"The @waku/sdk package provides a built-in bootstrapping method that uses DNS Discovery to locate peers from the waku v2.prod ENR tree. import { createLightNode } from \"@waku/sdk\"; // Bootstrap node using the default bootstrap method const node = await createLightNode({ defaultBootstrap: true });","s":"Default bootstrap method","u":"/guides/js-waku/configure-discovery","h":"#default-bootstrap-method","p":55},{"i":60,"t":"To set static peers, a list of multiaddr to bootstrap the node should be passed to the bootstrapPeers parameter of the createLightNode() function: import { createLightNode } from \"@waku/sdk\"; // Bootstrap node using static peers const node = await createLightNode({ bootstrapPeers: [\"[PEER MULTIADDR]\"], }); For example, consider a node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003 with WebSocket enabled: // Define the list of static peers to bootstrap const peers = [ \"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H\", \"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\", ]; // Bootstrap node using the static peers const node = await createLightNode({ bootstrapPeers: peers, }); Alternatively, you can dial a particular node like this: // Define the list of static peers to bootstrap const peers = [ \"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H\", \"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\", ]; const node = await createLightNode(); // In case nodes are using `ws` protocol - additional configuration is needed: /* import { webSockets } from \"@libp2p/websockets\"; import { all as filterAll } from \"@libp2p/websockets/filters\"; const node = await createLightNode({ libp2p: { transports: [webSockets({ filter: filterAll })], }, }); */ const promises = peers.map(multiaddr => node.dial(multiaddr)); await Promise.all(promises); tip For local development using a nwaku node, use a ws address instead of wss. Remember that this setup is functional only when your web server is running locally. You can check how to get multi address of your locally run node in Find node address.","s":"Configure static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-static-peers","p":55},{"i":62,"t":"To bootstrap a node using DNS Discovery, first install the @waku/dns-discovery package: npm install @waku/dns-discovery yarn add @waku/dns-discovery Then, use the wakuDnsDiscovery() function to provide a list of URLs for DNS node list in the format enrtree://@: import { createLightNode } from \"@waku/sdk\"; import { wakuDnsDiscovery } from \"@waku/dns-discovery\"; // Define DNS node list const enrTree = \"enrtree://[PUBLIC KEY]@[DOMAIN NAME]\"; // Define node requirements const NODE_REQUIREMENTS = { store: 3, lightPush: 3, filter: 3, }; // Bootstrap node using DNS Discovery const node = await createLightNode({ libp2p: { peerDiscovery: [ wakuDnsDiscovery( [enrTree], NODE_REQUIREMENTS, ), ], }, }); For example, consider a node that uses the waku v2.prod and waku v2.test ENR trees for DNS Discovery: import { enrTree } from \"@waku/dns-discovery\"; // Bootstrap node using DNS Discovery const node = await createLightNode({ libp2p: { peerDiscovery: [ wakuDnsDiscovery( [enrTree[\"PROD\"], enrTree[\"TEST\"]], NODE_REQUIREMENTS, ), ], }, });","s":"Configure DNS discovery","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery","p":55},{"i":64,"t":"You can also bootstrap your node using DNS Discovery and Static Peers simultaneously: import { createLightNode } from \"@waku/sdk\"; import { bootstrap } from \"@libp2p/bootstrap\"; import { enrTree, wakuDnsDiscovery } from \"@waku/dns-discovery\"; // Define the list of static peers to bootstrap const peers = [ \"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H\", \"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\", ]; // Define node requirements const NODE_REQUIREMENTS = { store: 3, lightPush: 3, filter: 3, }; // Bootstrap node using DNS Discovery and static peers const node = await createLightNode({ libp2p: { bootstrapPeers: peers, peerDiscovery: [ wakuDnsDiscovery( [enrTree[\"PROD\"]], NODE_REQUIREMENTS, ), ], }, });","s":"Configure DNS discovery and static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery-and-static-peers","p":55},{"i":66,"t":"You can retrieve the array of peers connected to a node using the libp2p.getPeers() function within the @waku/sdk package: import { createLightNode, waitForRemotePeer } from \"@waku/sdk\"; const node = await createLightNode({ defaultBootstrap: true }); await waitForRemotePeer(node); // Retrieve array of peers connected to the node console.log(node.libp2p.getPeers());","s":"Retrieving connected peers","u":"/guides/js-waku/configure-discovery","h":"#retrieving-connected-peers","p":55},{"i":68,"t":"How do I install the @waku/sdk package in my project? You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started. Why should I use Protocol Buffers for my application's message structure when using Waku? Protocol Buffers ensure consistent formatting, interoperability, and backward compatibility for your application's messages, with a smaller payload size than JSON. Check out the installation guide and Protobuf documentation to learn more. What are the steps to retrieve historical messages on Waku? Check out the Retrieve Messages Using Store Protocol guide to learn how to retrieve and filter historical messages using the Store protocol. How can I prevent Store peers from storing my messages? When creating your message encoder, you can configure the ephemeral option to prevent Store peers from keeping your messages on the Waku Network. How can I encrypt, decrypt, and sign messages in my Waku application? You can encrypt and decrypt your messages using symmetric, ECIES, and noise encryption methods. Check out the Encrypt, Decrypt, and Sign Your Messages guide to get started. How do I integrate Waku into a React application? Waku has a specialized SDK designed for building React applications. Check out the Build React DApps Using @waku/react guide for instructions on installation and usage. How can I bootstrap and discover peers in the Waku Network for browser nodes? The JavaScript SDK has a default bootstrap method that can be configured with Static Peers and DNS Discovery. Check out the Bootstrap Nodes and Discover Peers guide for setting up peer discovery for your node. How can I integrate Waku into a NodeJS application? Though the JavaScript SDK isn't directly usable in NodeJS due to certain limitations, we recommend running nwaku in a Docker container and consuming its REST API in a NodeJS application. How can I debug my Waku DApp and check WebSocket connections? Check out the Debug Your Waku DApp and WebSocket guide to discover how to use debug logs to troubleshoot your Waku DApp and resolve connection issues with nwaku WebSockets. How can I manage unexpected disconnections of my Filter subscription from Waku? We recommend regularly pinging peers to check for an active connection and reinitiating the subscription when it disconnects. Check out the Manage Your Filter Subscriptions guide for a detailed explanation and step-by-step instructions. How can I send images and videos on the Waku Network? While it's possible to transmit media such as images as bytes on Waku, we recommend uploading your media to a CDN or a file system like IPFS and then sharing the corresponding URL via Waku. How can I connect to my own node? To manually set your own node as a starting point use Configure static peers.","s":"JavaScript SDK FAQ","u":"/guides/js-waku/faq","h":"","p":67},{"i":70,"t":"This guide provides detailed steps to bootstrap your next @waku/sdk project from various example templates using the @waku/create-app package.","s":"Scaffold DApps Using @waku/create-app","u":"/guides/js-waku/use-waku-create-app","h":"","p":69},{"i":72,"t":"Initialise a new @waku/sdk template using any of the following methods: NPM Yarn npx @waku/create-app [PROJECT DIRECTORY] yarn create @waku/app [PROJECT DIRECTORY] Next, select a template to initialise your app from: tip If you have previously installed @waku/create-app globally, we recommend uninstalling the package to ensure that npx always uses the latest version.","s":"Usage","u":"/guides/js-waku/use-waku-create-app","h":"#usage","p":69},{"i":74,"t":"We welcome and appreciate the contributions of templates for the @waku/create-app package. To contribute a template, please follow these steps: Create the template, ensuring it is user-friendly and thoroughly tested. Place the template in the examples folder in the js-waku-examples repository's root. Commit your changes with a detailed message and push them to your forked repository. Finally, submit a pull request to the js-waku-examples repository. Our team will carefully review and merge your submission upon approval. Waku also provides bounties to encourage community members to contribute to the network and earn rewards. To participate in the bounty program, head to https://github.com/waku-org/bounties.","s":"Contributing new templates","u":"/guides/js-waku/use-waku-create-app","h":"#contributing-new-templates","p":69},{"i":76,"t":"This guide provides detailed steps to manage Filter subscriptions and handle node disconnections in your application. Have a look at the Send and Receive Messages Using Light Push and Filter guide for using the Light Push and Filter protocols.","s":"Manage Your Filter Subscriptions","u":"/guides/js-waku/manage-filter","h":"","p":75},{"i":78,"t":"Occasionally, your Filter subscriptions might disconnect from the Waku Network, resulting in messages not being received by your application. To manage your subscriptions, periodically ping peers to check for an active connection. The error message \"peer has no subscriptions\" indicates a failed ping due to disconnection. You can stop the pings if the disconnection/unsubscription is deliberate.","s":"Overview","u":"/guides/js-waku/manage-filter","h":"#overview","p":75},{"i":80,"t":"The @waku/sdk package provides a Filter.ping() function to ping subscriptions and check for an active connection. To begin, create a Filter subscription: // Create a Filter subscription const { error, subscription } = await node.filter.createSubscription({ contentTopics: [contentTopic] }); if (error) { // handle errors if happens throw Error(error); } // Subscribe to content topics and process new messages await subscription.subscribe([decoder], callback); Next, create a function to ping and reinitiate the subscription: const pingAndReinitiateSubscription = async () => { try { // Ping the subscription await subscription.ping(); } catch (error) { if ( // Check if the error message includes \"peer has no subscriptions\" error instanceof Error && error.message.includes(\"peer has no subscriptions\") ) { // Reinitiate the subscription if the ping fails await subscription.subscribe([decoder], callback); } else { throw error; } } }; // Periodically ping the subscription await pingAndReinitiateSubscription(); info Pings will fail when there are temporary network degradations or reachability issues. This does not mean that the underlying connection has been closed. Congratulations! You have successfully managed your Filter subscriptions to handle node disconnections in your application.","s":"Pinging filter subscriptions","u":"/guides/js-waku/manage-filter","h":"#pinging-filter-subscriptions","p":75},{"i":82,"t":"This guide provides detailed steps to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages using Waku message payload encryption methods. info Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to freely use custom protocols or Waku message payload encryption methods.","s":"Encrypt, Decrypt, and Sign Your Messages","u":"/guides/js-waku/message-encryption","h":"","p":81},{"i":84,"t":"Install the required packages for integrating @waku/message-encryption using your preferred package manager: NPM Yarn npm install @waku/message-encryption @waku/utils yarn add @waku/message-encryption @waku/utils","s":"Installation","u":"/guides/js-waku/message-encryption","h":"#installation","p":81},{"i":86,"t":"Symmetric encryption uses a single, shared key for message encryption and decryption. Use the generateSymmetricKey() function to generate a random symmetric key: import { generateSymmetricKey } from \"@waku/message-encryption\"; // Generate a random symmetric key const symmetricKey = generateSymmetricKey(); To send encrypted messages, create a Symmetric message encoder and send the message as usual: Sender client import { createEncoder } from \"@waku/message-encryption/symmetric\"; // Create a symmetric message encoder const encoder = createEncoder({ contentTopic: contentTopic, // message content topic symKey: symmetricKey, // symmetric key for encrypting messages }); // Send the message using Light Push await node.lightPush.send(encoder, { payload }); To decrypt the messages you receive, create a symmetric message decoder and process the messages as usual: Receiver client import { createDecoder } from \"@waku/message-encryption/symmetric\"; // Create a symmetric message decoder const decoder = createDecoder(contentTopic, symmetricKey); // Receive messages from a Filter subscription await subscription.subscribe([decoder], callback); // Retrieve messages from Store peers await node.store.queryWithOrderedCallback([decoder], callback); tip The symmetric key exchange between users can happen through an out-of-band method. For example, where the key is embedded within the URL shared by a user to access a specific resource.","s":"Symmetric encryption","u":"/guides/js-waku/message-encryption","h":"#symmetric-encryption","p":81},{"i":88,"t":"ECIES encryption uses a public key for encryption and a private key for decryption. Use the generatePrivateKey() function to generate a random ECDSA private key: import { generatePrivateKey, getPublicKey } from \"@waku/message-encryption\"; // Generate a random ECDSA private key, keep secure const privateKey = generatePrivateKey(); // Generate a public key from the private key, provide to the sender const publicKey = getPublicKey(privateKey); To send encrypted messages, create an ECIES message encoder with the public key and send the message as usual: Sender client import { createEncoder } from \"@waku/message-encryption/ecies\"; // Create an ECIES message encoder const encoder = createEncoder({ contentTopic: contentTopic, // message content topic publicKey: publicKey, // ECIES public key for encrypting messages }); // Send the message using Light Push await node.lightPush.send(encoder, { payload }); To decrypt the messages you receive, create an ECIES message decoder with the private key and process the messages as usual: Receiver client import { createDecoder } from \"@waku/message-encryption/ecies\"; // Create an ECIES message decoder const decoder = createDecoder(contentTopic, privateKey); // Receive messages from a Filter subscription await subscription.subscribe([decoder], callback); // Retrieve messages from Store peers await node.store.queryWithOrderedCallback([decoder], callback); tip Users can share their public key through broadcasting or out-of-band methods, such as embedding it in a URL or sending an unencrypted message on another content topic for others to retrieve.","s":"ECIES encryption","u":"/guides/js-waku/message-encryption","h":"#ecies-encryption","p":81},{"i":90,"t":"Message signing helps in proving the authenticity of received messages. By attaching a signature to a message, you can verify its origin and integrity with absolute certainty. info Signing messages is only possible when encrypted, but if your application does not require encryption, you can generate a symmetric key through hardcoded or deterministic methods using information available to all users. The sigPrivKey parameter allows the Symmetric and ECIES message encoders to sign the message before encryption using an ECDSA private key: Alice (sender) client import { generatePrivateKey, getPublicKey } from \"@waku/message-encryption\"; import { createEncoder as createSymmetricEncoder } from \"@waku/message-encryption/symmetric\"; import { createEncoder as createECIESEncoder } from \"@waku/message-encryption/ecies\"; // Generate a random ECDSA private key for signing messages // ECIES encryption and message signing both use ECDSA keys // For this example, we'll call the sender of the message Alice const alicePrivateKey = generatePrivateKey(); const alicePublicKey = getPublicKey(alicePrivateKey); // Create a symmetric encoder that signs messages const symmetricEncoder = createSymmetricEncoder({ contentTopic: contentTopic, // message content topic symKey: symmetricKey, // symmetric key for encrypting messages sigPrivKey: alicePrivateKey, // private key for signing messages before encryption }); // Create an ECIES encoder that signs messages const ECIESEncoder = createECIESEncoder({ contentTopic: contentTopic, // message content topic publicKey: publicKey, // ECIES public key for encrypting messages sigPrivKey: alicePrivateKey, // private key for signing messages before encryption }); // Send and receive your messages as usual with Light Push and Filter await subscription.subscribe([symmetricEncoder], callback); await node.lightPush.send(symmetricEncoder, { payload }); await subscription.subscribe([ECIESEncoder], callback); await node.lightPush.send(ECIESEncoder, { payload }); You can extract the signature and its public key (signaturePublicKey) from the DecodedMessage and compare it with the expected public key or use the verifySignature() function to verify the message origin: Bob (receiver) client import { generatePrivateKey } from \"@waku/message-encryption\"; import { createEncoder } from \"@waku/message-encryption/symmetric\"; // Generate a random private key for signing messages // For this example, we'll call the receiver of the message Bob const bobPrivateKey = generatePrivateKey(); // Create an encoder that signs messages const encoder = createEncoder({ contentTopic: contentTopic, symKey: symmetricKey, sigPrivKey: bobPrivateKey, }); // Modify the callback function to verify message signature const callback = (wakuMessage) => { // Extract the message signature and public key of the signature // You can compare the signaturePublicKey with Alice public key const signature = wakuMessage.signature; const signaturePublicKey = wakuMessage.signaturePublicKey; // Verify the message was actually signed and sent by Alice // Alice's public key can be gotten from broadcasting or out-of-band methods if (wakuMessage.verifySignature(alicePublicKey)) { console.log(\"This message was signed by Alice\"); } else { console.log(\"This message was NOT signed by Alice\"); } }; await subscription.subscribe([encoder], callback);","s":"Signing encrypted messages","u":"/guides/js-waku/message-encryption","h":"#signing-encrypted-messages","p":81},{"i":92,"t":"We used randomly generated keys for encryption and message signing in the provided examples, but real-world applications require consistent keys among client restarts. Have a look at the Key Pair Handling example, which demonstrates the secure storage and retrieval of key information from local storage using Subtle Crypto. If you need a simple way to store your keys in hexadecimal format across your application, you can use the @waku/utils package: import { bytesToHex, hexToBytes } from \"@waku/utils/bytes\"; // Generate random symmetric and private keys const symmetricKey = generateSymmetricKey(); const privateKey = generatePrivateKey(); // Store the keys in hexadecimal format const symmetricKeyHex = bytesToHex(symmetricKey); const privateKeyHex = bytesToHex(privateKey); // Restore the keys from hexadecimal format const restoredSymmetricKey = hexToBytes(symmetricKeyHex); const restoredPrivateKey = hexToBytes(privateKeyHex); Congratulations! You have successfully encrypted, decrypted, and signed your messages using Symmetric and ECIES encryption methods. Have a look at the eth-pm example for a working demo.","s":"Storing encryption keys","u":"/guides/js-waku/message-encryption","h":"#storing-encryption-keys","p":81},{"i":94,"t":"Here are the available node configuration options, along with their default values and descriptions:","s":"Node Configuration Options","u":"/guides/nwaku/config-options","h":"","p":93},{"i":96,"t":"Name Default Value Description config-file Loads configuration from a TOML file (cmd-line parameters take precedence) protected-topic newSeq[ProtectedTopic](0) Topics and its public key to be used for message validation, topic:pubkey. Argument may be repeated","s":"Application-level config","u":"/guides/nwaku/config-options","h":"#application-level-config","p":93},{"i":98,"t":"Name Default Value Description log-level logging.LogLevel.INFO Sets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL log-format logging.LogFormat.TEXT Specifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON","s":"Log config","u":"/guides/nwaku/config-options","h":"#log-config","p":93},{"i":100,"t":"Name Default Value Description cluster-id 0 Cluster id that the node is running in. Node in a different cluster id is disconnected agent-string nwaku Node agent string which is used as identifier in network nodekey P2P node private key as 64-char hex string listen-address defaultListenAddress() Listening address for LibP2P (and Discovery v5, if enabled) traffic tcp-port 60000 TCP listening port ports-shift 0 Add a shift to all port numbers nat any Specify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip: ext-multiaddr External multiaddresses to advertise to the network. Argument may be repeated ext-multiaddr-only false Only announce external multiaddresses max-connections 50 Maximum allowed number of libp2p connections max-relay-peers Maximum allowed number of relay peers peer-store-capacity Maximum stored peers in the peerstore peer-persistence false Enable peer persistence","s":"General node config","u":"/guides/nwaku/config-options","h":"#general-node-config","p":93},{"i":102,"t":"Name Default Value Description dns-addrs true Enable resolution of dnsaddr, dns4 or dns6 multiaddrs dns-addrs-name-server [\"1.1.1.1\", \"1.0.0.1\"] DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated dns4-domain-name The domain name resolving to the node's public IPv4 address","s":"DNS addrs config","u":"/guides/nwaku/config-options","h":"#dns-addrs-config","p":93},{"i":104,"t":"Name Default Value Description relay true Enable relay protocol: true|false relay-peer-exchange false Enable gossipsub peer exchange in relay protocol: true|false rln-relay false Enable spam protection through rln-relay: true|false rln-relay-cred-path The path for persisting rln-relay credential rln-relay-membership-index The index of the onchain commitment to use rln-relay-dynamic false Enable waku-rln-relay with on-chain dynamic group management: true|false rln-relay-id-key Rln relay identity secret key as a Hex string rln-relay-id-commitment-key Rln relay identity commitment key as a Hex string rln-relay-eth-client-address ws://localhost:8540/ WebSocket address of an Ethereum testnet client e.g., ws://localhost:8540/ rln-relay-eth-contract-address Address of membership contract on an Ethereum testnet rln-relay-eth-private-key Private key for broadcasting transactions execute false Runs the registration function on-chain. By default, a dry-run will occur rln-relay-cred-password Password for encrypting RLN credentials rln-relay-tree-path Path to the RLN merkle tree sled db (https://github.com/spacejam/sled) rln-relay-bandwidth-threshold 0 # to maintain backwards compatibility Message rate in bytes/sec after which verification of proofs should happen staticnode Peer multiaddr to directly connect with. Argument may be repeated keep-alive false Enable keep-alive for idle connections: true|false pubsub-topic Default pubsub topic to subscribe to. Argument may be repeated. Deprecated! Please use shard and/or content-topic instead shard Shard to subscribe to. Argument may be repeated content-topic Default content topic to subscribe to. Argument may be repeated reliability false Enable experimental reliability protocol true|false","s":"Relay config","u":"/guides/nwaku/config-options","h":"#relay-config","p":93},{"i":106,"t":"Name Default Value Description store false Enable/disable waku store protocol storenode Peer multiaddress to query for storage store-message-retention-policy time:172800 Message store retention policy. Time retention policy: time:. Capacity retention policy: capacity:. Size retention policy: size:. Set to none to disable store-message-db-url sqlite://store.sqlite3 The database connection URL for persistent storage store-message-db-vacuum false Enable database vacuuming at start. Only supported by SQLite database engine store-message-db-migration true Enable database migration at start","s":"Store and message store config","u":"/guides/nwaku/config-options","h":"#store-and-message-store-config","p":93},{"i":108,"t":"Name Default Value Description filter false Enable filter protocol: true|false filternode Peer multiaddr to request content filtering of messages filter-subscription-timeout 300 # 5 minutes Timeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol filter-max-peers-to-serve 1000 Maximum number of peers to serve at a time. Only for v2 filter protocol filter-max-criteria 1000 Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol","s":"Filter config","u":"/guides/nwaku/config-options","h":"#filter-config","p":93},{"i":110,"t":"Name Default Value Description lightpush false Enable lightpush protocol: true|false lightpushnode Peer multiaddr to request lightpush of published messages","s":"Light push config","u":"/guides/nwaku/config-options","h":"#light-push-config","p":93},{"i":112,"t":"Name Default Value Description rest false Enable Waku REST HTTP server: true|false rest-address 127.0.0.1 Listening address of the REST HTTP server rest-port 8645 Listening port of the REST HTTP server rest-relay-cache-capacity 30 Capacity of the Relay REST API message cache rest-admin false Enable access to REST HTTP Admin API: true|false rest-allow-origin Allow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,*) for defining URLs and ports such as localhost:*, 127.0.0.1:8080, or allow any website with *","s":"REST HTTP config","u":"/guides/nwaku/config-options","h":"#rest-http-config","p":93},{"i":114,"t":"Name Default Value Description metrics-server false Enable the metrics server: true|false metrics-server-address 127.0.0.1 Listening address of the metrics server metrics-server-port 8008 Listening HTTP port of the metrics server metrics-logging true Enable metrics logging: true|false","s":"Metrics config","u":"/guides/nwaku/config-options","h":"#metrics-config","p":93},{"i":116,"t":"Name Default Value Description dns-discovery false Enable discovering nodes via DNS dns-discovery-url URL for DNS node list in format 'enrtree://@' dns-discovery-name-server [\"1.1.1.1\", \"1.0.0.1\"] DNS name server IPs to query. Argument may be repeated","s":"DNS discovery config","u":"/guides/nwaku/config-options","h":"#dns-discovery-config","p":93},{"i":118,"t":"Name Default Value Description discv5-discovery false Enable discovering nodes via Node Discovery v5 discv5-udp-port 9000 Listening UDP port for Node Discovery v5 discv5-bootstrap-node Text-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated discv5-enr-auto-update false Discovery can automatically update its ENR with the IP address discv5-table-ip-limit 10 Maximum amount of nodes with the same IP in discv5 routing tables discv5-bucket-ip-limit 2 Maximum amount of nodes with the same IP in discv5 routing table buckets discv5-bits-per-hop 1 Kademlia's b variable, increase for less hops per lookup","s":"Discv5 config","u":"/guides/nwaku/config-options","h":"#discv5-config","p":93},{"i":120,"t":"Name Default Value Description peer-exchange false Enable waku peer exchange protocol (responder side): true|false peer-exchange-node Peer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)","s":"Waku peer exchange config","u":"/guides/nwaku/config-options","h":"#waku-peer-exchange-config","p":93},{"i":122,"t":"Name Default Value Description websocket-support false Enable websocket: true|false websocket-port 8000 WebSocket listening port websocket-secure-support false Enable secure websocket: true|false websocket-secure-key-path Secure websocket key path: '/path/to/key.txt' websocket-secure-cert-path Secure websocket Certificate path: '/path/to/cert.txt' tip To configure your node using the provided configuration options, have a look at the Node Configuration Methods guide.","s":"WebSocket config","u":"/guides/nwaku/config-options","h":"#websocket-config","p":93},{"i":124,"t":"While the @waku/sdk package is primarily designed for browser environments, you can use it in a NodeJS application. However, there are certain limitations and considerations to keep in mind. This guide provides a comprehensive overview of using @waku/sdk in NodeJS.","s":"Run @waku/sdk in a NodeJS Application","u":"/guides/js-waku/run-waku-nodejs","h":"","p":123},{"i":127,"t":"@waku/sdk prioritises browser compatibility, avoiding NodeJS APIs for simpler bundling. This design choice enhances browser API compatibility but sacrifices NodeJS optimisation. While many browser APIs work in NodeJS, they might need better optimisation.","s":"API compatibility","u":"/guides/js-waku/run-waku-nodejs","h":"#api-compatibility","p":123},{"i":129,"t":"@waku/sdk focuses on the client side of the Request/Response protocol. We'll have to replicate all the functionalities added to nwaku to implement extra features.","s":"Protocol implementation","u":"/guides/js-waku/run-waku-nodejs","h":"#protocol-implementation","p":123},{"i":131,"t":"@waku/sdk aims to provide optimal default for the browser, striking a balance between browser and NodeJS compatibility while ensuring simplicity will add complexity.","s":"Codebase complexity","u":"/guides/js-waku/run-waku-nodejs","h":"#codebase-complexity","p":123},{"i":133,"t":"Certain features in @waku/sdk are tailored for browsers and might not translate seamlessly to NodeJS. For example, only WebSocket is supported in the browser, whereas a NodeJS application can benefit from using transport methods like TCP. @waku/sdk default peer management caters to the browser's ephemeral nature, which is different for NodeJS. This is why DNS Discovery and Peer Exchange are the default discovery mechanisms for the browser but not for NodeJS and desktop applications.","s":"Browser-specific protocols","u":"/guides/js-waku/run-waku-nodejs","h":"#browser-specific-protocols","p":123},{"i":135,"t":"Before using @waku/sdk in a NodeJS environment, take into account these limitations. For a more optimised solution, we recommend running nwaku in a Docker container and consuming its REST API.","s":"Recommendations","u":"/guides/js-waku/run-waku-nodejs","h":"#recommendations","p":123},{"i":137,"t":"There are plans to release a NodeJS package based on nwaku to streamline the process of using Waku Network features in NodeJS applications. You can track the progress and updates here: https://github.com/waku-org/nwaku/issues/1332.","s":"Future developments","u":"/guides/js-waku/run-waku-nodejs","h":"#future-developments","p":123},{"i":139,"t":"This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.","s":"Retrieve Messages Using Store Protocol","u":"/guides/js-waku/store-retrieve-messages","h":"","p":138},{"i":141,"t":"Use the createLightNode() function to create a Light Node and interact with the Waku Network: import { createLightNode } from \"@waku/sdk\"; // Create and start a Light Node const node = await createLightNode({ defaultBootstrap: true }); await node.start();","s":"Create a light node","u":"/guides/js-waku/store-retrieve-messages","h":"#create-a-light-node","p":138},{"i":143,"t":"Use the waitForRemotePeer() function to wait for the node to connect with Store peers: import { waitForRemotePeer, Protocols } from \"@waku/sdk\"; // Wait for a successful peer connection await waitForRemotePeer(node, [Protocols.Store]);","s":"Connect to store peers","u":"/guides/js-waku/store-retrieve-messages","h":"#connect-to-store-peers","p":138},{"i":145,"t":"Choose a content topic for filtering the messages to retrieve and create a message decoder: import { createDecoder } from \"@waku/sdk\"; // Choose a content topic const contentTopic = \"/store-guide/1/message/proto\"; // Create a message decoder const decoder = createDecoder(contentTopic);","s":"Choose a content topic","u":"/guides/js-waku/store-retrieve-messages","h":"#choose-a-content-topic","p":138},{"i":147,"t":"@waku/sdk provides the queryWithOrderedCallback() and queryGenerator() functions for querying Store nodes and retrieving historical or missed messages. The responses from Store nodes are paginated and require you to process each page sequentially.","s":"Retrieve messages","u":"/guides/js-waku/store-retrieve-messages","h":"#retrieve-messages","p":138},{"i":149,"t":"The store.queryWithOrderedCallback() function provides a straightforward method for querying Store nodes and processing messages in chronological order through a callback function. It accepts these parameters: decoders: List of decoders that specify the content topic to query for and their message decryption methods. callback: The callback function for processing the retrieved messages. options (optional): Query options to filter the retrieved messages. // Create the callback function const callback = (wakuMessage) => { // Render the message/payload in your application console.log(wakuMessage); }; // Query the Store peer await node.store.queryWithOrderedCallback([decoder], callback); info The queryWithOrderedCallback() function always returns the most recent messages in a page first.","s":"queryWithOrderedCallback","u":"/guides/js-waku/store-retrieve-messages","h":"#querywithorderedcallback","p":138},{"i":151,"t":"The store.queryGenerator() function provides more control and flexibility over processing messages retrieved from Store nodes through Async Generators. It accepts these parameters: decoders: List of decoders that specify the content topic to query for and their message decryption methods. options (optional): Query options to filter the retrieved messages. // Create the store query const storeQuery = node.store.queryGenerator([decoder]); // Process the messages for await (const messagesPromises of storeQuery) { // Fulfil the messages promises const messages = await Promise.all( messagesPromises.map(async (p) => { const msg = await p; // Render the message/payload in your application console.log(msg); }) ); } info The queryGenerator() function always returns the oldest messages in a page first.","s":"queryGenerator","u":"/guides/js-waku/store-retrieve-messages","h":"#querygenerator","p":138},{"i":154,"t":"The pageDirection option specifies the direction in which pages are retrieved: BACKWARD (default): Most recent page first. FORWARD: Oldest page first. import { PageDirection } from \"@waku/sdk\"; // Retrieve recent messages first const queryOptions = { pageDirection: PageDirection.BACKWARD, }; // Retrieve oldest messages first const queryOptions = { pageDirection: PageDirection.FORWARD, }; // Query the Store peer with options await node.store.queryWithOrderedCallback([decoder], callback, options); const storeQuery = node.store.queryGenerator([decoder, options]);","s":"pageDirection","u":"/guides/js-waku/store-retrieve-messages","h":"#pagedirection","p":138},{"i":156,"t":"The cursor option specifies the starting index for retrieving messages. For example, consider a query that retrieves the first page messages and then continues with the next page: import { waku } from \"@waku/sdk\"; // Create the callback function const messages = []; const callback = (wakuMessage) => { messages.push(wakuMessage); // Return \"true\" to stop retrieving pages // Here, it retrieves only the first page return true; }; // Retrieve the first page of messages // This retrieves all the messages if \"return true\" is not present await node.store.queryWithOrderedCallback([decoder], callback); // Create the cursor const lastMessage = messages[messages.length - 1]; const cursor = await waku.createCursor(lastMessage); // Retrieve the next page of messages // The message at the cursor index is excluded from the result await node.store.queryWithOrderedCallback([decoder], callback, { cursor: cursor, }); console.log(messages); info If you omit the cursor option, the query will start from the beginning or end of the history, depending on the page direction.","s":"cursor","u":"/guides/js-waku/store-retrieve-messages","h":"#cursor","p":138},{"i":158,"t":"The timeFilter option specifies a time frame to retrieve messages from. For example, consider a query that retrieves messages from the previous week: // Get the time frame const endTime = new Date(); const startTime = new Date(); startTime.setDate(endTime.getDate() - 7); // Retrieve a week of messages const queryOptions = { timeFilter: { startTime, endTime, }, }; // Query the Store peer with options await node.store.queryWithOrderedCallback([decoder], callback, options); const storeQuery = node.store.queryGenerator([decoder, options]); info The timeFilter option significantly reduces message retrieval performance. To optimise it, consider resuming message retrieval using a cursor that starts from the last seen message. Congratulations! You have successfully retrieved and filtered historical messages on a Light Node using the Store protocol. Have a look at the store-js and store-reactjs-chat examples for working demos.","s":"timeFilter","u":"/guides/js-waku/store-retrieve-messages","h":"#timefilter","p":138},{"i":160,"t":"This guide provides detailed steps to build a nwaku node from the source code to access the latest development version or a specific commit or release of nwaku. For your convenience, you may want to download a pre-compiled binary instead. info A minimum of 2GB of RAM is required to build nwaku. Nwaku is available for Linux and macOS, with experimental Windows support.","s":"Build Nwaku from Source","u":"/guides/nwaku/build-source","h":"","p":159},{"i":162,"t":"To build nwaku, you need the standard developer tools, including a C compiler, GNU Make, Bash, Git, Rustup, and PostgreSQL client library. Debian and Ubuntu Fedora Arch Linux MacOS (Homebrew) sudo apt-get install build-essential git libpq5 jq curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source \"$HOME/.cargo/env\" sudo dnf install @development-tools git libpq-devel curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Using your favoured AUR helper sudo [AUR HELPER] -S base-devel git postgresql-libs curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh brew install cmake git postgresql@15 rustup-init # Create a symbolic link to libpq.5.dylib in /usr/local/lib/ sudo mkdir -p /usr/local/lib/ sudo ln -s /opt/homebrew/opt/postgresql@15/lib/libpq.5.dylib /usr/local/lib/libpq.dylib","s":"Prerequisites","u":"/guides/nwaku/build-source","h":"#prerequisites","p":159},{"i":164,"t":"Get the source code from the GitHub repository. The default branch is master, the release candidate for major updates. git clone https://github.com/waku-org/nwaku cd nwaku tip You can use git tag -l to check specific version tags.","s":"Clone the repository","u":"/guides/nwaku/build-source","h":"#clone-the-repository","p":159},{"i":166,"t":"Build the nwaku binary: make wakunode2 The first make invocation updates to all Git submodules. After each git pull, run make update to keep the submodules updated in the future. make update","s":"Build the binary","u":"/guides/nwaku/build-source","h":"#build-the-binary","p":159},{"i":168,"t":"Nwaku will create the wakunode2 binary in the ./build/ directory. # Run with default configuration ./build/wakunode2 # See available command line options ./build/wakunode2 --help To learn more about running nwaku, have a look at these guides: Run a Nwaku Node Run Nwaku in a Docker Container Run Nwaku with Docker Compose Node Configuration Methods","s":"Run the binary","u":"/guides/nwaku/build-source","h":"#run-the-binary","p":159},{"i":170,"t":"Run the tests for Waku: make test Congratulations! You have successfully built the nwaku binary from the source code. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Run test suite","u":"/guides/nwaku/build-source","h":"#run-test-suite","p":159},{"i":172,"t":"This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network. info You can configure a nwaku node to use multiple peer discovery mechanisms simultaneously.","s":"Configure Peer Discovery","u":"/guides/nwaku/configure-discovery","h":"","p":171},{"i":174,"t":"You can provide static peers to a nwaku node during startup using the staticnode configuration option. To connect to multiple peers on startup, repeat the staticnode option: ./build/wakunode2 \\ --staticnode=[PEER MULTIADDR 1] \\ --staticnode=[PEER MULTIADDR 2] For example, consider a nwaku node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003: ./build/wakunode2 \\ --staticnode=/ip4/0.0.0.0/tcp/60002/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H \\ --staticnode=/ip4/0.0.0.0/tcp/60003/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ","s":"Configure static peers","u":"/guides/nwaku/configure-discovery","h":"#configure-static-peers","p":171},{"i":176,"t":"To enable DNS Discovery in a nwaku node, use the following configuration options: dns-discovery: Enables DNS Discovery on the node (disabled by default). dns-discovery-url: URL for DNS node list in the format enrtree://@ where is the fully qualified domain name and is the base32 encoding of the compressed 32-byte public key that signed the list at that location. dns-discovery-name-server (optional): DNS name server IPs to query. You can repeat this option to provide multiple DNS name servers. ./build/wakunode2 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://[PUBLIC KEY]@[DOMAIN NAME] \\ --dns-discovery-name-server=[DNS NAME SERVER IP] info If you omit the dns-discovery-name-server option, nwaku will attempt to use the CloudFlare servers 1.1.1.1 and 1.0.0.1. For example, consider a nwaku node that enables DNS Discovery, connects to a DNS node list, and queries the IPs 8.8.8.8 and 8.8.4.4: ./build/wakunode2 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\ --dns-discovery-name-server=8.8.8.8 \\ --dns-discovery-name-server=8.8.4.4","s":"Configure DNS discovery","u":"/guides/nwaku/configure-discovery","h":"#configure-dns-discovery","p":171},{"i":178,"t":"To enable Discv5 in a nwaku node, use the following configuration options: discv5-discovery: Enables Discv5 on the node (disabled by default). discv5-bootstrap-node: ENR for Discv5 routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries. ./build/wakunode2 \\ --discv5-discovery=true \\ --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 1] \\ --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 2] For example, consider a nwaku node that enables Discv5 and bootstraps its routing table using a static ENR: ./build/wakunode2 \\ --discv5-discovery=true \\ --discv5-bootstrap-node=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw info When Discv5 is enabled and used with DNS Discovery, the nwaku node will attempt to bootstrap the Discv5 routing table by extracting ENRs from peers discovered through DNS.","s":"Configure Discv5","u":"/guides/nwaku/configure-discovery","h":"#configure-discv5","p":171},{"i":180,"t":"To enable Peer Exchange in a nwaku node, use the following configuration options: peer-exchange: Enables Peer Exchange on the node as a responder (disabled by default). peer-exchange-node (optional): Multiaddr for bootstrap node with the peer exchange protocol enabled. ./build/wakunode2 \\ --peer-exchange=true \\ --peer-exchange-node=[PEER MULTIADDR WITH EXCHANGE ENABLED] For example, consider two nwaku nodes configured as a server (peer exchange responder node) and client (node using peer exchange) on the same local host (IP: 0.0.0.0): Server: Nwaku Node with Peer Exchange Enabled ./build/wakunode2 --peer-exchange=true Client: Nwaku Node Bootstrapping with Peer Exchange ./build/wakunode2 \\ --tcp-port=30305 \\ --ports-shift=1 \\ --peer-exchange-node=/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLCe6zVqCS6KMqqRbbhyoJjfYZGr1Q3thTSbyKzibQkFR info nwaku provides a relay-peer-exchange option via libp2p for peer exchange, allowing network growth through neighbouring nodes. However, this feature can compromise security and network robustness, so we recommend only using it in high-trust environments.","s":"Configure peer exchange","u":"/guides/nwaku/configure-discovery","h":"#configure-peer-exchange","p":171},{"i":182,"t":"caution Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future. The @waku/react package provides components and UI adapters to integrate @waku/sdk into React applications effortlessly. This guide provides detailed steps for using @waku/react in your project.","s":"Build React DApps Using @waku/react","u":"/guides/js-waku/use-waku-react","h":"","p":181},{"i":184,"t":"First, set up a project using any production-grade React framework or an existing React application. For this guide, we will create a boilerplate using ViteJS: NPM Yarn npm create vite@latest [PROJECT DIRECTORY] -- --template react yarn create vite [PROJECT DIRECTORY] --template react Next, install the required packages for integrating @waku/sdk using your preferred package manager: NPM Yarn npm install @waku/react @waku/sdk protobufjs yarn add @waku/react @waku/sdk protobufjs","s":"Install the dependencies","u":"/guides/js-waku/use-waku-react","h":"#install-the-dependencies","p":181},{"i":186,"t":"In the main.jsx file, which serves as the entry point for a React app, we will set up the LightNodeProvider context provider to wrap the entire application within the Waku provider. Import the following on top of your file: src/main.jsx import { LightNodeProvider } from \"@waku/react\"; // Set the Light Node options const NODE_OPTIONS = { defaultBootstrap: true }; ReactDOM.createRoot(document.getElementById('root')).render( // Use the Light Node context provider , ) Next, create and start a Light Node using the useWaku() function within the App.jsx file: src/App.jsx import { useWaku } from \"@waku/react\"; function App() { // Create and start a Light Node const { node, error, isLoading } = useWaku(); // \"node\" is the created Light Node // \"error\" captures any error that occurs during node creation // \"isLoading\" indicates whether the node is still being created }","s":"Initialise the Waku provider","u":"/guides/js-waku/use-waku-react","h":"#initialise-the-waku-provider","p":181},{"i":188,"t":"Let's build a user interface for sending messages and viewing past messages, modify the App.jsx file with the following code block: src/App.jsx import { useState, useEffect } from 'react'; import { useWaku } from \"@waku/react\"; import { createEncoder, createDecoder } from \"@waku/sdk\"; import protobuf from 'protobufjs'; import './App.css' function App() { const [inputMessage, setInputMessage] = useState(\"\"); const [messages, setMessages] = useState([]); // Update the inputMessage state as the user input changes const handleInputChange = (e) => { setInputMessage(e.target.value); }; // Create and start a Light Node const { node, error, isLoading } = useWaku(); // Create a message encoder and decoder const contentTopic = \"/waku-react-guide/1/chat/proto\"; const encoder = createEncoder({ contentTopic }); const decoder = createDecoder(contentTopic); // Create a message structure using Protobuf const ChatMessage = new protobuf.Type(\"ChatMessage\") .add(new protobuf.Field(\"timestamp\", 1, \"uint64\")) .add(new protobuf.Field(\"message\", 2, \"string\")); // Send the message using Light Push const sendMessage = async () => {} return ( <>

Waku React Demo

{messages.map((message, index) => (
{new Date(message.timestamp).toUTCString()}
{message.message}
))}
) } export default App info In the code above, we also created a message encoder and decoder using the createEncoder() and createDecoder() functions, along with the application message structure with Protobuf. Next, modify the App.css file with the following code block: src/App.css #root { margin: 0 auto; } .chat-interface { display: flex; flex-direction: column; height: 100vh; border: 1px solid #ccc; } .chat-body { flex-grow: 1; overflow-y: auto; padding: 10px; } .message-text { background-color: #f1f1f1; color: #000; padding: 10px; margin-bottom: 10px; } .chat-footer { display: flex; padding: 10px; background-color: #f1f1f1; align-items: center; } #message-input { flex-grow: 1; border-radius: 4px; padding: 10px; margin-right: 10px; } .send-button { background-color: #007bff; border-radius: 4px; }","s":"Build the application interface","u":"/guides/js-waku/use-waku-react","h":"#build-the-application-interface","p":181},{"i":190,"t":"To send messages in our application, we need to modify the sendMessage() function to serialize user input into our Protobuf structure and push it to the network using the useLightPush() function: src/App.jsx import { useLightPush } from \"@waku/react\"; function App() { // Bind push method to a node and encoder const { push } = useLightPush({ node, encoder }); // Send the message using Light Push const sendMessage = async () => { if (!push || inputMessage.length === 0) return; // Create a new message object const timestamp = Date.now(); const protoMessage = ChatMessage.create({ timestamp: timestamp, message: inputMessage }); // Serialise the message and push to the network const payload = ChatMessage.encode(protoMessage).finish(); const { recipients, errors } = await push({ payload, timestamp }); // Check for errors if (errors.length === 0) { setInputMessage(\"\"); console.log(\"MESSAGE PUSHED\"); } else { console.log(errors); } }; }","s":"Send messages using light push","u":"/guides/js-waku/use-waku-react","h":"#send-messages-using-light-push","p":181},{"i":192,"t":"To display messages in our application, we need to use the useFilterMessages() function to create a Filter subscription, receive incoming messages, and render them in our interface: src/App.jsx import { useFilterMessages } from \"@waku/react\"; function App() { // Receive messages from Filter subscription const { messages: filterMessages } = useFilterMessages({ node, decoder }); // Render the list of messages useEffect(() => { setMessages(filterMessages.map((wakuMessage) => { if (!wakuMessage.payload) return; return ChatMessage.decode(wakuMessage.payload); })); }, [filterMessages]); }","s":"Receive messages using filter","u":"/guides/js-waku/use-waku-react","h":"#receive-messages-using-filter","p":181},{"i":194,"t":"To display messages from the past, we need to retrieve them from the Store protocol using the useStoreMessages() function when our application initialises and then render them alongside newly received messages: src/App.jsx import { useFilterMessages, useStoreMessages } from \"@waku/react\"; function App() { // Query Store peers for past messages const { messages: storeMessages } = useStoreMessages({ node, decoder }); // Receive messages from Filter subscription const { messages: filterMessages } = useFilterMessages({ node, decoder }); // Render both past and new messages useEffect(() => { const allMessages = storeMessages.concat(filterMessages); setMessages(allMessages.map((wakuMessage) => { if (!wakuMessage.payload) return; return ChatMessage.decode(wakuMessage.payload); })); }, [filterMessages, storeMessages]); } info To explore the available Store query options, have a look at the Retrieve Messages Using Store Protocol guide. tip You have successfully integrated @waku/sdk into a React application using the @waku/react package. Have a look at the web-chat example for a working demo and the Building a Tic-Tac-Toe Game with Waku tutorial to learn more.","s":"Retrieve messages using store","u":"/guides/js-waku/use-waku-react","h":"#retrieve-messages-using-store","p":181},{"i":196,"t":"How can I run a Waku node? Check out the Run Nwaku with Docker Compose guide to learn the simplest and fastest way to run a node. You can also check the comprehensive Run a Nwaku Node guide to explore other options like downloading binaries and building from source. What are the system requirements for running a node? We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient. How can I interact with my running nwaku node? You can interact with a running nwaku node using the REST API interface or the JavaScript Waku SDK. How can I view the logs of a nwaku node running in Docker? To check your node logs in Docker, use the command: \"docker-compose logs -f nwaku\" What configuration methods are available for nwaku nodes? You can configure Nwaku nodes using command line options and flags, environment variables, and TOML configuration files. Check out the Node Configuration Methods guide to understand their usage and priority. How can I configure my nwaku node before running? Check out the Node Configuration Options guide for available node configuration options, their default values and descriptions. For examples of common configuration use cases, visit the Node Configuration Examples guide. What peer discovery mechanisms are available for nwaku nodes, and how can I configure them? You can configure peer discovery for nwaku nodes through options like Static Peers, DNS Discovery, DiscV5, and Peer Exchange. Check out the Configure Peer Discovery guide for setting up your node. How do I find my nwaku node's addresses for peer discovery? The node listening and ENR addresses can be found through the node's logs and REST API. Check out the Find the node addresses section to understand how to locate your node addresses.","s":"Nwaku FAQ","u":"/guides/nwaku/faq","h":"","p":195},{"i":198,"t":"Waku nodes can be configured using a combination of the following methods: Command line options and flags Environment variables TOML configuration files (currently the only supported format) Default values info Take note of the precedence order: Each configuration method overrides the one below it (e.g., command line options override environment variables and configuration files).","s":"Node Configuration Methods","u":"/guides/nwaku/config-methods","h":"","p":197},{"i":200,"t":"Node configuration is primarily done using command line options, which override other methods. Specify configuration options by providing them in this format after the binary name: ./build/wakunode2 --tcp-port=65000 When running your node with Docker, provide the command line options after the image name in this format: docker run statusteam/nim-waku --tcp-port=65000","s":"Command line options","u":"/guides/nwaku/config-methods","h":"#command-line-options","p":197},{"i":202,"t":"Nodes can be configured using environment variables by prefixing the variable name with WAKUNODE2_ and using the configuration option in SCREAMING_SNAKE_CASE format. To set the tcp-port configuration, the wakunode2 binary should be called in this format: WAKUNODE2_TCP_PORT=65000 ./build/wakunode2 When running your node with Docker, start the node using the -e command option: docker run -e \"WAKUNODE2_TCP_PORT=65000\" statusteam/nim-waku info This is the second configuration method in order of precedence. Command Line Options override environment variables.","s":"Environment variables","u":"/guides/nwaku/config-methods","h":"#environment-variables","p":197},{"i":204,"t":"Nodes can be configured using a configuration file following the TOML format: TOML Config File log-level = \"DEBUG\" tcp-port = 65000 topic = [\"/waku/2/default-waku/proto\"] metrics-logging = false The config-file configuration option lets you specify the configuration file path: ./build/wakunode2 --config-file=[TOML CONFIGURATION FILE] You can also specify the configuration file via environment variables: # Using environment variables WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE] ./build/wakunode2 # Using environment variables with Docker docker run -e \"WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE]\" statusteam/nim-waku info This is the third configuration method in order of precedence. Command Line Options and Environment Variables override configuration files.","s":"Configuration files","u":"/guides/nwaku/config-methods","h":"#configuration-files","p":197},{"i":206,"t":"The default configuration is used when no other options are specified. By default, a nwaku node does the following: Generate a new Node Key and PeerID. Listen for incoming libp2p connections on the default TCP port (60000). Subscribe to the default Pub/Sub topic (/waku/2/default-waku/proto). Enable the Relay protocol for relaying messages. Enable the Store protocol as a client, allowing it to query peers for historical messages but not store any message itself. To see the default values of all configuration options, run wakunode2 --help: ./build/wakunode2 --help tip To explore the available node configuration options, have a look at the Node Configuration Options guide.","s":"Default configuration values","u":"/guides/nwaku/config-methods","h":"#default-configuration-values","p":197},{"i":208,"t":"This guide provides detailed steps to configure a nwaku node for different use cases.","s":"Node Configuration Examples","u":"/guides/nwaku/configure-nwaku","h":"","p":207},{"i":210,"t":"To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms: Configure Static Peers Configure DNS Discovery Configure Discv5 Configure Peer Exchange","s":"Connect to other peers","u":"/guides/nwaku/configure-nwaku","h":"#connect-to-other-peers","p":207},{"i":212,"t":"You can set up an IPv4 DNS domain name that resolves to the public IPv4 address of a node using the dns4-domain-name option. This allows the node's publicly announced multiaddrs to use the /dns4 scheme. ./build/wakunode2 --dns4-domain-name=[DOMAIN NAME] For example, consider the domain name nwakunode.com, which resolves to a nwaku node: ./build/wakunode2 --dns4-domain-name=nwakunode.com Browser nodes can only connect to nodes with a domain name and secure WebSocket (wss) configured. These nodes will generate a discoverable ENR with /wss as the multiaddr and /dns4 as the domain name. This configuration is essential for verifying domain certificates when establishing a secure connection. info This example describes configuring a domain name that resolves to your node's IP address and is unrelated to DNS Discovery. tip You can use the domain name provided by your cloud provider to configure the domain name for your node.","s":"Configure a domain name","u":"/guides/nwaku/configure-nwaku","h":"#configure-a-domain-name","p":207},{"i":214,"t":"To enable message caching and serve them to network peers, enable the Store protocol using the following configuration options: store: Enables storing messages to serve them to peers (disabled by default). store-message-retention-policy: Retention policy of the store node (how long messages will be stored). Three different retention policies are supported: Time retention policy: time: (e.g., time:14400) Capacity retention policy: capacity: (e.g, capacity:25000) Size retention policy: size: (e.g, size:512MB or size:10GB) Set this option to none to disable the retention policy. If you omit this option, it will default to time:172800 (48 hours). store-message-db-url: Database connection URL for storing messages in the SQLAlchemy database URL format. Setting this option to an empty string will instruct the node to use the fallback in-memory message store. If you omit this option, it will default to sqlite://store.sqlite3. ./build/wakunode2 \\ --store=true \\ --store-message-retention-policy=[MESSAGE RETENTION POLICY] \\ --store-message-db-url=[DATABASE CONNECTION URL] For example, consider a nwaku node that is configured to be a Store protocol and retain messages received in the last 21600 seconds (6 hours): ./build/wakunode2 \\ --store=true \\ --store-message-retention-policy=time:21600 \\ --store-message-db-url=sqlite://store.sqlite3 You can configure nwaku as a Store client using the storenode option. This allows the node to query peers for historical messages but not store any message itself. ./build/wakunode2 --storenode=[STORE PEER MULTIADDR] For example, consider a nwaku node that does not store messages but can query peers for historical messages: ./build/wakunode2 --storenode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV","s":"Configure store protocol and message store","u":"/guides/nwaku/configure-nwaku","h":"#configure-store-protocol-and-message-store","p":207},{"i":216,"t":"Nodes generate new random key pairs at each boot, leading to different multiaddrs. To maintain consistency, you can use a pre-generated private key with the nodekey option: ./build/wakunode2 --nodekey=[NODE PRIVATE KEY] This option takes a Secp256k1 private key (64-char hex string). On Linux, you can use the OpenSSL rand command for a pseudo-random 32-byte hex string: openssl rand -hex 32 # 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 On Linux, you can create a reusable key file using OpenSSL. To get the 32-byte private key in hex format, use the ecparam command and some standard utilities: # Generate key file openssl ecparam -genkey -name secp256k1 -out my_private_key.pem # Extract 32-byte private key openssl ec -in my_private_key.pem -outform DER | tail -c +8 | head -c 32| xxd -p -c 32 # read EC key # writing EC key # 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 You can use the output 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 as a Node Key for nwaku: ./build/wakunode2 --nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8","s":"Generate and configure a node key","u":"/guides/nwaku/configure-nwaku","h":"#generate-and-configure-a-node-key","p":207},{"i":218,"t":"WebSocket is the only transport method browser nodes support using @waku/sdk. To enable WebSocket in nwaku to serve browser peers, use the following configuration options: websocket-support: Enables WebSocket (ws) on the node (disabled by default). websocket-port (optional): WebSocket listening port. If you omit this option, it will default to 8000. websocket-secure-support: Enables Secure WebSocket (wss) on the node (disabled by default). websocket-secure-key-path: Secure WebSocket key path. websocket-secure-cert-path: Secure WebSocket Certificate path. ./build/wakunode2 \\ --websocket-support=true \\ --websocket-port=[WEBSOCKET LISTENING PORT] \\ --websocket-secure-support=true \\ --websocket-secure-key-path=[SECURE WEBSOCKET KEY PATH] \\ --websocket-secure-cert-path=[SECURE WEBSOCKET CERTIFICATE PATH] For example, consider a nwaku node that enabled WebSocket (unencrypted) for local testing on port 8001: ./build/wakunode2 \\ --websocket-support=true \\ --websocket-port=8001 Consider a nwaku node that enabled Secure WebSocket (encrypted) using its key and certificate (privkey.pem and fullchain.pem) on port 8002: ./build/wakunode2 \\ --websocket-secure-support=true \\ --websocket-secure-key-path=privkey.pem \\ --websocket-secure-cert-path=fullchain.pem \\ --websocket-port=8002 tip You can use Let's Encrypt or Certbot to generate a valid certificate for your nwaku node: sudo certbot certonly -d ","s":"Configure WebSocket transport","u":"/guides/nwaku/configure-nwaku","h":"#configure-websocket-transport","p":207},{"i":220,"t":"Nwaku provides a REST API to interact with the node and Waku Network. To enable the REST API, use the following configuration options: rest: Enables the REST API server on the node (disabled by default). rest-address (optional): Listening address of the REST API server. If you omit this option, it will default to 127.0.0.1. rest-port (optional): Listening port of the REST API server. If you omit this option, it will default to 8645. rest-relay-cache-capacity (optional): Capacity of the Relay REST API message cache. If you omit this option, it will default to 30. rest-admin (optional): Enables access to REST admin API (disabled by default). rest-private (optional): Enables access to REST private API (disabled by default). ./build/wakunode2 \\ --rest=true \\ --rest-address=[REST SERVER LISTENING ADDRESS] \\ --rest-port=[REST SERVER LISTENING PORT] \\ --rest-relay-cache-capacity=[MESSAGE CACHE CAPACITY] \\ --rest-admin=[true|false] \\ --rest-private=[true|false] For example, consider a nwaku node that enabled the REST API server on port 9000: ./build/wakunode2 \\ --rest=true \\ --rest-port=9000 \\ --rest-address=127.0.0.1 Consider a nwaku node that enabled the REST admin and private API with a message cache capacity of 100: ./build/wakunode2 \\ --rest=true \\ --rest-admin=true \\ --rest-private=true \\ --rest-relay-cache-capacity=100","s":"Configure REST API server","u":"/guides/nwaku/configure-nwaku","h":"#configure-rest-api-server","p":207},{"i":222,"t":"To enable nwaku to serve light clients, enable the Filter protocol using filter option: ./build/wakunode2 --filter=true You can configure nwaku as a Filter client using the filternode and filter-timeout options. This allows the node to request content filtering of messages from peers. ./build/wakunode2 \\ --filternode=[FILTER PEER MULTIADDR] \\ --filter-timeout=[FILTER PEER TIMEOUT] For example, consider a nwaku node that requests content filtering of messages from peers with a timeout of 21600 seconds (6 hours): ./build/wakunode2 \\ --filternode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV \\ --filter-timeout=21600 info If you omit the filter-timeout option, it will default to 14400 seconds (4 hours).","s":"Configure filter protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-filter-protocol","p":207},{"i":224,"t":"To enable nwaku to serve light clients, enable the Light Push protocol using the lightpush option: ./build/wakunode2 --lightpush=true You can configure nwaku as a Light Push client using the lightpushnode option. This allows the node to request lightpush of published messages from peers. ./build/wakunode2 --lightpushnode=[LIGHT PUSH PEER MULTIADDR] For example, consider a nwaku node that requests lightpush of published messages from peers: ./build/wakunode2 --lightpushnode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV","s":"Configure light push protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-light-push-protocol","p":207},{"i":226,"t":"When using a reverse proxy server for SSL/TLS encryption, you only want to announce the proxy server's IP or domain. Nwaku provides the ext-multiaddr-only and ext-multiaddr options for specifying published multiaddr: ./build/wakunode2 \\ --ext-multiaddr-only=true \\ --ext-multiaddr=[MULTIADDR TO PUBLISH] info The ext-multiaddr-only option takes precedence over the nat and dns4-domain-name options, using the values provided by the ext-multiaddr option instead.","s":"Run nwaku behind a reverse proxy","u":"/guides/nwaku/configure-nwaku","h":"#run-nwaku-behind-a-reverse-proxy","p":207},{"i":228,"t":"info When starting the node, nwaku will display all the public listening and discovery addresses at the INFO log level. You can find the addresses of a running node through its logs or by calling the Get node info endpoint of the REST API.","s":"Find Your Node Address","u":"/guides/nwaku/find-node-address","h":"","p":227},{"i":230,"t":"Look for the log entry that begins with Listening on, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 Listening on topics=\"waku node\" tid=1623445 file=waku_node.nim:922 full=[/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn][/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn] # Listening TCP transport address /ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn # Listening WebSocket address /ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn","s":"Listening addresses","u":"/guides/nwaku/find-node-address","h":"#listening-addresses","p":227},{"i":232,"t":"A nwaku node can encode its addressing information in an Ethereum Node Record (ENR).","s":"Discoverable ENR addresses","u":"/guides/nwaku/find-node-address","h":"#discoverable-enr-addresses","p":227},{"i":234,"t":"Look for the log entry that begins with DNS: discoverable ENR, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 DNS: discoverable ENR topics=\"waku node\" tid=1623445 file=waku_node.nim:923 enr=enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB # ENR the node addresses are encoded in enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB","s":"ENR for DNS discovery","u":"/guides/nwaku/find-node-address","h":"#enr-for-dns-discovery","p":227},{"i":236,"t":"Look for the log entry that begins with Discv5: discoverable ENR, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 Discv5: discoverable ENR topics=\"waku node\" tid=1623445 file=waku_node.nim:924 enr=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw # ENR the node addresses are encoded in enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw Congratulations! You have successfully found the listening and discoverable addresses for your nwaku node. Have a look at the Configure Peer Discovery](/guides/nwaku/configure-discovery) guide to learn how to discover and connect with peers in the network.","s":"ENR for Discv5","u":"/guides/nwaku/find-node-address","h":"#enr-for-discv5","p":227},{"i":238,"t":"This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.","s":"Run Nwaku in a Docker Container","u":"/guides/nwaku/run-docker","h":"","p":237},{"i":240,"t":"Ensure Docker is installed on your system using the appropriate instructions provided in the Docker documentation. info We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.","s":"Prerequisites","u":"/guides/nwaku/run-docker","h":"#prerequisites","p":237},{"i":242,"t":"The Nwaku Docker images are available on the Docker Hub public registry under the statusteam/nim-waku repository. Please visit statusteam/nim-waku/tags for images of specific releases.","s":"Get Docker image","u":"/guides/nwaku/run-docker","h":"#get-docker-image","p":237},{"i":244,"t":"You can also build the Docker image locally: # Clone the repository git clone --recurse-submodules https://github.com/waku-org/nwaku cd nwaku # Build docker image make docker-image","s":"Build Docker image","u":"/guides/nwaku/run-docker","h":"#build-docker-image","p":237},{"i":246,"t":"Run nwaku in a new Docker container: docker run [OPTIONS] [IMAGE] [ARG...] OPTIONS are your selected Docker options IMAGE is the image and tag you pulled from the registry or built locally ARG... is the list of arguments for your node configuration options Run nwaku using the most typical configuration: docker run -i -t -p 60000:60000 -p 9000:9000/udp statusteam/nim-waku:v0.20.0 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\ --discv5-discovery=true \\ --nat=extip:[YOUR PUBLIC IP] # or, if you are behind a nat: --nat=any To find your public IP, use: dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{ print $2}' info We recommend using explicit port mappings (-p) when exposing ports accessible from outside the host (listening and discovery ports, API servers). tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord. Congratulations! You have successfully built and started a nwaku node in a Docker container. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Run Docker container","u":"/guides/nwaku/run-docker","h":"#run-docker-container","p":237},{"i":248,"t":"If you are currently using Nwaku, running an old version and want to upgrade your node, please follow the below migration instructions for each target release newer than your current running version in ascending order. For example, if you are interested in the version v0.32.0 and are currently running v0.30.0, follow the instructions for v0.31.0 and then the ones for v0.32.0","s":"Upgrade Instructions","u":"/guides/nwaku/upgrade-instructions","h":"","p":247},{"i":250,"t":"v0.32.0 The --protected-topic CLI config was deprecated and is replaced by the new --protected-shard configuration. Instead of configuring topic:public_key you will now need to configure shard:public_key For example, if you used to run your node with --protected-topic=\"waku/2/rs/3/4:your_public_key\" you will need to replace this configuration for --protected-shard=\"4:your_public_key\" v0.31.0 Named sharding was deprecated in this version. This means that pubsub topics will only be supported if they comply with the static sharding format: /waku/2/rs// In order to migrate your existing application, you need to: Make sure that your clients are sending messages to pubsub topics in the required format. Check that in your interactions with Nwaku's REST API or when using js-waku, the configured pubsub topics follow the static sharding format defined above. When running a node with the --pubsub-topic CLI flag, the values provided should comply with the static sharding format. If your application relies on nodes or clients that may not be updated immediately, keep your node on an older version while subscribing to both the current pubsub topic and the new pubsub topic that will comply with the static sharding format. In that case, you can keep backward compatibility for a migration period.","s":"Target Releases","u":"/guides/nwaku/upgrade-instructions","h":"#target-releases","p":247},{"i":252,"t":"nwaku-compose is a ready-to-use Docker Compose setup that configures the following automatically: nwaku node running Relay and Store protocols with RLN enabled. Simple frontend to interact with the node and Waku network to send and receive messages. Grafana metrics dashboard for advanced users and node operators to monitor the node.","s":"Run Nwaku with Docker Compose","u":"/guides/nwaku/run-docker-compose","h":"","p":251},{"i":254,"t":"tip Check out the Waku Node Operator Cheatsheet to learn how to easily run, monitor, and interact with a node.","s":"Video tutorial","u":"/guides/nwaku/run-docker-compose","h":"#video-tutorial","p":251},{"i":256,"t":"Git or GitHub Desktop Docker and Docker Compose Ethereum Sepolia HTTPS Endpoint Wallet with Sepolia Ethereum (~0.6 Sepolia ETH) A password to protect your RLN membership info We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.","s":"Prerequisites","u":"/guides/nwaku/run-docker-compose","h":"#prerequisites","p":251},{"i":258,"t":"git clone https://github.com/waku-org/nwaku-compose cd nwaku-compose","s":"Clone the repository","u":"/guides/nwaku/run-docker-compose","h":"#clone-the-repository","p":251},{"i":260,"t":"Docker Compose reads the .env file from the filesystem. You can use .env.example as a template to provide the configuration values. The recommended process for working with .env files is to duplicate .env.example, rename it as .env, and then make the necessary value edits. cp .env.example .env ${EDITOR} .env caution Ensure that you do NOT include any secrets in the .env.example file, as it could accidentally be shared in your Git repository.","s":"Configure the setup","u":"/guides/nwaku/run-docker-compose","h":"#configure-the-setup","p":251},{"i":262,"t":"The RLN membership is your access key to The Waku Network. Its registration is done on-chain, allowing your nwaku node to send messages decentralised and privately, respecting some rate limits. Other peers won't relay messages that exceed the rate limit. This command registers your membership and saves it in the keystore/keystore.json file. You should have Docker running at this step: ./register_rln.sh tip If you only want to relay traffic without sending messages to the network, you don't need to register for RLN membership.","s":"Register for RLN membership","u":"/guides/nwaku/run-docker-compose","h":"#register-for-rln-membership","p":251},{"i":264,"t":"Launch all the processes: nwaku node, database for storing messages, and Grafana for metrics with the following command. Your RLN membership is loaded into nwaku under the hood: docker-compose up -d View the logs of the node to confirm that it is running correctly: docker-compose logs -f nwaku","s":"Run the node","u":"/guides/nwaku/run-docker-compose","h":"#run-the-node","p":251},{"i":266,"t":"Visit http://localhost:3000/d/yns_4vFVk/nwaku-monitoring to view your node metrics in real time. tip To access Grafana from outside your machine, remove 127.0.0.1 and open the port. Consider setting up a password for Grafana to ensure security.","s":"Monitor the node","u":"/guides/nwaku/run-docker-compose","h":"#monitor-the-node","p":251},{"i":268,"t":"Your nwaku node provides a REST API on port 8645 for interacting with it: # Get nwaku version curl --location 'http://127.0.0.1:8645/debug/v1/version' # Get nwaku info curl --location 'http://127.0.0.1:8645/debug/v1/info' Send a message to a contentTopic, which all subscribers will receive. Please note that the payload is encoded in base64. curl --location 'http://127.0.0.1:8645/relay/v1/auto/messages' \\ --header 'Content-Type: application/json' \\ --data '{ \"payload\": \"'$(echo -n \"Hello Waku Network - from Anonymous User\" | base64)'\", \"contentTopic\": \"/my-app/2/chatroom-1/proto\" }' Retrieve messages sent to a contentTopic. Please note that this query can be made to any Store node within the network: curl --location 'http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true' \\ --header 'Accept: application/json' tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord. Congratulations! You have successfully started a nwaku node with RLN enabled using Docker Compose. Have a look at the Node Configuration Examples and Advanced Configuration guides to learn how to configure nwaku for different use cases.","s":"Interact with the node","u":"/guides/nwaku/run-docker-compose","h":"#interact-with-the-node","p":251},{"i":270,"t":"Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources. This guide provides detailed steps to download, build, configure, and connect a nwaku node to the Waku Network. It also includes interacting with the node and finding its addresses. info We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.","s":"Run a Nwaku Node","u":"/guides/nwaku/run-node","h":"","p":269},{"i":272,"t":"To run a node, you must have the nwaku binary. Nwaku provides multiple options for running a node: Run nwaku in Docker (recommended)​ We recommend using Docker Compose to run a node because it's the simplest and fastest way to configure and run one: Description Documentation Docker Compose Run a nwaku node with Docker Compose Run Nwaku with Docker Compose Docker Container Run a nwaku node in a Docker Container Run Nwaku in a Docker Container Download the binary​ Description Documentation Precompiled Binary Download a precompiled binary of the nwaku node Download Nwaku Binary Nightly Release Try the latest nwaku updates without compiling the binaries Download Nightly Release Build the binary​ Description Documentation Build from Source Build the node from the nwaku source code Build Nwaku from Source tip You can run the nwaku binaries and Docker images on cloud service providers like Google Cloud, Microsoft Azure, Amazon Web Services, and DigitalOcean.","s":"Get the node binary","u":"/guides/nwaku/run-node","h":"#get-the-node-binary","p":269},{"i":274,"t":"Once you have gotten the nwaku binary, run it using the default configuration: # Run the Docker Compose docker-compose up -d # Run the standalone binary ./build/wakunode2 tip To learn how to customise the configuration of a nwaku node, have a look at the Node Configuration Methods and Node Configuration Examples guides.","s":"Run the node","u":"/guides/nwaku/run-node","h":"#run-the-node","p":269},{"i":276,"t":"To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms: Description Documentation Static Peers Configure the bootstrap nodes that nwaku should establish connections upon startup Configure Static Peers DNS Discovery Enable nwaku to bootstrap nodes using the DNS Discovery mechanism Configure DNS Discovery Discv5 Enable nwaku to discover peers using the Discv5 mechanism Configure Discv5 Peer Exchange Enable Peer Exchange protocol for light nodes to request peers from your nwaku node Configure Peer Exchange tip We suggest configuring WebSocket transport for your node to enable support and serving of browser peers using @waku/sdk.","s":"Bootstrap the node","u":"/guides/nwaku/run-node","h":"#bootstrap-the-node","p":269},{"i":278,"t":"You can interact with a running nwaku node through the REST API, such as querying the node information using the Get node info endpoint: Request Response curl --location 'http://127.0.0.1:8645/debug/v1/info' \\ --header 'Accept: application/json' { \"listenAddresses\": [ \"/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmUbPquFQqje3jiqoB5YoiUbBya59NB4qqEzeiTNGHeA6w\" ], \"enrUri\": \"enr:-Iu4QCQZXZDb_JsYmLoYor0F5E_95HbIywgO_wgx2rIdDbmCJZkTzmlCr0wmMzV47lgik_tVwww5mIng90Ris83TisMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQPszztG-Ev52ZB7tk0jF8s6Md4KvyY_rhzNZokaaB_ABIN0Y3CC6mCFd2FrdTIB\" } info The listenAddresses field stores the node's listening addresses, while the enrUri field stores the discoverable ENR URI for peer discovery.","s":"Interact with the node","u":"/guides/nwaku/run-node","h":"#interact-with-the-node","p":269},{"i":280,"t":"You can check the health status of the node by calling the Get node health status endpoint of the REST API: Request Response curl --location 'http://127.0.0.1:8645/health' \\ --header 'Accept: text/plain' Node is healthy tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord. Congratulations! You have successfully started, configured, and connected a nwaku node to the Waku Network. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Check the node health status","u":"/guides/nwaku/run-node","h":"#check-the-node-health-status","p":269},{"i":282,"t":"Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.","s":"Content Topics","u":"/learn/concepts/content-topics","h":"","p":281},{"i":284,"t":"Here is the recommended format for content topics: /{application-name}/{version}/{content-topic-name}/{encoding} application-name: This is the unique name of your decentralised application (DApp) to prevent conflicts with other DApps. version: Typically starting at 1, this field helps track breaking changes in your messages. content-topic-name: The specific name of the content topic used for filtering. encoding: The message encoding or serialisation format, with Protocol Buffers (proto) being the recommended choice. For example, if your DApp is called SuperCrypto and it allows users to receive notifications and send private messages, you can consider using the following content topics: /supercrypto/1/notification/proto /supercrypto/1/private-message/proto tip While you can choose any encoding format for your Content Topic, we highly recommend using Protocol Buffers (proto) because of its efficiency. Choosing a lightweight format ensures optimal performance of your DApp.","s":"Naming format","u":"/learn/concepts/content-topics","h":"#naming-format","p":281},{"i":286,"t":"When choosing a content topic, it is essential to consider the privacy implications. Here are several factors to keep in mind:","s":"Naming considerations","u":"/learn/concepts/content-topics","h":"#naming-considerations","p":281},{"i":288,"t":"The Filter, Store, and Light Push protocols share content topics with peers, allowing them to link IP and content topic interests. The Relay protocol, using GossipSub, provides recipient anonymity, which can be compromised if the content topic exposes user information. For example, instead of using Personally Identifiable Information (PII) in the content topic (e.g., a public key), you can create buckets (e.g., based on the first 4 bytes of the public key hash). info Waku is developing privacy-preserving features like Anonymous Filter Subscription for the Filter protocol and Anonymous Query for the Store protocol to hide content topics from potential adversaries.","s":"Protocols disclose content topics to peers","u":"/learn/concepts/content-topics","h":"#protocols-disclose-content-topics-to-peers","p":281},{"i":290,"t":"You can increase k-anonymity within the network by using a unified content topic across the entire application or targeting specific features like notifications or private messages, allowing multiple users to share it. We recommend switching functionality using the Protocol Buffer (proto) message format. By doing so, applications can retain a high granularity and functionality while using a single content topic, preserving user privacy. For example: message NotificationPayload { ... } message FeatureAbcPayload { ... } // By default, all fields in protobuf are optional so only field may be encoded at a time message Payload { NotificationPayload notification = 1; FeatureAbcPayload feature_abc = 2; }","s":"Increasing k-anonymity preserves user anonymity","u":"/learn/concepts/content-topics","h":"#increasing-k-anonymity-preserves-user-anonymity","p":281},{"i":292,"t":"When an application uses a single content topic, all users using request/response protocols (Filter, Store) receive all its messages. For heavy traffic, developers can create buckets by hashing a unique identifier (e.g., recipient's ID, public key, or app domain topic) and adding its first byte to the content topic, like /my-app/0/a/proto. This approach divides traffic into multiple topics, reducing the messages users have to download. Developers can add more first bytes to the content topic over time to improve efficiency and privacy based on messages and user needs. info The k value of k-anonymity equals the number of IDs for which the first character of the hash is \"a\". For example, using a single content topic in an application with 10,000 users results in k = 10,000. However, using the hash ID's first character, k reduces to 10,000 / 16 = 625.","s":"Creating buckets help in distributing traffic","u":"/learn/concepts/content-topics","h":"#creating-buckets-help-in-distributing-traffic","p":281},{"i":294,"t":"Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more. Pros​ Decentralised with random sampling from a global view. Continuously researched and improved. Cons​ Requires lots of connections and involves frequent churn. Relies on User Datagram Protocol (UDP), which is not supported in web browsers.","s":"Discv5","u":"/learn/concepts/discv5","h":"","p":293},{"i":296,"t":"DNS Discovery protocol is executed. Alice retrieves Bob's ENR (Ethereum Node Record) from DNS Server. Alice executes the Discv5 protocol with Bob using UDP connection details from ENR. Bob returns Carol's, David's and Erin's ENRs to Alice. Alice decodes ENRs and extracts the details of Carol, David, and Erin's TCP and UDP connections. Alice executes the Discv5 protocol with Carol using UDP connection details from ENR. Carol returns Frank's, Gwen's and Harry's ENRs to Alice. Alice decodes ENRs and extracts Frank's, Gwen's and Harry's TCP and UDP connection details. Alice selects to dial David, Frank and Gwen. Alice dials David, Frank and Gwen over libp2p using TCP connection details from ENRs.","s":"Overview","u":"/learn/concepts/discv5","h":"#overview","p":293},{"i":298,"t":"Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialised purposes and contribute to the robust functionality of Waku, forming its foundation.","s":"Network Domains","u":"/learn/concepts/network-domains","h":"","p":297},{"i":300,"t":"Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as Discv5 and Peer Exchange. These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.","s":"Discovery domain","u":"/learn/concepts/network-domains","h":"#discovery-domain","p":297},{"i":302,"t":"GossipSub derives its name from the practice within Pub/Sub networks where peers gossip about the messages they have encountered, thus establishing a message delivery network. Waku employs gossiping through Relay to distribute messages across the network. Additionally, Waku introduces RLN Relay, an experimental mechanism that combines privacy preservation and economic spam protection.","s":"Gossip domain","u":"/learn/concepts/network-domains","h":"#gossip-domain","p":297},{"i":304,"t":"Waku provides a set of protocols to optimise its performance in resource-limited environments like low bandwidth or mostly offline scenarios for multiple purposes. Store enables the retrieval of historical messages. Filter efficiently retrieves a subset of messages to conserve bandwidth. Light Push facilitates message publication for nodes with limited bandwidth and short connection windows.","s":"Request/response domain","u":"/learn/concepts/network-domains","h":"#requestresponse-domain","p":297},{"i":306,"t":"Here is a diagram illustrating the interaction between different protocols within the Waku Network. The Pub/Sub topic pubtopic1 serves as a means of routing messages (the network employs a default Pub/Sub topic) and indicates that it is subscribed to messages on that topic for a relay. Node D serves as a Store and is responsible for storing messages. Node A creates a WakuMessage msg1 with Content Topic contentTopic1. Node F requests to get messages filtered by Pub/Sub topic pubtopic1 and Content Topic contentTopic1. Node D subscribes F to this filter and will forward messages that match that filter in the future. Node A publishes msg1 on pubtopic1. The message is sent from Node A to Node B and then forwarded to Node D. Node D, upon receiving msg1, stores the message for future retrieval by other nodes and forwards it to Node C. Node D also pushes msg1 to Node F, informing it about the arrival of a new message. At a later time, Node E comes online and requests messages matching pubtopic1 and contentTopic1 from Node D. Node D responds with msg1 and potentially other messages that match the query.","s":"Overview of protocol interaction","u":"/learn/concepts/network-domains","h":"#overview-of-protocol-interaction","p":297},{"i":308,"t":"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network. info Peer Exchange enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood. Pros​ Low resource requirements. Decentralised with random sampling of nodes from a global view using Discv5. Cons​ Decreased anonymity. Imposes additional load on responder nodes.","s":"Peer Exchange","u":"/learn/concepts/peer-exchange","h":"","p":307},{"i":310,"t":"DNS Discovery protocol is executed. Alice retrieves Bob's websocket multiaddr from DNS Server. Alice dials Bob using libp2p protocols. Alice executes a Peer Exchange query to Bob. Bob returns Carol's and David's ENR to Alice. Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs. Alice dials Carol and David. Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network.","s":"Overview","u":"/learn/concepts/peer-exchange","h":"#overview","p":307},{"i":312,"t":"When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping. Once a connection is established, the node must actively seek out additional peers to have: Sufficient peers in the Relay mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed. Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections. Peers with specific capabilities: The node seeks out peers with specific capabilities, such as Store, Light Push, or Filter. This allows for targeted interactions and enhanced functionality based on the desired capabilities. Waku supports multiple peer discovery mechanisms, such as: Configuring Static Peers Peer Discovery via DNS Discv5 Ambient Peer Discovery Peer Exchange","s":"Peer Discovery","u":"/learn/concepts/peer-discovery","h":"","p":311},{"i":314,"t":"Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:","s":"Protocols","u":"/learn/concepts/protocols","h":"","p":313},{"i":316,"t":"Relay protocol employs a Pub/Sub architecture to facilitate the sending and receiving of messages among peers. It extends the libp2p GossipSub protocol to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. It also scales the Waku Network to accommodate many nodes efficiently.","s":"Relay","u":"/learn/concepts/protocols","h":"#relay","p":313},{"i":318,"t":"RLN Relay protocol extends the Relay protocol by using Rate Limit Nullifiers (RLN) to provide efficient and economic spam-prevention. It enforces a rate limit on messages over time for all peers in the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the RLN Relay blog post.","s":"RLN relay","u":"/learn/concepts/protocols","h":"#rln-relay","p":313},{"i":320,"t":"Filter protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network, particularly tailored for devices with limited bandwidth. info Filter protocol helps optimise bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages.","s":"Filter","u":"/learn/concepts/protocols","h":"#filter","p":313},{"i":322,"t":"Store protocol is responsible for storing messages relayed in the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection. info Using Relay and Filter protocols is recommended when a node is online, as Store does not guarantee data availability. The Store protocol is suitable for retrieving messages when connecting to the network, like when a DApp starts.","s":"Store","u":"/learn/concepts/protocols","h":"#store","p":313},{"i":324,"t":"Light Push is a Request/Response protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the Relay network. info While the Light Push protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation.","s":"Light push","u":"/learn/concepts/protocols","h":"#light-push","p":313},{"i":326,"t":"Waku Message specifies the structure and format of messages in the Waku Network. It includes the following attributes: content_topic attribute for content-based filtering. payload attribute containing the message data payload to be sent. meta attribute for conveying additional details to various protocols for application-specific processing. timestamp attribute signifying the time at which the message was generated by its sender. ephemeral attribute specifying whether the network should not store the message.","s":"Waku message","u":"/learn/concepts/protocols","h":"#waku-message","p":313},{"i":328,"t":"Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node. Pros​ Low latency. Low resource requirements. Cons​ Vulnerable to censorship: Node IPs can be blocked or restricted. Limited scalability: The number of nodes is fixed and cannot easily be expanded. Maintenance challenges: Updating the node list requires modifying the code, which can be cumbersome and involves releasing and deploying.","s":"Static Peers","u":"/learn/concepts/static-peers","h":"","p":327},{"i":330,"t":"Alice establishes connections with Bob and Carol using their node details, which are predefined (hard-coded) into Alice's node.","s":"Overview","u":"/learn/concepts/static-peers","h":"#overview","p":327},{"i":332,"t":"Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr. This bootstrapping method allows anyone to register and publish a domain name for the network, promoting increased decentralisation. Pros​ Low latency, low resource requirements. Easy bootstrap list updates by modifying the domain name, eliminating the need for code changes. Ability to reference a larger list of nodes by including other domain names in the code or ENR tree. Cons​ Vulnerable to censorship: Domain names can be blocked or restricted. Limited scalability: The listed nodes are at risk of being overwhelmed by receiving all queries. Also, operators must provide their ENR to the domain owner for listing.","s":"DNS Discovery","u":"/learn/concepts/dns-discovery","h":"","p":331},{"i":334,"t":"DNS lookup query to retrieve TXT data stored on example.com domain. enrtree-root is returned, and the value of e is the enr-root, the root hash of the node subtree. DNS lookup query to retrieve TXT data stored on .example.com domain. enrtree-branch is returned; this tree contains hashes of node subtrees. DNS lookup query to retrieve TXT data stored on DU...VQ.example.com domain, the first leaf of enrtree-branch. enr record is returned. Returned value is decoded, and peer connection details such as IP address and port are learned.","s":"Overview","u":"/learn/concepts/dns-discovery","h":"#overview","p":331},{"i":336,"t":"The following features are currently experimental and under research and initial implementation:","s":"Research","u":"/learn/research","h":"","p":335},{"i":338,"t":"We aim to enable an incentivised spam protection technique to enhance Relay by using Rate Limit Nullifiers (RLN). In this advanced method, peers are limited to a certain messaging rate per epoch, and an immediate financial penalty is enforced for spammers who break this rate. You can find more details in the RLN Relay blog post. We have prepared a PoC implementation of this method in JS: https://examples.waku.org/rln-js/","s":"Economic spam resistance","u":"/learn/research","h":"#economic-spam-resistance","p":335},{"i":340,"t":"Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: https://github.com/vacp2p/research/issues/148. In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivising the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in Store and Filter to protect against DoS attacks. Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: https://vac.dev/building-privacy-protecting-infrastructure You can also read more about the ongoing challenges the Waku team is working on here: https://github.com/waku-org/research","s":"Prevention of denial of service (DoS) and node incentivisation","u":"/learn/research","h":"#prevention-of-denial-of-service-dos-and-node-incentivisation","p":335},{"i":342,"t":"How can I start building my application using Waku? Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node. Does messaging on Waku require a gas fee? No, sending and receiving messages on Waku involves no gas fee. What encryption does Waku use? Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to use custom protocols or Waku message payload encryption methods freely. Where does Waku store the messages? Waku's Store protocol is designed to temporarily store messages within the network. However, Waku does not guarantee the message's availability and recommends using Codex for long-term storage. Can Waku only be used for wallet-to-wallet messaging? No, Waku is flexible and imposes no specific rules on identifiers. How does Waku differ from IPFS? Waku focuses on short, ephemeral, real-time time messages, while IPFS focuses on large, long-term data storage. Although there's an overlap between the two technologies, Waku does not currently support large data for privacy reasons. What are Rate Limiting Nullifiers (RLN)? Rate Limiting Nullifier is a zero-knowledge (ZK) protocol enabling spam protection in a decentralized network while preserving privacy. Each message must be accompanied by a ZK proof, which Relay nodes verify to ensure the publishers do not send more messages than they are allowed. The ZK proof does not leak any private information about message publishers - it only proves they are members of a set of users allowed to publish a certain number of messages per given time frame. How to start a Waku node? Follow the README instructions at nwaku-compose.","s":"Waku FAQ","u":"/learn/faq","h":"","p":341},{"i":344,"t":"Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery. Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended: TCP: By default, Waku nodes use TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes. Secure WebSocket: In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely. Other protocols like WebRTC, WebTransport, and QUIC have been researched and studied for potential integration. info Waku ensures compatibility and improved communication capabilities by following these recommended transports.","s":"Transports","u":"/learn/concepts/transports","h":"","p":343},{"i":346,"t":"Definitions and usage of the terminology used in the Waku ecosystem.","s":"Waku Docs Glossary","u":"/learn/glossary","h":"","p":345},{"i":348,"t":"Bootstrapping is the initial entry point of a node to the Waku Network. Once connected, other peer discovery methods can be employed to locate other peers in the network.","s":"Bootstrapping","u":"/learn/glossary","h":"#bootstrapping","p":345},{"i":350,"t":"A content topic is a string attached to messages to enable protocol-level features like selective message processing and retrieval based on specific criteria.","s":"Content topic","u":"/learn/glossary","h":"#content-topic","p":345},{"i":352,"t":"Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including Waku.","s":"Dappnode","u":"/learn/glossary","h":"#dappnode","p":345},{"i":354,"t":"Discv5 is a peer discovery mechanism using a Distributed Hash Table (DHT) to store ENR records, providing censorship resistance, load distribution, and enhanced network resilience.","s":"Discv5","u":"/learn/glossary","h":"#discv5","p":345},{"i":356,"t":"DNS discovery is a peer discovery mechanism that allows the retrieval of an ENR tree from the TXT field of a domain name, enabling the storage of node connection details and promoting decentralisation.","s":"DNS discovery","u":"/learn/glossary","h":"#dns-discovery","p":345},{"i":358,"t":"Ethereum Node Record (ENR) is a specification used to represent and identify nodes, facilitating discovery and communication within the network. Besides connection details, ENR also includes node configuration information like enabled protocol and shards.","s":"ENR","u":"/learn/glossary","h":"#enr","p":345},{"i":360,"t":"Filter is a protocol that enables light nodes to selectively subscribe to specific messages transmitted by peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network.","s":"Filter","u":"/learn/glossary","h":"#filter","p":345},{"i":362,"t":"GossipSub is a protocol for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems.","s":"GossipSub","u":"/learn/glossary","h":"#gossipsub","p":345},{"i":364,"t":"Libp2p is a modular network stack and protocol suite that allows developers to build decentralised, peer-to-peer applications across various network protocols.","s":"Libp2p","u":"/learn/glossary","h":"#libp2p","p":345},{"i":366,"t":"A light node is a resource-limited device or client that leverages service nodes to access the Relay network.","s":"Light node","u":"/learn/glossary","h":"#light-node","p":345},{"i":368,"t":"Light push is a protocol enabling light nodes to send messages to the Relay network and receive acknowledgements confirming that a peer has received them.","s":"Light push","u":"/learn/glossary","h":"#light-push","p":345},{"i":370,"t":"Mostly offline devices are clients who spend most of their time offline or disconnected from the internet and only occasionally to the internet and Waku Network. Examples include browsers and mobile phones.","s":"Mostly offline","u":"/learn/glossary","h":"#mostly-offline","p":345},{"i":372,"t":"A node is a device or client that implements Waku protocols and leverages the Waku Network to enable secure and private peer-to-peer web3 communication.","s":"Node","u":"/learn/glossary","h":"#node","p":345},{"i":374,"t":"A node key is a Secp256k1 (64-char hex string) private key for generating the PeerID, listening addresses, and discovery addresses of a Waku node.","s":"Node key","u":"/learn/glossary","h":"#node-key","p":345},{"i":376,"t":"Out-of-band refers to exchanging information through a separate, secure channel distinct from the main communication method to enhance security.","s":"Out-of-band","u":"/learn/glossary","h":"#out-of-band","p":345},{"i":378,"t":"The payload field in a Waku Message contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in Waku Message Payload Encryption.","s":"Payload","u":"/learn/glossary","h":"#payload","p":345},{"i":380,"t":"A peer refers to other nodes and participants of the Waku Network with whom communication and interaction are possible.","s":"Peer","u":"/learn/glossary","h":"#peer","p":345},{"i":382,"t":"Peer discovery is when a node locates and gets information about other peers in the Waku Network.","s":"Peer discovery","u":"/learn/glossary","h":"#peer-discovery","p":345},{"i":384,"t":"Peer exchange is a peer discovery mechanism that enables light nodes to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on Discv5.","s":"Peer exchange","u":"/learn/glossary","h":"#peer-exchange","p":345},{"i":386,"t":"PeerID is the unique identifier of a node in the Waku Network generated from the cryptographic hash of the node's public key.","s":"Peer ID","u":"/learn/glossary","h":"#peer-id","p":345},{"i":388,"t":"A protocol is a set of rules that enables nodes within the Waku Network to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more.","s":"Protocol","u":"/learn/glossary","h":"#protocol","p":345},{"i":390,"t":"Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication.","s":"Pub/Sub","u":"/learn/glossary","h":"#pubsub","p":345},{"i":392,"t":"A Pub/Sub topic is a string that serves as an identifier for the topic of interest among GossipSub peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic.","s":"Pub/Sub topic","u":"/learn/glossary","h":"#pubsub-topic","p":345},{"i":394,"t":"Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity.","s":"Rate limit nullifiers","u":"/learn/glossary","h":"#rate-limit-nullifiers","p":345},{"i":396,"t":"Relay is a protocol that extends the GossipSub protocol to enable secure and censorship resistant message sending and receiving among peers while preserving privacy. It also scales the Waku Network to accommodate many nodes efficiently.","s":"Relay","u":"/learn/glossary","h":"#relay","p":345},{"i":398,"t":"Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power.","s":"Resource-limited","u":"/learn/glossary","h":"#resource-limited","p":345},{"i":400,"t":"RLN Relay is an extension of the Relay protocol that uses Rate Limit Nullifiers (RLN) to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers.","s":"RLN relay","u":"/learn/glossary","h":"#rln-relay","p":345},{"i":402,"t":"SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications.","s":"SDK","u":"/learn/glossary","h":"#sdk","p":345},{"i":404,"t":"Store is a protocol that enables the storage of relayed messages in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network.","s":"Store","u":"/learn/glossary","h":"#store","p":345},{"i":406,"t":"A transport is a network mechanism that establishes connections between peers and enables efficient transmission, routing, and delivery of data packets.","s":"Transport","u":"/learn/glossary","h":"#transport","p":345},{"i":408,"t":"Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication protocols designed to operate in resource-limited environments and suitable for node or desktop application use. Additionally, these protocols collectively form the Waku Network.","s":"Waku","u":"/learn/glossary","h":"#waku","p":345},{"i":410,"t":"Waku Message defines the structure of messages in the Waku Network, including the content topic, payload, and metadata for application-specific processing.","s":"Waku message","u":"/learn/glossary","h":"#waku-message","p":345},{"i":412,"t":"Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the Waku Network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability.","s":"Waku message payload encryption","u":"/learn/glossary","h":"#waku-message-payload-encryption","p":345},{"i":414,"t":"The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to resource limited devices.","s":"Waku network","u":"/learn/glossary","h":"#waku-network","p":345},{"i":416,"t":"Waku Noise is a specified way to use the Noise Protocol Framework to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties.","s":"Waku noise","u":"/learn/glossary","h":"#waku-noise","p":345},{"i":418,"t":"Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations. Some of the Waku's security features include the following:","s":"Security Features","u":"/learn/security-features","h":"","p":417},{"i":420,"t":"Waku ensures pseudonymity across its protocol layers, using libp2p PeerID as identifiers instead of disclosing true identities. However, it is important to note that pseudonymity does not provide complete anonymity. Actions performed under the same pseudonym (PeerID) can be linked, leading to the potential re-identification of the actual actor.","s":"Pseudonymity","u":"/learn/security-features","h":"#pseudonymity","p":417},{"i":422,"t":"Anonymity means an adversary cannot connect an actor to their actions or data. To achieve anonymity, avoiding linking activities with actors or their Personally Identifiable Information (PII) is crucial. In Waku, the following anonymity features are provided: Publisher-message unlinkability: Ensures that the publisher of messages in the Relay protocol cannot be linked to their published messages. Subscriber-topic unlinkability: Ensures that the subscriber of topics in the Relay protocol cannot be linked to the topics they have subscribed to.","s":"Anonymity/unlinkability","u":"/learn/security-features","h":"#anonymityunlinkability","p":417},{"i":424,"t":"The spam protection feature in Relay ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the scoring mechanism of GossipSub v1.1. Peers assign scores to their connections based on their behaviour and remove peers with low scores. Ongoing research is being conducted, including developing Rate Limit Nullifiers (RLN), which can be explored further at: https://github.com/vacp2p/research/issues/148.","s":"Spam protection","u":"/learn/security-features","h":"#spam-protection","p":417},{"i":426,"t":"Confidentiality in Waku is ensured through data encryption, while integrity and authenticity are achieved through digital signatures. These security measures are available in Waku Message (version 1) and Noise protocols, which offer payload encryption and encrypted signatures. Noise protocols also facilitate secure channel negotiation within the Waku Network.","s":"Data confidentiality, integrity, and authenticity","u":"/learn/security-features","h":"#data-confidentiality-integrity-and-authenticity","p":417},{"i":428,"t":"In protocols like Store and Filter, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their PeerID to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's PeerID, considered Personally Identifiable Information (PII). In Store, the queried node can link the querying node's PeerID to the topics being queried. Similarly, in Filter, a node can link the PeerID of a light node to its content filter.","s":"Security considerations","u":"/learn/security-features","h":"#security-considerations","p":417},{"i":430,"t":"Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.","s":"Comparing Waku and libp2p","u":"/learn/waku-vs-libp2p","h":"","p":429},{"i":432,"t":"Waku intends to incentivise mechanisms to run nodes, but it is not part of libp2p's scope. Additionally, users or developers do not have to deploy their infrastructure as a prerequisite to use Waku. It is a service network. However, you are encouraged to run a node to support and decentralise the network.","s":"Waku as a service network","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-service-network","p":429},{"i":434,"t":"Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment. Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, Store/Light Push/Filter caters to those use cases.","s":"Waku as a turnkey solution","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-turnkey-solution","p":429},{"i":436,"t":"libp2p does not have strong spam protection guarantees, RLN Relay is a protocol being developed by the Waku team towards this goal.","s":"Economic spam protection","u":"/learn/waku-vs-libp2p","h":"#economic-spam-protection","p":429},{"i":438,"t":"The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include: DoS/spam protection with privacy-preserving Rate-Limiting Nullifiers. Scalability by sharding traffic into 8 pubsub topics. Automatic shard selection based on content topic. Services for resource-restricted nodes, including historical message storage and retrieval, filtering, etc. tip If you want to learn more about the Waku Network, the The Waku Network: Technical Overview article provides an in-depth look under the hood.","s":"The Waku Network","u":"/learn/waku-network","h":"","p":437},{"i":440,"t":"Applications or projects can build decentralized communication components on this network, gaining from the fault-tolerance of shared infrastructure, the out-of-the-box censorship resistance of a p2p network and the privacy-preservation of Waku protocols. Supporters of public goods and decentralized infrastructure can run their nodes to support the network. We are also working on incentivisation vectors to encourage more node operators to provide services to the network.","s":"Why join the Waku network?","u":"/learn/waku-network","h":"#why-join-the-waku-network","p":437},{"i":442,"t":"Ethereum Sepolia HTTPS endpoint, which can be yours or from a third party. Have a look at the Access a Sepolia Node Using Infura guide for a free Infura option. This node is used to interact with the on-chain RLN membership contract. Wallet with Sepolia Ethereum (less than 0.1 Sepolia ETH). Have a look at the Create a Sepolia Ethereum Wallet and Obtain Sepolia Ethereum from Faucet guides to get a Sepolia wallet and fund it with some Sepolia Ethereum. This wallet is required to register RLN membership, which is essential for publishing on the network.","s":"Prerequisites","u":"/learn/waku-network","h":"#prerequisites","p":437},{"i":444,"t":"Have a look at the Run Nwaku with Docker Compose guide for instructions on running a nwaku node in the Waku Network. Use the Sepolia node and wallet you obtained above. info The public Waku Network replaces the previous experimental shared routing layer based on a default pubsub topic (/waku/2/default-waku/proto). If your project currently uses this or any other shared pubsub topics, we encourage you to migrate to the public Waku Network with built-in DoS protection, scalability, and reasonable bandwidth usage.","s":"Running a Waku network node","u":"/learn/waku-network","h":"#running-a-waku-network-node","p":437},{"i":446,"t":"Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Waku RFCs website. Benchmarks: Results of implementations and engineering-related benchmarks for Waku clients.","s":"Research","u":"/research/","h":"","p":445},{"i":448,"t":"On this page A migration guide for refactoring your application code from Waku v0.026 to v0.027.","s":"Migrating to Waku v0.027","u":"/migrations/js-waku/migration_v0.026_0.027","h":"","p":447},{"i":450,"t":"Migrating to Waku v0.027 Table of Contents Network Configuration Default Network Configuration Static Sharding Auto Sharding Pubsub Topic Configuration Removed APIs Type Changes Internal/Private Utility Function Changes","s":"Table of Contents","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#table-of-contents","p":447},{"i":452,"t":"The way to configure network settings for a Waku node has been simplified. The new NetworkConfig type only allows for Static Sharding or Auto Sharding.","s":"Network Configuration","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#network-configuration","p":447},{"i":454,"t":"If no network configuration is provided when creating a Light Node, The Waku Network configuration will be used by default. Before import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode(); // This would use the default pubsub topic, that was, `/waku/2/default-waku/proto` After import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode(); // This will now use The Waku Network configuration by default: // { clusterId: 1, shards: [0,1,2,3,4,5,6,7] }","s":"Default Network Configuration","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#default-network-configuration","p":447},{"i":456,"t":"Before import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ shardInfo: { clusterId: 1, shards: [0, 1, 2, 3] } }); After import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ networkConfig: { clusterId: 1, shards: [0, 1, 2, 3] } });","s":"Static Sharding","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#static-sharding","p":447},{"i":458,"t":"Before import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ shardInfo: { clusterId: 1, contentTopics: [\"/my-app/1/notifications/proto\"] } }); After import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ networkConfig: { clusterId: 1, contentTopics: [\"/my-app/1/notifications/proto\"] } });","s":"Auto Sharding","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#auto-sharding","p":447},{"i":460,"t":"Named pubsub topics are no longer supported. You must use either Static Sharding or Auto Sharding to configure pubsub topics. Before import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ pubsubTopics: [\"/waku/2/default-waku/proto\"] }); After Use Static Sharding: import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ networkConfig: { clusterId: 1, shards: [0, 1, 2, 3, 4, 5, 6, 7] } }); Or use Auto Sharding: import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ networkConfig: { clusterId: 1, contentTopics: [\"/your-app/1/default/proto\"] } });","s":"Pubsub Topic Configuration","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#pubsub-topic-configuration","p":447},{"i":462,"t":"The following APIs have been removed: ApplicationInfo type: Use string for application and version in NetworkConfig instead. shardInfo option in createLightNode: Use networkConfig instead. pubsubTopics option in createLightNode: Use networkConfig with Static Sharding or Auto Sharding instead. If you were using ApplicationInfo before, you should now use ContentTopicInfo (Auto Sharding) and specify your application and version in the content topic string. Before import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ shardInfo: { clusterId: 1, application: \"my-app\", version: \"1\" } }); After import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ networkConfig: { clusterId: 1, contentTopics: [\"/my-app/1/default/proto\"] } });","s":"Removed APIs","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#removed-apis","p":447},{"i":464,"t":"ShardingParams has been removed. Use NetworkConfig instead. NetworkConfig is now defined as StaticSharding | AutoSharding. StaticSharding is equivalent to the previous ShardInfo. AutoSharding is equivalent to the previous ContentTopicInfo.","s":"Type Changes","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#type-changes","p":447},{"i":466,"t":"Several utility functions have been updated or added: ensureShardingConfigured has been removed. Use derivePubsubTopicsFromNetworkConfig instead. New function derivePubsubTopicsFromNetworkConfig has been added to derive pubsub topics from the network configuration. shardInfoToPubsubTopics now accepts Partial instead of Partial. New function pubsubTopicsToShardInfo has been added to convert pubsub topics to a ShardInfo object. If you were using any of these utility functions directly, you'll need to update your code accordingly. Before import { ensureShardingConfigured } from \"@waku/utils\"; const result = ensureShardingConfigured(shardInfo); After import { derivePubsubTopicsFromNetworkConfig } from \"@waku/utils\"; const pubsubTopics = derivePubsubTopicsFromNetworkConfig(networkConfig); Note: The default NetworkConfig for The Waku Network is now { clusterId: 1, shards: [0,1,2,3,4,5,6,7] }.","s":"Internal/Private Utility Function Changes","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#internalprivate-utility-function-changes","p":447},{"i":468,"t":"This issue explains i) why The Waku Network requires a capped bandwidth per shard and ii) how to solve it by rate limiting with RLN by daily requests (instead of every x seconds), which would require RLN v2, or some modifications in the current circuits to work. It also explains why the current rate limiting RLN approach (limit 1 message every x seconds) is not practical to solve this problem.","s":"Capped Bandwidth in Waku","u":"/research/research-and-studies/capped-bandwidth","h":"","p":467},{"i":470,"t":"First of all, lets begin with the terminology. We have talked in the past about \"predictable\" bandwidth, but a better name would be \"capped\" bandwidth. This is because it is totally fine that the waku traffic is not predictable, as long as its capped. And it has to be capped because otherwise no one will be able to run a node. Since we aim that everyone is able to run a full waku node (at least subscribed to a single shard) its of paramount importance that the bandwidth requirements (up/down) are i) reasonable to run with a residential internet connection in every country and ii) limited to an upper value, aka capped. If the required bandwidth to stay up to date with a topic is higher than what the node has available, then it will start losing messages and won't be able to stay up to date with the topic messages. And not to mention the problems this will cause to other services and applications being used by the user. The main problem is that one can't just chose the bandwidth it allocates to relay. One could set the maximum bandwidth willing to allocate to store but this is not how relay works. The required bandwidth is not set by the node, but by the network. If a pubsub topic a has a traffic of 50 Mbps (which is the sum of all messages being sent multiplied by its size, times the D_out degree), then if a node wants to stay up to date in that topic, and relay traffic in it, then it will require 50 Mbps. There is no thing such as \"partially contribute\" to the topic (with eg 25Mbps) because then you will be losing messages, becoming an unreliable peer. The network sets the pace. So waku needs an upper boundary on the in/out bandwidth (mbps) it consumes. Just like apps have requirements on cpu and memory, we should set a requirement on bandwidth, and then guarantee that if you have that bandwidth, you will be able to run a node without any problem. And this is the tricky part.","s":"Problem","u":"/research/research-and-studies/capped-bandwidth","h":"#problem","p":467},{"i":472,"t":"With the recent productisation effort of RLN, we have part of the problem solved, but not entirely. RLN offers an improvement, since now have a pseudo-identity (RLN membership) that can be used to rate limit users, enforcing a limit on how often it can send a message (eg 1 message every 10 seconds). We assume of course, that getting said RLN membership requires to pay something, or put something at stake, so that it can't be sibyl attacked. Rate limiting with RLN so that each entity just sends 1 message every x seconds indeed solves the spam problem but it doesn't per se cap the traffic. In order to cap the traffic, we would first need to cap the amount of memberships we allow. Lets see an example: We limit to 10.000 RLN memberships Each ones is rate limited to send 1 message/10 seconds Message size of 50 kBytes Having this, the worst case bandwidth that we can theoretically have, would be if all of the memberships publish messages at the same time, with the maximum size, continuously. That is 10.000 messages/sec * 50 kBytes = 500 MBytes/second. This would be a burst every 10 seconds, but enough to leave out the majority of the nodes. Of course this assumption is not realistic as most likely not everyone will continuously send messages at the same time and the size will vary. But in theory this could happen. A naive (and not practical) way of fixing this, would be to design the network for this worst case. So if we want to cap the maximum bandwidth to 5 MBytes/s then we would have different options on the maximum i) amount of RLN memberships and ii) maximum message size: 1.000 RLN memberships, 5 kBytes message size: 1000 * 5 = 5 MBytes/s 10.000 RLN memberships, 500 Bytes message size: 10000 * 0.5 = 5 MBytes/s In both cases we cap the traffic, however, if we design The Waku Network like this, it will be massively underutilized. As an alternative, the approach we should follow is to rely on statistics, and assume that i) not everyone will be using the network at the same time and ii) message size will vary. So while its impossible to guarantee any capped bandwidth, we should be able to guarantee that with 95 or 99% confidence the bandwidth will stay around a given value, with a maximum variance. The current RLN approach of rate limiting 1 message every x seconds is not very practical. The current RLN limitations are enforced on 1 message every x time (called epoch). So we currently can allow 1 msg per second or 1 msg per 10 seconds by just modifying the epoch size. But this has some drawbacks. Unfortunately, neither of the options are viable for waku: A small epoch size (eg 1 seconds) would allow a membership to publish 24*3600/1=86400 messages a day, which would be too much. In exchange, this allows a user to publish messages right after the other, since it just have to wait 1 second between messages. Problem is that having an rln membership being able to publish this amount of messages, is a bit of a liability for waku, and hinders scalability. A high epoch size (eg 240 seconds) would allow a membership to publish 24*3600/240=360 messages a day, which is a more reasonable limit, but this won't allow a user to publish two messages one right after the other, meaning that if you publish a message, you have to way 240 seconds to publish the next one. Not practical, a no go. But what if we widen the window size, and allow multiple messages within that window?","s":"Current approach","u":"/research/research-and-studies/capped-bandwidth","h":"#current-approach","p":467},{"i":474,"t":"In order to fix this, we need bigger windows sizes, to smooth out particular bursts. Its fine that a user publishes 20 messages in one second, as long as in a wider window it doesn't publish more than, lets say 500. This wider window could be a day. So we could say that a membership can publish 250 msg/day. With this we solve i) and ii) from the previous section. Some quick napkin math on how this can scale: 10.000 RLN memberships Each RLN membership allow to publish 250 msg/day Message size of 5 kBytes Assuming a completely random distribution: 10.000 * 250 = 2 500 000 messages will be published a day (at max) A day has 86 400 seconds. So with a random distribution we can say that 30 msg/sec (at max) 30 msg/sec * 5 kBytes/msg = 150 kBytes/sec (at max) Assuming D_out=8: 150 kBytes/sec * 8 = 1.2 MBytes/sec (9.6 Mbits/sec) So while its still not possible to guarantee 100% the maximum bandwidth, if we rate limit per day we can have better guarantees. Looking at these numbers, considering a single shard, it would be feasible to serve 10.000 users considering a usage of 250 msg/day. TODO: Analysis on 95%/99% interval confidence on bandwidth given a random distribution.","s":"Solution","u":"/research/research-and-studies/capped-bandwidth","h":"#solution","p":467},{"i":476,"t":"Waku should guarantee a capped bandwidth so that everyone can run a node. The guarantee is a \"statistical guarantee\", since there is no way of enforcing a strict limit. Current RLN approach is to rate limit 1 message every x seconds. A better approach would be x messages every day, which helps achieving such bandwidth limit. To follow up: Variable RLN memberships. Eg. allow to chose tier 1 (100msg/day) tier 2 (200msg/day) etc.","s":"TLDR","u":"/research/research-and-studies/capped-bandwidth","h":"#tldr","p":467},{"i":478,"t":"On this page Last updated: 9 February 2024 This Privacy Policy is intended to inform users of our approach to privacy in respect of this website (\"Website\"). In this regard, if you are visiting our Website, this Privacy Policy applies to you.","s":"Privacy Policy","u":"/privacy-policy","h":"","p":477},{"i":480,"t":"For the purposes of this Privacy Policy and the collection and processing of personal data as a controller, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we” or other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/privacy-policy","h":"#1-who-we-are","p":477},{"i":482,"t":"We aim to limit the collection and collection and processing of personal data from users of the Website. We only collect and process certain personal data for specific purposes and where we have the legal basis to do so under applicable privacy legislation. We will not collect or process any personal data that we don’t need and where we do store any personal data, we will only store it for the least amount of time needed for the indicated purpose. In this regard, we collect and process the following personal data from your use of the Website: IP address: As part of such use of the Website we briefly process your IP address but we have no way of identifying you. We however have a legitimate interest in processing such IP addresses to ensure the technical functionality and enhance the security measures of the Website. This IP address is not stored by us over time.","s":"2) We limit the collection and processing of personal data from your use of the Website","u":"/privacy-policy","h":"#2-we-limit-the-collection-and-processing-of-personal-data-from-your-use-of-the-website","p":477},{"i":484,"t":"In addition to our limited and collection of personal data, third parties may collect or process personal data as a result of the Website making use of certain features or to provide certain content. To the extent you interact with such third party content or features, their respective privacy policies will apply.","s":"3) Third party processing of personal data","u":"/privacy-policy","h":"#3-third-party-processing-of-personal-data","p":477},{"i":486,"t":"As a general approach, we take data security seriously and we have implemented a variety of security measures on the Website to maintain the safety of your personal data when you submit such information to us.","s":"4) Security measures we take in respect of the Website","u":"/privacy-policy","h":"#4-security-measures-we-take-in-respect-of-the-website","p":477},{"i":488,"t":"We are obliged to protect the privacy of personal data that you may have submitted in the unlikely event that we export your personal data to places outside the European Union or Switzerland. This means that personal data will only be processed in countries or by parties that provide an adequate level of protection as deemed by Switzerland or the European Commission. Otherwise, we will use other forms of protections, such as specific forms of contractual clauses to ensure such personal data is provided the same protection as required in Switzerland or Europe. In any event, the transmission of personal data outside the European Union and Switzerland will always occur in conformity with applicable privacy legislation.","s":"5) Exporting data outside the European Union and Switzerland","u":"/privacy-policy","h":"#5-exporting-data-outside-the-european-union-and-switzerland","p":477},{"i":490,"t":"As explained in this Privacy Policy, we limit our collection and processing of your personal data wherever possible. Nonetheless, you still have certain choices and rights in respect of the personal data which we do collect and process. As laid out in relevant privacy legislation, you have the right to: Ask us to correct or update your personal data (where reasonably possible); Ask us to remove your personal data from our systems; Ask us for a copy of your personal data, which may also be transferred to another data controller at your request; Withdraw your consent to process your personal data (only if consent was asked for a processing activity), which only affects processing activities that are based on your consent and doesn’t affect the validity of such processing activities before you have withdrawn your consent; Object to the processing of your personal data; and File a complaint with the Federal Data Protection and Information Commissioner (FDPIC), if you believe that your personal data has been processed unlawfully.","s":"6) Your choices and rights","u":"/privacy-policy","h":"#6-your-choices-and-rights","p":477},{"i":492,"t":"On this Website, you may come across links to third party websites. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these third party websites.","s":"7) Third party links","u":"/privacy-policy","h":"#7-third-party-links","p":477},{"i":494,"t":"We may modify or replace any part of this Privacy Policy at any time and without notice. Please check the Website periodically for any changes. The new Privacy Policy will be effective immediately upon its posting on our Website.","s":"8) This Privacy Policy might change","u":"/privacy-policy","h":"#8-this-privacy-policy-might-change","p":477},{"i":496,"t":"To the extent that you have any questions about the Privacy Policy, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"9) Contact information","u":"/privacy-policy","h":"#9-contact-information","p":477},{"i":498,"t":"Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour. The goal of this document is to outline and contextualize our approach to TWN i13n. After providing an overview of Waku and relevant prior work, we focus on Waku Store - a client-server protocol for querying historical messages. We introduce a minimal viable addition to Store to enable i13n, and list research directions for future work.","s":"Incentivisation","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":500,"t":"On this page","s":"Incentivisation in decentralised networks","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":502,"t":"We can think of incentivisation tools as a two-by-two matrix: rewards vs punishment; monetary vs reputation. In other words, there are four quadrants: monetary reward: the node gets rewarded; monetary punishment: the nodes deposits funds that are taken away (slashed) if it misbehaves; reputation reward: the node's reputation increases if it behaves well; reputation punishment: the node's reputation decreases if it behaves badly. Reputation only works if high reputation brings tangible benefits. For example, if nodes chose neighbors based on reputation, low-reputation nodes miss out on potential revenue. Reputation scores may be local (a node assigns scores to its neighbors) or global (each node gets a uniform score). Global reputation in its simplest form involves a trusted third party, although decentralised approaches are also possible.","s":"Incentivisation tools","u":"/research/research-and-studies/incentivisation","h":"#incentivisation-tools","p":497},{"i":504,"t":"We may split incentivized decentralised networks into early file-sharing, blockchains, and decentralised storage.","s":"Prior work","u":"/research/research-and-studies/incentivisation","h":"#prior-work","p":497},{"i":506,"t":"Early P2P file-sharing networks employ reputation-based approaches and sticky defaults. For instance, the BitTorrent protocol rewards uploading peers with faster downloads. The download bandwidth available to a peer depends on how much it has uploaded. Moreover, peers share pieces of a file before having received it in whole. This non-monetary i13n policy has been proved to work in practice.","s":"Early P2P file-sharing","u":"/research/research-and-studies/incentivisation","h":"#early-p2p-file-sharing","p":497},{"i":508,"t":"Bitcoin has introduced proof-of-work (PoW) for native monetary rewards in a P2P network. PoW miners are automatically assigned newly mined coins for generating blocks. Miners must expend physical resources to generate a block. If the block is invalid, these expenses are not compensated (implicit monetary punishment). Proof-of-stake (PoS), used in Ethereum and many other cryptocurrencies, introduces explicit monetary punishments. PoS validators lock up (stake) native tokens and get rewarded for validating blocks or slashed for misbehaviour.","s":"Blockchains","u":"/research/research-and-studies/incentivisation","h":"#blockchains","p":497},{"i":510,"t":"Post-Bitcoin decentralised storage networks include Codex, Storj, Sia, Filecoin, IPFS. Their i13n methods combine techniques from early P2P file-sharing with blockchain-inspired reward mechanisms.","s":"Decentralised storage","u":"/research/research-and-studies/incentivisation","h":"#decentralised-storage","p":497},{"i":512,"t":"On this page Waku is a family of protocols for a modular privacy-preserving censorship-resistant decentralised communication network. The backbone of Waku is the Relay protocol (and its spam-protected version RLN-Relay). Additionally, there are light protocols: Store, Filter, and Lightpush. Light protocols are also referred to as client-server protocols and request-response protocols. A server is a node running Relay and a server-side of at least one light protocol. A client is a node running a client-side of any of the light protocols. A server may sometimes be referred to as a full node, and a client as a light node. There is no strict definition of a full node vs a light node in Waku (see discussion). In light protocols, a client sends a request to a server, and a server performs some actions and returns a response: Store: the server responds with messages relayed that match a set of criteria; Filter: the server will relay (only) messages that pass a filter to the client; Lightpush: the server publishes the client's message to the Relay network.","s":"Waku background","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":514,"t":"Waku has no consensus and no native token, which brings it closer to reputation-incentivised file-sharing networks. As of late 2023, Waku only operates under reputation-based rewards and punishments. While RLN-Relay adds monetary punishments for spammers, slashing is yet to be activated. Monetary rewards and punishments should ideally be atomically linked with the node's behaviour. A benefit of blockchains in this respect is that the desired behaviour of miners or validators can be verified automatically. Enforcing atomicity in a communication network is more challenging: it is non-trivial to prove that a given piece of data has been relayed. Our goal is to combine monetary and reputation-based incentives for Waku. Monetary incentives have demonstrated their robustness in blockchains. We think they are necessary to scale the network beyond the initial phase when it's maintained altruistically.","s":"Waku i13n challenges","u":"/research/research-and-studies/incentivisation","h":"#waku-i13n-challenges","p":497},{"i":516,"t":"Waku Store is a light protocol for querying historic messages that works as follows: the client sends a HistoryQuery to the server; the server sends a HistoryResponse to the client. The response may be split into multiple parts, as specified by pagination parameters in PagingInfo. We define a relevant message as a message that matches client-defined criteria (e.g., relayed within a given time frame). Upon receiving a request, a server should quickly send back a response containing all and only relevant messages.","s":"Waku Store","u":"/research/research-and-studies/incentivisation","h":"#waku-store","p":497},{"i":518,"t":"On this page An incentivised Store protocol has the following extra steps: pricing: cost calculation price advertisement price negotiation payment: payment itself proof of payment reputation results cross-checking In this document, we focus on the simplest proof-of-concept (PoC) i13n for Store. Compared to the fully-fledged protocol, the PoC version is simplified in the following ways: cost calculation is based on a common-knowledge price; there is no price advertisement and no price negotiation; each query is paid for in a separate transaction, txid acts a proof of payment; the reputation system is simplified (see below); the results are not cross-checked. In the PoC protocol: the client calculates the price based on the known rate per hour of history; the client pays the appropriate amount to the server's address; the client sends a HistoryQuery to the server alongside the proof of payment (txid); the server checks that the txid corresponds to a confirmed transaction with at least the required amount; the server sends a HistoryResponse to the client. In further subsections, we list the potential direction for future work towards a fully-fledged i13n mechanism.","s":"Waku Store incentivisation","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":520,"t":"For PoC, we assume a constant price per hour of history. This price and the blockchain address of the server are assumed to be common knowledge. This simplifies the client-server interaction, avoiding the price negotiation step. In the future versions of the protocol, the price will be negotiated and will depend on multiple parameters, such as the total size of the relevant messages in the response.","s":"Pricing","u":"/research/research-and-studies/incentivisation","h":"#pricing","p":497},{"i":522,"t":"DoS protection - see https://github.com/waku-org/research/issues/66 Cost calculation - see https://github.com/waku-org/research/issues/35 Price advertisement - see https://github.com/waku-org/research/issues/51 Price negotiation - see https://github.com/waku-org/research/issues/52","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work","p":497},{"i":524,"t":"For the PoC, each request is paid for with a separate transaction. The transaction hash (txid) acts as a proof of payment. The server verifies the payment by ensuring that: the transaction has been confirmed; the transaction is paying the proper amount to the server's account; the txid does not correspond to any prior response. The client gives proof of payment before it receives the response. Other options could be: the client pays after the fact; the client pays partly upfront and partly after the fact; a centralised third party (either trusted or semi-trusted, like a smart contract) ensures atomicity; cryptographically ensured atomicity (similar to atomic swaps, Lightning, or Hopr). Our design considerations are: the PoC protocol should be simple; servers are more \"permanent\" entities and are more likely to have long-lived identities; it is more important to protect the clients's privacy than the server's privacy. In light of these criteria, we suggest that the client pays first. This is simpler than splitting the payment, or involving an extra atomicity-enforcing mechanism. Moreover, pre-payment is arguably more privacy-preserving than post-payment, which encourages servers to deanonymise clients to prevent fraud.","s":"Payment","u":"/research/research-and-studies/incentivisation","h":"#payment","p":497},{"i":526,"t":"Add more payment methods - see https://github.com/waku-org/research/issues/58 Design a subscription model with service credentials - see https://github.com/waku-org/research/issues/59 Add privacy to service credentials - see https://github.com/waku-org/research/issues/60 Consider the impact of network disruptions - see https://github.com/waku-org/research/issues/65","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-1","p":497},{"i":528,"t":"We use reputation to discourage the server from taking the payment and not responding. The client keeps track of the server's reputation: all servers start with zero reputation points; if the server honours the request, it gets +n points; if the server does not respond before a timeout, it gets -m points. if the server's reputation drops below k points, the client will never query it again. n, m, and k are subject to configuration. Optionally, a client may treat a given server as trusted, assigning it a constant positive reputation. Potential issues: An attacker can establish new server identities and continue running away with clients' money. Countermeasures: a client only queries trusted servers (which however leads to centralisation); when querying a new server, a client first sends a small (i.e. cheap) request as a test; more generally, the client selects a server on a case-by-case basis, weighing the payment amount against the server's reputation. The ban mechanism can theoretically be abused. For instance, a competitor may attack the victim server and cause the clients who were awaiting the response to ban that server. Countermeasure: prevent DoS-attacks.","s":"Reputation","u":"/research/research-and-studies/incentivisation","h":"#reputation","p":497},{"i":530,"t":"Design a more comprehensive reputation system: local reputation - see https://github.com/waku-org/research/issues/48 global reputation - see https://github.com/waku-org/research/issues/49","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-2","p":497},{"i":532,"t":"As there is no consensus over past messages, a client may want to query multiple servers and merge their responses. Cross-checking helps ensure that servers are a) not censoring real messages; b) not injecting fake messages into history. Cross-checking is absent in PoC but may be considered later.","s":"Results cross-checking","u":"/research/research-and-studies/incentivisation","h":"#results-cross-checking","p":497},{"i":534,"t":"Cross-checking the results against censorship - see https://github.com/waku-org/research/issues/57 Use RLN to limit fake message insertion - see https://github.com/waku-org/research/issues/38","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-3","p":497},{"i":536,"t":"On this page We should think about what the success metrics for an incentivised protocol are, and how to measure them both in simulated settings, as well as in a live network.","s":"Evaluation","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":538,"t":"On this page Analyze privacy issues - see https://github.com/waku-org/research/issues/61 Analyze decentralised storage protocols and their relevance e.g. as back-end storage for Store servers - see https://github.com/waku-org/research/issues/34 Analyze the role of message senders, in particular, whether they should pay for sending non-ephemeral messages - see https://github.com/waku-org/research/issues/32 Generalise incentivisation protocol to other Waku light protocols (Lightpush and Filter) - see https://github.com/waku-org/research/issues/67.","s":"Longer-term future work","u":"/research/research-and-studies/incentivisation","h":"","p":497},{"i":540,"t":"TLDR: This issue aims to set the maximum bandwidth in x Mbps that each waku shard should consume so that the maximum amount of people can run a full waku node. It is up to https://github.com/waku-org/research/issues/22 to specify how this maximum will be enforced. Conclusion: Limit to 10 Mbps each waku shard.","s":"Maximum Bandwidth for Global Adoption","u":"/research/research-and-studies/maximum-bandwidth","h":"","p":539},{"i":542,"t":"Waku is designed in a way that everyone should be able to run a full node on an average laptop with a residential Internet connection, at least in one shard. This will enable true decentralization and give power to the users, since they won't need to rely on third parties to send/receive messages. Professional node operators running in data centers, can of course contribute to multiple shards, but we should keep the bandwidth/hardware requirements of single shard rather low. This vision opposes the federated approach, where a few nodes requiring vast amounts of resources (cpu, memory, bandwidth) run in data centres, taking the power from the user. While federated approaches are an improvement from traditional client-server architectures, waku envisions a fully peer-to-peer architecture where anyone should be able to run a node. In order to ensure that anyone can run a node in desktop, there are two main limiting factors: Bandwidth consumption in Mbps CPU/memory resources (mainly limited by RLN proof verification) This issue focuses on i) bandwidth consumption and https://github.com/waku-org/research/issues/30 on ii) CPU/memory resources. Note that on https://github.com/waku-org/research/issues/23 an analysis on the impact on RLN was already made, but wasn't focused on scalability. Said issues do. In https://github.com/waku-org/research/issues/22 we discussed why and how to limit the maximum bandwidth per shard, but we haven't come up with a specific number in Mbps. This issue i) presents data from the available bandwidth at different locations and ii) suggests a maximum bandwidth in Mbps that waku should enforce.","s":"Introduction","u":"/research/research-and-studies/maximum-bandwidth","h":"#introduction","p":539},{"i":544,"t":"The following tables show: Table [1] The Q25, Q75 and average bandwidth (upload/download) in Mbps available on different continents. Raw data is available here and credits to @leobago for the summarized version. Note: The below numbers were rounded to the nearest integer. Table [2] The median global bandwidth (upload/download) in Mbps, taken from speedtest (accessed 12 Oct 2023). Table [3] Download bandwidth requirements in Mbps for Netflix video streaming, source. Table [1] Download (Mbps) Upload (Mbps) Q25 Average Q75 Q25 Average Q75 North-America 58 107 137 38 68 85 South-America 21 54 72 13 33 44 Europe 49 93 119 30 56 72 Asia 23 53 71 15 37 50 Oceania 44 84 108 27 50 63 Africa 12 26 33 7 17 22 Table [2] Median Download (Mbps) Median Upload (Mbps) Global 83 38 Table [3] Video resolution Recommended Bandwidth HD 3 Mbps Full HD 5 Mbps 4K/UHD 15 Mbps","s":"Bandwidth availability and usage","u":"/research/research-and-studies/maximum-bandwidth","h":"#bandwidth-availability-and-usage","p":539},{"i":546,"t":"With the above data, we should be informed to take a decision on the maximum bandwidth that we should enforce per shard. With this number, we will apply the techniques explained in https://github.com/waku-org/research/issues/22 to ensure (with some statistical confidence) that the bandwidth won't exceed that number. The trade-off is clear: We enforce a low bandwidth: more people can run full waku nodes, overall network throughput is less, network decentralization is easier, gives power to the user as its fully sovereign. We don't enforce a low bandwidth: not possible to run full waku nodes in laptops acting as a centralization force, nodes are run by few professional operators in data centers, waku users just use light clients, network throughput can scale way easier, federated approach. So it's about where to draw this line. Points to take into account: Relay contributes to bandwidth the most: Relay is the protocol that mostly contributes to bandwidth usage, and it can't choose to allocate fewer bandwidth resources like other protocols (eg store can choose to provide less resources and it will work). In other words, the network sets the relay bandwidth requirements, and if the node can't meet them, it just wont work. Upload and download bandwidth are the same: Due to how gossipsub works, and hence relay, the bandwidth consumption is symmetric, meaning that upload and download bandwidth is the same. This is because of D and the reciprocity of the connections, meaning that one node upload is another download. Nodes not meeting requirements can use light clients. Note that nodes not meeting the bandwidth requirements can still use waku, but they will have to use light protocols, which are a great alternative, especially on mobile, but with some drawbacks (trust assumptions, less reliability, etc) Waku can't take all the bandwidth: Waku is meant to be used in conjunction with other services, so it shouldn't consume all the existing bandwidth. If Waku consumes x Mbps and someone bandwidth is x Mpbs, the UX won't be good. Compare with existing well-known services: As shown in Table [3], Netflix 4K video streaming takes 15Mbps, so that is an order of magnitude to take into account. Coming up with a number: Lowest average download speed across continents is Africa (26 Mbps) Lowest average upload speed across continents is Africa (17 Mbps) Since in waku the bandwidth consumption is symmetric, we are limited by the lowest (17 Mpbs) However waku should not consume all bandwidth, leaving some room for other applications. We could set 10 Mbps, which is between Full HD video and 4K. With 10Mbps the % of average bandwidth waku will consume is: North-America 9 % South-America 18 % Europe 11 % Asia 18 % Oceania 12 % Africa 38 % Conclusion: Limit to 10 Mbps each waku shard. How? Not trivial, see https://github.com/waku-org/research/issues/22#issuecomment-1727795042 Note: This number is not set in stone and is subject to modifications, but it will most likely stay in the same order of magnitude if changed.","s":"Selecting a maximum bandwidth","u":"/research/research-and-studies/maximum-bandwidth","h":"#selecting-a-maximum-bandwidth","p":539},{"i":549,"t":"The Nim Waku Node, nwaku, has the capability of archiving messages until a certain limit (e.g. 30 days) so that other nodes can synchronize their message history throughout the Store protocol. The nwaku originally used SQLite to archive messages but this has an impact on the node. Nwaku is single-threaded and therefore, any SQLite operation impacts the performance of other protocols, like Relay. Therefore, the Postgres adoption is needed to enhance that. https://github.com/waku-org/nwaku/issues/1888","s":"Introduction","u":"/research/benchmarks/postgres-adoption","h":"#introduction","p":547},{"i":551,"t":"Simply pass the next parameter to nwaku --store-message-db-url=\"postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/postgres Notice that this only makes sense if the nwaku has the Store protocol mounted --store=true (start the nwaku node with --help parameter for more Store options)","s":"How to connect the nwaku to Postgres","u":"/research/benchmarks/postgres-adoption","h":"#how-to-connect-the-nwaku-to-postgres","p":547},{"i":553,"t":"https://github.com/waku-org/nwaku-compose https://github.com/waku-org/test-waku-query","s":"Examples of nwaku using Postgres","u":"/research/benchmarks/postgres-adoption","h":"#examples-of-nwaku-using-postgres","p":547},{"i":555,"t":"The following repository was created as a tool to stress and compare performance between nwaku+Postgres and nwaku+SQLite: https://github.com/waku-org/test-waku-query","s":"Stress tests","u":"/research/benchmarks/postgres-adoption","h":"#stress-tests","p":547},{"i":557,"t":"Maximum insert throughput​ Scenario 1 node subscribed to pubsubtopic ‘x’ and the Store protocol mounted. ‘n’ nodes connected to the “store” node, and publishing messages simultaneously to pubsubtopic ‘x’. All nodes running locally in a Dell Latitude 7640. Each published message is fixed, 1.4 KB: publish_one_client.sh The next script is used to simulate multiple nodes publishing messages: publish_multiple_clients.sh Sought goal Find out the maximum number of concurrent inserts that both SQLite and Postgres could support, and check whether Postgres behaves better than SQLite or not. Conclusion Messages are lost after a certain threshold, and this message loss is due to limitations in the Relay protocol (GossipSub - libp2p.) For example, if we set 30 nodes publishing 300 messages simultaneously, then 8997 rows were stored and not the expected 9000, in both SQLite and Postgres databases. The reason why few messages were lost is because the message rate was higher than the relay protocol can support, and therefore a few messages were not stored. In this example, the test took 38.8’’, and therefore, the node was receiving 232 msgs/sec, which is much more than the normal rate a node will work with, which is ~10 msgs/sec (rate extracted from Grafana’s stats for the status.prod fleet.) As a conclusion, the bottleneck is within the Relay protocol itself and not the underlying databases. Or, in other words, both SQLite and Postgres can support the maximum insert rate a Waku node will operate within normal conditions.","s":"Insert test results","u":"/research/benchmarks/postgres-adoption","h":"#insert-test-results","p":547},{"i":559,"t":"In this case, we are comparing Store performance by means of Rest service. Scenario nodea: one _nwaku node with Store and connected to Postgres. nodeb: one _nwaku node with Store and using SQLite. Both Postgres and SQLite contain +1 million rows. nodec: one _nwaku node with REST enabled and acting as a Store client for node_a. noded: one _nwaku node with REST enabled and acting as a Store client for node_b. With jmeter, 10 users make REST Store requests concurrently to each of the “rest” nodes (node_c and node_d.) All nwaku nodes running statusteam/nim-waku:v0.19.0 This is the jmeter project used. Results With this, the node_b brings a higher throughput than the node_a and that indicates that the node that uses SQLite performs better. The following shows the measures taken by jmeter with regard to the REST requests.","s":"Query test results (jmeter)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-jmeter","p":547},{"i":561,"t":"In this test suite, only the Store protocol is being analyzed, i.e. without REST. For that, a go-waku node is used, which acts as Store client. On the other hand, we have another go-waku app that publishes random Relay messages periodically. Therefore, this can be considered a more realistic approach. The following diagram shows the topology used: For that, the next apps were used: Waku-publisher. This app can publish Relay messages with different numbers of clients Waku-store-query-generator. This app is based on the Waku-publisher but in this case, it can spawn concurrent go-waku Store clients. That topology is defined in this docker-compose file. Notice that the two nwaku nodes run the very same version, which is compiled locally. Comparing archive SQLite & Postgres performance in nwaku-b6dd6899​ The next results were obtained by running the docker-compose-manual-binaries.yml from test-waku-query-c078075 in the sandbox machine (metal-01.he-eu-hel1.wakudev.misc.status.im.) Scenario 1 Store rate: 1 user generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, we can see that the SQLite performance is better regarding the store requests. The following graph shows how the SQLite node has blocking periods whereas the Postgres always gives a steady rate. Scenario 2 Store rate: 10 users generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, is more evident that the SQLite performs better. Scenario 3 Store rate: 25 users generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, the performance is similar regarding the timings. The store rate is bigger in SQLite and Postgres keeps the same level as in scenario 2. Comparing archive SQLite & Postgres performance in nwaku-b452ed8​ This nwaku commit is after a few Postgres optimizations were applied. The next results were obtained by running the docker-compose-manual-binaries.yml from test-waku-query-c078075 in the sandbox machine (metal-01.he-eu-hel1.wakudev.misc.status.im.) Scenario 1 Store rate 1 user generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 1 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. It cannot be appreciated but the average *Store* time was 11ms. Scenario 2 Store rate: 10 users generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 10 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. Scenario 3 Store rate: 25 users generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 25 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. Conclusions​ After comparing both systems, SQLite performs much better than Postgres However, a benefit of using Postgres is that it performs asynchronous operations, and therefore doesn’t consume CPU time that would be better invested in Relay for example. Remember that nwaku is single-threaded and chronos performs orchestration among a bunch of async tasks, and therefore it is not a good practice to block the whole nwaku process in a query, as happens with SQLite After applying a few Postgres enhancements, it can be noticed that the use of concurrent Store queries doesn’t go below the 250ms barrier. The reason for that is that most of the time is being consumed in this point. The libpqisBusy() function indicates that the connection is still busy even the queries finished. Notice that we usually have a rate below 1100 req/minute in status.prod fleet (checked November 7, 2023.)","s":"Query test results (only Store protocol)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-only-store-protocol","p":547},{"i":563,"t":"This study aims to look for possible issues when having only one single database while several Waku nodes insert or retrieve data from it. The following diagram shows the scenery used for such analysis. There are three nim-waku nodes that are connected to the same database and all of them are trying to write messages to the same PostgreSQL instance. With that, it is very common to see errors like: ERR 2023-11-27 13:18:07.575+00:00 failed to insert message topics=\"waku archive\" tid=2921 file=archive.nim:111 err=\"error in runStmt: error in dbConnQueryPrepared calling waitQueryToFinish: error in query: ERROR: duplicate key value violates unique constraint \\\"messageindex\\\"\\nDETAIL: Key (storedat, id, pubsubtopic)=(1701091087417938405, 479c95bbf74222417abf76c7f9c480a6790e454374dc4f59bbb15ca183ce1abd, /waku/2/default-waku/proto) already exists.\\n The db-postgres-hammer is aimed to stress the database from the select point of view. It performs N concurrent select queries with a certain rate. Results​ The following results were obtained by using the sandbox machine (metal-01.he-eu-hel1.wakudev.misc) and running nim-waku nodes from https://github.com/waku-org/nwaku/tree/b452ed865466a33b7f5b87fa937a8471b28e466e and using the test-waku-query project from https://github.com/waku-org/test-waku-query/tree/fef29cea182cc744c7940abc6c96d38a68739356 The following shows the results Two nwaku-postgres-additional inserting messages plus 50 db-postgres-hammer making 10 selects per second. Five nwaku-postgres-additional inserting messages plus 50 db-postgres-hammer making 10 selects per second. In this case, the insert time gets more spread because the insert operations are shared amongst five more nodes. The Store query time remains the same on average. Five nwaku-postgres-additional inserting messages plus 100 db-postgres-hammer making 10 selects per second. This case is similar to 2. but stressing more the database.","s":"Multiple nodes & one single database","u":"/research/benchmarks/postgres-adoption","h":"#multiple-nodes--one-single-database","p":547},{"i":565,"t":"TLDR: We present the results of 1000 nwaku nodes running rln using different message sizes, in a real network with bandwidth limitations and network delays. The goal is to study the message propagation delay distribution, and how it's affected by i) rln and ii) message size in a real environment. We observe that for messages of 10kB the average end-to-end propagation delay is 508 ms. We can also observe that the message propagation delays are severely affected when increasing the message size, which indicates that it is not a good idea to use waku for messages of eg. 500kB. See simulation parameters.","s":"Message Propagation Times With Waku-RLN","u":"/research/research-and-studies/message-propagation","h":"","p":564},{"i":567,"t":"Waku uses relay as a routing protocol, which is an adaptation of gossipsub. It routes messages following a publisher/subscriber architecture, where nodes can publish messages or subscribe to topics. If message m is published to topic t, all i nodes n_1...n_i subscribed to t will get m. The relay protocol ensures that every node gets the messages of the topics it is subscribed to. However, since relay works in a decentralized manner, all nodes contribute to the gossiping of a message, until it has successfully reached all the interested nodes (subscribed to it). This means that a message can travel multiple hops until it reaches all nodes. The amount of hops determines the message propagation time, which is measured as the time difference of when the node published the message and when another node received. This issue aims to go from theory to practice, by i) understanding message propagation times in theory and ii) presenting nwaku simulation results in an end-to-end setup with rln, with real message propagation times.","s":"Introduction","u":"/research/research-and-studies/message-propagation","h":"#introduction","p":564},{"i":569,"t":"Let's start with message propagation times in theory. On a high level, it depends on: The gossipsub configuration, being D one of the most important parameters. This sets the hops that a message will travel to reach all nodes. Higher D, less hops, less delay. Note that a higher D implies more bandwidth consumption. The node. Different nodes will see different propagation times, because a message can travel different paths. A node connected directly to the publisher (1 hop) will see lower propagation times than other nodes further away. Individual propagation times. Since a message can travel multiple hops to reach its destination, each hop adds a contribution to the overall message propagation time. This individual propagation time depends on the characteristics on the nodes involved in the connections. In a D-regular graph, like the one formed by waku nodes around a topic, the maximum amount of hops that a message can travel to reach all nodes can be calculated as ceil(log(total_nodes)/log(D)). For example, with log(1000)/log(6) = 3.85 = 4. So in a network with 1000 nodes and D=6, no matter which node publishes the message, in 4 hops it will reach all the nodes. Notice the \"worst case\" since some nodes might be directly connected to the publisher, so they will get the message in just 1 hop. But how long does it take to jump each hop? It depends on: The latency between nodes. Can be measured as the time to respond to a ping. The size of the messages. The bigger the message, the more time it takes to transmit. Nodes bandwidth. Sender upload bandwidth and receiver download bandwidth. More important when using big message sizes. Message validation time. When each node receives a message, it applies some validation to decide if the message is further gossiped or not. In the case of waku, this is RLN (paper, rfc) Assuming a message m that travels 4 hops from node n1 (publisher) to n5 (subscriber) we can calculate the message propagation time mpt=ipt_1+ipt_2+ipt_3+ipt_4 where ipt is the individual propagation time between each node in the chain. However, specific message propagation times are useless, we need average times under specific conditions. And for this, we need simulations.","s":"Theory","u":"/research/research-and-studies/message-propagation","h":"#theory","p":564},{"i":571,"t":"Using shadow simulator, we have developed a tool that allows to simulate message propagation delays of nwaku (using a slightly modified branch, mainly to instrument it with tools to measure the times + starting from an already connected mesh. Thanks @Menduist for the help. Note that running this simulation requires a significant amount of resources, done with 256 GB of RAM. The configuration of the simulation is (see config): latency=100ms. Average latency in our current waku network. Thanks @vpavlin for the measurements. See this for live data. down_bandwidth=83Mbps, up_bandwidth=38Mbps. As shown in Table 2 that's the worldwide median speed. D=6, which is the current nwaku configuration. nodes=1000. Amount of nodes used in the simulation nwaku was used with a minor modification A total of 10 messages were published, that led to 9990 received messages. Since shadow doesn't take into account CPU times (by now), we simulate it with sleepAsync as per https://github.com/waku-org/research/issues/23 findings. 0.012 seconds for proof verification and 0.15 seconds for proof generation.","s":"Simulations","u":"/research/research-and-studies/message-propagation","h":"#simulations","p":564},{"i":573,"t":"The following figure shows the message propagation time with real simulations, showing the distribution in a network with the above configuration with three different message sizes: 10kB, 100kB, 500kB. Note that the whiskers indicate the best/worst values and the box contains P25 to P75 values. Average mu and P95 are also shown. Raw data here. Important note. The first messages sent in the simulations are omitted, since they show an abnormal propagation delay that doesn't reflect reality. This is due to how flow control works in TCP, where right after connection, the sender node has no idea of the \"bandwidth\" of the receiver node, so it will start sending packages at a lower rate. This translates into high transmission times, and it's more pronounced when dealing with big message sizes. In other words, in a 100Mpbs link, 100Mbits won't be sent in 1 second, or at least not a the beginning, when the node is slowly increasing the rate until based on ACK/NACK ratio. For more information about this, this is explained in here. Conclusions: Using small messages 10kB the average propagation delay is 508 ms, quite reasonable for applications using waku. The variance is acceptable, with 95% of the messages arriving in <627 ms. When using a size of 10kB we can see that the best case propagation delay is 263 ms. This corresponds to the nodes that are just 1 hop from the publisher. The proof generation time 0.15 seconds affects the most, where the rest is the inter-node latency and the transmission of the message itself. We can see that the message propagation delay increases with big messages, 100kB and 500kB. So its probably not a good idea to use waku for such big messages. Note that these simulations had 1000 nodes, so if we scale it to 10000 or beyond, propagation times would be worse. Best case propagation time (lower part of the whisker) is quite similar in all cases. This is because it corresponds to the node that is just 1 hop away from the publisher. Future work: Current waku D values (average of 6 ranging from 4 to 12) have a huge impact on the bandwidth that a node consumes. Are we willing to lower D in order to reduce bandwidth but increase message propagation times? Since shadow doesn't take CPU time into account, it's currently simulated for rln, which should be the biggest bottleneck. Once shadow has this feature times would be more accurate.","s":"Results","u":"/research/research-and-studies/message-propagation","h":"#results","p":564},{"i":576,"t":"Since RLN has been chosen as the spamming protection mechanism for waku, we must understand the practical implications of using it. This issue explains the main differences between relay and rln-relay and gives some benchmarks after running simulations using waku-simulator, in a network with the following characteristics: 100 nwaku nodes, each one with a valid rln membership and publishing a message every 10 seconds to a common topic. rln contract deployed in Ethereum Sepolia 10.000 memberships registered in the contract pure relay (store and light protocols disabled) The main deltas rln vs rln-relay are: New proof field in WakuMessage containing 384 extra bytes. This field must be generated and attached to each message. New validator, that uses proof to Accept or Reject the message. The proof has to be verified. New dependency on a blockchain, Ethereum, or any EVM chain, to keep track of the members allowed to publish. But what are the practical implications of these?","s":"Introduction","u":"/research/research-and-studies/rln-key-benchmarks","h":"#introduction","p":574},{"i":578,"t":"Proof generation is constant-ish. 0.15 second for each proof Proof verification is constant-ish, 0.012 seconds. In a network with 10k nodes and D=6 this would add an overhead delay of 0.06 seconds. Gossipsub scoring drops connections from spammer peers, which acts as the punishment (instead of slashing). Validated in the simulation. Rln doesn't have any impact on memory consumption.","s":"TLDR:","u":"/research/research-and-studies/rln-key-benchmarks","h":"#tldr","p":574},{"i":580,"t":"Seems that proof generation times stay constant no matter the size of the message. In the following simulation it was increased from: 1kB, 10kB, 50kB, 150kB. On average it takes 0.15 seconds to calculate the message proof. This means that when a node wants to send a message, it will need to spend this time generating the proof. It seems very reasonable and it actually acts as a mini proof of work, where a consumer computer won't be able to publish a really high number of messages per second.","s":"Proof generation times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-generation-times","p":574},{"i":582,"t":"On the other hand, rln also adds an overhead in the gossipsub validation process. On average it takes 0.012 seconds to verify the proof. It seems that when we increase the message size, validation time seems to increase a bit, which can be for any other reason besides rln itself (eg deserializing the message might take longer). This number seems reasonable and shouldn't affect that much the average delay of a message. Assuming a d-regular graph, with 10k nodes and D=6, we can have up to log(total_nodes)/log(D)=5 hops. So in the worst case, rln will add a network latency of 0.012*5 = 0.06 seconds","s":"Proof verification times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-verification-times","p":574},{"i":584,"t":"For the initial release of RLN, slashing won't be implemented and it still remains unclear if it will be implemented in the future. Luckily, even if slashing is not implemented rln can be used to detect spam and punish the sender off-chain (instead of slashing an onchain collateral). This is done with gossipsub scoring. In the following simulation, we can see 100 nwaku interconnected nodes, where one of them suddenly starts spamming the network with multiple valid rln messages 3000 messages/minute. Since its rate limited to 1msg/10 seconds, we can see that in almost no time, every node in the network disconnects from the spammer peer (see red node), leaving it with 0 peers, which disincentivise such attacks and without requiring a financial slashing.","s":"Spam protection","u":"/research/research-and-studies/rln-key-benchmarks","h":"#spam-protection","p":574},{"i":586,"t":"Using RLN implies that waku should now piggyback on a blockchain (the case study uses Ethereum Sepolia) and has to stay up to date with the latest events emitted by the rln smart contract. These events are used to locally construct a tree that contains all members allowed to create valid proofs to send messages. Some numbers: A tree with 10k members takes 2Mbytes of space. Negligible. A tree with 10k members takes `<4 minutes to synchronize. Assumable since it's done just once. With a block range of 5000 blocks for each request, we would need 520 requests to synchronize 1 year of historical data from the tree. Assumable since most of the free endpoints out there allow 100k/day.","s":"RLN tree sync","u":"/research/research-and-studies/rln-key-benchmarks","h":"#rln-tree-sync","p":574},{"i":588,"t":"Same simulation with 100 nodes was executed with rln and without rln: Memory consumption is almost identical with rln without rln Couldn't capture cpu metrics Minor differences in messages per seconds is due to injection technique, nothing related to rln itself.","s":"Performance relay vs. rln-relay","u":"/research/research-and-studies/rln-key-benchmarks","h":"#performance-relay-vs-rln-relay","p":574},{"i":590,"t":"On this page Last updated: 14 February 2024 These website terms of use ('Website Terms of Use') are entered into by you and us, and they govern your access and use of this Website, including any content and functionality contained in the Website. It is your responsibility to read the Website Terms of Use carefully before your use of the Website and your use of the Website means you have agreed to be bound and comply with these Website Terms of Use. If you do not agree with these Website Terms of Use, you must not access or use the Website.","s":"Terms of Use","u":"/terms","h":"","p":589},{"i":592,"t":"For the purposes of these Website Terms of Use, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at: Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we”, “us” or any other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/terms","h":"#1-who-we-are","p":589},{"i":594,"t":"The Website is provided by us on an ‘as is’ basis and you use the Website at your own sole discretion and risk. We disclaim all warranties of any kind, express or implied, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement of intellectual property or other violation of rights. We do not warrant or make any representations concerning the completeness, accuracy, legality, utility, reliability, suitability or availability of the use of the Website, the content on this Website or otherwise relating to the Website, such content or on any sites linked to this site.These disclaimers will apply to the maximum extent permitted by applicable law. We make no claims that the Website or any of its content is accessible, legally compliant or appropriate in your jurisdiction. Your access or use of the Website is at your own sole discretion and you are solely responsible for complying with any applicable local laws. The content herein or as accessible through this website is intended to be made available for informational purposes only and should not be considered as creating any expectations or forming the basis of any contract, commitment or binding obligation with us. No information herein shall be considered to contain or be relied upon as a promise, representation, warranty or guarantee, whether express or implied and whether as to the past, present or the future in relation to the projects and matters described herein. The information contained herein does not constitute financial, legal, tax, or other advice and should not be treated as such. Nothing in this Website should be construed by you as an offer to buy or sell, or soliciting any offer to buy or sell any tokens or any security.","s":"2) Disclaimers","u":"/terms","h":"#2-disclaimers","p":589},{"i":596,"t":"The Website may also contain forward-looking statements that are based on current expectations, estimates, forecasts, assumptions and projections about the technology, industry and markets in general. The forward looking statements, which may include statements about the roadmap, project descriptions, technical details, functionalities, features, the development and use of tokens by projects, and any other statements related to such matters or as accessible through this website are subject to a high degree of risk and uncertainty. The forward looking statements are subject to change based on, among other things, market conditions, technical developments, and regulatory environment. The actual development and results, including the order and the timeline, might vary from what’s presented. The information contained herein is a summary and does not purport to be accurate, reliable or complete and we bear no responsibility for the accuracy, reliability or completeness of information contained herein. Because of the high degree of risk and uncertainty described above, you should not place undue reliance on any matters described in this website or as accessible through this website. While we aim to update our website regularly, all information, including the timeline and the specifics of each stage, is subject to change and may be amended or supplemented at any time, without notice and at our sole discretion.","s":"3) Forward looking statements","u":"/terms","h":"#3-forward-looking-statements","p":589},{"i":598,"t":"The Website and its contents are made available under Creative Commons Attribution 4.0 International license (CC-BY 4.0). In essence this licence allows users to copy, modify and distribute the content in any format for any purpose, including commercial use, subject to certain requirements such as attributing us. For the full terms of this licence, please refer to the following website: https://creativecommons.org/licenses/by/4.0/.","s":"4) Intellectual property rights","u":"/terms","h":"#4-intellectual-property-rights","p":589},{"i":600,"t":"To the extent the Website provides any links to a third party website, then their terms and conditions, including privacy policies, govern your use of those third party websites. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. We have no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through the Website. If you access such third party websites through the Website, it is at your own risk and you are solely responsible for your activities on such third party websites.","s":"5) Third-party website links","u":"/terms","h":"#5-third-party-website-links","p":589},{"i":602,"t":"We will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these Website Terms of Use, the Website, the content on the Website, or your use of the Website, even if we have been advised of the possibility of such damages. In any event, our aggregate liability for such claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the maximum extent permitted by applicable law.","s":"6) Limitation of liability","u":"/terms","h":"#6-limitation-of-liability","p":589},{"i":604,"t":"You shall indemnify us and hold us harmless from and against any and all claims, damages and expenses, including attorneys’ fees, arising from or related to your use of the Website, the content on the Website, including without limitation your violation of these Website Terms of Use.","s":"7) Indemnity","u":"/terms","h":"#7-indemnity","p":589},{"i":606,"t":"We may modify or replace any part of this Website Terms of Use at any time and without notice. You are responsible for checking the Website periodically for any changes. The new Website Terms of Use will be effective immediately upon its posting on the Website.","s":"8) Modifications","u":"/terms","h":"#8-modifications","p":589},{"i":608,"t":"Swiss law governs these Website Terms of Use and any disputes between you and us, whether in court or arbitration, without regard to conflict of laws provisions.","s":"9) Governing law","u":"/terms","h":"#9-governing-law","p":589},{"i":610,"t":"In these terms, “dispute” has the broadest meaning enforceable by law and includes any claim you make against or controversy you may have in relation to these Website Terms of Use, the Website, the content on the Website, or your use of the Website. We prefer arbitration over litigation as we believe it meets our principle of resolving disputes in the most effective and cost effective manner. You are bound by the following arbitration clause, which waives your right to litigation and to be heard by a judge. Please note that court review of an arbitration award is limited. You also waive all your rights to a jury trial (if any) in any and all jurisdictions. If a (potential) dispute arises, you must first use your reasonable efforts to resolve it amicably with us. If these efforts do not result in a resolution of such dispute, you shall then send us a written notice of dispute setting out (i) the nature of the dispute, and the claim you are making; and (ii) the remedy you are seeking. If we and you are unable to further resolve this dispute within sixty (60) calendar days of us receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and us through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration. Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against us.","s":"10) Disputes","u":"/terms","h":"#10-disputes","p":589},{"i":612,"t":"These Website Terms of Use cover the entire agreement between you and us regarding the Website and supersede all prior and contemporaneous understandings, agreements, representations and warranties, both written and oral, with respect to the Website. The captions and headings identifying sections and subsections of these Website Terms of Use are for reference only and do not define, modify, expand, limit, or affect the interpretation of any provisions of these Website Terms of Use. If any part of these Website Terms of Use is held invalid or unenforceable, that part will be severable from these Website Terms of Use, and the remaining portions will remain in full force and effect. If we fail to enforce any of these Website Terms of Use, that does not mean that we have waived our right to enforce them. If you have any specific questions about these Website Terms of Use, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"11) About these Website Terms of Use","u":"/terms","h":"#11-about-these-website-terms-of-use","p":589},{"i":614,"t":"On this page Waku is a nascent technology and the Waku community is still growing. Hence, the Waku team is keen to work closely with projects to help leverage Waku technology to drive the success of their own applications. We describe below the expected flow for working with Waku and some rules of engagement to set expectations for project teams interacting with the Waku team.","s":"Rules of Engagement","u":"/rules-of-engagement","h":"","p":613},{"i":616,"t":"We encourage the initial discussion to happen over a video call. However, in-person event or online discussions are also an option. During this initial interaction, the project team should present their product and the needs they have in relation to peer-to-peer communication and real time interaction. The Waku team will provide an overview of Waku and point to specific protocol and software that should help fulfil such needs. Benefits and caveats are highlighted and further documentation and examples will be provided.","s":"1. Initial discussion","u":"/rules-of-engagement","h":"#1-initial-discussion","p":613},{"i":618,"t":"Projects should review Waku documentations and libraries in their own time; start building a PoC using Waku. Projects should start designing over Waku and come up with skeleton design or user flows about specific friction points or complex area (e.g. user experience, scaling). Project should appoint one or two Waku SME (Subject Matter Expert) to drive most discussions with Waku team to start acquire expertise on Waku behaviour. Project's Waku SMEs should present unresolved design issues to Waku team. The Waku team will then review and provide skeleton design solutions on how to overcome said unresolved or complex issues.","s":"2. Solution design","u":"/rules-of-engagement","h":"#2-solution-design","p":613},{"i":620,"t":"The project should finalise a design, solution or protocol they will build using Waku. If they wish to, they can present this solution to the Waku team to get feedback and identify technical gaps. The Waku team can provide feedback, highlight potential caveats, and communicate on delivery timeline for gaps, if any. note While the Waku team can provide feedback or even design potential solution on how Waku could be integrated in an application. It is the responsibility of the project team to understand the potential caveats and limitations that may incur with such a design. The Waku team can provide options, but it is up to the project team to decide on the final solution.","s":"3. Commitment","u":"/rules-of-engagement","h":"#3-commitment","p":613},{"i":622,"t":"The project then start building their MVP using Waku. The Waku team can provide support regarding API usage, bugs encountered, documentation gaps. Waku team will use feedback raised by project to improve APIs, fix bugs and enhance documentation. Waku team continues R&D to deliver any committed technical gaps. Project delivers their MVP. note The Waku team is keen to help any usage of Waku library. Please note that code snippets are necessary for preliminary investigations of issues. Sometimes, a code snippet is not enough; in this case, a minimal reproduction repo is necessary to allow us to do further investigation. If the project is open-source, then the Waku team might try to further investigate using it, as long as the reproduction steps are easy. If no code is provided to help with the investigation, then there is nothing the Waku team can do. For any unresolved issue, the project must open an issue on the related GitHub repository under the waku-org organisation.","s":"4. Building","u":"/rules-of-engagement","h":"#4-building","p":613},{"i":624,"t":"Once the project application is live, the Waku team is keen to maintain regular contact. This can include discussion around performance, bugs found by users, etc. The Waku team is keen to regularly present new and upcoming development to project team, highlight items that are particularly relevant. If a project wishes to take onboard any new Waku protocol, or decide to extend their product with a new functionality using Waku, the circle can resume from step 1.","s":"5. Ongoing relation","u":"/rules-of-engagement","h":"#5-ongoing-relation","p":613},{"i":626,"t":"We take security seriously at Waku and across the Institute of Free Technology and its affiliates. Please report any security incidents via security@free.technology. Please report any discovered vulnerabilities in our bounty programme at HackenProof to help ensure our protocols and software remain secure.","s":"Security","u":"/security","h":"","p":625}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,1.197,1,4.989,2,4.556,3,3.695,4,4.24,5,2.018,6,3.838,7,1.391,8,1.871,9,3.563,10,4.388,11,1.219,12,4.989,13,2.073,14,2.344,15,3.39,16,3.203,17,3.262,18,4.109,19,3.203,20,5.286,21,2.901,22,2.857,23,2.946,24,3.203,25,3.262,26,4.989,27,6.284,28,3.991,29,5.286,30,6.284,31,2.946,32,5.682,33,6.284]],["t/4",[0,1.337,6,2.97,7,1.402,10,4.423,11,1.596,12,5.03,13,2.715,19,3.229,21,2.924,34,4.024,35,1.624,36,3.417,37,3.229,38,3.288,39,2.924,40,5.328,41,4.791,42,2.757,43,3.229,44,5.328,45,2.577,46,3.351,47,3.798,48,4.791,49,4.274,50,3.817,51,3.817,52,4.791,53,4.423,54,4.024,55,2.646]],["t/6",[0,1.382,3,3.122,4,3.582,5,1.309,6,3.045,9,1.493,11,0.665,14,1.28,15,1.85,16,3.311,19,1.749,21,1.584,22,1.56,28,3.372,34,3.372,35,0.677,40,4.465,41,2.595,46,2.808,56,4.912,57,5.309,58,0.832,59,2.614,60,1.888,61,5.309,62,5.309,63,3.867,64,3.707,65,3.122,66,4.8,67,2.724,68,4.8,69,1.888,70,5.309,71,3.43,72,2.315,73,3.43,74,2.395,75,6.494,76,2.614,77,3.43,78,3.43,79,4.8,80,2.243,81,2.315,82,2.179,83,3.102,84,1.888,85,6.149,86,4.8,87,4.016,88,3.102,89,1.749,90,4.8,91,1.661,92,2.12,93,5.157,94,2.724,95,2.885,96,2.724,97,2.864,98,3.43,99,2.243,100,3.102,101,2.017,102,1.718,103,3.43,104,2.595,105,2.724,106,2.067,107,2.179,108,2.724,109,2.487,110,4.8,111,4.465,112,2.885,113,1.661,114,3.43,115,3.43,116,1.85,117,1.515,118,1.971,119,2.395,120,2.885,121,2.885,122,1.634,123,3.102,124,3.43,125,3.43,126,3.102]],["t/10",[0,1.191,16,3.178,22,2.835,28,3.96,35,1.231,36,3.363,38,3.236,42,2.714,45,2.536,58,0.709,127,6.234,128,3.666,129,5.244,130,3.106,131,1.333,132,4.077,133,3.122,134,2.221,135,1.718,136,3.018,137,2.504,138,5.637,139,5.244,140,4.353,141,3.178,142,4.715,143,4.95,144,3.505,145,4.077,146,3.178,147,4.52]],["t/12",[0,1.197,14,2.344,15,4.415,18,4.109,37,4.172,58,0.931,59,3.094,83,5.682,92,3.884,122,2.993,148,3.094,149,6.356,150,2.946,151,5.682,152,2.901,153,3.884,154,3.611,155,3.042,156,3.611,157,2.949,158,6.284,159,3.324,160,3.262,161,4.556,162,5.199,163,5.353,164,4.989,165,5.682,166,5.286]],["t/14",[0,1.416,18,3.722,22,2.588,35,1.124,58,0.872,60,4.771,76,2.802,126,5.147,131,0.76,135,1.569,153,3.518,155,2.756,156,3.271,157,2.051,167,4.873,168,4.771,169,4.52,170,1.569,171,4.52,172,3.429,173,5.799,174,5.692,175,5.692,176,2.802,177,3.347,178,3.839,179,2.641,180,3.974,181,5.147,182,4.127,183,3.974,184,5.692,185,3.722,186,3.271,187,5.692,188,4.305,189,5.692]],["t/16",[0,1.084,8,2.207,18,4.846,23,3.474,58,0.843,135,2.042,137,2.976,159,3.92,160,3.847,170,2.042,190,3.421,191,3.711,192,5,193,4.079,194,6.233,195,5,196,4.707,197,3.997,198,2.229]],["t/18",[0,1.084,18,4.846,58,0.843,72,5,141,3.777,146,4.631,157,2.67,192,6.629,193,5,199,5.605,200,3.847,201,3.474,202,4.846,203,5.373,204,5.373]],["t/20",[8,2.954,157,3.398,160,3.515,164,5.376,192,7.057,193,5.459,196,4.301,200,3.515,205,2.907,206,4.728,207,7.933,208,6.771,209,4.08,210,6.771]],["t/22",[0,0.898,8,2.68,51,3.697,137,2.465,153,3.793,155,2.971,157,2.904,159,3.246,161,4.45,185,4.013,192,7.109,193,5.26,200,3.186,211,5.162,212,5.549,213,3.697,214,3.45,215,3.31,216,4.036,217,3.793,218,6.136,219,5.549,220,6.136,221,6.136,222,2.71,223,6.136,224,1.629]],["t/24",[0,0.605,7,0.915,14,1.543,21,3.359,23,1.938,35,0.816,39,1.909,42,2.662,45,1.682,58,0.47,65,2.431,131,0.552,134,1.473,135,1.139,140,4.27,141,3.117,159,3.849,170,1.139,190,1.909,191,2.071,197,4.337,198,2.702,211,3.478,212,3.738,214,2.324,225,3.127,226,4.855,227,5.426,228,2.79,229,2.79,230,1.64,231,2.324,232,3.127,233,2.431,234,1.456,235,2.704,236,5.529,237,3.738,238,6.114,239,4.134,240,4.434,241,6.114,242,3.478,243,3.127,244,2.626,245,2.376,246,3.738,247,3.127,248,5.614,249,3.298,250,2.998,251,2.887,252,4.134,253,4.134,254,4.134,255,4.134,256,3.283,257,2.556,258,1.825,259,2.887,260,3.081,261,3.283,262,4.622,263,2.998,264,3.127,265,2.626,266,2.704,267,4.134,268,2.998,269,3.738,270,4.134,271,3.283]],["t/26",[23,2.79,31,2.79,58,0.898,76,2.93,131,0.795,135,1.64,179,2.05,193,3.276,197,4.26,198,2.84,202,3.891,224,2.352,226,6.27,248,4.155,249,3.21,272,5.005,273,8.014,274,4.015,275,3.955,276,3.678,277,7.141,278,5.95,279,5.95,280,2.79,281,3.089,282,5.381,283,5.381,284,2.982,285,7.897,286,3.78,287,5.95]],["t/28",[23,3.259,31,3.259,72,4.69,197,3.75,237,6.285,248,4.854,249,3.75,262,4.415,273,7.894,275,3.481,277,6.285,283,6.285,288,4.546,289,8.731,290,5.519,291,6.932,292,5.519,293,7.344,294,5.519,295,6.285,296,5.847,297,3.543]],["t/30",[0,0.891,35,1.202,42,2.65,58,0.912,99,5.243,135,1.678,141,4.087,147,4.415,179,2.098,197,4.325,198,2.697,202,3.982,224,2.379,275,4.016,276,3.764,280,2.855,281,3.161,282,5.506,288,3.982,297,3.104,298,8.018,299,4.252,300,7.25,301,6.089,302,4.606,303,6.089,304,6.089,305,4.835,306,5.506,307,4.606,308,2.811]],["t/32",[0,1.39,6,2.833,7,1.337,8,1.8,13,1.994,15,3.259,37,3.08,42,2.63,43,3.08,58,0.687,92,3.735,149,5.57,154,3.472,157,3.218,159,3.196,160,3.137,161,5.784,163,5.217,170,1.665,201,2.833,215,3.259,225,6.034,260,2.558,263,5.784,309,5.082,310,3.326,311,3.951,312,5.082,313,3.838,314,6.042,315,5.082,316,2.366,317,6.042]],["t/34",[0,1.008,19,3.512,58,0.988,65,4.052,128,4.052,157,3.596,201,4.457,215,3.717,224,1.828,230,2.732,318,5.877,319,4.996,320,4.151,321,6.063,322,6.063,323,5.795,324,6.89]],["t/36",[6,3.096,7,1.017,11,1.281,13,2.179,14,1.714,19,2.342,58,0.879,60,2.529,65,2.701,82,2.918,128,2.701,133,2.301,134,1.636,150,2.154,201,3.624,204,3.331,215,3.562,224,2.051,230,2.618,251,3.208,308,2.121,311,3.004,318,4.778,319,3.331,320,2.768,321,4.611,322,4.611,323,5.554,325,1.845,326,3.208,327,3.647,328,2.768,329,4.154,330,2.43,331,3.864,332,4.594,333,2.188,334,4.154,335,3.493,336,2.918,337,4.154,338,4.154,339,4.154,340,2.582,341,3.562,342,2.701,343,3.864,344,5.554,345,3.331,346,3.1,347,4.154,348,4.154,349,3.864,350,4.154,351,2.058,352,7.108,353,4.594,354,2.121,355,5.97,356,4.594]],["t/38",[0,1.002,5,1.688,7,1.331,11,1.543,13,2.465,15,1.642,18,4.479,22,1.384,23,1.428,25,4.74,35,0.954,38,1.581,58,1.122,59,2.38,60,2.662,72,2.055,117,1.344,118,2.779,130,1.562,131,1.19,133,1.525,135,0.839,137,1.942,153,1.882,155,1.474,157,2.692,162,3.071,163,3.162,170,0.839,173,3.657,176,2.961,177,1.791,178,1.525,179,1.049,180,2.126,181,2.753,192,3.263,193,1.676,194,2.561,196,3.071,197,2.608,198,1.454,201,3.211,209,1.834,315,2.561,320,2.913,351,1.364,357,2.753,358,2.418,359,2.753,360,1.967,361,1.942,362,2.716,363,2.558,364,2.89,365,2.047,366,1.546,367,1.791,368,3.244,369,3.162,370,3.376,371,2.208,372,2.608,373,2.341,374,1.993,375,2.303,376,1.712,377,1.611,378,2.843,379,1.991,380,2.303,381,1.834,382,2.303,383,2.208,384,2.418,385,1.499,386,1.026]],["t/40",[0,1.337,17,3.288,28,4.024,42,2.757,84,3.487,99,4.142,113,3.984,118,3.64,132,5.381,141,3.229,142,4.791,145,4.142,146,3.229,147,4.593,157,2.282,201,2.97,222,2.797,261,5.03,305,5.03,375,4.791,387,5.728,388,3.017,389,4.593,390,4.593,391,4.791,392,5.966,393,5.328,394,4.142,395,6.334,396,4.274,397,5.328,398,4.423]],["t/42",[7,1.89,11,1.657,58,1.069,117,2.964,131,0.897,137,3.43,157,3.077,170,1.85,178,3.362,190,3.099,191,4.278,201,3.148,205,2.882,318,4.15,351,3.008,360,2.731,361,2.696,362,3.387,363,3.551,364,2.597,399,3.362,400,5.078]],["t/44",[0,0.776,5,1.308,25,2.755,35,1.048,58,0.951,76,2.613,117,2.343,118,3.05,130,1.715,131,1.337,137,2.132,157,1.912,176,4.435,205,2.278,224,2.655,230,2.105,284,2.004,316,2.863,325,2.936,351,2.378,362,2.899,401,5.037,402,2.217,403,3.802,404,5.529,405,4.298,406,4.799,407,5.804,408,5.307,409,3.121,410,1.912,411,3.053,412,2.217]],["t/46",[0,0.858,5,2.313,7,2.077,8,1.746,14,2.187,35,1.157,58,0.667,131,0.783,157,2.817,198,2.646,224,2.768,230,3.1,271,4.654,316,2.296,403,3.555,409,3.447,413,7.4,414,7.4,415,4.654,416,6.576,417,2.988,418,2.706,419,5.862,420,5.862]],["t/48",[0,0.66,5,1.113,11,1.853,13,2.151,14,2.433,35,0.891,42,1.965,53,4.553,54,2.868,58,0.514,63,2.388,104,3.415,116,2.435,122,2.15,157,1.627,179,1.555,195,3.046,224,2.748,230,1.79,260,2.761,284,1.704,325,2.619,360,1.837,361,1.813,362,1.79,366,2.447,402,3.502,405,2.655,409,2.655,417,2.301,421,4.553,422,3.283,423,3.165,424,4.713,425,4.612,426,5.79,427,3.415,428,5.051,429,4.082,430,3.415,431,4.082,432,2.435,433,4.514]],["t/50",[11,1.726,58,0.903,97,3.234,113,2.903,117,2.647,137,2.408,178,3.003,201,2.811,224,2.106,230,2.378,249,3.234,284,2.264,318,3.706,325,3.188,326,5.542,352,6.302,400,4.535,402,2.505,434,5.422,435,5.996,436,4.046,437,6.451,438,5.422,439,5.422,440,8.045,441,5.422,442,2.768,443,5.422,444,5.996,445,4.906,446,5.422,447,4.046]],["t/52",[0,0.815,7,1.233,11,1.922,35,1.1,58,1.046,113,3.658,224,2.736,316,2.182,325,3.034,341,3.005,360,3.074,362,2.996,363,3.997,402,3.156,403,2.533,437,4.039,448,3.005,449,5.715,450,5.571,451,5.037,452,5.037,453,4.686,454,5.037,455,3.643,456,4.214,457,5.037,458,5.037,459,4.686,460,7.555,461,5.037,462,4.686]],["t/54",[0,0.589,7,1.327,11,1.726,13,1.329,23,1.889,31,1.889,35,0.795,56,3.047,58,0.903,72,2.718,113,1.95,117,1.779,179,1.388,224,2.799,262,4.552,316,3.109,325,2.878,333,2.857,341,2.173,361,2.878,362,2.842,363,2.131,364,2.772,378,3.527,392,2.921,402,2.993,403,3.258,407,3.199,422,2.806,423,2.706,428,3.614,448,2.173,463,5.191,464,4.028,465,3.372,466,2.921,467,3.388,468,2.427,469,3.047,470,5.998,471,3.199,472,3.388,473,4.028,474,3.642,475,2.813,476,3.642,477,3.642,478,3.199,479,4.028,480,4.028,481,2.634,482,2.49,483,2.634,484,3.199]],["t/56",[0,1.254,5,2.266,22,2.533,35,1.692,38,2.892,58,0.975,91,2.697,118,3.201,130,1.8,131,1.354,133,2.79,137,2.237,170,2.082,176,3.72,190,2.572,191,2.79,198,2.273,205,2.391,209,3.356,271,4.423,284,2.103,372,4.076,373,3.658,374,3.534,380,4.214,381,3.356,382,4.214,383,4.039,384,4.423,385,2.743,386,1.878,399,2.79]],["t/58",[0,0.942,5,1.587,58,0.946,131,1.111,157,2.996,170,1.774,176,4.534,183,4.496,201,3.019,224,2.674,230,2.553,373,3.117,374,2.654,401,5.01,402,2.689,403,2.927,404,4.87,405,3.786,410,2.32,411,3.473,485,3.98,486,5.822,487,3.406,488,4.496]],["t/60",[5,2.253,7,0.677,8,0.91,22,1.39,23,1.433,39,1.411,43,1.558,58,0.906,86,2.764,122,1.456,130,1.567,131,1.287,135,0.842,152,2.783,157,1.101,176,3.685,179,1.053,186,3.465,197,3.252,198,0.919,200,1.587,205,1.312,214,3.859,224,2.853,226,3.851,227,2.063,228,2.063,230,2.391,263,2.216,275,1.531,280,1.433,281,2.518,290,2.427,316,1.899,364,1.182,372,4.297,386,1.03,401,4.8,402,3.487,403,3.403,409,1.798,489,5.452,490,1.942,491,1.842,492,2.216,493,1.718,494,2.571,495,1.798,496,2.764,497,2.764,498,2.998,499,4.385,500,4.385,501,2.312,502,2.571,503,2.427,504,2.063,505,3.057,506,4.85,507,3.057,508,2.571,509,3.057,510,3.057,511,3.057,512,1.798,513,2.764,514,2.427,515,1.48,516,1.999]],["t/62",[0,0.812,45,1.48,58,0.924,131,1.257,157,1.31,170,1.002,176,3.316,179,1.253,186,3.871,200,2.883,201,1.705,215,1.962,224,2.885,230,2.671,258,1.606,280,1.705,316,1.424,318,3.432,321,2.539,322,2.539,330,1.924,364,1.407,366,1.163,373,4.144,374,3.878,401,4.058,402,3.149,403,2.525,447,4.545,486,3.288,487,1.924,488,2.539,498,3.432,517,2.002,518,7.342,519,6.817,520,2.378,521,3.059,522,5.666,523,3.637,524,3.288,525,6.09,526,2.637,527,5.021,528,3.637,529,3.288,530,3.637]],["t/64",[5,2.232,45,1.925,58,0.767,131,1.144,157,1.705,176,4.217,186,2.719,200,2.457,224,2.918,230,3.116,364,1.83,366,1.513,372,4.239,373,3.265,374,3.239,401,4.064,402,3.283,403,2.152,447,5.303,489,4.279,498,4.169,499,4.279,500,4.279,518,4.279,519,6.098,522,3.98,525,6.098,526,3.431,527,4.279,529,4.279,531,3.98,532,4.732]],["t/66",[5,2.061,58,0.739,131,1.235,157,3.012,198,2.514,201,3.044,224,2.681,230,2.574,316,2.542,347,7.558,365,3.539,377,3.434,401,5.036,402,2.712,403,3.801,404,4.91,405,3.817,413,5.46,416,5.46,533,6.491,534,6.491]],["t/68",[0,1.33,5,1.872,7,1.242,11,1.63,13,2.068,15,1.99,18,3.671,23,3.831,24,3.871,25,1.915,35,0.944,37,1.115,53,1.528,58,0.899,59,1.816,65,1.287,110,3.335,116,1.18,118,2.748,128,1.287,130,0.707,131,0.837,133,2.395,135,1.017,136,1.059,137,3.05,141,1.115,149,3.919,156,1.258,157,0.788,159,1.158,161,3.467,162,1.39,163,3.127,167,1.23,168,1.205,176,2.354,178,1.847,190,1.01,191,2.395,192,3.227,193,1.205,194,1.841,196,3.037,197,2.579,198,1.688,199,1.655,201,1.026,205,1.583,215,1.18,229,1.477,233,1.287,234,0.771,235,1.431,251,1.528,268,1.587,308,1.01,311,1.431,318,3.47,320,2.222,321,1.528,322,1.528,323,3.103,325,0.879,326,1.528,327,2.929,330,1.158,334,1.979,341,1.18,342,1.287,346,1.477,349,1.841,351,2.142,360,0.89,364,1.85,365,2.024,366,2.004,367,2.169,368,3.028,369,3.127,370,2.576,372,1.99,373,1.059,374,1.52,378,2.812,379,2.412,386,1.612,399,1.096,410,0.788,411,1.541,412,0.914,424,1.23,434,3.335,437,1.587,520,1.431,535,1.738,536,2.188,537,2.675,538,0.826,539,1.353,540,1.655,541,1.738,542,1.655,543,1.979,544,2.675,545,2.188,546,2.188,547,2.188,548,1.587,549,1.158,550,1.477,551,1.979,552,1.841,553,1.655,554,1.431,555,1.979,556,2.188,557,2.675,558,1.655,559,1.353,560,1.738,561,0.995,562,1.655,563,1.18,564,1.841,565,1.738,566,1.979,567,1.318]],["t/70",[58,0.876,60,4.239,137,3.093,153,4.76,157,2.775,170,2.122,173,5.825,176,3.791,177,4.528,178,3.857,179,2.653,180,5.377,190,3.555,191,3.857,201,3.61]],["t/72",[22,2.835,58,0.926,60,4.992,113,3.018,133,3.122,134,2.221,157,2.246,173,6.159,177,3.666,178,4.078,180,5.686,201,2.923,308,2.878,318,3.853,321,4.353,322,5.686,325,2.504,340,3.505,391,4.715,411,2.604,568,6.849,569,8.142,570,6.849,571,6.234,572,3.853,573,6.234,574,4.52,575,6.234,576,4.715]],["t/74",[0,1.202,6,2.407,11,0.996,35,1.013,60,2.826,67,4.077,132,5.372,134,1.829,144,2.886,170,1.415,173,3.883,179,2.83,180,6.201,190,2.37,191,2.571,201,2.407,260,2.174,274,3.464,308,2.37,325,2.062,363,2.716,382,3.883,392,5.179,396,4.82,577,5.134,578,4.642,579,5.134,580,5.134,581,5.134,582,5.134,583,4.318,584,3.723,585,3.357,586,5.134,587,4.318,588,4.318,589,2.486,590,3.357,591,4.642,592,4.318,593,4.642,594,5.134,595,3.261,596,5.134,597,6.459,598,3.357,599,4.077,600,5.134,601,3.723,602,4.077,603,5.134,604,4.318,605,2.665,606,5.134]],["t/76",[7,1.552,11,1.36,13,2.314,58,0.999,72,4.732,117,3.097,131,0.937,137,3.526,170,1.933,190,3.238,191,3.512,320,4.225,360,2.853,361,2.817,362,3.482,363,4.645,364,3.707,378,4.124,379,4.586]],["t/78",[0,0.966,5,2.083,11,1.639,13,2.178,23,3.095,35,1.303,69,3.633,198,1.985,262,4.193,307,4.993,320,3.977,361,2.651,364,2.553,378,5.48,379,5.525,407,5.241,548,4.786,553,7.049,554,4.316,607,5.968,608,3.977,609,4.786,610,4.316,611,6.6,612,6.6]],["t/80",[5,0.892,11,1.073,13,1.194,23,2.594,35,0.715,72,3.734,113,1.753,131,0.484,141,1.845,157,1.304,170,0.998,177,2.129,198,1.664,201,1.697,224,2.891,262,5.823,284,1.367,302,2.738,307,4.185,316,2.167,320,2.181,325,2.698,333,1.724,354,1.671,364,2.598,378,5.733,379,2.367,402,2.311,403,3.684,422,1.418,423,1.367,428,3.334,463,3.618,465,2.035,474,3.273,475,2.528,476,5.003,477,3.273,478,4.394,481,2.367,482,2.238,553,6.462,554,2.367,555,5.003,609,2.625,613,3.62,614,2.528,615,5.533,616,2.738,617,3.62,618,3.62,619,3.62,620,3.62,621,3.62,622,3.62,623,3.62,624,2.129,625,3.273,626,3.273]],["t/82",[0,1.263,7,1.251,11,1.675,35,1.116,37,2.881,43,2.881,47,2.609,58,1.052,106,3.405,131,1.019,137,2.27,170,1.557,190,2.609,191,2.83,198,1.7,200,2.934,201,2.65,244,3.589,284,2.134,341,4.115,368,5.487,369,3.695,370,3.946,371,4.097,410,2.036,411,3.607,448,3.048,483,3.695,542,4.274,598,3.695,627,4.097,628,4.487,629,4.274,630,5.11,631,5.11]],["t/84",[15,3.887,45,2.932,58,0.82,201,4.187,215,3.887,318,5.519,319,5.225,320,4.342,321,6.235,322,6.235,368,5.234,371,7.035,632,7.511]],["t/86",[5,0.824,11,1.93,22,1.52,24,1.704,58,0.727,63,1.768,89,1.704,116,2.807,179,1.152,216,4.144,224,2.767,230,2.534,260,2.203,297,1.704,316,1.309,325,2.896,333,1.592,335,1.768,341,1.803,360,2.599,361,2.566,362,1.326,363,1.768,364,1.293,365,1.415,366,1.069,368,4.214,369,3.403,371,4.632,377,1.768,378,1.966,388,2.479,402,2.669,403,2.905,411,1.396,418,1.543,422,1.309,423,1.262,424,3.592,425,3.849,426,3.936,427,2.528,428,3.135,430,2.528,455,2.186,462,2.812,463,3.403,475,2.334,478,2.654,520,2.186,540,6.941,633,2.186,634,5.777,635,3.403,636,5.374,637,4.132,638,2.203,639,4.705,640,3.023,641,2.424,642,2.654,643,3.023,644,1.84]],["t/88",[5,0.753,11,1.893,21,1.411,22,1.39,24,1.558,46,3.96,58,0.686,89,1.558,104,2.312,116,1.649,170,0.842,216,4.578,224,2.758,230,2.391,260,1.294,299,2.134,316,1.197,325,2.757,333,1.456,341,1.649,360,2.792,361,2.422,362,1.212,363,1.617,364,1.182,365,2.053,366,0.977,368,4.038,369,3.172,371,4.372,378,1.798,388,2.872,402,2.867,403,2.742,411,1.277,422,1.899,423,1.831,424,3.39,425,3.633,426,3.669,427,2.312,428,2.922,430,2.312,431,2.764,455,3.172,462,2.571,463,3.172,478,2.427,520,1.999,539,1.889,541,6.325,561,1.39,635,3.172,637,3.851,638,2.053,641,2.216,642,2.427,643,2.764,645,4.12,646,5.071,647,4.385,648,2.764,649,4.385,650,5.452,651,3.057,652,4.385,653,2.764]],["t/90",[11,1.909,13,0.625,14,0.706,15,1.021,24,0.965,45,0.77,46,3.043,58,0.581,85,5.288,89,0.965,104,1.432,146,0.965,179,1.123,209,1.141,213,1.141,216,4.286,224,2.836,230,2.281,260,0.801,284,0.715,288,3.337,316,1.277,325,1.724,341,1.759,360,0.77,361,2.049,362,0.751,363,1.001,364,0.732,368,4.165,370,5.975,371,4.171,388,2.045,402,3.107,403,2.616,409,1.113,411,1.362,422,1.277,423,1.231,424,3.234,426,3.86,428,3.788,455,2.132,456,4.756,463,3.762,466,1.373,483,1.238,540,3.86,541,4.052,559,1.17,635,2.132,636,2.742,637,1.503,638,1.38,639,2.948,640,2.948,642,1.503,645,3.461,646,4.292,647,3.882,648,1.712,650,2.948,652,1.712,654,1.503,655,1.503,656,1.592,657,2.742,658,1.893,659,1.893,660,1.893,661,1.893,662,0.932,663,0.965,664,5.103,665,2.364,666,3.26,667,3.26,668,2.948,669,2.2,670,4.294,671,1.893,672,1.893,673,1.893,674,1.893,675,1.893,676,1.893,677,1.893,678,1.893,679,2.364,680,4.294,681,1.893,682,2.364,683,1.373,684,1.893,685,2.589,686,3.26,687,1.893,688,1.893,689,1.503,690,1.712,691,1.712,692,1.893,693,3.26,694,1.893]],["t/92",[11,1.168,13,1.987,21,1.869,31,1.898,39,1.869,45,1.647,46,2.142,51,3.628,54,2.572,58,0.906,72,2.732,117,2.658,170,1.116,179,2.476,201,1.898,214,2.276,216,4.751,224,2.656,230,1.606,251,2.827,330,3.802,365,1.714,366,1.925,368,3.877,369,2.648,370,4.204,388,2.868,402,3.724,411,1.691,458,3.661,481,2.648,482,2.503,484,3.215,540,4.554,541,3.215,632,3.406,634,3.661,635,2.648,636,3.406,638,1.714,646,3.406,649,3.661,662,1.993,695,4.049,696,4.049,697,3.661,698,3.661,699,4.049,700,4.049,701,3.406,702,2.44,703,7.187,704,4.049,705,4.049,706,4.049,707,4.049,708,4.049,709,4.049,710,4.049,711,4.049,712,4.049,713,4.049,714,4.049,715,4.049,716,3.215,717,4.049]],["t/94",[131,1.093,155,3.961,217,5.057,222,3.612,386,2.758,410,2.948,538,3.089,663,4.171,718,6.882]],["t/96",[11,1.337,58,0.784,102,3.451,109,4.996,155,3.336,216,3.451,222,3.042,249,3.717,258,3.042,386,2.323,409,4.052,410,2.483,423,3.278,563,4.684,645,3.793,719,5.471,720,5.471,721,6.89,722,4.649,723,3.645,724,5.212,725,6.89,726,6.89,727,4.811,728,4.376]],["t/98",[42,3.678,155,3.196,192,4.454,193,5.408,205,2.833,222,2.914,258,2.914,262,4.193,284,2.492,330,4.47,333,3.144,349,5.552,410,2.378,417,3.365,729,6.289,730,6.6,731,6.6,732,4.454,733,6.6,734,6.6,735,6.6,736,5.968,737,5.552,738,6.6,739,5.552]],["t/100",[5,2.177,8,1.759,14,2.204,35,1.166,46,2.088,58,0.672,130,1.275,131,1.05,135,1.088,150,1.851,152,3.268,155,1.911,198,1.777,200,3.067,215,2.129,216,1.977,222,1.743,258,1.743,275,3.936,281,3.067,366,1.889,374,1.627,379,2.581,385,1.943,410,1.422,411,1.649,417,2.012,432,3.819,445,4.376,495,3.474,645,2.173,727,2.756,728,2.507,740,7.079,741,5.621,742,4.125,743,5.908,744,2.321,745,3.569,746,2.862,747,3.32,748,3.32,749,3.134,750,3.947,751,3.569,752,2.862,753,3.569,754,5.908,755,3.98,756,3.32,757,3.569,758,3.32,759,3.947,760,3.947,761,3.947,762,5.342,763,5.908,764,5.342,765,3.32,766,3.559,767,3.32,768,4.969,769,2.986,770,4.163,771,2.153,772,2.862,773,3.947,774,4.969]],["t/102",[8,1.857,152,2.878,155,3.018,199,4.715,222,2.753,257,5.033,258,4.404,281,4.227,373,4.655,405,3.666,410,2.246,493,3.505,515,3.942,645,3.432,727,4.353,728,3.96,775,8.142,776,6.849,777,6.234,778,6.849,779,6.234,780,5.244,781,5.244,782,2.676,783,4.077,784,5.637]],["t/104",[0,0.384,5,1.342,7,1.205,8,2.215,11,0.51,46,2.271,58,0.488,63,2.271,64,2.998,81,1.773,89,1.339,101,1.545,102,1.316,104,1.987,105,2.086,130,1.387,144,1.477,152,2.902,155,1.272,197,1.417,198,1.291,216,3.725,222,1.16,224,0.697,258,1.16,268,1.905,281,1.364,311,1.718,316,1.029,320,1.583,368,1.417,405,1.545,410,2.265,422,2.132,423,2.617,445,2.654,465,3.061,475,1.835,488,2.998,512,1.545,535,2.086,539,2.654,584,3.948,638,1.818,716,4.323,727,4.39,728,3.993,741,3.409,742,1.835,749,3.409,766,4.481,771,3.671,774,2.21,785,5.194,786,1.477,787,4.091,788,4.293,789,4.755,790,3.882,791,2.808,792,3.611,793,2.376,794,4.293,795,2.627,796,2.998,797,2.376,798,4.293,799,2.808,800,4.293,801,1.669,802,2.998,803,2.086,804,2.376,805,2.627,806,2.21,807,3.611,808,2.627,809,2.627,810,1.987,811,2.627,812,1.364,813,2.376,814,1.364,815,2.627,816,2.086,817,1.51,818,2.376,819,4.293,820,2.627,821,2.727,822,2.376,823,2.937,824,2.627,825,3.409,826,1.987]],["t/106",[0,0.727,5,1.225,7,1.1,8,2.08,11,1.79,42,2.164,51,4.208,55,2.077,155,2.407,198,1.495,205,2.134,222,2.195,258,2.195,342,2.924,351,3.129,366,3.142,405,2.924,410,1.791,520,4.567,758,4.182,764,4.495,766,4.208,772,3.605,774,4.182,782,2.134,810,6.107,827,4.971,828,4.495,829,8.342,830,5.703,831,4.495,832,4.971,833,4.971,834,4.971,835,3.355,836,4.495,837,6.624,838,6.984,839,3.761,840,4.495,841,5.064]],["t/108",[5,2.208,7,1.982,8,1.56,11,1.016,19,2.669,55,3.025,155,2.535,222,2.312,224,1.39,245,4.162,258,2.312,259,3.657,281,2.719,364,4.038,378,4.259,410,1.887,422,2.836,423,1.977,553,3.961,589,2.535,755,4.071,766,3.155,768,6.091,770,4.259,785,3.657,821,3.326,842,4.735,843,6.091,844,4.735,845,3.961,846,4.735,847,5.236,848,2.825,849,7.506,850,5.478,851,3.961,852,2.944]],["t/110",[5,1.862,7,1.672,8,2.249,11,1.465,155,3.657,222,3.335,258,3.335,281,3.921,410,2.721,526,7.183,589,3.657,766,4.55,785,5.274,853,6.829,854,3.85]],["t/112",[0,0.668,8,1.958,11,0.886,14,2.875,58,0.52,131,0.61,152,3.035,155,2.211,159,2.416,167,5.887,168,4.241,222,2.016,224,1.745,240,6.476,246,4.129,247,3.454,249,2.464,258,2.016,275,3.859,297,2.328,410,1.646,417,3.352,432,3.547,492,3.311,498,2.823,515,4.081,520,2.987,538,1.724,549,2.416,561,2.077,589,2.211,657,7.089,728,2.901,766,3.962,771,2.397,772,4.768,785,4.591,855,3.841,856,5.531,857,3.311,858,5.945,859,3.626,860,2.371,861,4.567,862,4.567,863,2.328]],["t/114",[8,2.476,152,3.839,155,3.117,193,4.577,222,2.843,240,4.668,247,4.87,258,2.843,275,4.164,405,3.786,410,2.32,432,4.485,515,4.997,766,3.879,785,5.806,864,7.43,865,6.438]],["t/116",[8,1.933,65,3.817,118,3.731,131,1.117,155,3.143,186,3.731,222,2.866,258,4.082,330,3.434,373,5.008,374,3.811,410,2.339,493,3.649,515,4.047,520,5.467,521,5.46,727,4.533,728,4.123,766,3.911,780,5.46,781,5.46,782,2.786]],["t/118",[8,1.337,35,0.886,58,0.511,65,2.64,84,3.575,97,2.421,118,2.58,131,1.274,152,2.072,155,2.173,176,3.197,198,1.35,206,3.134,222,1.982,234,2.287,258,1.982,275,3.252,374,3.446,410,1.617,424,2.523,432,2.421,442,2.072,487,4.036,491,3.912,493,4.987,727,3.134,728,2.851,739,3.776,751,5.872,766,3.912,770,3.819,852,3.651,866,5.719,867,5.462,868,3.776,869,3.255,870,3.395,871,5.149,872,2.704,873,4.014,874,4.534,875,5.462,876,3.776,877,4.912,878,4.489,879,3.776,880,3.029,881,3.564,882,4.059]],["t/120",[0,0.982,5,2.572,7,1.89,8,2.544,63,5.4,131,0.897,155,3.25,222,2.964,258,2.964,281,3.485,360,2.731,410,2.419,589,4.135,766,4.045,785,4.688,883,4.688,884,7.184]],["t/122",[8,2.25,21,4.574,22,2.533,42,3.289,58,0.634,117,2.46,131,1.009,137,2.237,155,2.697,170,1.535,197,5.7,216,3.784,222,2.46,248,3.89,258,2.46,275,3.784,386,2.89,410,2.007,411,2.327,432,3.005,538,2.103,766,4.552,785,5.276,789,6.953,885,5.037,886,5.571,887,5.037,888,5.571]],["t/124",[13,2.4,37,3.707,58,1.022,137,2.921,157,3.236,159,3.847,160,3.776,170,2.004,196,5.704,201,3.41,233,4.277,234,2.562,358,5.775,539,4.495,889,6.576,890,6.117,891,6.576,892,5.775]],["t/127",[31,3.259,37,3.543,39,3.209,94,5.519,106,4.188,157,2.504,159,5.05,168,5.254,196,6.063,311,5.71,627,5.04,893,6.951,894,6.285,895,6.951,896,6.951,897,6.604,898,5.04,899,4.854]],["t/129",[7,1.721,10,5.43,17,4.037,92,4.807,135,2.143,157,2.802,316,3.046,383,5.639,400,5.882,638,3.292,668,7.032,884,6.541,900,6.541,901,7.776]],["t/131",[44,6.414,157,2.748,159,4.89,170,2.101,196,4.844,215,4.113,308,3.52,311,4.987,335,4.034,410,2.748,902,4.987,903,6.414,904,7.625,905,6.895,906,7.625]],["t/133",[5,1.987,13,2.659,17,3.186,42,2.671,53,4.285,58,0.698,63,3.246,91,2.971,150,2.877,157,2.904,159,4.761,179,2.114,196,6.07,197,3.31,211,5.162,228,4.141,233,3.609,315,5.162,320,3.697,373,2.971,374,3.322,410,2.904,411,2.563,495,3.609,907,5.549,908,5.549,909,5.549,910,4.45,911,5.549,912,5.549,913,4.642]],["t/135",[58,0.843,130,2.394,133,3.711,135,2.042,136,3.588,157,2.67,160,3.847,167,4.166,168,4.079,196,4.707,234,2.61,412,3.095,549,3.92,550,5,665,4.079,723,3.92,897,5.605,914,5.373,915,6.233]],["t/137",[0,1.074,13,2.422,17,3.811,35,1.449,58,0.835,84,4.041,135,2.023,196,5.737,201,3.442,217,4.537,312,6.174,333,3.497,605,3.811,916,4.953,917,3.742,918,7.34,919,5.552,920,7.34,921,7.34]],["t/139",[7,1.721,11,1.508,58,0.885,131,1.039,137,3.123,170,2.143,190,3.59,191,3.895,325,3.123,362,3.084,364,3.008,365,3.292,366,2.486,367,4.573]],["t/141",[0,0.991,35,1.337,58,0.77,76,3.334,131,1.26,157,2.44,224,2.716,230,2.685,316,2.652,325,3.449,351,3.034,362,3.406,401,5.682,402,2.828,403,3.905,404,5.122,405,3.982,406,6.123]],["t/143",[5,2.201,7,1.595,58,0.82,131,0.963,157,2.596,198,2.686,224,2.575,230,2.858,316,2.822,366,2.304,403,3.277,413,7.511,414,7.511,415,5.722,416,6.061,922,7.206]],["t/145",[11,1.815,157,2.398,224,2.763,230,2.64,325,3.412,364,2.575,365,2.818,366,2.128,402,3.548,421,5.932,422,3.327,423,3.207,425,5.637,427,5.035,428,4.011,429,6.019,430,5.035]],["t/147",[11,1.411,45,2.959,131,1.2,157,2.62,170,2.004,316,2.848,333,3.464,365,3.079,366,2.871,367,4.277,782,3.122,860,3.776,923,6.576,924,6.576,925,5.775,926,6.117,927,3.464,928,4.179,929,7.272]],["t/149",[5,1.218,11,1.785,13,1.63,89,2.518,131,0.66,170,1.361,186,2.839,224,2.603,284,1.865,316,3.604,325,1.984,333,3.312,364,1.911,365,2.944,366,2.223,369,3.231,402,2.064,403,2.246,409,2.905,411,2.905,417,2.518,422,1.935,423,1.865,425,4.19,463,6.243,466,3.582,468,2.977,469,3.737,517,2.719,538,3.038,576,3.737,641,3.582,782,3.749,923,4.467,928,2.839,930,4.94,931,4.94,932,4.94,933,2.977,934,3.334,935,4.467,936,4.94,937,4.155]],["t/151",[11,1.86,13,1.507,89,2.328,131,0.61,170,1.259,186,2.625,224,2.779,284,1.724,316,2.575,325,1.834,333,3.132,364,1.767,365,2.784,366,2.102,369,2.987,388,2.175,402,3.521,403,3.503,409,2.686,411,1.908,412,1.908,417,2.328,422,1.789,423,1.724,425,3.962,448,2.464,468,2.752,469,3.454,508,3.841,517,2.514,538,2.909,576,3.454,616,3.454,629,3.454,782,3.307,924,4.129,928,2.625,934,3.082,935,4.129,938,4.567,939,3.311,940,5.531,941,3.841,942,4.567,943,4.129,944,4.567,945,4.567,946,5.221,947,4.129,948,4.567,949,4.129]],["t/154",[5,1.335,11,1.438,157,1.952,224,2.839,230,2.148,365,3.578,366,1.732,402,3.53,403,2.463,410,1.952,417,2.762,463,3.543,517,5.002,535,4.301,538,3.431,641,3.928,782,2.325,928,4.856,937,6.235,940,4.557,941,4.557,949,6.703,950,9.086,951,3.928,952,3.928,953,6.703,954,5.417,955,5.417]],["t/156",[0,0.586,11,1.785,69,2.206,157,1.444,177,3.514,179,1.381,217,2.477,224,2.841,230,1.589,280,1.879,284,1.513,316,1.57,325,2.4,351,2.677,365,3.896,402,3.308,403,3.248,405,4.201,407,3.182,417,2.043,442,1.85,463,5.178,466,2.906,468,4.304,517,3.933,538,2.256,614,2.799,641,4.332,782,2.565,792,5.026,928,5.288,951,2.906,956,8.32,957,3.032,958,4.008,959,2.546,960,4.008,961,4.008,962,4.008,963,4.008,964,4.008,965,2.799,966,3.182,967,3.032,968,2.906]],["t/158",[5,1.058,7,0.95,11,1.825,31,2.013,55,2.626,56,3.247,58,0.715,108,3.408,113,3.043,117,1.895,131,0.573,179,2.166,188,3.247,224,2.69,280,2.947,284,1.621,351,1.923,362,1.702,364,1.66,365,3.855,366,2.617,367,2.524,392,3.112,402,3.42,403,1.952,417,2.188,463,2.807,481,2.807,482,2.653,484,3.408,538,3.29,641,3.112,782,2.698,897,3.247,940,3.611,941,3.611,953,3.881,956,3.881,969,7.437,970,5.287,971,6.286,972,6.286,973,5.287,974,6.286,975,4.292,976,3.408,977,4.292,978,2.524,979,3.881,980,3.408,981,4.292,982,4.292]],["t/160",[42,2.735,43,3.203,45,2.556,59,4.03,131,0.839,135,2.658,137,2.524,170,1.732,190,2.901,191,3.147,284,2.373,297,3.203,340,3.533,391,4.753,394,4.109,418,2.901,512,3.695,584,4.556,663,3.203,826,4.753,916,4.24,983,3.991,984,3.884,985,6.284,986,4.109,987,4.989,988,4.989,989,4.109,990,6.284,991,4.753,992,4.556,993,5.286,994,5.682,995,4.753]],["t/162",[39,1.919,43,3.129,58,0.473,59,3.022,135,1.145,202,4.014,224,2.282,240,5.292,318,4.512,325,1.669,354,1.919,638,1.76,917,2.119,946,3.3,983,2.64,988,3.3,993,3.496,994,3.758,996,3.758,997,3.496,998,4.156,999,2.288,1000,4.156,1001,6.005,1002,6.138,1003,5.551,1004,3.3,1005,4.156,1006,4.156,1007,4.156,1008,4.156,1009,4.156,1010,7.776,1011,4.156,1012,3.014,1013,4.156,1014,4.156,1015,5.796,1016,6.139,1017,7.299,1018,7.299,1019,7.299,1020,7.299,1021,4.156,1022,4.156,1023,4.156,1024,6.138,1025,4.156,1026,6.138,1027,6.138,1028,6.138,1029,4.156,1030,4.156,1031,4.156,1032,4.156,1033,4.156,1034,4.156,1035,2.64,1036,4.156,1037,6.138,1038,4.156,1039,4.156,1040,4.156,1041,4.156]],["t/164",[22,3.161,23,3.259,58,0.791,84,3.826,135,1.916,340,3.908,396,4.69,410,2.504,418,3.209,605,3.609,916,4.69,983,4.415,984,4.297,1001,6.096,1042,5.847,1043,5.847,1044,6.951,1045,6.951,1046,6.285,1047,5.847,1048,5.519,1049,5.847,1050,7.894,1051,6.951]],["t/166",[59,3.515,84,5.565,130,2.307,135,1.968,313,4.536,517,3.931,539,4.414,588,6.006,927,3.401,989,4.67,999,5.565,1001,6.2,1052,5.67,1053,7.14,1054,8.028]],["t/168",[25,3.236,36,3.363,59,3.069,117,2.753,130,3.223,131,1.088,135,2.749,136,3.942,137,2.504,146,3.178,224,2.161,276,3.853,325,2.504,386,2.745,410,2.246,411,2.604,412,2.604,538,2.354,549,3.298,570,5.244,663,3.178,722,4.207,989,4.077,1052,4.95,1055,4.308,1056,3.236]],["t/170",[0,1.045,25,3.707,58,0.812,117,3.153,122,3.401,130,2.307,131,0.954,135,2.447,137,2.868,150,3.348,179,2.46,183,4.986,274,5.991,386,2.993,481,4.67,482,4.414,983,4.536,984,4.414,989,4.67,999,3.931]],["t/172",[0,1.054,5,2.201,35,1.422,58,0.82,91,3.489,118,4.141,131,1.193,135,2.461,137,2.894,148,3.548,170,1.986,190,3.327,191,3.609,198,2.168,284,2.721,374,2.97,386,3.01,531,6.061]],["t/174",[5,2.145,58,0.876,97,3.093,131,1.029,135,2.123,148,2.823,170,1.58,179,1.975,198,2.317,214,3.223,224,2.468,275,2.872,280,2.688,281,3.999,372,4.155,386,1.933,442,2.647,490,3.642,491,3.454,492,4.157,493,3.223,494,4.823,495,3.372,496,5.184,497,5.184,538,2.909,728,3.642,818,6.966,1055,4.075,1057,4.553,1058,6.966,1059,7.703,1060,5.733,1061,5.733]],["t/176",[8,2.035,58,0.643,131,1.096,134,1.326,135,1.883,148,1.833,170,1.026,179,1.283,186,3.927,198,1.12,216,2.831,224,2.382,257,2.301,258,4.264,272,3.131,280,1.746,284,1.406,330,1.969,346,2.512,370,2.6,373,5.075,374,4.102,386,1.255,410,1.341,424,2.093,485,2.301,493,3.842,515,4.182,520,3.697,521,3.131,524,3.366,538,2.881,645,2.049,728,2.365,780,3.131,781,3.131,782,2.426,835,2.512,965,2.6,1055,2.99,1062,3.723,1063,2.956,1064,3.723,1065,3.723,1066,3.723,1067,3.366,1068,4.755,1069,3.723,1070,3.723,1071,3.723,1072,3.723,1073,3.723,1074,3.366,1075,3.723,1076,3.723]],["t/178",[5,1.094,8,2.477,58,0.862,89,2.262,97,2.394,118,2.55,131,1.231,134,1.581,135,2.089,148,2.185,170,1.223,176,4.962,179,1.529,224,2.344,272,3.733,280,2.081,284,1.676,286,4.815,372,2.394,373,3.118,374,2.655,386,1.496,410,1.599,442,2.049,487,4.672,538,2.432,679,3.218,728,2.819,835,2.995,866,5.987,871,5.115,874,5.293,1055,3.407,1068,5.417,1077,6.44,1078,4.438,1079,4.013]],["t/180",[2,2.834,5,2.552,7,0.865,8,2.496,14,1.458,17,2.029,20,3.287,21,1.804,35,1.157,58,0.801,63,5.431,65,2.298,89,1.992,131,1.306,133,1.957,134,1.392,135,2.309,160,2.029,170,1.077,176,2.887,179,1.346,200,2.029,214,2.197,224,2.224,275,1.957,280,1.832,281,3.044,284,1.476,386,1.977,410,1.408,490,2.482,491,2.355,492,2.834,493,2.197,494,3.287,495,2.298,515,2.839,538,2.657,638,2.483,771,1.424,835,2.637,883,4.094,1055,3.723,1080,5.863,1081,3.908,1082,3.908,1083,3.908,1084,3.908,1085,3.908,1086,3.908,1087,2.637,1088,2.956]],["t/182",[0,0.958,13,2.16,15,3.531,42,2.849,58,0.745,137,2.629,149,4.571,157,3.028,161,4.746,162,5.338,163,6.07,164,5.197,165,5.919,166,5.506,170,2.316,178,3.278,190,3.022,191,3.278,201,3.069,215,3.531,225,6.357,309,5.506,310,3.603,311,4.28,312,5.506,313,4.158,1089,6.545]],["t/184",[13,1.825,15,2.984,45,2.25,58,0.972,137,2.222,157,3.078,162,4.776,163,5.994,177,3.253,178,4.278,180,5.25,201,3.525,205,2.374,215,2.984,318,4.648,319,4.011,320,3.333,321,6.4,322,6.4,325,3.431,352,5.97,399,2.77,517,3.045,570,6.325,1090,4.653,1091,5.531,1092,4.653,1093,4.653,1094,5.531,1095,5.531,1096,5.531,1097,5.531]],["t/186",[0,0.583,13,1.316,58,0.677,60,3.921,131,1.289,134,1.42,162,3.781,163,2.608,170,1.963,177,2.345,195,2.691,205,2.555,224,2.839,230,2.824,236,5.382,245,2.292,262,4.524,286,2.533,316,2.331,325,3.172,351,2.667,362,3.351,377,3.149,399,1.997,402,2.486,404,3.016,405,2.345,538,1.506,563,3.842,567,2.402,608,2.402,610,2.608,806,3.354,1057,3.166,1098,3.987,1099,7.898,1100,3.987,1101,3.166,1102,3.606,1103,3.987,1104,3.987,1105,3.987,1106,5.952,1107,3.987,1108,6.44,1109,3.606,1110,3.016,1111,5.382,1112,3.606,1113,3.987,1114,2.784]],["t/188",[0,0.302,11,1.637,13,0.68,56,3.462,58,0.521,59,1.015,60,1.931,79,1.864,84,1.135,97,1.112,113,0.998,131,0.469,134,1.25,157,0.743,162,1.31,163,2.993,169,3.634,177,1.213,185,1.348,207,1.734,213,2.113,224,2.861,230,2.401,260,1.485,262,1.31,264,2.653,284,0.778,316,1.374,325,2.169,326,2.449,351,0.924,352,1.637,360,1.862,362,1.391,363,1.091,402,3.222,410,0.743,424,2.573,425,2.758,426,3.462,427,2.653,428,2.113,430,1.56,437,3.319,438,1.864,439,1.864,440,3.172,441,1.864,442,2.113,443,1.864,445,1.275,446,1.864,468,1.242,563,1.892,583,1.734,585,1.348,616,1.56,718,1.734,739,1.734,742,1.44,792,1.734,869,2.543,951,1.495,984,2.829,1108,3.172,1109,1.864,1110,1.56,1111,1.864,1115,1.734,1116,1.56,1117,2.543,1118,4.577,1119,1.734,1120,3.507,1121,3.172,1122,1.864,1123,2.062,1124,4.884,1125,2.062,1126,1.56,1127,2.062,1128,2.062,1129,1.864,1130,7.714,1131,5.401,1132,2.062,1133,2.062,1134,3.507,1135,2.062,1136,2.062,1137,2.062,1138,2.062,1139,2.062,1140,2.062,1141,3.507,1142,2.062,1143,2.062,1144,2.062,1145,2.062,1146,2.062,1147,4.577,1148,2.062,1149,2.062,1150,1.495,1151,2.062,1152,4.577,1153,6.054,1154,2.062,1155,2.062,1156,2.062,1157,4.577,1158,2.062,1159,2.062,1160,2.062,1161,3.172,1162,2.062,1163,2.062,1164,5.401,1165,6.586,1166,4.577,1167,5.401,1168,3.507,1169,1.864,1170,2.062,1171,2.062,1172,1.864,1173,1.734,1174,3.507,1175,3.507,1176,1.44,1177,2.062]],["t/190",[11,1.625,13,1.289,23,1.832,35,1.157,39,1.804,58,0.667,60,2.151,113,1.892,131,0.783,162,2.482,213,2.355,224,2.936,230,1.55,260,1.655,262,3.725,316,2.756,325,1.57,326,2.729,341,3.163,360,2.386,362,1.55,363,4.965,402,3.675,403,1.777,411,1.632,424,3.296,437,2.834,449,2.956,451,3.534,452,3.534,453,6.578,454,3.534,459,3.287,461,3.534,468,2.355,616,2.956,742,4.094,1110,2.956,1121,3.534,1122,3.534,1124,3.534,1129,5.302,1178,3.908,1179,7.037,1180,3.534,1181,3.908,1182,3.534,1183,3.908,1184,3.908,1185,3.908]],["t/192",[11,1.85,13,1.8,39,2.518,58,0.621,60,3.003,131,0.729,162,3.465,169,4.331,186,3.135,224,2.905,230,2.163,264,4.126,316,2.917,325,2.191,361,2.991,364,2.881,378,4.38,402,2.279,425,3.287,467,4.588,468,4.487,469,5.634,472,4.588,1110,4.126,1119,4.588,1186,7.668,1187,4.331,1188,6.734,1189,5.455]],["t/194",[0,0.555,5,0.935,7,1.269,11,1.805,13,1.892,15,2.047,22,1.726,25,1.97,31,1.779,39,1.752,56,2.87,58,0.787,59,1.868,60,2.089,90,3.431,113,1.837,117,2.532,131,0.766,137,1.524,157,1.367,162,3.643,163,2.482,179,1.307,182,2.752,201,1.779,209,2.286,224,2.844,230,1.505,263,2.752,264,2.87,284,1.433,316,2.246,359,3.431,361,2.303,364,1.468,365,2.428,366,2.463,378,2.232,384,3.013,402,2.888,412,1.585,425,3.455,467,3.192,468,3.455,469,4.338,472,3.192,482,2.346,484,3.013,538,1.433,568,3.192,663,1.935,782,2.462,1110,2.87,1116,5.229,1119,3.192,1186,5.186,1188,5.186,1190,6.913,1191,3.431,1192,5.735,1193,3.795,1194,3.795,1195,3.795,1196,3.795,1197,3.795,1198,3.795]],["t/196",[0,0.668,5,1.899,8,0.845,23,3.799,24,3.676,25,1.472,26,2.252,36,2.464,45,1.154,58,0.748,59,1.396,63,1.5,76,2.249,89,2.329,91,1.373,122,1.351,128,1.668,130,2.95,131,1.38,133,1.42,135,2.605,136,3.184,137,3.095,145,1.855,149,1.98,152,3.036,155,1.373,160,1.472,161,2.056,167,2.568,168,2.515,169,2.252,179,1.574,182,2.056,185,1.855,193,3.62,205,1.217,206,1.98,222,1.252,227,1.914,235,1.855,276,2.824,292,2.252,345,2.056,358,2.252,372,1.53,373,1.373,374,2.972,386,3.136,399,1.42,410,1.022,411,1.908,432,1.53,485,1.753,487,1.5,516,2.987,538,2.722,563,1.53,663,2.924,665,1.561,702,1.709,720,2.252,722,1.914,771,1.034,783,2.987,866,1.63,983,1.801,986,1.855,989,1.855,991,2.145,992,3.312,1199,2.252,1200,2.564,1201,2.252,1202,2.145,1203,2.252,1204,3.312,1205,2.836,1206,2.056,1207,2.385]],["t/198",[0,0.898,42,2.671,58,0.698,131,0.82,134,2.186,160,4.184,206,5.627,222,2.71,231,3.45,276,4.982,284,2.317,292,4.873,310,3.378,330,3.246,385,3.021,386,3.221,410,2.211,411,3.366,538,3.043,563,4.347,720,4.873,722,5.438,723,3.246,724,4.642,801,3.898,851,4.642,927,2.923,933,3.697,1208,6.399,1209,4.285]],["t/200",[0,0.934,58,0.727,130,2.672,131,1.105,136,4.005,170,2.279,258,3.652,276,5.113,330,4.376,386,2.788,411,2.667,417,3.255,495,4.864,538,3.464,557,4.63,722,5.581,889,5.774,989,4.176,1055,3.378,1208,5.071,1210,4.83,1211,8.271,1212,4.63]],["t/202",[0,0.833,58,0.986,130,2.477,131,1.158,136,3.712,160,3.98,205,2.443,206,6.052,258,2.513,275,2.851,276,4.739,284,2.149,330,4.055,351,2.55,386,3.126,411,2.378,495,3.347,538,3.273,669,3.841,722,3.841,724,4.305,848,3.07,933,3.429,989,3.722,1052,4.52,1055,3.011,1126,5.799,1208,4.52,1212,4.127,1213,5.692,1214,5.692,1215,5.692,1216,7.666]],["t/204",[0,0.68,58,0.885,65,2.733,130,1.502,131,0.621,134,1.656,136,3.224,160,4.411,192,3.136,193,3.665,206,5.933,224,2.483,275,2.328,276,2.873,284,1.755,330,2.459,386,3.433,411,1.941,417,3.394,423,1.755,495,2.733,538,2.514,563,5.413,719,6.178,720,5.287,722,3.136,724,3.516,729,3.136,766,2.8,789,3.516,864,3.246,933,2.8,1055,3.523,1126,3.516,1208,3.691,1212,3.37,1217,4.648,1218,3.37,1219,3.37,1220,3.691,1221,4.648,1222,6.659,1223,3.136]],["t/206",[5,1.266,7,1.581,8,2.127,11,1.593,14,1.915,22,2.334,58,0.584,113,2.486,117,2.267,130,1.659,131,1.186,134,1.829,135,1.415,137,2.062,146,3.641,182,3.723,198,1.544,200,2.665,216,2.571,222,2.267,275,2.571,366,2.284,367,3.019,386,2.994,388,2.446,410,3.364,417,2.617,423,1.938,432,2.769,465,2.886,495,3.019,538,3.353,638,2.174,663,2.617,753,4.642,771,2.604,782,2.204,1052,4.077,1055,2.716,1056,2.665,1187,4.077,1218,3.723,1219,3.723,1224,3.883,1225,3.723,1226,3.585]],["t/208",[58,0.921,122,3.857,131,1.082,135,2.231,137,3.252,150,3.796,170,2.231,190,3.738,191,4.055,386,2.729]],["t/210",[0,0.999,5,2.452,35,1.348,63,3.613,91,3.307,118,3.925,131,0.912,135,1.882,148,3.363,170,1.882,176,3.363,286,4.338,372,3.684,373,3.307,374,3.559,386,3.354,412,2.853,567,4.115,665,3.76,866,3.925,1227,6.176]],["t/212",[14,1.637,21,2.949,22,1.995,58,0.857,80,2.87,131,1.226,135,1.209,152,2.949,159,2.322,170,1.76,179,2.201,197,2.367,198,1.922,199,5.697,205,1.884,227,4.311,248,3.064,257,6.296,258,4.369,280,2.058,281,3.316,284,1.657,288,2.87,300,3.968,373,3.093,374,1.809,386,2.789,388,2.09,399,2.198,487,2.322,493,2.467,538,1.657,645,2.416,767,3.691,778,7.395,783,4.177,784,5.776,1012,3.182,1055,3.379,1228,4.388,1229,4.388,1230,4.388,1231,4.388,1232,3.484,1233,3.484,1234,4.388,1235,3.968]],["t/214",[5,1.811,7,1.041,8,1.751,11,1.918,14,1.098,35,0.581,42,1.281,49,1.985,55,1.229,58,0.669,131,0.981,134,1.048,135,1.62,150,1.379,179,1.621,198,1.415,205,2.02,224,2.079,245,2.704,280,2.206,281,1.527,330,1.556,342,1.73,361,1.182,366,3.191,367,2.767,386,1.982,410,2.118,445,1.819,520,4.393,538,2.958,544,2.133,638,1.246,758,2.475,772,2.133,782,2.02,801,3.734,810,4.447,828,2.66,829,8.17,830,5.281,831,2.66,835,3.175,836,2.66,837,3.559,848,2.538,856,2.475,965,3.285,980,2.336,1055,3.553,1226,2.054,1236,2.336,1237,2.942,1238,2.942,1239,2.942,1240,2.942,1241,2.942,1242,2.942,1243,2.942,1244,2.942,1245,2.942,1246,2.942,1247,3.736,1248,2.942,1249,2.942,1250,2.942,1251,2.133,1252,4.254,1253,2.942,1254,2.942,1255,2.66,1256,2.66,1257,2.225,1258,2.942,1259,2.942,1260,2.942,1261,2.942,1262,2.475,1263,2.475,1264,2.475,1265,2.475]],["t/216",[24,1.935,46,4.377,58,0.941,81,2.561,113,1.837,131,0.766,135,1.046,150,1.779,216,4.938,224,2.469,251,2.65,258,1.676,276,3.545,281,1.97,325,1.524,330,2.008,346,4.665,388,3.293,445,3.545,538,2.165,563,3.094,604,3.192,635,3.751,679,2.752,697,3.431,723,2.008,745,3.431,747,3.192,748,3.192,749,6.118,927,1.808,946,3.013,987,3.013,993,4.824,996,3.431,997,5.815,1055,3.034,1067,7.868,1266,3.795,1267,3.192,1268,3.795,1269,5.186,1270,8.273,1271,5.735,1272,3.431,1273,6.913,1274,3.795,1275,5.735,1276,3.013,1277,3.795,1278,5.735,1279,6.913,1280,3.795,1281,3.795,1282,3.795,1283,3.192,1284,3.795,1285,3.013,1286,3.431,1287,3.013,1288,3.795]],["t/218",[5,0.797,8,2.29,21,4.506,22,1.47,42,2.722,58,0.806,131,1.09,134,1.152,135,1.951,157,1.165,159,2.682,179,1.114,197,5.769,214,1.817,216,4.086,224,2.513,226,2.567,227,2.181,228,2.181,245,1.858,248,4.944,249,1.744,274,2.181,275,3.852,280,2.377,368,2.734,386,1.09,388,1.54,410,2.253,411,1.35,432,2.734,538,2.361,653,2.923,789,6.172,835,3.421,885,2.923,887,5.654,965,2.257,1010,2.923,1055,3.308,1115,2.719,1289,7.08,1290,3.233,1291,5.069,1292,3.233,1293,3.233,1294,3.233,1295,3.233,1296,3.233,1297,3.233,1298,3.233,1299,3.233,1300,5.069,1301,3.233,1302,2.181,1303,3.233]],["t/220",[0,0.475,8,2.434,11,0.986,35,0.641,46,3.317,58,0.369,76,1.598,131,0.948,134,1.156,135,1.728,152,2.894,167,5.995,168,5.121,170,0.895,179,1.118,224,2.593,247,2.455,275,3.554,280,2.384,297,2.592,386,1.094,410,2.945,432,3.828,515,3.957,538,3.433,771,2.586,772,5.145,835,4.231,855,2.73,856,6.875,857,2.354,858,5.669,868,2.73,965,4.378,1055,3.317,1304,6.27,1305,3.246,1306,3.246,1307,3.246,1308,3.246,1309,3.246,1310,3.246,1311,3.246,1312,2.267,1313,3.246,1314,3.246,1315,3.246]],["t/222",[5,2.147,7,1.087,8,2.062,11,1.343,14,1.832,58,0.788,131,0.925,135,2.21,179,1.691,224,2.311,245,2.821,280,2.302,281,2.549,284,1.854,362,1.947,364,3.932,386,1.655,410,1.769,422,2.711,538,3.028,589,3.352,638,2.931,842,4.439,843,7.325,848,3.734,965,3.428,1055,4.242,1247,5.497,1256,4.439,1257,3.714,1262,4.129,1263,4.129,1264,4.129,1265,4.129,1316,4.909,1317,4.909,1318,4.909,1319,4.909,1320,4.909,1321,4.909,1322,3.56]],["t/224",[5,2.152,7,1.278,8,2.306,11,1.502,14,2.155,58,0.881,131,1.034,135,2.406,179,1.99,245,3.319,280,2.708,281,2.998,362,3.463,363,4.619,386,1.947,526,6.332,538,2.923,589,3.748,638,3.278,853,5.222,854,3.946,1055,4.619,1262,4.858,1263,4.858,1264,4.858,1265,4.858,1323,5.775,1324,5.775,1325,5.775]],["t/226",[58,0.876,135,1.58,170,2.123,222,2.532,224,2.044,257,4.762,258,2.532,281,5.187,284,2.165,368,3.093,394,3.749,417,2.923,448,3.093,493,3.223,512,3.372,515,2.776,538,3.512,723,3.033,724,4.337,756,4.823,762,9.035,767,4.823,778,4.823,854,3.927,1055,3.033,1326,5.733,1327,7.703,1328,5.733,1329,4.553,1330,5.733,1331,5.733]],["t/228",[89,3.607,130,2.286,131,1.286,135,1.95,152,4.076,167,3.978,168,3.895,193,4.86,264,5.352,284,3.633,351,3.17,374,2.917,432,3.817,516,4.627,645,3.895,669,4.775,729,4.775,1332,5.131]],["t/230",[117,2.939,131,0.889,135,1.834,152,3.922,179,2.293,193,4.676,197,3.591,224,2.254,228,4.492,286,4.228,432,5.316,495,3.915,614,4.648,1287,5.285,1333,5.599,1334,4.648,1335,5.599,1336,5.285,1337,5.599,1338,5.285,1339,5.599,1340,6.656,1341,6.656,1342,6.656,1343,6.656]],["t/232",[131,1.288,135,2.255,152,3.777,424,4.599,487,4.328,662,4.028,799,5.35,1344,5.932]],["t/234",[117,2.82,131,1.105,135,1.76,152,2.948,179,2.2,193,4.553,224,1.695,286,4.056,373,4.005,424,3.59,487,5.133,614,4.459,1232,6.568,1287,5.071,1333,5.371,1334,4.459,1335,5.371,1336,5.071,1337,5.371,1338,5.071,1339,5.371,1345,6.386,1346,5.774,1347,8.271,1348,8.271,1349,8.271]],["t/236",[5,1.89,25,2.955,35,1.124,117,3.385,118,3.271,131,1.158,135,2.113,137,2.286,152,3.539,179,1.961,193,4.22,198,1.712,224,1.511,286,3.615,374,2.346,386,1.919,424,3.2,432,3.07,481,3.722,482,3.518,487,4.906,614,3.974,866,4.405,1079,6.932,1207,4.788,1232,6.883,1287,4.52,1333,4.788,1334,3.974,1335,4.788,1336,4.52,1337,4.788,1338,4.52,1339,4.788,1346,5.147,1350,5.692,1351,5.692]],["t/238",[36,3.887,59,3.548,130,2.885,131,0.963,135,2.461,136,4.323,137,3.586,170,1.986,190,3.327,191,3.609,319,5.225,386,2.429,514,5.722,549,3.812,987,5.722,1056,3.741,1352,5.451,1353,6.516]],["t/240",[8,2.07,58,0.791,128,4.088,130,2.821,131,1.166,133,3.481,135,1.916,136,4.227,156,3.995,170,1.916,227,4.69,284,2.624,308,3.209,318,4.297,345,5.04,544,5.04,771,2.533,991,5.258,992,6.331,1201,5.519,1202,5.258,1354,5.847]],["t/242",[0,1.084,135,2.042,136,4.398,144,4.166,145,4.846,396,5,418,3.421,557,6.587,645,4.079,663,3.777,916,5,1212,6.587,1355,7.41,1356,6.7,1357,4.358,1358,7.41]],["t/244",[59,4.396,135,1.986,136,4.698,214,4.051,224,2.37,396,4.863,557,7.035,605,3.741,999,3.967,1001,5.032,1047,7.511,1048,5.722,1049,6.061,1054,6.516,1359,7.206]],["t/246",[22,1.677,25,1.915,28,2.343,32,3.335,45,1.5,52,2.79,58,0.864,97,1.989,113,1.786,117,1.628,122,1.757,130,2.64,131,1.091,133,1.847,135,2.093,136,3.956,137,1.481,140,2.575,141,1.88,142,2.79,143,2.928,144,2.073,145,2.412,146,1.88,147,2.674,150,1.729,168,2.03,179,1.271,183,3.919,186,2.119,214,2.073,224,2.447,275,3.403,284,1.392,297,1.88,351,1.652,373,2.717,374,2.313,386,2.56,432,1.989,481,2.412,482,2.28,492,2.674,493,3.155,515,1.786,516,2.412,538,2.867,549,2.969,557,4.926,572,2.28,588,3.102,645,3.089,727,2.575,756,3.102,866,2.119,946,5.395,1050,3.335,1068,4.721,1074,3.335,1203,2.928,1212,2.674,1356,3.335,1360,5.612,1361,3.335,1362,3.335,1363,3.688,1364,3.688,1365,3.688,1366,3.688,1367,3.688,1368,3.688,1369,2.928,1370,3.688,1371,3.688,1372,3.688,1373,3.688,1374,3.688,1375,3.335,1376,3.688,1377,3.335,1378,3.102]],["t/248",[58,0.733,130,2.975,131,0.86,134,2.962,135,1.774,144,3.619,179,2.218,310,5.07,339,5.822,340,5.178,385,3.17,394,4.21,544,6.029,841,4.668,916,4.345,927,3.067,933,3.879,1209,4.496,1379,6.438,1380,6.438,1381,5.415,1382,6.438,1383,4.668,1384,7.518,1385,6.438,1386,5.822]],["t/250",[0,0.572,11,0.758,13,1.935,23,1.832,39,3.249,42,1.701,45,1.59,58,0.667,76,1.924,84,2.151,102,3.917,113,2.839,122,1.862,130,1.894,131,1.045,134,1.392,167,2.197,168,2.151,170,1.077,179,1.346,209,2.355,222,1.726,258,1.726,292,3.103,310,2.151,311,2.556,330,4.433,338,3.534,340,3.296,360,1.59,372,4.218,386,2.825,392,2.834,423,3.445,465,2.197,498,2.416,512,2.298,535,3.103,539,3.625,609,2.834,624,2.298,638,2.483,719,3.103,821,5.589,822,5.302,823,4.746,841,4.252,933,2.355,999,2.151,1093,3.287,1150,2.834,1384,3.534,1386,3.534,1387,5.863,1388,4.656,1389,3.908,1390,2.556,1391,3.908,1392,3.908,1393,3.908,1394,5.919,1395,3.908,1396,3.908,1397,3.908,1398,2.834,1399,3.103]],["t/252",[0,0.934,7,1.413,8,1.902,11,1.239,35,1.261,36,4.462,38,3.315,58,0.727,76,3.144,130,2.063,131,1.296,134,2.275,135,2.279,136,3.092,260,2.704,360,2.598,361,2.565,366,2.042,386,2.153,514,5.071,701,5.371,771,2.328,787,2.632,864,4.459,870,4.83,1352,4.83,1353,5.774,1400,6.386,1401,6.386,1402,5.371,1403,5.371]],["t/254",[0,1.149,22,3.571,23,3.683,24,4.004,25,4.078,38,4.078,76,3.867,130,2.537,131,1.257,138,7.102,139,6.607,1352,5.941]],["t/256",[8,1.902,36,3.445,87,4.83,102,3.198,130,2.672,131,1.105,133,3.198,135,1.76,136,4.005,227,4.309,240,4.63,284,2.411,345,4.63,716,5.071,771,2.328,787,2.632,791,4.176,799,5.409,807,5.371,913,4.83,991,4.83,992,5.997,1001,4.459,1042,5.371,1201,5.071,1202,4.83,1332,4.63,1404,6.939,1405,6.386]],["t/258",[36,5.233,135,2.278,605,4.292,1001,5.773,1047,6.954,1048,6.565,1049,6.954]],["t/260",[31,2.9,36,3.336,58,0.704,116,3.336,133,3.098,136,2.995,170,1.704,180,4.319,222,3.577,308,2.855,309,5.202,333,2.946,354,2.855,386,2.085,396,4.174,563,4.873,797,5.592,999,3.405,1001,4.319,1285,4.911,1406,9.95,1407,6.185,1408,9.585,1409,5.592,1410,6.185,1411,5.202,1412,6.185,1413,6.185,1414,6.185,1415,6.185]],["t/262",[0,0.845,5,1.424,11,1.694,14,2.155,16,2.944,19,2.944,22,2.626,35,1.528,39,2.666,46,3.055,64,4.033,66,5.222,130,1.866,131,0.772,135,1.592,136,2.796,191,2.893,216,2.893,234,2.727,266,3.777,276,3.57,297,2.944,360,3.149,394,3.777,563,3.116,752,4.188,771,2.822,787,3.191,791,5.71,804,5.222,814,4.019,1210,4.369,1416,4.033,1417,5.222,1418,5.613,1419,5.775,1420,5.775,1421,5.222]],["t/264",[11,1.28,36,4.558,109,4.786,130,2.132,131,1.129,134,2.351,135,2.568,136,4.091,185,4.316,193,4.651,276,4.08,333,3.144,366,2.11,399,3.306,787,2.721,791,4.316,837,4.993,864,4.609,1203,5.241,1302,4.454,1357,3.882,1402,5.552,1422,6.6,1423,5.968,1424,5.241,1425,6.6]],["t/266",[21,3.267,22,3.218,54,4.495,55,2.956,99,4.627,131,0.945,145,4.627,185,4.627,205,3.037,247,5.352,275,3.544,280,3.318,297,3.607,308,3.267,399,3.544,807,5.952,864,4.941,1352,5.352,1378,5.952,1402,7.426,1426,7.076,1427,5.952,1428,4.627]],["t/268",[0,0.575,8,1.17,11,1.142,22,1.786,25,2.039,28,2.495,35,1.162,36,2.119,45,1.598,47,1.813,58,0.67,76,1.934,117,1.734,122,1.871,130,1.269,131,1.178,135,2.314,136,1.902,137,1.577,140,2.743,141,2.002,142,2.971,143,3.119,144,3.968,145,2.568,146,2.002,147,2.848,150,1.842,167,2.208,168,2.162,170,1.082,179,1.353,224,2.495,231,3.309,260,1.663,275,1.967,284,1.483,340,2.208,341,3.175,351,1.76,360,1.598,361,1.577,365,1.663,366,1.256,377,2.078,386,2.379,422,1.538,424,2.208,428,4.253,457,3.551,465,2.208,481,2.568,482,2.428,483,2.568,485,4.846,782,1.686,787,1.619,855,3.304,934,2.65,1015,6.225,1403,3.304,1429,3.928,1430,3.551,1431,5.885,1432,3.928,1433,4.951,1434,3.119,1435,5.322,1436,3.928,1437,3.119,1438,2.495,1439,3.928,1440,3.928,1441,3.119,1442,3.928,1443,3.928,1444,3.928]],["t/270",[0,1.069,2,3.848,7,1.175,8,2.177,35,1.048,38,2.755,39,2.45,42,2.31,59,2.613,76,2.613,81,3.581,130,2.91,131,1.304,133,2.658,135,2.482,137,2.132,152,2.45,170,1.463,190,2.45,191,2.658,198,1.596,202,3.471,227,3.581,284,2.004,345,3.848,354,2.45,386,2.464,394,3.471,397,4.464,516,3.471,572,3.281,638,2.247,644,2.922,663,2.706,771,1.934,917,2.706,986,3.471,991,4.015,992,5.3,1201,4.214,1202,4.015,1352,4.015,1445,4.214,1446,4.464,1447,5.307,1448,5.307]],["t/272",[19,2.054,22,1.832,36,4.282,58,0.458,59,3.908,84,2.217,130,3.183,131,1.231,133,3.004,135,2.819,136,4.686,148,1.983,155,3.469,156,4.118,170,1.653,219,3.642,229,2.718,263,2.921,302,3.047,385,1.983,386,1.358,391,3.047,538,1.521,549,3.791,557,2.921,702,2.427,916,4.047,983,4.552,984,2.49,986,5.191,988,3.199,989,6.193,1199,3.199,1200,3.642,1235,5.423,1449,5.998,1450,5.998,1451,3.447,1452,4.028,1453,4.028,1454,4.028,1455,4.028]],["t/274",[22,2.927,25,3.342,36,4.485,58,0.733,117,2.843,130,2.975,131,1.23,135,2.291,136,4.026,137,2.586,179,2.218,224,2.207,386,3.281,399,3.225,410,2.32,411,2.689,691,5.822,989,5.438,1055,3.406,1302,4.345,1456,4.668,1457,6.438,1458,6.438]],["t/276",[0,0.676,5,2.507,7,1.023,8,2.524,22,2.101,35,0.912,42,2.011,58,0.882,63,4.103,80,3.022,91,3.755,118,3.811,131,1.248,135,2.473,148,2.275,155,2.237,156,2.655,157,1.665,159,2.444,170,1.273,176,3.818,197,2.493,198,1.39,228,3.118,245,2.655,286,2.935,362,1.832,372,3.577,373,3.755,374,3.493,375,3.495,386,3.148,412,1.93,567,2.784,589,2.237,595,2.935,665,2.543,866,4.457,1058,4.178,1227,4.178]],["t/278",[5,1.424,58,0.657,76,2.843,89,2.944,130,1.866,131,1.167,135,1.592,152,2.666,167,3.247,168,3.179,224,2.582,284,2.923,366,2.475,374,2.381,432,3.116,436,5.224,485,3.57,487,4.095,561,2.626,589,2.796,662,2.843,782,2.479,783,3.777,860,2.998,934,3.897,1015,4.586,1232,4.586,1332,4.188,1430,5.222,1433,4.858,1435,5.222,1459,7.741,1460,5.775,1461,7.741,1462,5.775,1463,5.775,1464,5.775]],["t/280",[0,0.804,22,2.498,23,2.575,25,2.852,28,3.489,35,1.084,45,2.235,58,0.625,117,2.425,122,2.617,130,1.775,131,1.349,135,2.062,137,2.206,140,3.836,141,2.8,142,4.155,143,4.362,144,3.088,145,3.592,146,2.8,147,3.983,150,2.575,167,3.088,168,3.024,179,1.892,198,1.652,224,1.458,351,2.461,386,2.869,481,3.592,482,3.395,485,3.395,589,2.66,669,3.707,860,2.852,934,3.707,1015,4.362,1332,3.983,1433,4.62,1465,7.483,1466,6.295,1467,5.493,1468,5.493,1469,5.493]],["t/282",[7,1.461,11,1.808,17,3.427,25,3.427,43,3.365,82,4.193,117,2.914,205,2.833,259,4.609,333,3.144,364,3.268,365,2.795,366,2.11,367,3.882,412,2.757,418,3.9,422,2.585,423,3.19,445,4.08,572,4.08,729,4.454,771,2.406,1187,5.241,1470,5.968,1471,6.6,1472,5.552,1473,6.6]],["t/284",[7,1.437,11,1.48,13,2.517,14,1.675,16,2.288,18,5.468,22,2.041,46,2.375,58,0.868,133,3.821,134,1.599,146,2.288,154,2.58,179,1.546,217,2.775,258,3.692,260,1.9,280,2.105,308,2.072,327,5.156,330,4.423,340,2.523,351,2.011,360,1.826,361,1.803,364,1.736,397,3.776,418,2.072,421,4.534,422,3.474,423,3.491,424,4.289,436,3.029,442,2.072,459,3.776,537,3.255,585,2.935,608,2.704,627,3.255,669,3.029,903,3.776,919,3.395,978,2.64,1016,5.462,1361,4.059,1445,3.564,1474,4.489,1475,4.489,1476,3.564,1477,4.059,1478,4.059,1479,4.489,1480,4.059,1481,4.489,1482,4.489,1483,4.489]],["t/286",[9,3.453,217,4.904,280,3.72,421,5.54,422,3.107,423,2.995,539,4.904,891,7.174,1012,5.753,1484,7.174,1485,6.001,1486,7.174]],["t/288",[0,0.732,5,1.233,7,1.944,9,2.178,14,1.867,17,2.597,20,4.208,43,2.55,58,0.798,116,2.699,170,1.379,179,1.724,216,3.514,260,2.118,284,1.889,325,2.009,346,3.376,362,1.984,363,2.647,364,3.134,366,2.243,378,2.942,422,3.621,423,3.491,493,2.813,512,2.942,517,2.754,645,3.862,662,3.454,744,2.942,771,1.824,782,2.148,786,2.813,801,4.456,875,4.208,917,2.55,1035,3.178,1182,4.524,1322,3.628,1377,4.524,1383,3.628,1438,5.146,1487,3.178,1488,4.208,1489,3.494,1490,3.093,1491,4.524,1492,3.272,1493,3.973]],["t/290",[7,1.08,9,2.124,11,1.777,13,2.274,14,1.82,17,2.533,35,0.963,46,2.581,55,2.038,58,0.909,97,2.632,116,2.632,133,2.444,148,2.402,179,1.681,224,2.762,260,2.918,291,3.874,316,2.699,327,3.874,330,2.581,341,2.632,377,2.581,410,1.758,418,2.252,422,2.699,423,2.602,424,2.743,436,4.651,437,3.538,442,2.252,538,1.842,633,3.191,880,3.292,1016,4.104,1087,3.292,1101,3.874,1255,4.412,1381,4.104,1438,3.099,1480,6.232,1490,3.016,1494,4.412,1495,4.879,1496,3.69,1497,4.879,1498,6.892,1499,6.892,1500,4.879]],["t/292",[7,0.955,9,1.879,11,1.447,13,2.082,39,1.992,43,3.217,55,1.803,58,0.934,60,2.376,69,2.376,108,5.011,148,2.125,154,2.48,179,1.487,215,2.328,216,2.162,222,1.906,224,1.98,257,2.668,260,3.475,284,1.63,291,6.517,325,1.733,346,4.259,361,1.733,364,1.67,366,1.38,376,2.426,398,3.014,400,3.265,412,1.803,422,3.215,423,3.444,448,2.328,517,4.518,633,4.127,645,2.376,741,5.011,744,2.538,752,4.576,755,2.426,801,2.742,875,3.63,900,3.63,917,2.2,986,2.822,1438,2.742,1476,3.427,1489,5.209,1501,4.316,1502,4.316,1503,4.316,1504,4.316,1505,4.316,1506,6.311,1507,7.46,1508,4.316,1509,4.316,1510,4.316]],["t/294",[0,0.727,3,2.924,4,3.355,5,1.225,7,1.1,8,1.481,16,3.56,25,2.581,35,1.379,42,2.164,45,2.023,58,0.795,74,3.471,91,2.407,109,3.605,117,2.195,120,5.875,131,1.079,154,2.857,159,2.63,170,1.925,176,2.448,185,4.567,198,1.495,205,2.134,260,2.105,263,3.605,286,3.158,366,1.59,374,2.049,398,3.471,412,2.077,418,2.295,487,2.63,567,2.995,574,5.064,602,3.948,635,4.567,866,4.64,867,4.182,871,3.355,957,3.761,1344,3.605,1398,3.605,1489,3.471,1511,4.877,1512,4.495,1513,4.971,1514,4.182,1515,4.971,1516,3.948,1517,3.605,1518,3.948,1519,4.495,1520,3.471,1521,4.971,1522,4.971,1523,4.971]],["t/296",[7,1.694,58,0.871,131,0.603,190,4.105,198,2.675,200,2.344,365,1.911,373,3.157,374,1.861,425,3.929,448,2.435,456,7.537,468,3.929,487,5.174,495,4.501,502,5.485,515,2.186,572,2.791,679,4.728,685,5.178,799,2.952,803,6.078,866,3.747,867,7.052,1344,3.273,1524,4.082,1525,4.082,1526,4.082,1527,6.52,1528,6.438,1529,6.921,1530,6.52,1531,6.52,1532,6.52,1533,6.52,1534,6.52]],["t/298",[0,1.306,2,5.225,35,1.422,74,5.032,76,3.548,132,4.712,245,4.141,257,5.519,316,2.822,1236,5.722,1494,6.516,1535,7.206,1536,5.451,1537,7.206,1538,6.516,1539,6.516,1540,7.206,1541,5.032,1542,5.225,1543,6.516]],["t/300",[0,1.204,5,2.028,7,1.402,14,2.363,35,1.25,43,3.229,58,0.721,63,3.351,82,4.024,91,3.984,122,3.017,131,0.846,153,3.916,159,3.351,160,3.288,260,2.682,354,2.924,374,3.391,377,3.351,412,2.646,418,2.924,421,4.423,485,3.916,515,3.067,561,2.88,866,3.64,913,4.791,1544,5.03,1545,5.728,1546,5.03,1547,6.334,1548,5.328,1549,5.728]],["t/302",[0,1.204,5,1.561,9,2.757,11,1.773,35,1.804,80,4.142,89,3.229,91,3.067,101,3.725,102,3.173,140,4.423,258,2.797,377,3.351,771,2.999,786,3.561,787,2.611,826,4.791,851,4.791,1225,4.593,1490,3.916,1511,4.423,1550,5.728,1551,4.423,1552,6.921,1553,6.334,1554,5.03,1555,4.274,1556,4.791,1557,5.328,1558,5.328]],["t/304",[0,0.912,7,1.38,8,1.857,11,1.759,52,4.715,82,3.96,131,0.833,148,3.069,154,3.583,160,3.236,170,1.718,198,1.875,205,2.676,234,2.868,362,2.472,363,3.298,364,2.411,365,3.447,366,1.993,367,3.666,644,3.432,645,3.432,812,4.708,897,4.715,978,3.666,995,4.715,1541,4.353,1559,4.207,1560,4.95,1561,4.95,1562,4.95,1563,6.234,1564,6.234]],["t/306",[0,0.561,7,0.848,11,1.887,35,1.14,55,1.601,76,1.887,113,1.855,131,1.389,150,1.797,217,2.369,245,3.32,256,5.522,313,3.67,325,1.539,335,2.027,361,1.539,363,2.027,364,2.69,365,1.622,366,2.223,377,2.027,410,1.381,422,2.263,423,3.297,465,3.248,466,2.778,483,2.506,589,2.797,595,2.434,610,2.506,624,2.253,662,1.887,771,1.397,782,1.645,854,1.953,860,1.989,874,2.676,879,3.223,883,2.676,952,5.043,997,3.223,1126,2.898,1203,5.522,1225,5.043,1302,6.117,1492,2.506,1555,2.586,1565,3.223,1566,3.832,1567,7.743,1568,8.308,1569,6.954,1570,3.465,1571,3.223,1572,2.898,1573,3.223]],["t/308",[5,2.351,7,1.648,8,2.218,16,2.781,19,3.797,35,1.47,45,2.219,58,0.621,63,3.94,82,3.465,109,3.955,120,4.588,131,1.274,185,3.567,198,2.24,232,4.126,234,1.921,284,2.06,362,2.163,377,2.886,449,4.126,504,3.681,574,3.955,589,3.606,635,4.871,644,4.1,662,2.686,866,4.28,883,3.809,1398,3.955,1438,3.465,1516,4.331,1518,4.331,1559,3.681,1574,5.455,1575,3.567,1576,5.455,1577,5.455,1578,4.932]],["t/310",[0,0.821,5,1.383,7,1.68,35,1.108,58,0.638,63,2.968,97,3.027,131,0.75,176,2.762,197,4.095,198,2.284,200,2.913,281,3.941,365,2.375,373,3.676,374,2.313,425,3.38,456,7.811,468,3.38,487,4.016,502,6.386,515,2.716,679,4.068,685,7.321,782,2.408,803,6.028,1390,3.669,1524,5.073,1525,6.865,1526,6.865,1528,4.719,1529,5.073,1579,4.719]],["t/312",[0,0.898,2,3.014,5,2.579,8,1.238,11,1.191,14,1.551,24,3.129,35,1.212,42,1.809,63,2.199,65,2.444,76,2.046,80,2.718,91,2.972,106,2.504,131,0.975,148,2.046,154,2.389,176,2.046,198,1.846,305,4.874,308,1.919,310,2.288,316,1.628,333,1.98,360,1.691,361,1.669,362,1.648,363,2.199,364,1.608,365,1.76,366,1.329,372,2.242,373,2.012,374,3.323,379,2.718,386,1.401,418,2.834,471,3.3,485,2.569,504,2.805,551,3.758,554,2.718,561,2.791,568,3.496,663,2.119,771,2.237,866,2.389,917,2.119,1012,3.014,1202,3.144,1257,3.144,1381,3.496,1456,3.014,1514,5.163,1555,2.805,1580,3.144,1581,3.3,1582,3.014,1583,7.299,1584,6.138,1585,4.156,1586,3.758,1587,4.156,1588,3.758,1589,6.139,1590,4.156]],["t/314",[0,1.23,7,1.86,8,1.949,13,2.773,107,4.158,170,2.316,217,4.046,335,3.463,376,3.68,471,5.197,627,4.746,629,4.951,662,3.222,723,3.463,905,5.919,939,4.746,999,3.603,1438,5.338,1520,4.571,1544,5.197,1591,5.506,1592,5.919,1593,6.545,1594,6.545,1595,5.919,1596,4.417,1597,4.571,1598,4.951]],["t/316",[0,0.934,3,3.755,5,2.261,6,2.994,7,2.03,8,1.902,9,2.78,10,4.459,11,1.604,21,2.948,28,4.056,35,1.261,82,4.056,102,3.198,131,0.853,154,3.67,200,3.315,325,2.565,360,2.598,361,2.565,368,3.445,771,2.328,786,3.59,898,4.63,1225,4.63,1555,4.309,1599,5.371,1600,5.071,1601,4.63,1602,4.459,1603,5.774]],["t/318",[5,1.525,7,1.793,11,1.2,29,5.202,35,1.599,55,2.583,58,0.704,101,4.764,154,3.554,170,1.704,190,2.855,232,4.678,234,2.853,412,2.583,448,3.336,516,4.045,537,5.874,771,3.292,787,3.723,814,4.205,1428,4.045,1558,6.814,1600,4.911,1604,4.319,1605,3.726,1606,4.911,1607,5.202,1608,4.485,1609,4.485]],["t/320",[5,1.987,7,1.784,9,2.671,11,1.563,14,2.29,35,1.211,37,3.128,58,0.698,131,0.82,146,3.128,234,2.162,235,4.013,284,2.317,297,3.128,362,2.434,364,3.117,365,2.598,418,2.833,422,3.156,423,3.043,465,3.45,501,4.642,572,3.793,771,2.937,812,4.184,897,4.642,907,5.549,1445,4.873,1575,4.013,1610,5.549,1611,5.549,1612,3.697,1613,5.549]],["t/322",[5,1.489,7,1.977,8,1.8,11,1.732,18,3.951,35,1.575,47,2.789,58,0.687,131,0.807,133,3.026,198,1.817,284,2.281,316,2.366,351,2.707,364,2.337,365,3.781,366,3.037,559,3.735,595,3.838,663,3.08,771,2.908,782,2.594,860,3.137,910,4.381,925,4.798,999,3.326,1546,4.798,1561,4.798,1571,5.082,1573,5.082,1612,3.64,1614,5.463]],["t/324",[5,2.235,7,1.802,11,1.579,14,2.326,35,1.607,52,4.715,131,0.833,198,1.875,234,2.196,271,6.465,284,2.354,360,2.536,361,3.27,362,3.229,363,4.308,385,3.069,610,4.077,638,2.639,771,2.272,812,3.236,900,5.244,952,4.52,995,4.715,1612,3.756,1615,7.363,1616,5.637,1617,6.234,1618,6.234,1619,4.52]],["t/326",[0,1.144,7,1.297,11,1.896,13,1.934,35,1.543,47,2.706,53,4.093,55,2.449,134,2.088,153,3.623,190,2.706,195,3.956,326,4.093,330,3.101,333,2.792,341,4.218,354,2.706,364,2.267,366,1.874,388,2.792,417,3.986,418,2.706,422,2.296,453,4.931,455,3.833,483,3.833,504,3.956,549,3.101,917,2.988,1620,9.093,1621,5.862,1622,5.862,1623,5.862,1624,5.3]],["t/328",[0,0.845,3,3.397,5,1.424,13,1.906,38,2.998,43,2.944,45,3.149,58,0.657,84,3.179,107,3.669,130,1.866,131,1.3,139,4.858,152,2.666,176,2.843,186,3.319,213,3.48,234,2.034,243,4.369,268,4.188,372,3.116,493,3.247,629,4.369,644,3.179,755,3.247,916,3.897,984,3.57,1117,4.188,1466,4.858,1516,4.586,1518,4.586,1520,4.033,1559,5.224,1597,4.033,1625,5.775,1626,5.775,1627,4.858,1628,4.369,1629,4.858,1630,5.775,1631,4.858,1632,5.775,1633,4.858]],["t/330",[58,0.894,80,5.136,131,1.257,190,3.626,198,2.363,456,5.941,685,6.237,690,7.102,984,4.855,1528,6.607,1634,7.854,1635,7.854]],["t/332",[3,2.566,8,1.3,14,2.374,16,2.225,35,0.861,38,2.266,39,2.015,45,1.775,51,2.629,65,2.566,84,2.402,88,3.946,107,2.772,129,3.671,131,1.102,170,1.203,172,2.629,176,3.132,183,3.047,186,4.742,190,2.015,198,1.313,213,2.629,234,1.537,243,3.301,257,5.661,258,3.873,275,2.186,281,2.266,331,3.671,354,2.937,361,1.753,365,1.848,373,3.08,374,2.622,376,2.453,411,1.823,436,2.945,487,3.972,488,4.443,493,2.453,585,2.854,595,2.772,608,2.629,644,2.402,782,1.873,854,2.225,880,2.945,984,3.933,1012,3.164,1117,3.164,1369,3.465,1418,3.164,1516,3.465,1518,3.465,1543,3.946,1559,4.293,1597,3.047,1627,3.671,1636,4.364,1637,4.364,1638,4.364,1639,3.946,1640,4.364,1641,4.364,1642,4.364,1643,3.465,1644,4.364]],["t/334",[5,1.274,25,2.683,47,3.806,131,0.959,152,2.386,190,2.386,198,1.554,222,3.168,257,5.096,275,2.588,365,3.49,366,2.636,373,3.991,425,3.114,468,5.366,487,4.361,488,3.608,493,2.905,517,2.845,522,6.934,549,2.734,561,2.35,583,6.934,782,3.538,882,7.454,1043,6.036,1126,3.909,1344,3.747,1369,6.546,1489,5.011,1645,5.168,1646,7.176,1647,5.168,1648,5.168,1649,5.168]],["t/336",[17,4.292,92,5.11,134,2.945,310,4.551,826,6.254,1357,4.862,1517,5.995,1650,6.254]],["t/338",[5,1.489,8,1.8,11,1.172,29,5.082,58,0.687,92,3.735,101,3.553,102,3.026,106,3.64,190,2.789,233,3.553,234,2.81,381,3.64,392,5.784,411,3.332,412,2.524,516,3.951,771,2.908,787,3.288,814,4.636,852,3.397,902,3.951,1399,4.798,1403,5.082,1478,5.463,1604,4.219,1605,3.64,1606,4.798,1607,5.082,1608,4.381,1609,4.381,1651,4.798,1652,5.463,1653,6.042,1654,4.381,1655,6.042]],["t/340",[0,0.676,5,1.912,9,2.011,31,2.166,35,0.912,38,2.399,58,0.754,96,3.669,102,3.321,122,2.201,128,2.717,131,0.617,167,2.598,170,1.827,217,4.794,299,3.226,364,1.787,366,1.477,381,2.784,412,2.77,504,3.118,589,2.237,590,3.022,605,2.399,718,3.887,755,2.598,772,3.35,783,3.022,787,1.905,801,2.935,914,4.808,919,3.495,927,2.201,978,2.717,999,4.269,1285,5.265,1451,5.367,1493,3.669,1496,5.866,1556,3.495,1601,3.35,1624,4.178,1631,3.887,1656,4.621,1657,4.621,1658,4.178,1659,4.621,1660,4.621,1661,6.158,1662,4.621,1663,4.178,1664,4.621,1665,3.495,1666,3.35,1667,4.621,1668,4.621,1669,3.887,1670,3.35,1671,4.178,1672,4.621,1673,4.178,1674,4.621]],["t/342",[0,1.421,7,1.273,8,0.848,9,1.994,10,3.199,11,1.773,13,0.939,14,1.709,23,1.334,24,1.451,25,1.478,35,1.135,36,1.535,37,2.335,40,3.854,41,3.465,42,1.239,43,1.451,45,1.158,46,1.506,47,2.654,49,3.092,50,2.76,51,2.76,52,2.153,53,1.987,54,1.808,55,2.402,58,0.878,59,1.401,87,3.465,101,1.674,102,1.426,106,1.715,130,0.92,131,0.965,133,1.426,134,1.014,135,0.784,137,1.143,149,1.987,150,1.334,182,2.064,198,0.856,200,1.478,205,1.222,232,2.153,233,1.674,234,1.614,244,1.808,250,2.064,260,1.205,288,1.861,308,1.314,310,1.567,328,1.715,335,1.506,341,1.535,351,2.576,360,1.864,361,1.143,366,1.838,368,3.897,377,1.506,410,1.026,411,1.914,412,1.189,418,1.314,448,1.535,483,1.861,490,1.808,542,2.153,544,2.064,564,3.854,598,1.861,599,2.26,627,2.064,628,3.638,629,3.465,630,2.574,631,2.574,654,2.26,662,1.401,663,1.451,744,1.674,755,1.6,771,1.037,787,1.173,814,2.378,817,2.633,852,1.6,854,2.931,927,1.356,970,2.394,1490,1.759,1520,1.987,1604,3.199,1612,1.715,1658,4.143,1675,1.987,1676,2.846,1677,2.846,1678,2.846,1679,2.574,1680,2.574,1681,2.846,1682,2.846,1683,2.26,1684,2.394,1685,2.26,1686,5.75,1687,2.153,1688,2.846,1689,2.846,1690,2.064,1691,2.846]],["t/344",[0,1.22,5,1.1,6,3.032,7,1.683,8,1.329,14,1.665,15,2.408,21,3.511,35,1.277,42,1.943,43,2.275,45,1.816,47,2.985,48,3.376,58,0.736,80,2.919,131,1.182,133,3.239,134,2.304,146,2.275,148,2.197,154,2.565,159,3.421,160,2.317,197,3.488,198,2.288,205,1.916,228,5.627,245,2.565,248,3.116,250,3.236,284,1.685,308,2.985,311,2.919,335,2.361,398,3.116,399,2.235,410,1.608,421,3.116,432,2.408,495,4.472,498,2.759,598,2.919,874,3.116,1092,3.754,1187,3.544,1451,3.716,1492,2.919,1517,3.236,1554,3.544,1555,3.012,1589,3.754,1692,4.463,1693,4.036,1694,4.463,1695,4.036,1696,4.463,1697,4.463,1698,4.463,1699,4.463,1700,3.376]],["t/346",[0,1.236,58,0.961,235,5.523,1538,7.636,1701,7.104,1702,7.104]],["t/348",[0,1.116,5,2.279,35,1.825,131,1.019,176,3.754,198,2.294,286,4.844,374,3.143,411,3.185,485,4.714,567,4.594,1456,5.529,1555,5.146,1650,5.768]],["t/350",[7,1.688,8,2.271,11,1.793,17,3.959,259,5.325,333,3.633,365,3.229,418,3.52,422,2.986,423,2.879,445,4.714,572,4.714,656,6.414,729,5.146,917,3.887]],["t/352",[0,1.149,13,2.592,16,4.004,34,4.989,99,5.136,111,6.607,131,1.049,320,4.732,354,3.626,492,5.695,983,4.989,1703,7.854,1704,6.237]],["t/354",[3,4.317,4,4.953,5,1.809,35,1.449,58,0.835,91,3.554,106,4.423,109,5.323,170,2.023,366,2.347,374,3.026,487,3.883,866,4.219,871,4.953,1344,5.323,1489,5.126,1511,6.307,1512,6.637,1705,7.34]],["t/356",[5,1.809,8,2.186,14,2.739,16,3.742,51,4.423,91,3.554,131,0.981,190,3.389,198,2.208,257,4.537,258,3.241,365,3.108,373,3.554,374,3.723,436,4.953,487,3.883,488,5.126,1369,5.829,1639,6.637]],["t/358",[6,3.288,7,1.552,8,2.089,35,1.384,58,0.798,82,4.455,131,1.28,190,3.238,198,2.11,354,3.238,374,2.891,377,3.71,386,2.364,418,3.238,487,4.645,662,3.453,744,4.124,799,4.586,823,3.783,1344,5.085,1706,6.341,1707,6.341]],["t/360",[5,1.809,7,1.625,8,2.186,11,1.424,35,1.449,37,3.742,58,0.835,131,0.981,297,3.742,362,2.911,364,2.839,418,3.389,422,2.875,423,2.772,465,4.127,501,5.552,560,5.829,572,4.537,771,2.675,1445,5.829]],["t/362",[7,1.756,16,4.044,34,5.039,35,1.566,58,0.903,107,5.039,128,4.666,154,4.559,662,3.906,786,4.46,1708,7.933,1709,7.933]],["t/364",[5,2.279,7,2.046,13,2.516,14,2.845,16,3.887,35,1.825,43,3.887,59,3.754,153,4.714,200,3.959,1544,6.055,1710,7.625,1711,6.895]],["t/366",[35,1.566,131,1.265,234,2.795,297,4.044,362,3.146,638,3.359,644,4.367,771,2.892,1451,4.559,1575,5.188,1712,6.673]],["t/368",[5,1.898,7,1.704,8,2.293,11,1.494,35,1.52,131,1.029,360,3.133,361,3.735,362,3.688,363,4.074,771,2.807,1424,6.114,1615,6.963]],["t/370",[0,1.094,35,1.477,55,3.125,159,3.957,179,2.577,354,3.453,379,4.892,607,6.764,638,3.167,1548,6.292,1549,6.764,1560,5.94,1561,7.255,1575,4.892,1713,6.764,1714,7.685]],["t/372",[0,1.352,5,2.279,6,3.575,7,1.688,8,2.271,12,6.055,21,3.52,35,1.505,46,4.034,92,4.714,131,1.019,638,3.229,1575,4.987,1712,6.414]],["t/374",[0,1.105,46,3.995,131,1.228,152,4.243,216,4.603,374,3.113,388,3.598,432,4.074,445,4.668,747,6.353,748,6.353,749,5.997,1224,5.713,1269,6.829]],["t/376",[6,3.61,21,4.293,24,3.925,28,4.891,63,4.074,89,3.925,106,4.64,172,4.64,411,3.216,642,6.114,662,3.791,1539,6.963,1598,5.825,1715,6.114]],["t/378",[0,1.391,11,1.844,13,2.865,47,3.181,245,3.96,335,3.645,341,5.128,368,5.128,411,2.878,417,3.512,436,4.649,448,3.717,549,3.645,560,5.471,638,2.917,1555,4.649,1716,6.23,1717,6.89]],["t/380",[0,1.197,5,2.017,6,3.836,35,1.615,76,4.028,131,1.093,172,4.929,559,5.057,602,6.496]],["t/382",[0,1.197,5,2.377,35,1.615,131,1.093,374,3.372,485,5.057,662,4.028,1675,5.713]],["t/384",[5,2.412,8,2.186,14,2.739,19,3.742,35,1.449,63,3.883,91,3.554,131,1.207,176,3.614,198,2.208,361,2.948,362,2.911,374,3.026,589,3.554,866,4.219,968,5.323,1629,6.174]],["t/386",[0,1.161,35,1.566,131,1.06,216,3.973,388,3.779,645,4.367,744,4.666,783,5.188,1224,6.001,1476,6.299,1489,5.54,1718,7.174]],["t/388",[0,1.084,7,1.64,8,2.207,11,1.437,35,1.463,131,0.99,153,4.58,205,3.181,250,5.373,316,2.902,360,3.015,364,2.866,365,3.137,366,2.369,377,3.92,412,3.095,561,3.369,771,2.701,978,4.358]],["t/390",[6,3.474,11,1.906,14,2.765,154,4.258,360,3.015,361,2.976,385,3.648,423,3.43,465,4.166,854,3.777,898,5.373,1225,5.373,1383,5.373,1719,7.41,1720,6.7,1721,7.41]],["t/392",[5,2.239,11,1.437,81,5,198,2.229,245,4.258,361,2.976,423,3.867,445,4.58,491,4.464,744,4.358,786,4.166,952,5.373,1225,5.373,1383,6.587]],["t/394",[8,2.271,234,3.256,316,2.986,787,3.143,814,4.799,817,4.382,917,3.887,1438,4.844,1490,4.714,1604,5.325,1684,6.414,1685,6.055,1722,6.895,1723,7.625]],["t/396",[0,1.054,3,4.238,4,4.863,5,1.776,7,1.976,8,2.146,9,3.137,11,1.398,21,3.327,35,1.422,131,0.963,154,4.141,360,2.932,361,2.894,771,2.626,786,4.051,898,5.225,1490,4.454,1600,5.722,1602,5.032,1603,6.516]],["t/398",[160,3.998,172,4.64,234,2.712,243,5.825,354,3.555,644,5.119,663,3.925,812,3.998,1251,5.583,1575,5.036,1724,5.377,1725,7.7,1726,7.7,1727,6.477]],["t/400",[7,1.552,11,1.36,35,1.384,55,2.929,58,0.798,82,4.455,101,4.124,232,5.305,234,3.093,448,3.783,537,5.085,771,3.2,787,3.619,814,4.558,1428,4.586,1558,5.899,1604,4.897,1605,4.225,1607,5.899,1608,5.085,1728,7.013]],["t/402",[3,4.573,6,3.646,13,2.566,15,4.195,17,4.037,21,3.59,46,4.114,149,5.43,153,4.807,202,5.086,628,6.175,644,4.281,1004,6.175,1729,6.175]],["t/404",[5,1.88,7,1.688,8,2.271,11,1.793,14,2.845,35,1.825,51,4.594,365,3.229,366,2.438,595,4.844,771,2.779,925,6.055,1561,6.055,1614,6.895]],["t/406",[5,1.917,8,2.316,35,1.535,47,3.59,48,5.882,80,5.086,91,3.765,154,4.469,198,2.339,228,5.248,335,4.114,874,5.43,1554,6.175,1693,7.032]],["t/408",[0,1.277,1,5.519,5,2.152,6,3.259,7,1.932,12,5.519,13,2.293,16,3.543,21,3.209,35,1.372,37,3.543,38,3.609,46,3.677,58,0.791,119,4.854,131,0.929,160,3.609,234,2.448,644,3.826,913,5.258,1542,5.04,1546,5.519,1556,5.258]],["t/410",[0,1.36,11,1.804,13,2.541,35,1.52,326,5.377,333,3.668,341,4.154,354,3.555,418,3.555,422,3.016,423,2.907,498,4.76,1470,6.963]],["t/412",[0,1.292,6,3.318,10,4.941,11,1.713,15,3.817,21,3.267,35,1.397,46,3.743,92,4.374,170,1.95,341,4.763,368,4.763,369,4.627,370,4.941,411,2.956,655,5.619,1730,7.076,1731,5.952,1732,5.619,1733,5.952]],["t/414",[0,1.116,5,2.279,9,3.319,11,1.479,35,1.825,99,4.987,102,3.819,107,4.844,234,2.686,297,4.713,644,4.198,1575,4.987,1734,7.625]],["t/416",[0,1.017,6,3.259,7,1.932,8,2.07,15,3.75,21,3.209,58,0.791,59,3.422,63,3.677,91,3.365,216,3.481,368,3.75,417,3.543,542,6.604,655,5.519,702,4.188,796,4.854,952,5.04,1092,5.847,1491,6.285,1732,5.519,1735,6.285,1736,6.951,1737,6.285]],["t/418",[0,1.204,7,1.821,17,3.288,21,4.628,74,4.423,93,5.03,99,4.142,134,2.257,150,2.97,156,3.64,170,1.746,172,3.817,234,2.231,260,2.682,354,2.924,628,6.533,890,5.328,902,4.142,927,3.017,983,4.024,1204,4.593,1451,3.64,1595,5.728,1612,3.817,1669,5.328,1738,6.334,1739,5.328,1740,5.328,1741,6.334,1742,6.334]],["t/420",[0,0.966,7,1.461,58,0.751,93,5.241,170,1.819,200,3.427,230,2.618,231,3.711,308,3.047,405,3.882,491,3.977,512,3.882,689,5.241,744,3.882,796,4.609,978,3.882,1035,4.193,1224,6.391,1267,5.552,1357,3.882,1438,4.193,1492,4.316,1613,5.968,1743,9.319,1744,5.241,1745,5.241,1746,6.6,1747,6.6,1748,5.968]],["t/422",[0,0.871,7,1.748,11,1.719,17,3.089,47,2.747,94,4.725,134,2.12,170,1.64,198,1.79,308,3.646,423,3.347,465,4.983,554,3.891,624,3.499,662,2.93,744,3.499,771,2.878,854,4.518,1035,5.63,1438,5.63,1487,3.78,1488,5.005,1493,4.725,1580,4.501,1733,6.642,1745,4.725,1748,7.141,1749,5.95]],["t/424",[5,1.947,11,1.154,17,3.089,43,3.033,58,0.677,89,3.033,91,2.881,101,3.499,102,3.955,128,3.499,182,4.315,198,1.79,234,2.096,249,3.21,308,2.747,354,2.747,608,3.585,771,2.169,786,3.345,787,2.453,814,3.089,898,4.315,917,3.033,1428,3.891,1493,4.725,1517,4.315,1559,4.015,1580,4.501,1604,4.155,1663,5.381,1673,5.381,1750,5.95,1751,5.95,1752,5.381,1753,5.95,1754,7.038,1755,5.95,1756,4.725,1757,4.725,1758,5.381,1759,4.315]],["t/426",[0,1.347,7,1.84,11,1.249,15,3.473,21,3.839,28,4.09,35,1.271,47,2.972,74,4.496,82,4.09,85,6.994,89,4.239,308,2.972,340,3.619,341,3.473,368,4.968,377,3.406,442,2.972,542,6.289,655,5.112,663,3.282,1580,4.87,1732,5.112,1760,6.438,1761,4.345,1762,5.112]],["t/428",[7,1.705,37,2.923,45,2.333,58,0.652,131,1.243,198,2.317,280,2.688,362,2.274,364,3.365,366,2.463,422,2.245,423,2.165,608,3.454,662,2.823,744,4.53,782,3.734,783,3.749,927,2.731,951,5.586,999,3.156,1035,4.893,1057,4.553,1224,7.036,1438,3.642,1451,4.427,1487,3.642,1488,4.823,1612,3.454,1666,4.157,1733,4.823,1763,5.733,1764,5.733,1765,5.733]],["t/430",[0,1.138,116,4.195,150,3.646,183,5.43,200,4.037,216,3.895,231,4.372,335,4.949,1102,7.032,1519,7.032,1702,6.541,1766,7.032,1767,7.776]],["t/432",[0,1.284,16,3.575,35,1.733,42,3.053,43,3.575,58,0.798,91,3.395,96,5.568,130,2.836,131,1.173,260,2.969,336,4.455,381,4.225,598,4.586,1451,4.03,1556,5.305,1633,5.899,1768,5.899,1769,7.013,1770,7.013,1771,7.013]],["t/434",[0,1.23,3,3.849,4,4.417,7,1.86,8,1.949,9,2.849,14,2.442,24,3.337,58,0.745,111,7.069,122,3.118,130,2.115,134,2.332,153,4.046,160,3.398,170,1.804,234,2.306,257,4.046,354,3.022,911,5.919,1490,4.046,1560,5.197,1575,4.28,1731,5.506,1772,6.545,1773,5.506,1774,6.545,1775,6.545,1776,6.545,1777,5.919]],["t/436",[0,1.138,7,1.721,43,3.964,101,4.573,102,3.895,200,4.037,590,5.086,608,4.685,771,2.834,787,3.205,1582,5.639,1612,4.685,1735,7.032,1778,7.032]],["t/438",[0,1.194,9,3.081,11,1.582,17,2.631,22,2.304,25,2.631,35,1.743,51,3.053,58,0.577,99,3.314,102,2.538,107,4.496,116,2.734,117,2.238,131,0.677,170,1.397,234,1.785,243,5.354,297,3.609,354,3.268,364,1.96,365,2.146,367,2.98,388,2.414,394,3.314,412,2.117,422,1.985,423,2.673,572,3.133,644,3.897,746,3.675,752,3.675,814,2.631,821,3.219,823,3.819,870,3.833,892,4.024,917,2.583,1283,4.263,1357,2.98,1423,4.582,1451,2.912,1490,4.376,1575,3.314,1604,3.539,1779,3.833,1780,5.068,1781,5.068,1782,4.024,1783,3.833,1784,5.068,1785,5.068]],["t/440",[0,0.898,3,3.609,4,4.141,6,2.877,7,1.358,9,2.671,13,2.025,24,3.128,31,2.877,35,1.886,38,3.186,42,3.508,59,3.021,96,6.399,116,3.31,130,1.983,131,1.077,164,4.873,170,1.691,178,3.073,381,3.697,412,2.563,598,4.013,645,3.378,746,4.45,1451,3.527,1490,3.793,1687,6.096,1773,5.162,1786,6.136,1787,6.136,1788,6.136,1789,4.642,1790,6.136]],["t/442",[35,1.1,45,2.266,58,0.86,64,3.89,76,2.743,87,6.953,117,3.336,131,1.009,137,3.034,240,4.039,297,2.84,325,2.237,538,2.103,716,4.423,787,3.114,791,4.941,799,6.284,802,3.89,854,2.84,881,4.423,1012,4.039,1223,3.759,1332,4.039,1404,7.798,1418,4.039,1666,4.039,1729,4.423,1791,5.571,1792,3.643,1793,7.555,1794,5.571,1795,5.571,1796,5.037]],["t/444",[0,1.263,35,1.705,36,3.048,58,0.868,87,4.274,93,4.487,102,2.83,107,3.589,116,4.115,117,2.495,130,2.465,131,1.019,135,2.102,136,2.736,137,2.27,178,2.83,183,3.946,188,4.274,235,3.695,284,2.134,310,3.111,328,3.405,410,2.036,423,2.88,544,4.097,598,3.695,645,4.199,812,2.934,821,4.846,826,4.274,841,4.097,874,3.946,917,2.881,1150,4.097,1218,4.097,1219,4.097,1388,4.487,1404,4.274,1496,4.274,1666,4.097]],["t/446",[0,1.414,7,2.139,37,3.64,42,3.108,69,3.931,92,4.414,265,4.536,638,3.023,840,6.456,863,3.64,1517,5.177,1700,5.401,1701,6.006,1740,6.006,1797,4.199,1798,6.006,1799,5.67,1800,8.028]],["t/448",[0,1.197,13,2.699,137,3.286,841,5.932,928,4.702,984,5.057,1801,8.181,1802,8.181,1803,7.398]],["t/450",[0,1.026,35,1.733,168,3.86,316,2.746,372,3.783,386,3.231,410,2.527,422,2.746,423,2.648,585,5.741,821,4.455,823,4.736,841,5.085,869,5.085,871,4.732,1276,5.568,1428,4.586,1434,5.568,1803,6.341,1804,7.013]],["t/452",[0,1.127,14,2.873,35,1.52,113,3.728,131,1.029,205,3.305,372,4.154,386,2.596,702,4.64,823,5.016,869,5.583,1434,6.114,1704,6.114,1805,5.377]],["t/454",[0,1.349,35,1.699,58,0.979,131,0.75,157,2.735,170,1.546,224,2.833,230,3.011,325,2.253,362,2.225,386,2.901,401,5.555,402,3.171,403,3.452,410,3.1,423,2.118,442,2.59,665,3.088,821,3.564,823,3.027,1218,4.068,1219,4.068,1390,3.669,1806,4.068,1807,5.073]],["t/456",[0,1.167,97,4.303,157,2.874,224,2.888,230,3.163,401,5.723,402,3.332,403,3.627,442,4.385,447,5.383,665,3.326,742,5.57,823,4.303,1805,4.219,1806,5.784,1808,4.57]],["t/458",[0,1.204,157,2.965,224,2.908,230,3.263,401,5.828,402,3.437,403,3.741,428,4.957,442,3.798,665,3.487,1805,4.423,1806,5.966,1808,4.791,1809,8.228]],["t/460",[0,1.157,42,2.085,58,0.9,97,2.584,157,2.851,224,2.856,230,3.137,258,2.115,372,3.67,386,1.615,401,5.695,402,3.305,403,3.597,423,2.569,428,2.886,442,3.652,447,3.232,665,2.637,742,3.344,821,4.321,823,4.907,845,3.623,869,4.933,976,3.803,1218,3.473,1219,3.473,1257,3.623,1322,3.473,1805,4.75,1806,4.933,1810,4.331,1811,3.803,1812,4.331]],["t/462",[0,0.983,13,2.584,58,1.028,60,2.589,134,1.676,157,2.42,168,2.589,224,2.769,230,2.663,340,4.403,372,2.537,401,5.66,402,2.805,403,3.054,417,2.398,422,1.842,423,1.776,428,2.834,442,3.616,445,4.151,512,4.606,538,2.536,665,3.697,823,4.225,869,4.869,1390,3.076,1428,3.076,1434,3.735,1805,5.965,1806,4.869,1808,5.08,1811,3.735,1812,4.253,1813,6.716,1814,4.253]],["t/464",[58,0.843,188,6.871,224,1.966,498,4.58,512,4.358,1390,4.846,1428,4.846,1805,6.343,1808,5.605,1814,6.7,1815,7.41,1816,9.084,1817,9.084,1818,9.084]],["t/466",[0,0.714,35,1.361,39,2.252,58,0.784,69,2.686,84,3.794,113,3.337,224,2.649,230,2.733,231,2.743,268,3.538,269,4.412,316,3.401,386,1.645,400,6.045,402,2.879,410,1.758,423,2.602,442,2.252,449,3.69,512,4.053,632,5.797,665,2.686,821,4.378,823,2.632,934,3.292,984,3.016,1276,5.473,1390,4.507,1428,3.191,1485,3.69,1550,4.412,1805,3.407,1806,3.538,1807,4.412,1808,3.69,1811,3.874,1819,6.892,1820,7.992,1821,4.879,1822,4.879,1823,4.879,1824,4.879,1825,4.879,1826,4.879,1827,4.879,1828,4.879]],["t/468",[0,0.905,11,1.2,31,2.9,35,1.221,45,3.296,141,3.153,234,3.182,294,4.911,310,4.459,376,3.477,442,2.855,512,3.637,589,2.995,787,3.723,812,3.211,814,4.205,823,3.336,848,4.37,849,5.592,852,3.477,1551,4.319,1829,6.127,1830,4.911,1831,4.174,1832,6.814,1833,6.185,1834,5.874,1835,5.202,1836,6.185]],["t/470",[0,0.905,5,0.784,11,1.361,13,1.049,19,1.621,31,1.491,35,0.988,39,1.468,45,3.297,49,2.146,55,1.328,58,0.362,60,1.751,130,2.267,131,1.082,132,2.08,198,0.957,205,3.012,222,1.404,230,1.261,234,1.12,258,1.404,260,1.347,266,2.08,294,4.913,296,2.675,328,1.916,336,2.02,342,1.87,351,1.425,366,1.017,385,3.046,390,4.487,399,3.099,423,2.881,465,1.788,483,2.08,517,1.751,550,2.146,561,1.446,608,3.015,614,2.221,633,2.08,663,1.621,752,4.487,769,3.785,770,1.87,771,2.255,812,4.801,821,2.02,823,1.716,899,2.221,902,2.08,973,5.205,1116,2.406,1220,2.525,1251,2.306,1451,1.828,1586,2.876,1598,2.406,1612,1.916,1702,2.675,1714,2.675,1724,2.221,1830,5.572,1831,2.146,1837,3.18,1838,5.004,1839,2.675,1840,2.876,1841,2.675,1842,2.525,1843,2.146,1844,3.18,1845,3.18,1846,2.876,1847,2.876,1848,5.004,1849,3.18,1850,2.525,1851,5.004,1852,3.18,1853,2.675,1854,2.675,1855,4.525,1856,2.876,1857,4.68,1858,3.18,1859,3.18,1860,3.18,1861,2.876,1862,2.876,1863,3.18,1864,2.306,1865,3.18,1866,3.18,1867,3.18,1868,3.18,1869,3.18,1870,3.18]],["t/472",[0,0.615,11,1.794,14,2.476,24,0.938,35,0.829,37,1.622,39,0.849,45,0.748,55,2.091,58,0.362,63,0.973,74,1.285,101,1.082,107,1.169,122,2.002,131,0.246,134,0.655,148,0.906,150,0.863,171,1.461,177,1.082,179,0.634,209,1.108,213,1.108,222,0.812,224,1.642,234,2.472,260,1.779,266,1.203,294,3.336,310,2.313,328,1.108,335,0.973,336,1.169,342,4.635,346,1.241,360,2.036,376,1.788,377,0.973,385,2.069,390,1.334,394,1.203,398,1.285,412,0.768,414,1.548,442,3.391,475,1.285,490,1.169,491,2.532,501,1.392,517,1.013,538,1.201,608,1.108,624,1.082,669,1.241,702,1.917,752,3.047,769,2.406,770,3.325,787,3.34,791,5.154,796,1.285,812,2.598,814,2.598,845,4.276,848,4.252,850,1.392,852,2.362,854,3.577,872,2.532,873,2.597,876,1.548,927,1.515,933,1.108,937,1.548,947,2.876,957,2.406,995,2.406,1046,1.664,1056,0.955,1087,1.241,1101,1.461,1176,2.221,1220,1.461,1272,1.664,1390,1.203,1398,1.334,1536,1.392,1551,2.934,1605,1.917,1612,1.917,1628,1.392,1652,4.526,1661,1.461,1665,1.392,1675,1.285,1690,1.334,1798,1.548,1830,4.914,1831,2.146,1832,2.676,1834,3.047,1842,2.526,1853,1.548,1864,3.047,1871,1.84,1872,1.664,1873,2.306,1874,2.876,1875,3.181,1876,1.84,1877,1.664,1878,1.84,1879,1.84,1880,1.392,1881,1.84,1882,3.534,1883,1.84,1884,3.799,1885,2.676,1886,2.676,1887,1.84,1888,2.876,1889,1.84,1890,1.664,1891,1.664,1892,1.548,1893,1.548,1894,1.664,1895,2.876,1896,1.461,1897,1.84,1898,4.202,1899,1.84,1900,1.664,1901,1.84,1902,1.84,1903,1.84,1904,1.548,1905,1.84,1906,1.664,1907,1.84,1908,1.548,1909,1.548,1910,1.664,1911,1.461,1912,1.664,1913,1.84,1914,1.664,1915,1.548,1916,1.84,1917,2.406,1918,1.392,1919,1.548,1920,1.84,1921,3.181,1922,1.84,1923,1.84]],["t/474",[11,1.295,14,1.338,24,1.829,26,2.848,39,1.656,49,2.42,97,1.935,117,1.584,188,2.713,224,2.259,234,1.263,235,2.346,245,2.061,260,2.326,280,2.576,337,3.243,342,3.231,357,3.243,385,1.766,412,1.498,503,2.848,559,2.217,633,2.346,635,4.367,755,2.017,768,5.617,770,2.109,787,2.265,791,4.367,812,2.852,814,1.862,823,1.935,845,4.156,848,2.964,852,2.017,854,4.114,857,3.984,899,2.505,927,1.709,933,2.161,995,5.052,1114,2.505,1169,3.243,1220,2.848,1283,3.017,1312,2.505,1511,4.663,1602,2.505,1612,3.31,1628,2.713,1690,2.601,1744,2.848,1799,2.848,1831,2.42,1832,3.017,1840,3.243,1873,3.984,1880,2.713,1882,5.617,1884,3.243,1888,4.968,1890,3.243,1908,3.017,1917,5.662,1924,3.017,1925,3.587,1926,5.494,1927,7.485,1928,6.678,1929,3.587,1930,3.587,1931,3.587,1932,3.587,1933,5.494,1934,3.587,1935,5.494,1936,5.494,1937,3.587,1938,3.587,1939,3.587,1940,3.587,1941,3.587,1942,3.587,1943,3.587,1944,3.587,1945,3.587]],["t/476",[0,0.851,11,1.509,14,2.171,97,3.139,130,1.88,131,0.777,134,2.073,146,2.966,206,4.063,234,3.087,310,3.203,376,4.374,399,2.914,442,3.591,561,2.646,702,3.506,787,3.207,791,3.805,812,4.039,814,3.021,848,3.139,899,4.063,1580,4.401,1605,3.506,1612,5.281,1782,4.62,1830,4.62,1834,5.641,1842,4.62,1854,4.894,1864,4.219,1904,4.894,1917,4.401,1946,4.894,1947,7.78,1948,5.818,1949,5.818]],["t/478",[9,4.224,84,3.967,145,4.712,244,4.577,260,3.051,376,4.051,662,3.548,830,5.519,863,4.946,928,4.141,980,5.722,1416,5.032,1596,4.863,1768,6.061,1950,6.516,1951,6.516,1952,6.516]],["t/480",[9,2.692,47,2.855,119,6.693,152,2.855,172,5.443,333,2.946,830,3.823,872,3.726,939,4.485,1418,4.485,1487,3.929,1536,4.678,1541,4.319,1953,4.045,1954,8.667,1955,8.168,1956,5.592,1957,6.814,1958,4.678,1959,5.592,1960,5.592,1961,5.592,1962,5.592,1963,5.592,1964,5.592,1965,5.592,1966,4.911,1967,5.592,1968,4.485]],["t/482",[9,2.111,13,1.6,21,2.238,39,3.168,47,4.219,55,2.866,58,0.781,106,2.921,119,6.382,134,1.727,152,3.998,233,2.851,234,1.708,260,2.053,308,2.238,316,1.899,333,4.52,336,3.08,366,2.547,418,2.238,448,2.616,493,4.869,561,3.12,610,3.171,702,2.921,744,2.851,863,4.415,873,2.997,902,3.171,1357,2.851,1383,3.516,1487,5.805,1541,4.792,1596,3.272,1761,3.272,1783,3.668,1958,3.668,1969,4.079,1970,4.079,1971,4.849,1972,4.849,1973,4.849]],["t/484",[9,2.898,17,4.41,47,3.922,58,0.757,69,3.664,76,3.277,119,5.932,170,1.834,233,4.996,234,2.345,244,4.228,333,3.171,422,3.327,504,4.492,561,3.027,830,4.115,863,3.393,999,3.664,1223,5.732,1416,4.648,1487,5.396,1792,5.555,1974,5.035]],["t/486",[21,4.218,47,4.218,67,5.94,81,5.048,92,4.624,376,4.205,388,3.563,561,3.401,662,3.683,723,3.957,863,3.813,1487,4.751,1761,5.048,1975,6.764,1976,7.48,1977,7.48]],["t/488",[9,3.152,13,1.728,45,2.13,47,4.34,48,3.961,58,0.596,67,4.158,102,4.486,170,1.996,207,4.405,308,2.417,333,2.495,348,4.735,382,3.961,418,2.417,491,3.155,561,3.293,576,3.961,624,3.08,729,3.534,806,4.405,1378,6.091,1487,5.972,1542,5.251,1792,3.425,1841,4.405,1847,4.735,1966,7.112,1970,4.405,1978,4.735,1979,5.75,1980,8.301,1981,7.242,1982,5.236,1983,4.735,1984,5.236,1985,5.236,1986,4.735,1987,4.405,1988,5.236]],["t/490",[9,2.838,24,2.301,47,4.671,84,2.485,102,2.261,119,4.553,128,2.655,233,2.655,234,1.59,249,2.435,299,3.152,328,2.72,333,4.659,449,3.415,554,5.006,559,4.031,561,2.053,563,2.435,589,2.186,627,3.273,662,2.223,665,2.485,830,2.791,917,2.301,939,3.273,1114,3.152,1176,4.553,1416,3.152,1428,2.952,1487,6.212,1829,3.415,1953,2.952,1970,3.797,1989,4.514,1990,4.514,1991,4.514,1992,8.383,1993,4.514,1994,4.082,1995,4.514,1996,4.514,1997,8.383,1998,4.932,1999,4.082,2000,4.514,2001,4.514,2002,3.797,2003,4.514,2004,4.514,2005,3.797,2006,4.514]],["t/492",[9,3.166,422,2.848,554,4.756,830,4.495,860,3.776,863,4.967,1035,4.62,1223,6.574,1572,5.501,1715,5.775,1792,6.371,1919,6.117,2007,6.576,2008,6.576,2009,5.775]],["t/494",[9,3.909,19,3.707,23,3.41,55,3.038,113,3.521,144,4.089,204,5.273,213,4.382,336,4.62,585,4.756,595,4.62,609,5.273,732,4.908,830,5.551,863,4.578,1388,5.775,1399,5.775,1609,5.273]],["t/496",[9,3.453,144,4.46,156,4.559,830,4.904,1357,4.666,1974,6.001,2010,7.174,2011,6.673,2012,7.174,2013,6.673,2014,6.673,2015,7.174]],["t/498",[0,1.396,1,4.331,6,2.558,7,1.877,8,1.625,11,1.058,16,2.781,31,3.492,35,1.077,39,2.518,130,1.762,131,0.995,156,3.135,170,1.503,186,3.135,251,3.809,308,2.518,313,3.465,343,4.588,366,2.381,367,3.208,376,3.067,381,3.287,504,3.681,515,2.641,638,2.309,782,2.341,892,4.331,951,3.955,1517,3.955,1557,4.588,1582,3.955,1757,4.331,1914,4.932,1953,3.567,2008,4.932,2016,8.48,2017,5.455,2018,6.734,2019,4.932,2020,5.455,2021,5.455,2022,4.588,2023,4.932]],["t/500",[928,5.129]],["t/502",[16,2.288,24,2.288,31,2.105,131,1.235,179,1.546,202,2.935,214,2.523,329,4.059,376,2.523,381,2.704,490,4.125,559,2.775,574,4.709,601,6.063,783,4.247,880,3.029,910,3.255,917,2.288,925,3.564,927,2.138,1087,3.029,1088,3.395,1199,3.564,1223,3.029,1492,2.935,1520,3.134,1542,3.255,1559,3.029,1578,4.059,1675,4.534,1680,4.059,1754,6.058,1756,3.564,1792,2.935,1796,4.059,1854,3.776,2024,3.776,2025,4.489,2026,5.462,2027,5.771,2028,6.058,2029,7.42,2030,3.564,2031,4.489,2032,4.489,2033,4.489,2034,3.776,2035,3.564,2036,3.395,2037,4.489,2038,5.872,2039,3.564,2040,4.489,2041,3.564,2042,4.489,2043,6.493,2044,4.489]],["t/504",[16,4.885,34,5.143,35,1.598,51,4.879,116,4.368,563,4.368,2045,6.811,2046,8.097,2047,6.811]],["t/506",[5,2.21,7,1.348,31,2.855,35,1.202,116,4.325,361,2.445,376,3.423,410,2.194,562,6.065,563,4.325,601,4.415,654,4.835,663,3.104,665,3.352,746,4.415,812,3.161,830,3.764,917,3.104,968,4.415,986,5.243,1551,4.252,1555,4.109,1885,5.122,1918,4.606,2018,4.835,2028,4.835,2029,4.415,2047,5.122,2048,6.089,2049,5.122,2050,6.089,2051,6.089,2052,5.506,2053,5.506,2054,5.506,2055,4.606]],["t/508",[31,2.594,35,1.092,58,0.629,225,5.688,249,4.056,293,4.653,388,3.582,399,2.77,601,5.452,644,3.045,746,4.011,799,3.617,817,4.321,870,4.184,898,4.011,1117,6.646,1191,5.002,1375,5.002,1557,6.325,1756,4.392,1877,6.799,2027,5.688,2028,6.783,2036,4.184,2056,5.002,2057,7.519,2058,6.799,2059,5.531,2060,5.531,2061,5.531,2062,5.531,2063,5.002,2064,5.531,2065,5.531,2066,7.519,2067,5.531,2068,5.531,2069,4.392,2070,5.531]],["t/510",[16,3.64,34,4.536,35,1.41,51,4.302,91,3.457,116,3.852,123,6.456,354,3.296,411,2.983,563,3.852,564,6.006,601,5.177,746,5.177,851,5.401,1609,5.177,1651,5.67,1679,6.456,2018,5.67,2047,6.006,2056,6.456,2071,7.14,2072,7.14,2073,7.14]],["t/512",[0,1.065,1,3.283,3,2.431,4,2.79,6,1.938,7,2.157,9,1.8,11,1.411,16,2.108,35,1.207,101,2.431,102,2.071,130,1.975,131,1.2,172,3.684,205,1.775,256,3.283,259,2.887,290,3.283,340,2.324,360,1.682,362,3.686,364,2.815,366,1.955,385,2.035,389,2.998,468,2.491,515,4.718,526,4.434,589,2.961,638,3.803,771,3.274,787,1.704,854,2.108,860,3.174,883,2.887,884,5.143,928,2.376,978,2.431,1056,2.146,1490,2.556,1544,3.283,1556,3.127,1701,3.478,1745,3.283,1843,4.126,1946,3.478,2026,3.478,2074,4.134,2075,3.738,2076,4.134]],["t/514",[0,1.146,2,3.411,6,2.205,34,4.266,35,1.546,38,2.442,47,2.171,81,3.174,112,3.956,116,2.537,215,2.537,225,3.558,229,3.174,249,2.537,288,3.076,381,2.834,412,1.965,471,3.735,554,3.076,563,2.537,601,4.869,654,3.735,698,4.253,771,2.448,783,3.076,787,1.939,851,3.558,870,3.558,910,3.411,917,3.423,1035,2.988,1334,3.284,1357,2.766,1411,3.956,1416,3.284,1582,3.411,1602,3.284,1605,2.834,1608,3.411,1631,3.956,1650,3.558,1671,6.072,1690,3.411,1757,5.332,2024,3.956,2027,5.925,2028,6.783,2029,5.679,2036,3.558,2041,3.735,2053,4.253,2055,3.558,2058,4.253,2069,3.735,2077,4.253,2078,4.704,2079,4.704,2080,4.704,2081,6.072,2082,4.253,2083,4.704,2084,4.704]],["t/516",[0,0.839,7,1.269,11,1.804,31,2.688,55,2.395,134,2.042,148,2.823,256,4.553,259,4.003,336,3.642,360,3.539,361,2.303,362,2.274,366,1.833,367,3.372,377,3.033,409,3.372,417,2.923,498,4.762,515,4.212,549,3.033,589,2.776,595,3.642,638,3.683,771,2.09,782,2.461,801,3.642,860,3.999,926,4.823,970,4.823,1690,4.157,1953,5.038,2045,4.823,2085,5.184,2086,5.184,2087,5.733,2088,5.733,2089,5.184]],["t/518",[7,1.548,23,3.28,31,1.814,45,1.574,69,3.204,91,1.874,105,4.621,128,2.276,134,2.073,152,1.786,156,2.224,186,2.224,191,1.938,313,2.458,340,2.175,360,2.368,366,1.861,381,2.331,383,2.806,384,3.073,515,3.387,565,3.073,638,3.295,682,2.806,702,2.331,765,4.896,782,1.661,814,2.009,817,4.472,852,2.175,859,4.621,873,3.598,917,2.967,927,1.843,928,2.224,951,2.806,967,2.927,1056,2.009,1063,4.621,1199,3.073,1206,2.806,1209,2.702,1226,2.702,1247,3.073,1329,3.073,1354,3.255,1424,3.073,1492,2.531,1581,3.073,1654,5.072,1665,2.927,1685,3.073,1704,4.621,1715,3.073,1759,2.806,1762,4.621,1766,3.499,1778,3.499,2018,4.621,2023,3.499,2029,4.22,2085,3.499,2086,3.499,2090,7.65,2091,4.621,2092,5.555,2093,6.311,2094,5.82,2095,3.499,2096,6.325,2097,2.702,2098,3.499]],["t/520",[7,1.413,11,1.239,34,4.056,76,3.144,94,5.071,148,3.144,152,2.948,191,3.198,313,4.056,340,3.59,342,3.755,409,3.755,515,4.005,561,2.904,638,2.704,852,3.59,860,3.315,967,4.83,968,4.63,1206,4.63,1247,5.071,1654,4.63,1685,5.071,1704,5.071,1762,6.568,1839,5.371,1873,5.997,1953,4.176,2090,8.162,2099,5.071]],["t/522",[102,3.676,605,5.299,765,6.174,1056,5.299,1496,5.552,1762,5.829,2090,7.597,2091,5.829,2092,5.829,2100,7.34,2101,7.34,2102,7.34,2103,7.34]],["t/524",[7,0.874,9,3.082,37,2.012,49,2.664,91,1.911,95,3.32,102,1.977,105,6.24,230,1.565,259,2.756,288,2.581,308,3.268,361,1.585,362,1.565,375,2.986,383,2.862,412,3.283,515,3.428,517,2.173,537,2.862,538,1.49,565,3.134,589,1.911,598,2.581,638,3.563,665,2.173,701,3.32,796,2.756,802,2.756,817,3.395,860,3.067,873,2.44,890,3.32,894,3.569,914,2.862,927,1.88,987,3.134,1088,4.469,1223,2.664,1329,4.691,1424,3.134,1489,2.756,1490,2.44,1520,2.756,1536,2.986,1605,2.378,1609,2.862,1654,4.284,1665,5.945,1670,2.862,1715,3.134,1718,3.569,1792,2.581,1968,2.862,2019,3.569,2022,3.32,2045,3.32,2052,3.569,2081,7.106,2093,6.68,2095,3.569,2096,5.342,2097,2.756,2104,5.908,2105,5.908,2106,3.947,2107,3.947,2108,3.569,2109,3.947,2110,3.947,2111,3.947,2112,3.947,2113,3.134,2114,3.947,2115,3.947,2116,3.947,2117,3.947]],["t/526",[9,2.947,35,1.337,37,3.452,215,4.632,280,3.175,378,3.982,411,2.828,412,2.828,605,5.149,790,7.765,1056,5.149,1451,4.935,1669,5.695,2093,5.122,2118,6.771,2119,6.771,2120,6.771,2121,5.122,2122,6.771,2123,6.771]],["t/528",[58,0.436,80,2.506,91,1.855,95,3.223,113,2.797,122,2.752,130,1.238,141,1.953,274,2.586,291,4.587,296,3.223,351,1.717,360,1.559,386,1.292,388,1.825,403,1.742,412,1.601,515,4.785,517,2.109,537,2.778,538,1.447,539,2.369,567,4.665,572,2.369,589,2.797,638,3.95,665,2.109,723,2.027,782,2.985,796,2.676,843,3.223,860,1.989,873,2.369,883,4.034,919,2.898,957,2.898,1088,4.37,1209,2.676,1267,3.223,1329,5.522,1437,4.587,1492,2.506,1496,2.898,1579,3.223,1601,2.778,1661,5.522,1675,4.034,1684,3.223,1690,2.778,1756,3.043,1798,3.223,1915,3.223,1969,3.223,2029,6.333,2035,3.043,2049,3.223,2093,4.37,2099,3.043,2124,3.832,2125,3.832,2126,4.86,2127,3.832,2128,3.832,2129,2.898,2130,3.465,2131,3.832,2132,3.832,2133,5.777,2134,3.465,2135,3.832,2136,3.832,2137,5.777,2138,3.832,2139,3.832,2140,3.832]],["t/530",[37,3.925,128,4.528,214,4.329,358,6.114,412,3.216,574,5.583,605,4.828,1056,4.828,2029,7.244,2141,7.7,2142,7.7]],["t/532",[11,1.822,23,4.004,54,4.264,146,3.422,148,3.305,280,3.148,308,3.099,394,4.39,448,3.621,515,4.135,593,6.07,638,2.842,782,2.882,859,6.782,860,3.485,879,5.647,967,5.078,1116,5.078,1571,5.647,1654,4.868,2077,6.07,2143,6.713,2144,6.07,2145,6.07,2146,6.713]],["t/534",[3,4.441,11,1.465,23,3.541,58,0.859,69,4.157,234,2.66,605,4.771,787,3.113,859,5.997,1056,4.771,1601,5.476,2145,6.829,2147,7.552,2148,6.353,2149,7.552]],["t/536",[7,1.738,35,1.55,205,3.371,209,4.732,381,4.732,415,6.237,864,5.484,928,4.514,1761,5.3,1797,4.619,2024,6.607,2039,6.237,2113,6.237]],["t/538",[0,0.864,7,1.954,9,2.571,11,1.524,16,3.011,51,4.734,53,4.124,141,3.011,195,3.985,360,2.403,362,2.342,364,2.285,366,1.888,381,3.558,455,3.862,503,4.689,515,2.859,526,4.282,605,4.887,801,3.751,928,3.394,966,4.689,1056,4.887,1665,4.467,1953,3.862,2055,4.467,2089,5.34,2150,7.984,2151,5.906,2152,5.906,2153,5.906,2154,5.906,2155,5.906,2156,5.906]],["t/540",[0,1.363,130,2.132,131,0.882,141,3.365,205,2.833,234,2.325,399,3.306,417,3.365,550,4.454,605,3.427,770,5.48,812,3.427,823,4.558,872,3.977,873,4.08,902,4.316,927,4.025,1605,3.977,1834,4.786,1843,4.454,1857,6.391,2157,5.968,2158,5.968,2159,5.552,2160,4.993]],["t/542",[0,0.937,5,1.287,8,1,10,3.645,11,0.651,37,1.711,38,1.743,39,1.55,45,2.124,47,2.957,107,2.132,129,4.391,130,2.529,131,1.046,132,2.195,141,3.266,148,1.653,150,1.574,198,1.01,231,1.887,234,2.257,260,2.21,266,2.195,308,1.55,375,2.539,376,2.935,385,1.653,389,2.434,398,2.344,399,1.681,405,1.974,418,1.55,485,2.075,490,2.132,515,1.625,539,2.075,605,3.326,633,2.195,638,1.421,644,3.526,663,1.711,702,2.023,723,1.776,755,1.887,770,3.07,787,2.152,812,4.303,816,2.666,817,1.929,823,3.898,852,1.887,873,2.075,913,2.539,933,2.023,959,2.132,1063,2.666,1173,2.824,1223,2.265,1251,2.434,1398,2.434,1441,2.666,1486,3.035,1559,2.265,1572,2.539,1598,2.539,1599,4.391,1605,2.023,1670,2.434,1687,2.539,1714,2.824,1724,2.344,1727,4.391,1792,2.195,1799,2.666,1831,3.523,1842,2.666,1843,2.265,1846,3.035,1857,4.846,1874,3.035,2002,4.391,2121,2.539,2159,2.824,2161,2.075,2162,3.035,2163,3.357,2164,3.035,2165,3.357,2166,3.357,2167,3.357,2168,2.666,2169,3.357,2170,3.357,2171,3.357,2172,3.357,2173,3.949,2174,5.221,2175,3.035,2176,3.357,2177,3.035,2178,2.824,2179,3.357,2180,3.357]],["t/544",[45,1.446,47,1.641,97,2.943,133,1.78,134,1.266,150,1.667,203,2.577,217,2.197,231,1.998,297,1.812,340,1.998,442,2.519,447,4.481,558,4.127,562,4.127,574,3.956,663,2.782,755,1.998,769,4.127,776,2.99,812,3.867,845,2.689,857,2.577,871,5.96,976,2.822,983,2.258,986,4.343,1209,2.482,1334,2.482,1336,4.332,1843,2.399,1857,7.216,1987,2.99,2034,2.99,2161,4.105,2181,6.641,2182,6.641,2183,5.456,2184,3.214,2185,3.214,2186,3.554,2187,3.554,2188,3.554,2189,3.554,2190,3.554,2191,3.554,2192,6.005,2193,3.554,2194,4.59,2195,3.554,2196,3.214,2197,3.214,2198,3.214,2199,4.934,2200,3.554,2201,3.554,2202,3.554,2203,4.934,2204,3.554,2205,3.554,2206,3.214,2207,3.554,2208,3.554,2209,5.456,2210,3.554,2211,5.456,2212,5.456,2213,3.554,2214,3.554,2215,3.554,2216,3.554,2217,3.214,2218,3.554,2219,3.554,2220,3.554,2221,3.554,2222,3.214,2223,3.554,2224,3.554,2225,3.214,2226,3.554,2227,3.214,2228,3.214,2229,3.214,2230,3.554,2231,3.554,2232,4.934,2233,3.554]],["t/546",[0,1.193,7,0.996,13,0.665,31,2.109,35,1.05,38,1.046,45,1.83,47,1.587,58,0.679,130,1.453,131,0.928,132,2.249,170,0.555,198,0.606,205,1.931,224,1.843,229,1.359,231,1.933,234,1.211,235,1.317,244,1.279,260,1.456,266,2.249,299,1.407,308,0.93,335,1.066,345,1.461,362,1.784,366,0.644,376,1.132,385,0.992,390,1.461,399,1.009,412,0.841,421,2.401,447,1.359,491,2.71,501,1.524,540,2.601,548,1.461,550,3.589,558,2.601,559,1.245,562,4.023,567,1.214,585,1.317,605,1.785,624,2.022,638,1.456,644,1.893,662,0.992,682,1.461,702,1.214,722,1.359,723,3.159,755,2.99,770,1.185,771,1.939,786,1.132,812,4.804,823,1.855,825,1.599,852,1.132,871,1.359,872,2.072,881,3.572,914,2.493,927,0.96,933,2.072,986,3.478,1056,1.046,1063,1.599,1088,1.524,1093,2.892,1114,1.407,1150,1.461,1173,1.694,1302,1.359,1417,1.821,1421,1.821,1451,1.976,1472,3.784,1548,1.694,1559,2.32,1560,1.599,1572,1.524,1581,1.599,1592,1.821,1602,1.407,1605,2.71,1611,1.821,1651,1.599,1670,1.461,1687,1.524,1727,1.694,1739,1.694,1782,1.599,1789,1.524,1829,1.524,1834,2.493,1835,1.694,1843,3.036,1853,3.784,1855,1.821,1857,4.517,1864,1.461,1892,1.694,1893,1.694,1904,1.694,1908,1.694,1912,1.821,1950,1.821,1987,1.694,2002,1.694,2030,1.599,2039,1.599,2082,1.821,2097,1.407,2129,1.524,2158,1.821,2159,1.694,2160,1.524,2161,2.781,2162,1.821,2164,1.821,2168,1.599,2173,2.601,2184,3.109,2194,1.694,2196,1.821,2197,1.821,2198,1.821,2199,3.109,2203,1.821,2206,1.821,2217,1.821,2222,1.821,2227,4.068,2228,1.821,2229,3.109,2232,1.821,2234,1.821,2235,2.014,2236,2.892,2237,3.438,2238,2.014,2239,2.014,2240,1.694,2241,2.014,2242,2.014,2243,1.821,2244,2.014,2245,2.014,2246,2.014,2247,2.014,2248,1.821,2249,2.014,2250,3.438,2251,2.014,2252,1.694,2253,3.438,2254,2.014,2255,3.438,2256,4.499,2257,3.109,2258,2.014,2259,2.014,2260,3.438,2261,1.821,2262,2.014,2263,2.014,2264,2.014]],["t/549",[0,0.871,7,1.748,11,1.719,38,3.089,39,2.747,58,0.677,106,3.585,131,1.184,135,2.443,233,3.499,234,2.096,366,1.903,380,4.501,605,3.089,633,3.891,657,5.005,771,2.169,801,3.78,839,5.973,857,4.315,967,4.501,978,3.499,1446,5.005,1589,5.005,1917,4.501,2009,6.27,2121,5.973,2265,6.642,2266,5.381,2267,5.95,2268,5.381,2269,4.501,2270,5.95,2271,5.95]],["t/551",[7,1.552,11,1.36,131,0.937,135,2.641,146,3.575,177,4.124,290,5.568,351,3.142,366,3.064,409,5.163,412,2.929,538,2.648,732,4.732,810,5.305,999,3.86,1252,6.341,2272,7.013,2273,7.013,2274,7.013,2275,6.341]],["t/553",[0,1.222,36,4.507,605,5.068,782,3.587,1048,6.634,2276,7.028]],["t/555",[0,1.138,134,2.77,202,5.086,325,3.123,335,4.114,396,5.248,605,4.037,682,5.639,782,3.338,978,4.573,2276,6.541,2277,7.032,2278,7.776,2279,7.776]],["t/557",[0,0.483,7,1.585,11,1.773,23,1.548,24,1.683,31,1.548,38,1.714,42,2.759,58,0.376,130,1.066,131,1.221,148,1.625,177,1.941,179,1.775,195,2.227,198,0.993,200,1.714,205,1.417,209,3.818,214,1.856,233,1.941,234,1.163,274,2.227,328,1.989,355,2.984,361,1.326,366,2.289,377,2.726,412,1.379,442,1.524,465,1.856,516,2.158,531,4.334,548,2.393,625,2.984,679,2.393,683,2.393,755,1.856,770,3.727,771,2.31,786,1.856,813,2.984,814,3.717,837,3.897,839,5.416,844,2.984,854,3.65,857,2.393,868,2.776,872,1.989,899,2.305,927,1.572,1226,2.305,1437,2.621,1562,2.621,1582,2.393,1628,2.497,1797,1.941,1811,4.091,1834,3.736,1850,2.621,1918,2.497,2009,4.091,2030,2.621,2038,2.984,2148,5.33,2160,3.897,2168,4.091,2236,2.776,2269,5.416,2275,2.984,2280,3.301,2281,3.301,2282,3.301,2283,3.301,2284,3.301,2285,3.301,2286,3.301,2287,3.301,2288,2.621,2289,4.659,2290,3.301,2291,3.301,2292,2.984,2293,3.301,2294,3.301,2295,3.301,2296,5.152,2297,5.152,2298,3.301,2299,3.301,2300,2.984,2301,2.984,2302,2.984,2303,2.621]],["t/559",[8,1.918,58,0.862,69,2.443,122,2.114,130,1.434,131,1.3,134,1.581,135,1.223,167,5.178,178,2.223,198,1.335,203,3.218,209,2.674,260,1.879,366,2.945,385,4.095,442,2.049,549,2.348,589,3.118,610,2.902,624,2.61,638,2.727,682,3.218,839,5.734,872,2.674,899,3.099,927,2.114,978,3.787,999,2.443,1212,3.218,1451,2.55,1562,3.524,1596,2.995,1761,2.995,1850,3.524,2034,3.733,2041,3.524,2097,4.497,2236,3.733,2269,4.872,2288,3.524,2292,4.013,2304,4.438,2305,8.317,2306,4.438,2307,4.438,2308,4.438,2309,6.44,2310,6.44,2311,7.58,2312,4.438,2313,4.438,2314,4.438]],["t/561",[0,0.94,7,0.341,11,0.528,19,2.254,23,0.722,36,1.974,38,0.8,55,1.847,58,0.731,60,2.433,69,1.499,97,1.974,106,0.928,122,2.106,128,0.906,130,1.183,131,0.489,134,0.97,135,1.538,136,1.772,150,0.722,167,0.866,171,3.51,177,2.153,179,0.531,198,0.463,203,1.975,209,0.928,214,0.866,224,0.723,244,1.73,260,3.202,274,2.47,280,0.722,299,1.076,310,2.015,316,0.603,328,0.928,333,0.734,340,0.866,366,2.914,376,0.866,388,3.955,412,2.11,442,3.9,447,1.838,475,1.076,490,0.978,491,1.641,498,0.952,513,1.393,539,0.952,550,1.838,563,0.831,566,2.462,567,0.928,576,1.165,578,1.393,584,1.117,589,0.746,608,1.641,609,1.975,610,1.007,616,1.165,633,1.007,635,1.007,637,1.223,638,1.55,682,2.654,683,2.654,729,1.039,732,3.766,755,0.866,771,2.465,782,3.247,814,4.227,839,4.858,854,2.254,872,2.205,899,3.087,903,1.296,909,1.393,910,1.117,917,0.785,926,4.694,927,2.658,976,1.223,978,3.777,988,1.223,1056,0.8,1114,1.076,1117,1.975,1209,1.902,1334,1.076,1427,2.291,1551,1.076,1562,4.79,1565,1.296,1596,1.838,1616,3.31,1666,1.975,1670,1.117,1711,1.393,1716,1.393,1720,1.393,1724,1.076,1779,1.165,1789,1.165,1894,1.393,1911,1.223,1918,1.165,1924,1.296,1968,1.117,1999,2.462,2009,2.906,2054,1.393,2097,1.076,2134,1.393,2150,1.393,2160,1.165,2161,0.952,2168,2.162,2265,2.291,2268,1.393,2269,4.858,2288,2.162,2300,1.393,2301,1.393,2315,1.393,2316,2.723,2317,1.54,2318,1.54,2319,2.723,2320,2.723,2321,2.462,2322,2.462,2323,2.462,2324,2.462,2325,2.723,2326,6.762,2327,5.58,2328,4.431,2329,1.296,2330,1.54,2331,1.54,2332,3.66,2333,1.54,2334,3.66,2335,1.54,2336,1.54,2337,1.54,2338,1.54,2339,1.54,2340,1.54,2341,1.54,2342,1.54,2343,1.54,2344,1.54,2345,1.54,2346,1.54,2347,1.54]],["t/563",[0,1.047,11,1.388,38,1.451,47,1.291,55,1.886,58,0.646,69,3.127,97,1.508,116,1.508,117,1.234,122,2.151,130,0.903,131,0.871,134,2.024,135,1.565,141,1.425,178,1.4,185,1.828,198,0.841,203,3.274,216,2.262,222,1.234,233,1.644,262,4.143,274,1.886,302,2.115,307,2.115,365,1.184,366,0.894,385,1.376,412,2.373,490,1.776,491,3.423,504,3.833,559,1.728,561,1.271,567,1.684,572,4.424,605,2.344,633,1.828,669,1.886,741,2.22,769,3.416,782,2.799,810,4.933,814,1.451,837,4.933,848,3.064,852,3.193,872,3.423,902,2.953,978,1.644,999,3.127,1003,2.528,1056,1.451,1206,2.027,1218,2.027,1219,2.027,1236,2.22,1286,2.528,1312,1.952,1334,1.952,1338,2.22,1409,2.528,1427,2.351,1437,2.22,1446,3.798,1476,2.22,1485,2.115,1565,2.351,1666,2.027,1675,1.952,1700,2.115,1799,2.22,1885,2.351,1911,2.22,1968,2.027,2049,2.351,2148,6.776,2161,1.728,2178,2.351,2225,2.528,2261,2.528,2265,2.351,2269,6.093,2276,2.351,2277,4.083,2288,2.22,2321,2.528,2322,2.528,2323,2.528,2324,2.528,2348,2.796,2349,2.796,2350,2.796,2351,2.796,2352,2.796,2353,2.796,2354,2.796,2355,2.796,2356,2.796,2357,2.351,2358,2.796,2359,2.796,2360,2.796,2361,2.796,2362,2.796,2363,2.796,2364,6.522,2365,2.796,2366,2.796,2367,2.796,2368,5.68,2369,5.68,2370,2.796,2371,2.796,2372,2.22]],["t/565",[0,0.771,11,1.937,35,1.436,54,4.621,58,0.828,69,2.902,121,4.434,130,1.703,131,0.704,135,1.453,150,2.472,160,2.737,229,3.557,234,1.857,342,4.899,409,3.1,610,3.447,787,2.999,812,2.737,850,3.988,880,3.557,959,3.349,966,5.777,1056,2.737,1485,3.988,1511,3.681,1582,3.823,1619,6.041,1700,3.988,1789,3.988,1797,3.1,1831,3.557,1864,3.823,1998,5.503,2157,4.767,2161,3.259,2328,4.186,2373,6.513,2374,7.275,2375,4.767,2376,4.767,2377,4.767]],["t/567",[0,0.631,7,1.397,11,1.943,31,2.024,54,2.742,55,3.429,58,0.491,69,2.376,131,1.29,132,2.822,134,1.538,135,1.189,141,2.2,148,2.125,150,2.024,166,3.63,171,3.427,299,3.014,308,1.992,361,1.733,380,4.774,423,2.817,465,4.614,482,2.668,514,3.427,624,2.538,757,3.903,771,2.719,786,2.426,787,1.779,854,3.803,873,2.668,874,4.407,877,4.774,902,2.822,959,2.742,966,5.011,1204,3.13,1362,5.707,1383,3.13,1551,3.014,1552,3.63,1599,3.63,1619,5.41,1675,3.014,1687,3.265,1761,2.912,1797,2.538,1831,2.912,1896,5.011,2126,5.308,2378,4.316,2379,4.316,2380,3.903,2381,5.707,2382,3.903]],["t/569",[0,0.615,11,1.88,35,0.505,39,1.94,49,1.727,55,3.842,58,0.291,64,1.787,122,2.001,131,1.295,132,1.673,148,1.26,150,2.506,179,0.882,198,1.608,205,1.098,215,1.38,224,1.115,230,1.666,231,1.439,244,1.625,249,2.266,268,3.047,335,2.223,342,2.471,351,1.146,361,1.687,385,2.069,386,0.863,409,1.505,412,2.233,418,1.94,423,0.966,442,1.94,455,1.673,465,1.439,553,1.936,560,2.032,562,1.936,608,1.542,723,2.223,729,1.727,732,1.727,770,1.505,786,1.439,787,1.055,789,1.936,812,3.212,850,1.936,854,3.154,873,1.582,877,6.534,881,3.336,883,1.787,927,2.948,968,3.876,986,1.673,1056,2.181,1087,1.727,1115,2.152,1302,4.176,1322,3.876,1357,1.505,1520,1.787,1542,1.855,1552,2.152,1597,1.787,1619,6.085,1739,2.152,1740,2.152,1759,3.047,1761,1.727,1797,1.505,1850,3.336,1873,1.855,1886,2.152,1896,2.032,1909,2.152,1924,2.152,2035,2.032,2092,3.336,2126,2.152,2161,1.582,2173,1.936,2303,2.032,2329,2.152,2373,1.855,2381,5.595,2382,6.179,2383,2.032,2384,2.314,2385,5.345,2386,2.559,2387,2.314,2388,2.152,2389,2.559,2390,2.559,2391,2.559,2392,2.032,2393,1.936,2394,2.559,2395,2.314,2396,2.152,2397,2.559,2398,2.559,2399,2.559,2400,2.559,2401,2.559,2402,2.559]],["t/571",[0,0.595,11,1.399,14,1.519,35,0.803,43,2.075,45,1.656,47,1.879,55,2.525,58,0.908,97,2.196,130,1.315,131,0.544,135,1.987,146,2.075,198,1.224,202,3.953,213,2.452,224,1.08,231,2.288,310,3.327,350,3.68,351,1.823,361,1.635,386,2.037,388,1.939,516,2.662,605,2.113,644,2.24,719,3.232,723,2.153,816,3.232,817,3.473,848,3.26,852,2.288,854,2.075,871,2.747,872,2.452,873,3.736,914,2.951,992,2.951,1043,3.423,1056,3.138,1210,3.079,1390,2.662,1514,3.423,1597,2.842,1619,2.951,1724,2.842,1761,4.079,1797,5.253,1835,3.423,1839,3.423,1880,3.079,2113,3.232,2161,2.516,2175,3.68,2177,3.68,2178,3.423,2192,3.68,2252,3.423,2257,3.68,2373,2.951,2392,3.232,2403,5.465,2404,4.07,2405,4.07,2406,6.044,2407,4.07,2408,4.07,2409,4.07,2410,4.07,2411,4.07,2412,4.07,2413,4.07,2414,4.07,2415,4.07,2416,4.07,2417,3.68,2418,4.07,2419,4.07,2420,4.07,2421,3.423,2422,3.232]],["t/573",[0,0.751,11,1.686,13,0.798,17,1.255,31,1.879,35,0.477,47,1.116,48,3.032,54,1.535,55,3.308,58,0.68,108,1.919,112,2.033,121,3.372,122,2.446,131,1.058,134,0.861,150,1.133,167,1.359,198,0.727,201,1.133,203,3.724,217,2.478,222,2.268,229,2.705,230,0.959,231,2.887,266,1.581,310,2.207,313,1.535,328,1.456,336,1.535,342,3.02,351,1.083,360,0.983,361,0.971,380,1.828,386,0.815,388,1.151,412,2.145,442,2.371,455,1.581,483,2.621,495,1.421,517,1.331,548,1.753,549,1.279,550,1.631,561,1.099,565,3.183,610,1.581,614,1.688,662,1.19,723,1.279,787,0.996,812,2.666,814,2.081,817,1.389,848,2.162,850,1.828,854,2.043,877,3.032,880,3.466,908,2.186,914,1.753,917,1.232,933,1.456,934,1.631,939,1.753,965,1.688,1035,1.535,1056,2.081,1087,1.631,1150,1.753,1176,1.688,1226,1.688,1236,1.919,1257,1.828,1302,2.705,1322,1.753,1456,1.753,1511,1.688,1570,2.186,1591,2.033,1597,1.688,1602,1.688,1619,5.742,1724,1.688,1773,2.033,1789,1.828,1797,3.514,1829,1.828,1856,2.186,1880,3.032,1900,2.186,1906,2.186,1910,2.186,1915,2.033,1968,1.753,1998,1.828,2030,1.919,2035,1.919,2121,1.828,2160,1.828,2161,3.175,2185,2.186,2194,2.033,2252,2.033,2302,2.186,2328,4.078,2373,4.333,2375,2.186,2376,4.644,2377,3.625,2384,4.644,2395,4.644,2403,3.625,2422,1.919,2423,2.417,2424,4.009,2425,4.009,2426,2.417,2427,2.417,2428,2.417,2429,2.417,2430,2.417,2431,2.417,2432,2.417,2433,2.417,2434,2.033,2435,2.417,2436,2.417,2437,2.417,2438,2.417,2439,2.417,2440,2.417,2441,2.417,2442,4.009,2443,2.417,2444,4.009,2445,2.417,2446,2.417,2447,2.417,2448,2.417,2449,2.417,2450,2.417,2451,2.033]],["t/576",[0,0.912,7,0.94,11,1.434,14,1.584,34,2.697,35,0.838,58,0.841,64,2.965,91,2.056,101,2.497,102,2.127,113,3.578,130,1.372,131,0.567,134,1.513,135,1.17,141,2.165,150,1.991,249,3.364,288,2.777,335,2.246,346,2.865,362,1.684,366,1.358,383,3.079,385,2.09,388,2.023,423,1.603,436,4.208,466,3.079,539,2.625,549,2.246,599,3.371,656,3.572,771,2.968,787,3.738,791,4.078,799,4.078,802,4.354,817,4.247,835,2.865,848,2.29,854,3.179,872,2.558,919,3.212,927,2.971,934,2.865,968,3.079,1204,3.079,1206,3.079,1312,2.965,1404,3.212,1418,3.079,1484,5.639,1551,4.354,1598,4.717,1633,3.572,1670,3.079,1797,3.667,1800,3.839,1829,3.212,1882,3.572,2026,3.572,2387,3.839,2452,4.246,2453,4.246,2454,4.246,2455,4.246,2456,4.246,2457,4.246]],["t/578",[5,1.525,35,1.221,131,0.826,198,1.86,215,3.336,249,3.336,344,5.202,388,2.946,512,3.637,786,3.477,787,2.549,816,4.911,817,5.191,848,4.873,927,2.946,1251,4.485,1579,5.202,1608,4.485,1754,4.911,1797,3.637,1880,4.678,2027,4.678,2036,4.678,2097,4.319,2099,6.432,2121,4.678,2173,4.678,2373,4.485,2392,4.911,2421,5.202,2422,4.911,2458,8.1,2459,5.202,2460,5.592]],["t/580",[11,1.804,31,2.688,39,2.647,55,3.218,131,0.766,134,2.042,266,3.749,328,3.454,342,3.372,360,2.333,388,3.67,390,4.157,550,3.869,624,3.372,689,4.553,723,3.033,755,3.223,817,5.345,848,4.155,852,3.223,854,2.923,880,3.869,1087,3.869,1713,5.184,1797,3.372,1911,4.553,2092,4.553,2097,4.003,2099,4.553,2161,3.544,2328,4.553,2393,4.337,2422,4.553,2461,6.966,2462,5.733,2463,5.733,2464,5.733,2465,5.733,2466,5.733,2467,5.733]],["t/582",[11,1.628,35,1.055,55,2.232,122,2.545,131,0.714,215,3.961,224,1.418,249,3.961,288,3.494,328,4.424,333,2.545,342,3.142,344,4.495,399,2.676,723,3.885,755,3.004,786,3.004,787,3.458,817,3.071,848,3.961,876,4.495,877,4.042,880,4.955,1226,3.731,1302,3.606,1597,3.731,1707,4.832,1810,4.832,1864,3.875,1873,3.875,1886,4.495,1918,4.042,1998,4.042,2161,4.539,2248,4.832,2315,4.832,2329,4.495,2373,3.875,2388,4.495,2392,4.243,2421,4.495,2459,4.495,2460,4.832,2461,7.586,2468,5.343,2469,5.343,2470,5.343]],["t/584",[5,1.722,11,0.964,19,2.534,35,1.379,45,2.023,55,2.077,58,0.566,64,3.471,92,4.991,101,4.107,131,1.079,134,1.771,135,1.37,148,2.448,234,1.751,249,2.682,266,3.251,313,3.158,351,2.227,379,3.251,385,2.448,455,3.251,512,2.924,561,2.261,742,3.471,786,2.795,787,3.328,793,4.495,814,2.581,848,2.682,916,3.355,1056,4.192,1114,3.471,1210,3.761,1312,3.471,1606,3.948,1608,3.605,1650,3.761,1661,3.948,1754,3.948,1779,3.761,1797,2.924,1892,4.182,2027,3.761,2036,6.624,2372,3.948,2471,4.971,2472,4.971,2473,4.971,2474,4.971,2475,4.971,2476,4.971,2477,4.971,2478,4.971,2479,4.971,2480,4.971,2481,4.971]],["t/586",[0,0.714,11,0.946,14,2.572,24,2.487,34,3.099,39,2.252,47,2.252,58,0.909,122,2.324,214,2.743,229,3.292,249,2.632,325,1.96,360,1.985,367,2.869,390,3.538,391,3.69,399,2.444,442,2.252,488,6.064,549,2.581,589,3.337,599,6.346,723,3.646,755,2.743,787,2.841,799,3.191,802,3.407,817,2.804,846,4.412,927,2.324,973,4.104,1117,4.998,1210,3.69,1322,3.538,1332,3.538,1390,3.191,1404,3.69,1456,3.538,1591,4.104,1700,3.69,1722,4.412,1729,3.874,1873,4.998,1979,5.473,2108,4.412,2266,6.232,2383,3.874,2459,5.797,2482,4.879,2483,4.879,2484,4.879,2485,4.879,2486,4.412,2487,4.879,2488,4.879,2489,4.412,2490,4.879]],["t/588",[11,1.302,19,4.354,131,0.897,150,3.148,265,4.264,491,4.045,548,4.868,787,4.208,796,4.688,803,5.331,848,3.621,852,3.774,864,4.688,1112,6.07,1226,4.688,1251,4.868,1312,4.688,1651,5.331,1724,4.688,1797,3.948,2144,6.07,2173,5.078,2417,6.07,2491,6.713,2492,5.647]],["t/590",[50,5.89,58,1.201,84,3.227,297,3.986,316,2.296,354,2.706,422,2.296,549,3.101,591,5.3,624,3.447,665,3.227,860,3.043,863,5.438,928,3.369,980,4.654,1285,4.654,1394,4.931,1951,5.3,1952,5.3,2493,5.862,2494,5.862,2495,4.931,2496,7.818,2497,5.3]],["t/592",[50,3.848,58,0.727,119,6.406,152,2.948,172,5.527,863,3.255,872,3.848,1418,4.63,1536,4.83,1541,4.459,1953,4.176,1954,8.774,1955,8.295,1956,5.774,1957,6.957,1958,4.83,1959,5.774,1960,5.774,1961,5.774,1962,5.774,1963,5.774,1964,5.774,1965,5.774,1966,5.071,1967,5.774,1968,4.63]],["t/594",[13,1.758,19,1.756,21,1.591,58,0.741,74,3.72,89,1.756,170,0.949,178,1.726,195,3.595,214,1.937,234,1.214,242,2.898,244,2.188,265,3.384,280,2.498,297,3.32,313,2.188,325,1.384,354,1.591,422,2.87,503,2.736,508,2.898,549,2.818,561,2.422,584,2.498,595,2.188,662,3.206,663,2.715,683,2.498,736,3.115,770,2.026,802,2.406,825,2.736,860,1.789,863,4.721,959,2.188,999,2.932,1035,2.188,1116,2.606,1176,2.406,1180,3.115,1233,2.736,1276,2.736,1354,2.898,1394,2.898,1398,2.498,1441,2.736,1541,3.72,1542,2.498,1546,2.736,1606,2.736,1612,2.076,1643,2.736,1737,3.115,1744,2.736,1768,2.898,1841,2.898,1958,4.926,1969,4.481,1974,2.606,1978,3.115,2007,3.115,2055,2.606,2069,2.736,2130,3.115,2357,2.898,2383,4.23,2393,2.606,2492,2.898,2498,5.478,2499,4.817,2500,5.327,2501,5.889,2502,5.327,2503,3.445,2504,3.445,2505,3.445,2506,3.445,2507,3.445,2508,4.817,2509,3.445,2510,3.115,2511,3.445,2512,4.23,2513,2.736,2514,3.445,2515,3.115,2516,6.164,2517,2.898,2518,3.445,2519,3.445,2520,3.445,2521,3.445,2522,5.327,2523,5.327,2524,3.445]],["t/596",[17,2.009,19,1.973,43,3.566,55,1.616,58,0.44,69,2.13,84,2.13,89,2.967,100,5.263,117,3.089,155,1.874,160,2.009,178,3.504,190,1.786,265,2.458,297,2.967,310,2.13,316,1.515,354,3.229,382,2.927,388,1.843,418,1.786,549,3.701,552,3.255,561,1.76,585,3.806,662,3.444,683,2.806,689,3.073,732,2.611,825,4.621,860,2.009,863,4.253,902,2.531,917,2.967,927,1.843,933,2.331,952,5.072,959,2.458,1087,3.927,1150,2.806,1233,4.621,1643,4.621,1683,3.073,1744,4.621,1783,4.402,1861,5.263,1862,3.499,1893,3.255,1895,3.499,2069,3.073,2129,5.292,2303,3.073,2393,4.402,2451,3.255,2498,3.255,2499,3.499,2510,3.499,2516,4.896,2525,8.343,2526,3.869,2527,3.869,2528,3.869,2529,3.869,2530,5.82,2531,3.869,2532,5.263,2533,3.869,2534,3.869,2535,3.869,2536,3.869,2537,3.869,2538,3.869,2539,3.869,2540,3.869,2541,3.869]],["t/598",[14,2.326,45,2.536,50,3.756,58,0.709,134,2.221,144,3.505,172,3.756,213,3.756,233,3.666,260,2.639,330,3.298,354,2.878,422,3.189,561,2.835,663,3.178,863,4.151,1206,4.52,1357,3.666,1441,4.95,1511,4.353,1541,4.353,1620,7.363,1843,4.207,1994,5.637,2013,5.244,2014,5.244,2129,4.715,2542,6.234,2543,8.142,2544,5.637,2545,6.234,2546,8.142,2547,6.234,2548,6.234]],["t/600",[9,2.111,42,2.111,50,2.921,58,0.906,89,3.498,170,1.336,297,3.498,354,2.238,422,2.687,448,2.616,554,4.488,561,4.315,830,2.997,860,2.517,863,5.349,939,3.516,1035,4.359,1223,6.84,1466,4.079,1643,3.85,1706,4.384,1777,4.384,1792,6.629,1974,3.668,2005,4.079,2055,3.668,2303,3.85,2383,3.85,2451,4.079,2495,4.079,2498,4.079,2549,4.849,2550,6.862,2551,4.849,2552,4.384]],["t/602",[13,1.812,50,3.31,58,0.851,68,4.967,198,1.652,234,2.636,242,4.62,244,3.489,265,3.489,385,2.704,422,2.151,543,4.967,559,3.395,561,3.403,702,3.31,770,3.23,802,3.836,863,4.659,1312,3.836,1357,3.23,1451,3.157,1779,4.155,1896,4.362,1919,7.159,1946,4.62,1958,4.155,1974,4.155,1979,4.362,2091,4.362,2289,4.967,2486,4.967,2512,4.362,2513,4.362,2552,4.967,2553,4.62,2554,5.493,2555,5.493,2556,5.493,2557,5.493,2558,5.493,2559,5.493,2560,6.767,2561,4.62,2562,5.493,2563,5.493,2564,5.493,2565,5.493]],["t/604",[19,3.607,41,5.352,50,4.263,58,1.005,234,2.493,265,4.495,354,4.076,422,2.771,863,4.906,1601,5.131,2063,6.398,2357,5.952,2513,5.619,2517,5.952,2560,6.398,2561,5.952,2566,7.076,2567,7.076,2568,7.076,2569,7.076]],["t/606",[19,3.64,23,3.348,50,5.35,55,2.983,58,1.01,113,3.457,204,5.177,213,4.302,336,4.536,585,4.67,595,4.536,609,5.177,732,4.818,860,3.707,863,5.153,1388,5.67,1399,5.67,1609,5.177]],["t/608",[19,3.887,50,4.594,58,0.868,195,5.146,335,4.034,863,3.887,1477,6.895,1596,5.146,2495,6.414,2512,7.34,2570,6.895,2571,6.895,2572,6.895,2573,6.895,2574,6.895]],["t/610",[6,1.344,13,0.946,24,1.462,41,3.486,50,2.776,55,1.925,58,0.657,65,1.686,69,1.578,89,1.462,134,1.021,144,1.612,151,2.592,172,2.776,199,5.006,204,3.341,205,1.231,231,1.612,234,1.623,250,4.19,251,2.002,265,1.821,305,2.276,319,2.079,328,2.776,335,1.517,354,2.127,360,1.166,361,1.151,377,2.438,385,2.269,411,1.198,422,1.123,448,1.547,517,1.578,558,2.169,559,1.772,561,2.095,563,1.547,587,2.412,592,2.412,602,2.276,608,1.727,624,1.686,732,3.11,737,2.412,776,2.412,863,3.374,912,2.592,999,2.537,1176,4.035,1416,2.002,1472,2.412,1492,1.875,1545,2.592,1581,2.276,1601,3.341,1605,2.776,1695,4.167,1732,2.276,1745,2.276,1752,2.592,1758,2.592,1759,2.079,1792,1.875,1831,1.935,1872,4.167,1917,2.169,1953,1.875,1957,2.412,1966,2.276,1983,2.592,1986,2.592,2005,2.412,2039,2.276,2041,2.276,2091,2.276,2093,2.169,2234,2.592,2240,2.412,2380,2.592,2489,2.592,2497,2.592,2512,2.276,2513,5.757,2515,2.592,2516,2.412,2517,2.412,2544,4.167,2553,2.412,2561,2.412,2570,5.224,2571,7.897,2572,4.167,2573,8.691,2575,2.867,2576,2.867,2577,4.608,2578,2.867,2579,5.224,2580,2.867,2581,2.867,2582,2.867,2583,2.867,2584,2.867,2585,2.867,2586,2.867,2587,2.867,2588,2.867,2589,2.867,2590,2.867,2591,2.867,2592,2.867,2593,2.592,2594,2.867,2595,2.867,2596,2.867,2597,2.867,2598,2.867,2599,2.867,2600,2.867,2601,2.867,2602,2.867,2603,2.867,2604,2.867,2605,2.867]],["t/612",[26,3.735,50,5.827,58,1.1,144,2.644,156,2.703,172,2.834,204,3.411,209,2.834,213,2.834,234,1.657,293,3.956,307,3.558,335,2.488,336,4.266,418,2.171,498,2.908,604,3.956,624,2.766,737,3.956,744,2.766,863,5.13,1101,3.735,1176,3.284,1204,3.411,1357,2.766,1416,3.284,1485,3.558,1596,3.174,1605,4.046,1629,3.956,1731,3.956,1843,3.174,1998,3.558,2010,4.253,2011,3.956,2012,4.253,2013,3.956,2014,3.956,2015,4.253,2022,3.956,2098,4.253,2240,3.956,2372,5.332,2501,4.253,2508,4.253,2553,3.956,2574,4.253,2579,4.253,2606,6.716,2607,4.704,2608,4.704,2609,4.704,2610,4.704,2611,4.704,2612,4.704,2613,4.704]],["t/614",[0,1.503,6,2.97,13,2.09,31,3.858,76,3.119,146,3.229,178,4.121,205,2.719,250,4.593,387,5.728,415,5.03,590,5.976,626,5.728,683,5.966,928,3.64,1114,4.423,1161,5.728,1209,4.423,1233,5.03,1683,6.533,1712,5.328,2243,5.728,2434,5.328,2614,6.334,2615,5.328,2616,5.728]],["t/616",[0,1.144,5,1.927,6,2.748,7,1.297,39,3.609,54,3.723,55,2.449,76,3.849,146,2.988,156,3.369,170,2.155,178,2.936,179,2.019,265,3.723,389,5.669,418,2.706,448,3.162,475,4.093,538,2.213,558,4.434,561,2.665,567,3.532,590,5.113,598,3.833,669,3.956,892,4.654,910,4.25,943,5.3,959,3.723,1057,4.654,1090,4.931,1487,3.723,1573,4.931,1650,5.914,1759,4.25,1979,4.654,2617,5.3,2618,5.3,2619,4.931]],["t/618",[0,1.496,37,4.489,44,5.928,55,2.103,58,0.573,59,2.479,141,3.592,156,2.894,170,1.388,178,4.072,260,2.984,351,3.642,385,2.479,389,3.651,399,2.522,418,2.325,448,2.716,490,3.198,567,3.034,590,5.316,592,5.928,801,3.198,915,4.235,959,3.198,1004,3.998,1572,3.809,1588,4.553,1602,3.516,1654,3.651,1757,3.998,2129,3.809,2393,3.809,2434,4.235,2616,4.553,2620,7.047,2621,5.035,2622,5.035,2623,5.035,2624,7.047,2625,5.035,2626,5.035,2627,5.035,2628,5.035,2629,6.372,2630,5.035]],["t/620",[0,1.432,6,2.505,7,1.183,13,1.763,15,2.882,37,4.277,58,0.608,59,2.631,170,2.312,178,4.202,231,3.004,234,1.882,261,6.662,399,2.676,538,2.018,561,2.43,587,4.495,590,6.399,744,3.142,860,2.774,915,7.599,959,3.394,1204,3.875,1492,5.487,1554,4.243,1779,4.042,1783,4.042,2396,4.495,2532,4.832,2618,6.64,2619,4.495,2631,5.343,2632,4.832,2633,6.64,2634,5.343]],["t/622",[0,1.432,14,1.567,42,1.829,49,2.835,58,0.836,59,2.068,99,4.046,106,2.531,122,2.001,140,2.933,141,3.744,144,2.362,146,3.154,156,3.555,168,3.406,170,1.705,178,4.326,191,2.104,231,3.478,235,4.046,261,3.335,265,2.668,295,7.326,302,3.177,306,3.798,331,3.533,343,3.533,351,1.882,393,5.204,396,2.835,398,2.933,584,3.046,590,5.908,957,3.177,983,2.668,984,4.54,1004,3.335,1042,3.533,1357,2.47,1411,5.204,1596,2.835,1628,3.177,1759,4.486,1783,3.177,1891,3.798,2075,3.798,2492,3.533,2615,3.533,2629,3.798,2633,5.594,2635,6.187,2636,4.201,2637,6.187,2638,6.187,2639,4.201,2640,6.187,2641,4.201,2642,4.201,2643,4.201]],["t/624",[0,1.361,7,1.269,13,1.892,43,2.923,58,0.652,81,3.869,113,4.212,178,4.357,191,2.872,260,2.427,316,2.245,354,2.647,389,4.157,393,4.823,442,2.647,552,4.823,590,5.689,723,3.033,959,3.642,978,3.372,979,5.184,1090,4.823,1172,5.184,1207,4.823,1456,4.157,1600,4.553,1610,5.184,1782,4.553,1909,4.823,1953,3.749,2011,4.823,2113,4.553,2388,4.823,2396,4.823,2615,6.48,2619,4.823,2632,5.184,2644,5.733,2645,5.733,2646,5.733]],["t/626",[0,1.008,7,1.525,21,4.389,65,4.052,118,3.96,144,4.881,146,3.512,308,3.181,597,6.23,723,3.645,1627,5.795,1683,5.471,1729,5.471,1975,6.23,2372,5.471,2593,6.23,2617,6.23,2647,6.89,2648,8.682,2649,6.89,2650,6.89,2651,6.89,2652,6.89]]],"invertedIndex":[["",{"_index":224,"t":{"22":{"position":[[301,1]]},"26":{"position":[[266,1],[305,1],[307,3]]},"30":{"position":[[188,1],[270,1],[272,3]]},"34":{"position":[[212,1]]},"36":{"position":[[710,2],[806,2],[846,1]]},"44":{"position":[[101,1],[119,1],[139,2],[183,1],[232,3],[256,2],[306,2]]},"46":{"position":[[108,1],[128,1],[148,2],[330,1],[361,1],[381,2],[464,1],[505,3]]},"48":{"position":[[93,1],[124,1],[144,2],[189,1],[223,2],[277,1],[308,3],[326,1],[471,1],[517,2],[559,2],[607,3]]},"50":{"position":[[118,2],[181,1]]},"52":{"position":[[137,2],[187,1],[276,3],[280,2],[344,1],[389,2],[461,1],[491,3]]},"54":{"position":[[172,2],[219,1],[235,2],[238,1],[240,2],[320,2],[393,1],[461,2],[464,2],[502,1],[524,1],[526,1],[597,3],[612,1],[614,2],[662,1],[664,2]]},"58":{"position":[[142,1],[160,1],[180,2],[244,1],[293,3]]},"60":{"position":[[154,1],[172,1],[192,2],[240,1],[304,3],[464,2],[524,1],[526,1],[702,2],[705,2],[757,1],[806,3],[867,2],[927,1],[929,1],[1105,2],[1119,1],[1146,2],[1225,2],[1235,1],[1248,1],[1284,1],[1303,1],[1351,1],[1385,1],[1431,4],[1436,2],[1439,3],[1443,2],[1461,1],[1483,2]]},"62":{"position":[[280,1],[298,1],[325,1],[344,1],[374,2],[412,1],[454,2],[506,1],[508,1],[545,2],[548,2],[597,1],[631,1],[648,1],[698,2],[701,2],[704,2],[707,3],[820,1],[830,1],[860,2],[909,1],[943,1],[960,1],[1035,2],[1038,2],[1041,2],[1044,3]]},"64":{"position":[[93,1],[111,1],[138,1],[150,1],[185,1],[213,1],[243,2],[303,1],[305,1],[481,2],[484,2],[536,1],[538,1],[575,2],[578,2],[644,1],[678,1],[718,1],[776,2],[779,2],[782,2],[785,3]]},"66":{"position":[[130,1],[167,1],[198,1],[247,3],[282,2]]},"80":{"position":[[154,2],[192,1],[214,1],[216,1],[287,3],[302,1],[304,2],[352,1],[354,2],[562,1],[570,2],[573,2],[576,1],[582,1],[584,2],[636,1],[652,1],[657,1],[659,2],[749,2],[804,1],[806,1],[808,2],[908,1],[915,1],[930,1],[932,1],[934,2],[937,2]]},"86":{"position":[[169,1],[192,1],[227,2],[281,1],[422,1],[438,1],[483,2],[535,1],[581,2],[628,2],[669,3],[673,2],[745,1],[755,3],[889,1],[905,1],[950,2],[1002,1],[1047,2],[1145,2]]},"88":{"position":[[169,1],[204,1],[239,2],[308,1],[332,2],[417,1],[577,1],[593,1],[634,2],[683,1],[729,2],[776,2],[820,3],[824,2],[896,1],[906,3],[1058,1],[1074,1],[1115,2],[1164,1],[1207,2],[1305,2]]},"90":{"position":[[570,1],[605,1],[647,1],[689,1],[741,1],[779,1],[820,2],[880,2],[940,2],[1026,1],[1071,1],[1104,2],[1177,1],[1232,2],[1279,2],[1349,2],[1403,3],[1407,2],[1473,1],[1524,2],[1571,2],[1644,2],[1698,3],[1702,2],[1876,1],[1886,3],[1986,1],[1996,3],[2235,1],[2256,1],[2298,1],[2314,1],[2359,2],[2413,2],[2497,1],[2521,2],[2576,1],[2671,3],[2675,2],[2750,1],[2766,2],[2769,1],[2771,2],[2836,2],[2916,1],[2966,1],[3000,2],[3060,2],[3186,1],[3237,1],[3244,1],[3299,1],[3301,2]]},"92":{"position":[[460,1],[485,1],[513,2],[578,1],[621,1],[645,2],[707,1],[755,1],[781,2],[852,1],[908,1]]},"104":{"position":[[1158,1]]},"108":{"position":[[178,1]]},"112":{"position":[[587,5],[684,1]]},"141":{"position":[[101,1],[119,1],[139,2],[183,1],[232,3]]},"143":{"position":[[94,1],[125,1],[145,2]]},"145":{"position":[[99,1],[115,1],[135,2],[180,1],[214,2],[256,1]]},"149":{"position":[[458,2],[505,1],[521,2],[524,1],[526,2],[602,2],[605,2]]},"151":{"position":[[358,2],[401,1],[441,2],[514,1],[516,2],[563,1],[615,2],[618,1],[630,1],[641,2],[709,2],[712,2],[715,1]]},"154":{"position":[[158,1],[174,1],[194,2],[247,1],[249,1],[290,2],[293,2],[346,1],[348,1],[388,2],[391,2],[518,1]]},"156":{"position":[[187,1],[194,1],[214,2],[261,1],[263,3],[282,1],[298,2],[301,1],[331,2],[373,2],[428,2],[431,2],[470,2],[601,2],[640,1],[686,1],[726,2],[764,2],[890,1],[908,3]]},"158":{"position":[[150,2],[186,1],[216,1],[272,2],[322,1],[324,1],[338,1],[360,2],[363,2],[366,2],[493,1]]},"162":{"position":[[301,1],[442,1],[447,1],[590,1],[644,1]]},"168":{"position":[[66,1],[117,1]]},"174":{"position":[[192,1],[226,1],[417,1],[513,1]]},"176":{"position":[[540,1],[563,1],[622,1],[949,1],[972,1],[1087,1],[1125,1]]},"178":{"position":[[295,1],[321,1],[378,1],[561,1],[587,1]]},"180":{"position":[[288,1],[311,1],[696,1],[715,1],[733,1]]},"186":{"position":[[244,1],[264,1],[286,2],[335,1],[337,1],[362,2],[426,2],[532,2],[577,1],[688,1],[698,1],[735,1],[737,2],[776,1],[801,1],[803,1],[816,2],[852,2],[915,2],[980,1]]},"188":{"position":[[151,1],[173,1],[196,1],[206,1],[235,1],[266,1],[355,1],[395,1],[441,1],[457,2],[540,1],[546,2],[549,1],[584,2],[587,2],[626,1],[651,1],[653,1],[666,2],[725,1],[775,1],[806,3],[824,1],[855,2],[918,1],[1054,2],[1109,1],[1117,2],[1120,2],[1123,2],[1133,1],[1135,2],[1255,2],[1258,1],[1421,3],[1585,2],[1670,3],[1674,1],[1676,1],[1963,1],[1981,1],[1999,1],[2079,1],[2092,1],[2141,1],[2157,1],[2235,1],[2250,1],[2330,1],[2347,1],[2418,1],[2433,1],[2482,1]]},"190":{"position":[[215,1],[230,1],[267,1],[269,2],[317,1],[324,1],[326,1],[357,3],[361,2],[416,1],[424,2],[427,2],[430,1],[442,2],[465,3],[480,2],[527,1],[560,1],[627,3],[631,2],[694,1],[745,1],[766,1],[768,1],[802,3],[806,2],[844,3],[851,1],[905,1],[912,1],[935,1],[937,2],[940,1]]},"192":{"position":[[201,1],[221,1],[258,1],[260,2],[311,1],[338,1],[340,1],[376,3],[380,2],[424,2],[427,1],[474,2],[477,1],[561,4],[566,2],[588,1]]},"194":{"position":[[230,1],[268,1],[305,1],[307,2],[352,1],[378,1],[380,1],[415,3],[419,2],[470,1],[497,1],[499,1],[535,3],[539,2],[589,2],[592,1],[612,1],[694,2],[697,1],[781,4],[786,2],[823,1]]},"204":{"position":[[105,1],[124,1],[138,1],[187,1],[407,1],[503,1]]},"214":{"position":[[1005,1],[1020,1],[1082,1],[1294,1],[1309,1],[1355,1]]},"216":{"position":[[392,1],[618,1],[702,1],[779,1],[792,1],[819,1],[833,1],[850,1]]},"218":{"position":[[579,1],[606,1],[652,1],[686,1],[744,1],[933,1],[960,1],[1142,1],[1176,1],[1218,1],[1263,1]]},"220":{"position":[[749,1],[763,1],[812,1],[855,1],[910,1],[938,1],[1068,1],[1082,1],[1101,1],[1250,1],[1264,1],[1284,1],[1306,1]]},"222":{"position":[[304,1],[343,1],[535,1],[672,1]]},"226":{"position":[[235,1],[263,1]]},"230":{"position":[[357,1],[472,1]]},"234":{"position":[[400,1]]},"236":{"position":[[396,1]]},"244":{"position":[[45,1],[142,1]]},"246":{"position":[[382,1],[405,1],[520,1],[546,1],[577,1],[702,1],[714,2],[775,1]]},"268":{"position":[[74,1],[151,1],[406,1],[450,1],[459,2],[528,1],[586,2],[843,1]]},"274":{"position":[[79,1],[125,1]]},"278":{"position":[[208,1],[246,1],[267,1],[352,2],[560,1]]},"280":{"position":[[172,1]]},"290":{"position":[[482,1],[484,3],[488,1],[516,1],[518,3],[522,1],[524,2],[630,1],[665,1],[700,1],[705,1]]},"292":{"position":[[773,1],[849,1],[854,1]]},"454":{"position":[[138,1],[156,1],[187,1],[214,2],[310,1],[328,1],[359,1],[386,2],[450,2],[453,1],[495,1]]},"456":{"position":[[14,1],[32,1],[63,1],[100,1],[137,1],[139,3],[156,1],[174,1],[205,1],[246,1],[283,1],[285,3]]},"458":{"position":[[14,1],[32,1],[63,1],[100,1],[165,1],[167,3],[184,1],[202,1],[233,1],[274,1],[339,1],[341,3]]},"460":{"position":[[140,1],[158,1],[189,1],[260,3],[298,1],[316,1],[347,1],[388,1],[437,1],[439,3],[472,1],[490,1],[521,1],[562,1],[623,1],[625,3]]},"462":{"position":[[472,1],[490,1],[521,1],[558,1],[610,1],[612,3],[629,1],[647,1],[678,1],[719,1],[778,1],[780,3]]},"464":{"position":[[107,1]]},"466":{"position":[[579,1],[606,1],[641,1],[693,1],[731,1],[772,1],[886,1],[928,2]]},"472":{"position":[[1029,1],[1041,1],[1649,1],[1653,1],[1720,1],[1726,1]]},"474":{"position":[[559,1],[565,1],[722,1],[737,1],[796,1],[800,1]]},"546":{"position":[[2633,1],[2694,1],[2713,1],[2725,1],[2735,1],[2748,1],[2760,1]]},"561":{"position":[[769,1],[1772,1]]},"569":{"position":[[1046,1],[1053,1]]},"571":{"position":[[200,1]]},"582":{"position":[[588,1]]}}}],["0",{"_index":742,"t":{"100":{"position":[[42,1],[410,1]]},"104":{"position":[[1156,1]]},"188":{"position":[[1973,1]]},"190":{"position":[[469,2],[848,2]]},"456":{"position":[[124,3],[270,3]]},"460":{"position":[[412,3]]},"584":{"position":[[674,1]]}}}],["0,1,2,3,4,5,6,7",{"_index":1807,"t":{"454":{"position":[[477,17]]},"466":{"position":[[910,17]]}}}],["0.0.0.0",{"_index":494,"t":{"60":{"position":[[399,8]]},"174":{"position":[[357,8]]},"180":{"position":[[531,9]]}}}],["0.012",{"_index":2421,"t":{"571":{"position":[[1019,5]]},"578":{"position":[[97,5]]},"582":{"position":[[102,5]]}}}],["0.012*5",{"_index":2470,"t":{"582":{"position":[[580,7]]}}}],["0.06",{"_index":2460,"t":{"578":{"position":[[184,4]]},"582":{"position":[[590,4]]}}}],["0.1",{"_index":1794,"t":{"442":{"position":[[274,3]]}}}],["0.15",{"_index":2422,"t":{"571":{"position":[[1060,4]]},"573":{"position":[[1418,4]]},"578":{"position":[[34,4]]},"580":{"position":[[178,4]]}}}],["0.5",{"_index":1901,"t":{"472":{"position":[[1722,3]]}}}],["0.5gb",{"_index":1201,"t":{"196":{"position":[[440,5]]},"240":{"position":[[240,5]]},"256":{"position":[[295,5]]},"270":{"position":[[591,5]]}}}],["0.6",{"_index":1405,"t":{"256":{"position":[[109,5]]}}}],["000",{"_index":1169,"t":{"188":{"position":[[2193,5]]},"474":{"position":[[573,3]]}}}],["007bff",{"_index":1177,"t":{"188":{"position":[[2453,8]]}}}],["01.ac",{"_index":1262,"t":{"214":{"position":[[1770,5]]},"222":{"position":[[561,5]]},"224":{"position":[[489,5]]}}}],["01.he",{"_index":2323,"t":{"561":{"position":[[951,5],[2023,5]]},"563":{"position":[[1081,5]]}}}],["06",{"_index":1335,"t":{"230":{"position":[[93,2]]},"234":{"position":[[102,2]]},"236":{"position":[[105,2]]}}}],["1",{"_index":442,"t":{"50":{"position":[[253,2]]},"118":{"position":[[585,1]]},"156":{"position":[[669,3]]},"174":{"position":[[223,2]]},"178":{"position":[[375,2]]},"188":{"position":[[990,2],[2105,2],[2360,2]]},"284":{"position":[[266,2]]},"290":{"position":[[667,2]]},"426":{"position":[[197,2]]},"454":{"position":[[466,2]]},"456":{"position":[[113,2],[128,2],[259,2],[274,2]]},"458":{"position":[[113,2],[287,2]]},"460":{"position":[[401,2],[416,2],[575,2]]},"462":{"position":[[571,2],[606,3],[732,2]]},"466":{"position":[[899,2]]},"468":{"position":[[330,1]]},"472":{"position":[[272,1],[499,1],[777,1],[2275,1],[2368,1],[2433,1],[2453,1],[2619,1],[2825,1]]},"476":{"position":[[207,1],[391,1]]},"544":{"position":[[33,3],[476,3]]},"557":{"position":[[36,1]]},"559":{"position":[[230,2]]},"561":{"position":[[999,1],[1013,1],[1031,1],[1060,1],[1352,1],[1381,1],[1527,1],[1556,1],[2071,1],[2084,1],[2102,1],[2229,1],[2294,1],[2441,1],[2634,1],[2717,1],[2910,1]]},"569":{"position":[[470,2],[1306,1]]},"573":{"position":[[859,1],[1366,1],[1951,1]]},"586":{"position":[[577,1]]},"624":{"position":[[462,2]]}}}],["1%2fproto&pagesize=50&ascending=tru",{"_index":1444,"t":{"268":{"position":[[805,37]]}}}],["1.0.0.1",{"_index":781,"t":{"102":{"position":[[134,10]]},"116":{"position":[[197,10]]},"176":{"position":[[789,8]]}}}],["1.000",{"_index":1899,"t":{"472":{"position":[[1598,5]]}}}],["1.1.1.1",{"_index":780,"t":{"102":{"position":[[122,11]]},"116":{"position":[[185,11]]},"176":{"position":[[777,7]]}}}],["1.2",{"_index":1938,"t":{"474":{"position":[[802,3]]}}}],["1.4",{"_index":2283,"t":{"557":{"position":[[289,3]]}}}],["1/proto",{"_index":1440,"t":{"268":{"position":[[577,8]]}}}],["10",{"_index":872,"t":{"118":{"position":[[398,2]]},"472":{"position":[[288,2],[1090,2],[2463,2]]},"480":{"position":[[305,2]]},"540":{"position":[[286,2]]},"546":{"position":[[2569,2],[2783,2]]},"557":{"position":[[1220,3]]},"559":{"position":[[424,2]]},"561":{"position":[[1332,2],[2421,2],[2568,2]]},"563":{"position":[[1469,2],[1576,2],[1847,2]]},"571":{"position":[[801,2]]},"576":{"position":[[409,2]]},"592":{"position":[[246,2]]}}}],["10,000",{"_index":1507,"t":{"292":{"position":[[747,6],[775,7],[842,6]]}}}],["10.000",{"_index":1882,"t":{"472":{"position":[[720,6],[1009,6],[1666,6]]},"474":{"position":[[412,6],[552,6],[1046,6]]},"576":{"position":[[481,6]]}}}],["100",{"_index":1312,"t":{"220":{"position":[[1227,4]]},"474":{"position":[[878,4]]},"563":{"position":[[1817,3]]},"576":{"position":[[324,3]]},"584":{"position":[[362,3]]},"588":{"position":[[21,3]]},"602":{"position":[[528,3]]}}}],["1000",{"_index":850,"t":{"108":{"position":[[316,4],[413,4]]},"472":{"position":[[1644,4]]},"565":{"position":[[32,4]]},"569":{"position":[[1079,4]]},"573":{"position":[[1725,4]]}}}],["10000",{"_index":1900,"t":{"472":{"position":[[1714,5]]},"573":{"position":[[1758,5]]}}}],["100k/day",{"_index":2490,"t":{"586":{"position":[[677,9]]}}}],["100kb",{"_index":2424,"t":{"573":{"position":[[188,6],[1609,5]]}}}],["100mbit",{"_index":2438,"t":{"573":{"position":[[833,8]]}}}],["100mpb",{"_index":2437,"t":{"573":{"position":[[819,7]]}}}],["100msg/day",{"_index":1948,"t":{"476":{"position":[[393,12]]}}}],["100vh",{"_index":1156,"t":{"188":{"position":[[2048,6]]}}}],["107",{"_index":2201,"t":{"544":{"position":[[559,3]]}}}],["108",{"_index":2224,"t":{"544":{"position":[[671,3]]}}}],["10k",{"_index":2459,"t":{"578":{"position":[[130,3]]},"582":{"position":[[455,3]]},"586":{"position":[[340,3],[400,3]]}}}],["10kb",{"_index":2328,"t":{"561":{"position":[[1089,4],[1410,4],[1585,4],[2323,4],[2663,4],[2939,4]]},"565":{"position":[[330,4]]},"573":{"position":[[182,5],[1071,4],[1258,4]]},"580":{"position":[[139,5]]}}}],["10mbp",{"_index":2259,"t":{"546":{"position":[[2622,6]]}}}],["10msg/sec",{"_index":2327,"t":{"561":{"position":[[1078,10],[1399,10],[1574,10],[2312,10],[2652,10],[2928,10]]}}}],["10px",{"_index":1165,"t":{"188":{"position":[[2135,5],[2208,5],[2229,5],[2276,5],[2392,5],[2412,5]]}}}],["11",{"_index":2261,"t":{"546":{"position":[[2722,2]]},"563":{"position":[[410,2]]}}}],["1100",{"_index":2345,"t":{"561":{"position":[[3776,4]]}}}],["119",{"_index":2215,"t":{"544":{"position":[[621,3]]}}}],["11m",{"_index":2335,"t":{"561":{"position":[[2392,5]]}}}],["12",{"_index":2194,"t":{"544":{"position":[[369,2],[691,2]]},"546":{"position":[[2745,2]]},"573":{"position":[[2049,3]]}}}],["123.123.123.123",{"_index":303,"t":{"30":{"position":[[223,18]]}}}],["1234",{"_index":301,"t":{"30":{"position":[[211,4]]}}}],["127.0.0.1",{"_index":247,"t":{"24":{"position":[[529,10]]},"112":{"position":[[96,9]]},"114":{"position":[[113,9]]},"220":{"position":[[315,10]]},"266":{"position":[[153,9]]}}}],["127.0.0.1:8080",{"_index":862,"t":{"112":{"position":[[642,15]]}}}],["13",{"_index":2210,"t":{"544":{"position":[[599,2]]}}}],["137",{"_index":2202,"t":{"544":{"position":[[563,3]]}}}],["13:18:07.575+00:00",{"_index":2350,"t":{"563":{"position":[[416,18]]}}}],["14",{"_index":2493,"t":{"590":{"position":[[27,2]]}}}],["14400",{"_index":1321,"t":{"222":{"position":[[760,5]]}}}],["1459",{"_index":1637,"t":{"332":{"position":[[33,5]]}}}],["15",{"_index":1336,"t":{"230":{"position":[[96,2]]},"234":{"position":[[105,2]]},"236":{"position":[[108,2]]},"544":{"position":[[648,2],[856,2]]}}}],["150",{"_index":1935,"t":{"474":{"position":[[739,3],[781,3]]}}}],["150kb",{"_index":2464,"t":{"580":{"position":[[151,6]]}}}],["15mbp",{"_index":2254,"t":{"546":{"position":[[2152,7]]}}}],["16",{"_index":1509,"t":{"292":{"position":[[851,2]]}}}],["16:09:54.448+01:00",{"_index":1337,"t":{"230":{"position":[[99,18]]},"234":{"position":[[108,18]]},"236":{"position":[[111,18]]}}}],["17",{"_index":2229,"t":{"544":{"position":[[702,2]]},"546":{"position":[[2364,3],[2457,3]]}}}],["1727795042",{"_index":2263,"t":{"546":{"position":[[2890,10]]}}}],["18",{"_index":2260,"t":{"546":{"position":[[2710,2],[2732,2]]}}}],["1:1",{"_index":433,"t":{"48":{"position":[[789,3]]}}}],["1kb",{"_index":2462,"t":{"580":{"position":[[134,4]]}}}],["1lqrcbccb4np93f9",{"_index":1348,"t":{"234":{"position":[[245,16],[478,16]]}}}],["1msg/10",{"_index":2479,"t":{"584":{"position":[[530,7]]}}}],["1px",{"_index":1158,"t":{"188":{"position":[[2063,3]]}}}],["2",{"_index":97,"t":{"6":{"position":[[830,1],[914,1]]},"50":{"position":[[301,2]]},"118":{"position":[[490,1]]},"174":{"position":[[257,2]]},"178":{"position":[[432,2]]},"188":{"position":[[1039,2]]},"246":{"position":[[723,4]]},"290":{"position":[[702,2]]},"310":{"position":[[400,1]]},"456":{"position":[[131,2],[277,2]]},"460":{"position":[[419,2]]},"474":{"position":[[567,1]]},"476":{"position":[[411,1]]},"544":{"position":[[279,3],[714,3]]},"561":{"position":[[1318,1],[1744,2],[2407,1]]},"563":{"position":[[1894,2]]},"571":{"position":[[614,1]]}}}],["20",{"_index":1925,"t":{"474":{"position":[[116,2]]}}}],["200msg/day",{"_index":1949,"t":{"476":{"position":[[413,12]]}}}],["2023",{"_index":1334,"t":{"230":{"position":[[88,4]]},"234":{"position":[[97,4]]},"236":{"position":[[100,4]]},"514":{"position":[[127,5]]},"544":{"position":[[376,6]]},"561":{"position":[[3834,6]]},"563":{"position":[[405,4]]}}}],["2024",{"_index":1952,"t":{"478":{"position":[[38,4]]},"590":{"position":[[39,4]]}}}],["21",{"_index":2207,"t":{"544":{"position":[[590,2]]}}}],["21600",{"_index":1256,"t":{"214":{"position":[[1251,5]]},"222":{"position":[[492,5]]}}}],["22",{"_index":2230,"t":{"544":{"position":[[705,2]]}}}],["23",{"_index":2218,"t":{"544":{"position":[[639,2]]}}}],["232",{"_index":2295,"t":{"557":{"position":[[1134,3]]}}}],["24*3600/1=86400",{"_index":1916,"t":{"472":{"position":[[2666,15]]}}}],["24*3600/240=360",{"_index":1922,"t":{"472":{"position":[[3070,15]]}}}],["240",{"_index":1921,"t":{"472":{"position":[[3021,3],[3270,3]]}}}],["25",{"_index":2332,"t":{"561":{"position":[[1507,2],[2697,2],[2844,2]]}}}],["250",{"_index":1927,"t":{"474":{"position":[[296,3],[472,3],[561,3],[1082,3]]}}}],["250m",{"_index":2341,"t":{"561":{"position":[[3544,5]]}}}],["256",{"_index":2408,"t":{"571":{"position":[[362,3]]}}}],["25mbp",{"_index":1865,"t":{"470":{"position":[[1500,7]]}}}],["26",{"_index":2228,"t":{"544":{"position":[[694,2]]},"546":{"position":[[2298,3]]}}}],["263",{"_index":2445,"t":{"573":{"position":[[1314,3]]}}}],["27",{"_index":2225,"t":{"544":{"position":[[675,2]]},"563":{"position":[[413,2]]}}}],["286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8",{"_index":1273,"t":{"216":{"position":[[394,64],[852,64],[940,64]]}}}],["2gb",{"_index":991,"t":{"160":{"position":[[257,3]]},"196":{"position":[[368,3]]},"240":{"position":[[168,3]]},"256":{"position":[[223,3]]},"270":{"position":[[519,3]]}}}],["2mbyte",{"_index":2484,"t":{"586":{"position":[[358,7]]}}}],["3",{"_index":447,"t":{"50":{"position":[[350,2]]},"62":{"position":[[517,2],[531,2],[542,2]]},"64":{"position":[[547,2],[561,2],[572,2]]},"456":{"position":[[134,2],[280,2]]},"460":{"position":[[422,2]]},"544":{"position":[[389,3],[781,3],[827,1]]},"546":{"position":[[2114,4]]},"561":{"position":[[1493,1],[2683,1]]}}}],["3.85",{"_index":2391,"t":{"569":{"position":[[1048,4]]}}}],["30",{"_index":857,"t":{"112":{"position":[[228,2]]},"220":{"position":[[565,3]]},"474":{"position":[[691,2],[711,2]]},"544":{"position":[[625,2]]},"549":{"position":[[95,2]]},"557":{"position":[[755,2]]}}}],["300",{"_index":844,"t":{"108":{"position":[[174,3]]},"557":{"position":[[775,3]]}}}],["3000",{"_index":2477,"t":{"584":{"position":[[482,4]]}}}],["32",{"_index":1067,"t":{"176":{"position":[[331,2]]},"216":{"position":[[351,2],[389,2],[530,2],[712,2],[802,3],[816,2]]}}}],["33",{"_index":2211,"t":{"544":{"position":[[602,2],[697,2]]}}}],["37",{"_index":2221,"t":{"544":{"position":[[651,2]]}}}],["38",{"_index":2203,"t":{"544":{"position":[[567,2],[772,2]]},"546":{"position":[[2757,2]]}}}],["38.8",{"_index":2294,"t":{"557":{"position":[[1088,7]]}}}],["384",{"_index":2455,"t":{"576":{"position":[[655,3]]}}}],["4",{"_index":1322,"t":{"222":{"position":[[774,2]]},"288":{"position":[[434,1]]},"460":{"position":[[425,2]]},"569":{"position":[[1055,2],[1146,1],[1874,1]]},"573":{"position":[[2044,1]]},"586":{"position":[[418,3]]}}}],["4.0",{"_index":2543,"t":{"598":{"position":[[83,3],[116,5]]}}}],["400",{"_index":1932,"t":{"474":{"position":[[632,3]]}}}],["44",{"_index":2212,"t":{"544":{"position":[[605,2],[665,2]]}}}],["479c95bbf74222417abf76c7f9c480a6790e454374dc4f59bbb15ca183ce1abd",{"_index":2362,"t":{"563":{"position":[[741,65]]}}}],["48",{"_index":1246,"t":{"214":{"position":[[694,3]]}}}],["49",{"_index":2213,"t":{"544":{"position":[[615,2]]}}}],["4k",{"_index":2253,"t":{"546":{"position":[[2127,2],[2613,3]]}}}],["4k/uhd",{"_index":2233,"t":{"544":{"position":[[849,6]]}}}],["4px",{"_index":1175,"t":{"188":{"position":[[2378,4],[2477,4]]}}}],["5",{"_index":845,"t":{"108":{"position":[[180,1]]},"460":{"position":[[428,2]]},"472":{"position":[[1476,1],[1621,1],[1651,1],[1655,1],[1728,1]]},"474":{"position":[[500,1],[724,1]]},"544":{"position":[[842,1]]}}}],["50",{"_index":769,"t":{"100":{"position":[[726,2]]},"470":{"position":[[1217,2],[1420,2]]},"472":{"position":[[814,2],[1031,2]]},"544":{"position":[[654,2],[678,2]]},"563":{"position":[[1440,2],[1547,2]]}}}],["500",{"_index":1888,"t":{"472":{"position":[[1043,3],[1690,3]]},"474":{"position":[[211,4],[569,3]]}}}],["5000",{"_index":2487,"t":{"586":{"position":[[505,4]]}}}],["500kb",{"_index":2377,"t":{"565":{"position":[[574,6]]},"573":{"position":[[195,6],[1619,6]]}}}],["508",{"_index":2375,"t":{"565":{"position":[[379,3]]},"573":{"position":[[1109,3]]}}}],["50kb",{"_index":2463,"t":{"580":{"position":[[145,5]]}}}],["520",{"_index":2488,"t":{"586":{"position":[[549,3]]}}}],["53",{"_index":2219,"t":{"544":{"position":[[642,2]]}}}],["54",{"_index":2208,"t":{"544":{"position":[[593,2]]}}}],["56",{"_index":2216,"t":{"544":{"position":[[628,2]]}}}],["58",{"_index":2200,"t":{"544":{"position":[[556,2]]}}}],["6",{"_index":1257,"t":{"214":{"position":[[1265,2]]},"222":{"position":[[506,2]]},"312":{"position":[[403,1]]},"460":{"position":[[431,2]]},"573":{"position":[[2029,1]]}}}],["60",{"_index":2589,"t":{"610":{"position":[[1068,4]]}}}],["60000",{"_index":753,"t":{"100":{"position":[[373,5]]},"206":{"position":[[215,8]]}}}],["60000:60000",{"_index":1363,"t":{"246":{"position":[[325,11]]}}}],["60002",{"_index":496,"t":{"60":{"position":[[424,5]]},"174":{"position":[[382,5]]}}}],["60003",{"_index":497,"t":{"60":{"position":[[434,5]]},"174":{"position":[[392,6]]}}}],["625",{"_index":1510,"t":{"292":{"position":[[856,4]]}}}],["627",{"_index":2443,"t":{"573":{"position":[[1228,4]]}}}],["63",{"_index":2226,"t":{"544":{"position":[[681,2]]}}}],["6300",{"_index":1965,"t":{"480":{"position":[[308,4]]},"592":{"position":[[249,4]]}}}],["64",{"_index":747,"t":{"100":{"position":[[239,2]]},"216":{"position":[[262,3]]},"374":{"position":[[26,3]]}}}],["65000",{"_index":1217,"t":{"204":{"position":[[126,5]]}}}],["68",{"_index":2204,"t":{"544":{"position":[[570,2]]}}}],["7",{"_index":976,"t":{"158":{"position":[[268,3]]},"460":{"position":[[434,2]]},"544":{"position":[[700,1]]},"561":{"position":[[3831,2]]}}}],["71",{"_index":2220,"t":{"544":{"position":[[645,2]]}}}],["72",{"_index":2209,"t":{"544":{"position":[[596,2],[631,2]]}}}],["7640",{"_index":2282,"t":{"557":{"position":[[250,5]]}}}],["8",{"_index":1283,"t":{"216":{"position":[[789,2]]},"438":{"position":[[339,1]]},"474":{"position":[[798,1]]}}}],["8.8.4.4",{"_index":1073,"t":{"176":{"position":[[922,8]]}}}],["8.8.8.8",{"_index":1072,"t":{"176":{"position":[[910,7]]}}}],["8000",{"_index":885,"t":{"122":{"position":[[99,4]]},"218":{"position":[[346,5]]}}}],["8001",{"_index":1292,"t":{"218":{"position":[[909,5]]}}}],["8002",{"_index":1296,"t":{"218":{"position":[[1118,5]]}}}],["8008",{"_index":865,"t":{"114":{"position":[[183,4]]}}}],["83",{"_index":2231,"t":{"544":{"position":[[769,2]]}}}],["84",{"_index":2223,"t":{"544":{"position":[[668,2]]}}}],["85",{"_index":2205,"t":{"544":{"position":[[573,2]]}}}],["86",{"_index":1931,"t":{"474":{"position":[[629,2]]}}}],["8645",{"_index":855,"t":{"112":{"position":[[158,4]]},"220":{"position":[[431,5]]},"268":{"position":[[44,4]]}}}],["8997",{"_index":2291,"t":{"557":{"position":[[809,4]]}}}],["9",{"_index":1950,"t":{"478":{"position":[[27,1]]},"546":{"position":[[2692,1]]}}}],["9.6",{"_index":1940,"t":{"474":{"position":[[817,4]]}}}],["9000",{"_index":868,"t":{"118":{"position":[[117,4]]},"220":{"position":[[1044,5]]},"557":{"position":[[852,5]]}}}],["9000:9000/udp",{"_index":1364,"t":{"246":{"position":[[340,13]]}}}],["93",{"_index":2214,"t":{"544":{"position":[[618,2]]}}}],["95",{"_index":1906,"t":{"472":{"position":[[2141,2]]},"573":{"position":[[1196,3]]}}}],["95%/99",{"_index":1944,"t":{"474":{"position":[[1113,7]]}}}],["99",{"_index":1907,"t":{"472":{"position":[[2147,3]]}}}],["9990",{"_index":2419,"t":{"571":{"position":[[841,4]]}}}],["_nwaku",{"_index":2305,"t":{"559":{"position":[[95,6],[156,6],[258,6],[340,6]]}}}],["abil",{"_index":1641,"t":{"332":{"position":[[544,7]]}}}],["abnorm",{"_index":2431,"t":{"573":{"position":[[437,8]]}}}],["abov",{"_index":1150,"t":{"188":{"position":[[1714,6]]},"250":{"position":[[876,6]]},"444":{"position":[[162,6]]},"546":{"position":[[9,5]]},"573":{"position":[[126,5]]},"596":{"position":[[1073,6]]}}}],["absent",{"_index":2146,"t":{"532":{"position":[[256,6]]}}}],["absolut",{"_index":658,"t":{"90":{"position":[[156,8]]}}}],["abus",{"_index":2138,"t":{"528":{"position":[[1006,7]]}}}],["accept",{"_index":934,"t":{"149":{"position":[[184,7]]},"151":{"position":[[155,7]]},"268":{"position":[[854,8]]},"278":{"position":[[219,8]]},"280":{"position":[[183,8]]},"466":{"position":[[294,7]]},"573":{"position":[[1179,11]]},"576":{"position":[[765,6]]}}}],["access",{"_index":297,"t":{"28":{"position":[[304,11]]},"30":{"position":[[82,11]]},"86":{"position":[[1408,6]]},"112":{"position":[[300,6]]},"160":{"position":[[81,6]]},"220":{"position":[[600,6],[681,6]]},"246":{"position":[[800,10]]},"262":{"position":[[27,6]]},"266":{"position":[[104,6]]},"320":{"position":[[177,9]]},"360":{"position":[[186,9]]},"366":{"position":[[84,6]]},"414":{"position":[[28,7],[111,13]]},"438":{"position":[[64,7],[139,10]]},"442":{"position":[[94,6]]},"544":{"position":[[359,9]]},"590":{"position":[[149,6],[519,6]]},"594":{"position":[[773,11],[845,6],[1007,10]]},"596":{"position":[[451,10],[1163,10]]},"600":{"position":[[563,8],[600,6]]}}}],["accident",{"_index":1415,"t":{"260":{"position":[[399,12]]}}}],["accommod",{"_index":1603,"t":{"316":{"position":[[338,11]]},"396":{"position":[[201,11]]}}}],["accompani",{"_index":1688,"t":{"342":{"position":[[1408,11]]}}}],["accord",{"_index":1695,"t":{"344":{"position":[[303,9]]},"610":{"position":[[1290,10],[1937,10]]}}}],["accordingli",{"_index":1826,"t":{"466":{"position":[[552,12]]}}}],["account",{"_index":914,"t":{"135":{"position":[[58,7]]},"340":{"position":[[429,10],[495,10]]},"524":{"position":[[269,8]]},"546":{"position":[[858,8],[2206,8]]},"571":{"position":[[896,7]]},"573":{"position":[[2246,8]]}}}],["accur",{"_index":2451,"t":{"573":{"position":[[2378,9]]},"596":{"position":[[872,9]]},"600":{"position":[[399,9]]}}}],["accuraci",{"_index":2510,"t":{"594":{"position":[[421,9]]},"596":{"position":[[941,9]]}}}],["achiev",{"_index":1580,"t":{"312":{"position":[[120,7]]},"422":{"position":[[82,7]]},"424":{"position":[[197,8]]},"426":{"position":[[97,8]]},"476":{"position":[[295,9]]}}}],["ack/nack",{"_index":2440,"t":{"573":{"position":[[961,8]]}}}],["acknowledg",{"_index":1615,"t":{"324":{"position":[[138,15],[341,12]]},"368":{"position":[[96,16]]}}}],["acquir",{"_index":2626,"t":{"618":{"position":[[395,7]]}}}],["act",{"_index":2097,"t":{"518":{"position":[[557,4]]},"524":{"position":[[95,4]]},"546":{"position":[[608,6]]},"559":{"position":[[292,6],[374,6]]},"561":{"position":[[122,4]]},"578":{"position":[[260,4]]},"580":{"position":[[371,4]]}}}],["action",{"_index":1745,"t":{"420":{"position":[[216,7]]},"422":{"position":[[62,7]]},"512":{"position":[[799,7]]},"610":{"position":[[2234,6]]}}}],["activ",{"_index":554,"t":{"68":{"position":[[2266,6]]},"78":{"position":[[212,6]]},"80":{"position":[[95,6]]},"312":{"position":[[294,8]]},"422":{"position":[[118,10]]},"490":{"position":[[646,10],[687,10],[780,10]]},"492":{"position":[[209,10]]},"514":{"position":[[278,10]]},"600":{"position":[[524,10],[717,10]]}}}],["actor",{"_index":1748,"t":{"420":{"position":[[340,6]]},"422":{"position":[[47,5],[134,6]]}}}],["actual",{"_index":689,"t":{"90":{"position":[[3026,8]]},"420":{"position":[[333,6]]},"580":{"position":[[362,8]]},"596":{"position":[[695,6]]}}}],["ad",{"_index":400,"t":{"42":{"position":[[246,6]]},"50":{"position":[[421,6]]},"129":{"position":[[119,5]]},"292":{"position":[[274,6]]},"466":{"position":[[47,6],[204,5],[407,5]]}}}],["adapt",{"_index":166,"t":{"12":{"position":[[283,8]]},"182":{"position":[[198,8]]},"567":{"position":[[51,10]]}}}],["add",{"_index":215,"t":{"22":{"position":[[75,3]]},"32":{"position":[[103,3]]},"34":{"position":[[104,3]]},"36":{"position":[[458,4],[607,3]]},"62":{"position":[[125,3]]},"68":{"position":[[62,3]]},"84":{"position":[[172,3]]},"100":{"position":[[412,3]]},"131":{"position":[[150,3]]},"182":{"position":[[103,3]]},"184":{"position":[[445,3]]},"292":{"position":[[455,3]]},"514":{"position":[[216,4]]},"526":{"position":[[0,3],[184,3]]},"569":{"position":[[648,4]]},"578":{"position":[[159,3]]},"582":{"position":[[28,4],[555,3]]}}}],["add(new",{"_index":440,"t":{"50":{"position":[[216,8],[267,8],[315,8]]},"188":{"position":[[953,8],[1004,8]]}}}],["addit",{"_index":504,"t":{"60":{"position":[[1189,10]]},"308":{"position":[[525,10]]},"312":{"position":[[312,10]]},"326":{"position":[[267,10]]},"340":{"position":[[381,8]]},"484":{"position":[[3,8]]},"498":{"position":[[474,8]]},"563":{"position":[[1405,10],[1512,10],[1782,10]]}}}],["addition",{"_index":1556,"t":{"302":{"position":[[256,13]]},"340":{"position":[[576,13]]},"408":{"position":[[201,13]]},"432":{"position":[[91,13]]},"512":{"position":[[221,13]]}}}],["addr",{"_index":775,"t":{"102":{"position":[[35,5],[104,5]]}}}],["address",{"_index":152,"t":{"12":{"position":[[92,7]]},"60":{"position":[[1593,7],[1733,7],[1779,8]]},"100":{"position":[[265,7],[306,7],[497,8]]},"102":{"position":[[299,7]]},"104":{"position":[[626,7],[665,7],[753,7],[761,7]]},"112":{"position":[[88,7],[116,7]]},"114":{"position":[[105,7],[133,7]]},"118":{"position":[[368,7]]},"196":{"position":[[1613,9],[1670,9],[1759,9],[1815,10]]},"212":{"position":[[72,7],[781,7]]},"220":{"position":[[209,7],[239,7],[803,8]]},"228":{"position":[[87,9],[137,9]]},"230":{"position":[[383,7],[494,7]]},"232":{"position":[[28,10]]},"234":{"position":[[415,9]]},"236":{"position":[[411,9],[695,9]]},"270":{"position":[[455,10]]},"278":{"position":[[621,10]]},"328":{"position":[[63,9]]},"334":{"position":[[516,7]]},"374":{"position":[[96,10],[121,9]]},"480":{"position":[[227,7]]},"482":{"position":[[552,8],[623,7],[730,9],[836,7]]},"518":{"position":[[819,8]]},"520":{"position":[[87,7]]},"592":{"position":[[167,7]]}}}],["address=127.0.0.1",{"_index":1311,"t":{"220":{"position":[[1110,17]]}}}],["address=[rest",{"_index":1305,"t":{"220":{"position":[[772,13]]}}}],["adequ",{"_index":1982,"t":{"488":{"position":[[288,8]]}}}],["admin",{"_index":858,"t":{"112":{"position":[[281,5],[320,5]]},"220":{"position":[[574,5],[615,5],[1172,5]]}}}],["admin=[true|fals",{"_index":1308,"t":{"220":{"position":[[919,18]]}}}],["admin=tru",{"_index":1313,"t":{"220":{"position":[[1273,10]]}}}],["administ",{"_index":2591,"t":{"610":{"position":[[1227,12]]}}}],["administr",{"_index":2600,"t":{"610":{"position":[[1891,14]]}}}],["adopt",{"_index":2270,"t":{"549":{"position":[[423,8]]}}}],["advanc",{"_index":1403,"t":{"252":{"position":[[280,8]]},"268":{"position":[[1166,8]]},"338":{"position":[[122,8]]}}}],["adversari",{"_index":1493,"t":{"288":{"position":[[659,12]]},"340":{"position":[[46,11]]},"422":{"position":[[19,9]]},"424":{"position":[[53,9]]}}}],["advertis",{"_index":765,"t":{"100":{"position":[[596,9]]},"518":{"position":[[107,13],[462,13]]},"522":{"position":[[144,13]]}}}],["advic",{"_index":2520,"t":{"594":{"position":[[1586,6]]}}}],["advis",{"_index":2562,"t":{"602":{"position":[[412,7]]}}}],["affect",{"_index":1998,"t":{"490":{"position":[[668,7],[741,6]]},"565":{"position":[[235,8],[456,8]]},"573":{"position":[[1431,7]]},"582":{"position":[[373,6]]},"612":{"position":[[412,6]]}}}],["affili",{"_index":2647,"t":{"626":{"position":[[87,11]]}}}],["africa",{"_index":2227,"t":{"544":{"position":[[684,6]]},"546":{"position":[[2291,6],[2357,6],[2750,6]]}}}],["again",{"_index":2128,"t":{"528":{"position":[[387,6]]}}}],["against",{"_index":1601,"t":{"316":{"position":[[283,7]]},"340":{"position":[[555,7]]},"528":{"position":[[934,7]]},"534":{"position":[[27,7]]},"604":{"position":[[53,7]]},"610":{"position":[[102,7],[2276,7]]}}}],["agent",{"_index":743,"t":{"100":{"position":[[131,5],[155,5]]}}}],["aggreg",{"_index":68,"t":{"6":{"position":[[200,10],[898,9]]},"602":{"position":[[474,9]]}}}],["agnost",{"_index":1694,"t":{"344":{"position":[[220,8]]}}}],["agnostic",{"_index":1772,"t":{"434":{"position":[[122,12]]}}}],["agre",{"_index":2496,"t":{"590":{"position":[[390,6],[467,5]]}}}],["agreement",{"_index":2606,"t":{"612":{"position":[[44,9],[155,11]]}}}],["aim",{"_index":902,"t":{"131":{"position":[[10,4]]},"338":{"position":[[3,3]]},"418":{"position":[[177,6]]},"470":{"position":[[338,3]]},"482":{"position":[[3,3]]},"540":{"position":[[17,4]]},"563":{"position":[[11,4],[879,5]]},"567":{"position":[[830,4]]},"596":{"position":[[1205,3]]}}}],["aka",{"_index":1849,"t":{"470":{"position":[[614,3]]}}}],["alert",{"_index":267,"t":{"24":{"position":[[931,7]]}}}],["alic",{"_index":456,"t":{"52":{"position":[[241,8]]},"90":{"position":[[541,5],[998,5],[2883,5],[3054,5],[3228,8],[3290,8]]},"296":{"position":[[36,5],[102,5],[233,6],[240,5],[337,5],[472,6],[479,5],[571,5],[616,5]]},"310":{"position":[[36,5],[95,5],[135,5],[219,6],[226,5],[300,5],[329,5],[390,5]]},"330":{"position":[[0,5]]}}}],["alice'",{"_index":690,"t":{"90":{"position":[[3063,7]]},"330":{"position":[[114,7]]}}}],["aliceprivatekey",{"_index":670,"t":{"90":{"position":[[1010,15],[1332,16],[1627,16]]}}}],["alicepublickey",{"_index":671,"t":{"90":{"position":[[1056,14]]}}}],["align",{"_index":1171,"t":{"188":{"position":[[2309,5]]}}}],["aliv",{"_index":819,"t":{"104":{"position":[[1353,5],[1377,5]]}}}],["allmessag",{"_index":1193,"t":{"194":{"position":[[600,11]]}}}],["alloc",{"_index":1855,"t":{"470":{"position":[[995,9],[1062,8]]},"546":{"position":[[997,8]]}}}],["allow",{"_index":14,"t":{"2":{"position":[[148,8]]},"6":{"position":[[581,5]]},"12":{"position":[[38,8]]},"24":{"position":[[433,8]]},"36":{"position":[[304,6]]},"46":{"position":[[244,6]]},"48":{"position":[[381,6],[562,6]]},"90":{"position":[[427,6]]},"100":{"position":[[737,7],[798,7]]},"112":{"position":[[347,5],[360,5],[661,5]]},"180":{"position":[[916,8]]},"206":{"position":[[381,8]]},"212":{"position":[[130,6]]},"214":{"position":[[1478,6]]},"222":{"position":[[217,6]]},"224":{"position":[[218,6]]},"262":{"position":[[94,8]]},"284":{"position":[[577,6]]},"288":{"position":[[77,8]]},"290":{"position":[[182,8]]},"300":{"position":[[198,5]]},"312":{"position":[[828,6]]},"320":{"position":[[16,6]]},"324":{"position":[[108,6]]},"332":{"position":[[77,6],[294,6]]},"342":{"position":[[1525,8],[1662,7]]},"344":{"position":[[244,6]]},"356":{"position":[[49,6]]},"364":{"position":[[58,6]]},"384":{"position":[[131,8]]},"390":{"position":[[165,8]]},"404":{"position":[[81,8]]},"434":{"position":[[135,8]]},"452":{"position":[[107,6]]},"472":{"position":[[680,6],[2427,5],[2636,5],[2741,6],[3040,5],[3151,5],[3373,5]]},"474":{"position":[[455,5]]},"476":{"position":[[371,5]]},"571":{"position":[[54,6]]},"576":{"position":[[914,7]]},"586":{"position":[[265,7],[671,5]]},"598":{"position":[[146,6]]},"622":{"position":[[587,5]]}}}],["along",{"_index":718,"t":{"94":{"position":[[51,5]]},"188":{"position":[[1824,5]]},"340":{"position":[[590,5]]}}}],["alongsid",{"_index":384,"t":{"38":{"position":[[1432,9]]},"56":{"position":[[331,9]]},"194":{"position":[[176,9]]},"518":{"position":[[874,9]]}}}],["alreadi",{"_index":2178,"t":{"542":{"position":[[1253,7]]},"563":{"position":[[835,7]]},"571":{"position":[[219,7]]}}}],["altern",{"_index":501,"t":{"60":{"position":[[810,14]]},"320":{"position":[[161,11]]},"360":{"position":[[170,11]]},"472":{"position":[[1865,12]]},"546":{"position":[[1724,12]]}}}],["although",{"_index":1680,"t":{"342":{"position":[[1088,8]]},"502":{"position":[[798,8]]}}}],["altruist",{"_index":2084,"t":{"514":{"position":[[891,15]]}}}],["alway",{"_index":576,"t":{"72":{"position":[[338,6]]},"149":{"position":[[738,6]]},"151":{"position":[[752,6]]},"488":{"position":[[662,6]]},"561":{"position":[[1281,6]]}}}],["amazon",{"_index":1454,"t":{"272":{"position":[[927,6]]}}}],["ambient",{"_index":1590,"t":{"312":{"position":[[1037,7]]}}}],["amend",{"_index":2540,"t":{"596":{"position":[[1347,7]]}}}],["america",{"_index":2199,"t":{"544":{"position":[[548,7],[582,7]]},"546":{"position":[[2684,7],[2702,7]]}}}],["amic",{"_index":2585,"t":{"610":{"position":[[755,8]]}}}],["amongst",{"_index":2371,"t":{"563":{"position":[[1687,7]]}}}],["amount",{"_index":873,"t":{"118":{"position":[[409,6],[500,6]]},"472":{"position":[[655,6],[1542,6],[2920,6]]},"482":{"position":[[403,6]]},"518":{"position":[[796,6],[1011,7]]},"524":{"position":[[246,6]]},"528":{"position":[[927,6]]},"540":{"position":[[117,6]]},"542":{"position":[[557,7]]},"567":{"position":[[651,6]]},"569":{"position":[[899,6]]},"571":{"position":[[331,6],[710,6]]}}}],["analysi",{"_index":1799,"t":{"446":{"position":[[59,8]]},"474":{"position":[[1101,8]]},"542":{"position":[[1219,8]]},"563":{"position":[[193,9]]}}}],["analyz",{"_index":2150,"t":{"538":{"position":[[13,7],[89,7],[245,7]]},"561":{"position":[[53,9]]}}}],["and/or",{"_index":824,"t":{"104":{"position":[[1522,6]]}}}],["announc",{"_index":767,"t":{"100":{"position":[[677,8]]},"212":{"position":[[157,9]]},"226":{"position":[[75,8]]}}}],["anonym",{"_index":1438,"t":{"268":{"position":[[512,9]]},"288":{"position":[[187,10],[524,9],[582,9]]},"290":{"position":[[19,9]]},"292":{"position":[[597,9]]},"308":{"position":[[506,10]]},"314":{"position":[[129,9],[251,10]]},"394":{"position":[[145,10]]},"420":{"position":[[205,10]]},"422":{"position":[[0,9],[90,10],[227,9]]},"428":{"position":[[102,9]]}}}],["anoth",{"_index":299,"t":{"30":{"position":[[14,7]]},"88":{"position":[[1556,7]]},"340":{"position":[[72,7]]},"490":{"position":[[509,7]]},"546":{"position":[[1516,7]]},"561":{"position":[[171,7]]},"567":{"position":[[796,7]]}}}],["anyon",{"_index":129,"t":{"10":{"position":[[53,6]]},"332":{"position":[[301,6]]},"542":{"position":[[803,6],[864,6]]}}}],["anyth",{"_index":143,"t":{"10":{"position":[[316,9]]},"246":{"position":[[952,9]]},"268":{"position":[[954,9]]},"280":{"position":[[293,9]]}}}],["api",{"_index":168,"t":{"14":{"position":[[31,3],[40,3],[133,3]]},"68":{"position":[[1869,3]]},"112":{"position":[[258,3],[326,4],[435,3]]},"127":{"position":[[61,4],[124,3],[197,4]]},"135":{"position":[[188,4]]},"196":{"position":[[573,3],[1726,4]]},"220":{"position":[[22,3],[89,4],[158,3],[259,3],[375,3],[502,3],[621,3],[704,3],[1025,3],[1190,3]]},"228":{"position":[[235,4]]},"246":{"position":[[865,3]]},"250":{"position":[[778,3]]},"268":{"position":[[32,3]]},"278":{"position":[[60,4]]},"280":{"position":[[103,4]]},"450":{"position":[[160,4]]},"462":{"position":[[14,4]]},"622":{"position":[[98,3],[204,5]]}}}],["app",{"_index":60,"t":{"6":{"position":[[71,4]]},"14":{"position":[[160,3],[282,3],[311,4]]},"36":{"position":[[356,3]]},"38":{"position":[[723,3],[761,3]]},"70":{"position":[[130,3]]},"72":{"position":[[98,3],[207,3],[267,3]]},"74":{"position":[[78,3]]},"186":{"position":[[66,4],[527,4],[729,5]]},"188":{"position":[[349,5],[1693,3]]},"190":{"position":[[261,5]]},"192":{"position":[[252,5]]},"194":{"position":[[299,5]]},"292":{"position":[[252,3]]},"462":{"position":[[591,5]]},"470":{"position":[[1692,4]]},"561":{"position":[[187,3],[369,4],[406,3],[504,3]]}}}],["app%2f2%2fchatroom",{"_index":1443,"t":{"268":{"position":[[786,18]]}}}],["app.css",{"_index":1120,"t":{"188":{"position":[[328,11],[1901,7]]}}}],["app.jsx",{"_index":1109,"t":{"186":{"position":[[655,7]]},"188":{"position":[[88,7]]}}}],["app/0/a/proto",{"_index":1503,"t":{"292":{"position":[[327,14]]}}}],["app/1/default/proto",{"_index":1812,"t":{"460":{"position":[[601,21]]},"462":{"position":[[756,21]]}}}],["app/1/notifications/proto",{"_index":1809,"t":{"458":{"position":[[137,27],[311,27]]}}}],["app/2/chatroom",{"_index":1439,"t":{"268":{"position":[[562,14]]}}}],["appear",{"_index":287,"t":{"26":{"position":[[445,8]]}}}],["appli",{"_index":244,"t":{"24":{"position":[[468,5]]},"82":{"position":[[280,7]]},"342":{"position":[[393,7]]},"478":{"position":[[227,7]]},"484":{"position":[[309,6]]},"546":{"position":[[147,5]]},"561":{"position":[[1874,8],[3426,8]]},"569":{"position":[[1717,7]]},"594":{"position":[[656,5]]},"602":{"position":[[587,5]]}}}],["applic",{"_index":13,"t":{"2":{"position":[[134,13]]},"4":{"position":[[166,13],[219,12]]},"32":{"position":[[346,13]]},"36":{"position":[[51,11],[276,12]]},"38":{"position":[[87,12],[677,11],[997,11],[1086,11],[1345,11]]},"48":{"position":[[32,11],[706,12]]},"54":{"position":[[364,11]]},"68":{"position":[[966,12],[1189,12],[1257,13],[1698,12],[1885,12]]},"76":{"position":[[105,12]]},"78":{"position":[[129,12]]},"80":{"position":[[1283,12]]},"90":{"position":[[243,11]]},"92":{"position":[[108,12],[403,12]]},"124":{"position":[[103,12]]},"133":{"position":[[176,11],[474,13]]},"137":{"position":[[126,13]]},"149":{"position":[[564,11]]},"151":{"position":[[679,11]]},"182":{"position":[[241,12]]},"184":{"position":[[88,12]]},"186":{"position":[[144,11]]},"188":{"position":[[1839,11]]},"190":{"position":[[24,12]]},"192":{"position":[[27,12]]},"194":{"position":[[131,11],[1001,11]]},"250":{"position":[[612,12],[1012,11]]},"284":{"position":[[51,13],[113,11],[177,11]]},"290":{"position":[[99,11],[319,12]]},"292":{"position":[[8,11],[730,11]]},"314":{"position":[[74,12],[175,12]]},"326":{"position":[[311,11]]},"328":{"position":[[5,12]]},"342":{"position":[[28,11]]},"352":{"position":[[96,12]]},"364":{"position":[[113,12]]},"378":{"position":[[49,11],[144,12]]},"402":{"position":[[134,13]]},"408":{"position":[[184,11]]},"410":{"position":[[123,11]]},"440":{"position":[[0,12]]},"448":{"position":[[52,11]]},"462":{"position":[[75,11],[405,11],[574,12]]},"470":{"position":[[895,12]]},"482":{"position":[[226,10]]},"488":{"position":[[694,10]]},"546":{"position":[[2542,13]]},"573":{"position":[[1138,12]]},"594":{"position":[[697,10],[959,10]]},"602":{"position":[[628,10]]},"610":{"position":[[2017,10]]},"614":{"position":[[209,13]]},"620":{"position":[[435,12]]},"624":{"position":[[17,11]]}}}],["application'",{"_index":434,"t":{"50":{"position":[[12,13]]},"68":{"position":[[218,13],[368,13]]}}}],["application/json",{"_index":1435,"t":{"268":{"position":[[432,17],[863,17]]},"278":{"position":[[228,17]]}}}],["applicationinfo",{"_index":1813,"t":{"462":{"position":[[38,15],[312,15]]}}}],["appoint",{"_index":2623,"t":{"618":{"position":[[293,7]]}}}],["appreci",{"_index":578,"t":{"74":{"position":[[15,10]]},"561":{"position":[[2347,11]]}}}],["approach",{"_index":376,"t":{"38":{"position":[[1029,8]]},"292":{"position":[[347,8]]},"314":{"position":[[21,9]]},"332":{"position":[[166,8]]},"468":{"position":[[314,8]]},"472":{"position":[[1882,8],[2249,8]]},"476":{"position":[[181,8],[243,8]]},"478":{"position":[[98,8]]},"486":{"position":[[13,9]]},"498":{"position":[[277,8]]},"502":{"position":[[821,10]]},"506":{"position":[[56,10]]},"542":{"position":[[514,9],[672,10]]},"546":{"position":[[789,9]]},"561":{"position":[[293,9]]}}}],["appropri",{"_index":1354,"t":{"240":{"position":[[52,11]]},"518":{"position":[[784,11]]},"594":{"position":[[806,11]]}}}],["approv",{"_index":596,"t":{"74":{"position":[[516,9]]}}}],["apt",{"_index":1011,"t":{"162":{"position":[[197,3]]}}}],["arbitr",{"_index":2573,"t":{"608":{"position":[[102,12]]},"610":{"position":[[260,11],[427,11],[549,11],[1215,11],[1263,11],[1339,11],[1447,8],[1499,11],[1656,11],[1781,11],[1860,12],[1910,10],[1986,12],[2264,11]]}}}],["arch",{"_index":1008,"t":{"162":{"position":[[164,4]]}}}],["architectur",{"_index":1599,"t":{"316":{"position":[[33,12]]},"542":{"position":[[733,14],[784,12]]},"567":{"position":[[128,13]]}}}],["archiv",{"_index":2265,"t":{"549":{"position":[[48,9],[229,7]]},"561":{"position":[[754,7],[1757,7]]},"563":{"position":[[473,8]]}}}],["area",{"_index":2622,"t":{"618":{"position":[[240,4]]}}}],["arg",{"_index":1360,"t":{"246":{"position":[[66,8],[189,6]]}}}],["arguabl",{"_index":2115,"t":{"524":{"position":[[1120,8]]}}}],["argument",{"_index":727,"t":{"96":{"position":[[235,8]]},"100":{"position":[[622,8]]},"102":{"position":[[205,8]]},"104":{"position":[[1323,8],[1467,8],[1580,8],[1658,8]]},"116":{"position":[[238,8]]},"118":{"position":[[259,8]]},"246":{"position":[[211,9]]}}}],["aris",{"_index":2561,"t":{"602":{"position":[[251,7]]},"604":{"position":[[130,7]]},"610":{"position":[[690,7]]}}}],["aros",{"_index":2602,"t":{"610":{"position":[[2110,5]]}}}],["around",{"_index":1909,"t":{"472":{"position":[[2186,6]]},"569":{"position":[[871,6]]},"624":{"position":[[117,6]]}}}],["array",{"_index":347,"t":{"36":{"position":[[432,7]]},"66":{"position":[[21,5],[294,5]]}}}],["arriv",{"_index":1570,"t":{"306":{"position":[[898,7]]},"573":{"position":[[1216,8]]}}}],["articl",{"_index":1784,"t":{"438":{"position":[[609,7]]}}}],["ascend",{"_index":1382,"t":{"248":{"position":[[202,9]]}}}],["asia",{"_index":2217,"t":{"544":{"position":[[634,4]]},"546":{"position":[[2727,4]]}}}],["ask",{"_index":1992,"t":{"490":{"position":[[305,3],[381,3],[435,3],[623,5]]}}}],["assign",{"_index":1756,"t":{"424":{"position":[[261,6]]},"502":{"position":[[650,7]]},"508":{"position":[[118,8]]},"528":{"position":[[494,9]]}}}],["assist",{"_index":142,"t":{"10":{"position":[[300,10]]},"40":{"position":[[39,11]]},"246":{"position":[[936,10]]},"268":{"position":[[938,10]]},"280":{"position":[[277,10]]}}}],["associ",{"_index":1955,"t":{"480":{"position":[[152,12],[255,11],[434,12]]},"592":{"position":[[92,12],[196,11],[385,12]]}}}],["assum",{"_index":1873,"t":{"472":{"position":[[304,6],[1938,6]]},"474":{"position":[[509,8],[763,8]]},"520":{"position":[[12,6],[113,7]]},"569":{"position":[[1840,8]]},"582":{"position":[[422,8]]},"586":{"position":[[446,9],[618,9]]}}}],["assumpt",{"_index":1893,"t":{"472":{"position":[[1168,10]]},"546":{"position":[[1790,12]]},"596":{"position":[[118,11]]}}}],["async",{"_index":616,"t":{"80":{"position":[[564,5]]},"151":{"position":[[134,5]]},"188":{"position":[[1111,5]]},"190":{"position":[[418,5]]},"561":{"position":[[3299,5]]}}}],["asynchron",{"_index":1720,"t":{"390":{"position":[[34,12]]},"561":{"position":[[3092,12]]}}}],["atom",{"_index":2081,"t":{"514":{"position":[[340,10],[521,9]]},"524":{"position":[[601,10],[638,9],[660,6],[1064,9]]}}}],["attach",{"_index":656,"t":{"90":{"position":[[75,9]]},"350":{"position":[[28,8]]},"576":{"position":[[705,8]]}}}],["attack",{"_index":1661,"t":{"340":{"position":[[212,6],[455,7],[567,8]]},"472":{"position":[[435,9]]},"528":{"position":[[560,8],[1045,6],[1171,8]]},"584":{"position":[[709,7]]}}}],["attempt",{"_index":272,"t":{"26":{"position":[[0,7]]},"176":{"position":[[739,7]]},"178":{"position":[[873,7]]}}}],["attorney",{"_index":2569,"t":{"604":{"position":[[113,10]]}}}],["attribut",{"_index":1620,"t":{"326":{"position":[[107,11],[133,9],[180,9],[243,9],[354,9],[444,9]]},"598":{"position":[[71,11],[299,11]]}}}],["aur",{"_index":1026,"t":{"162":{"position":[[469,3],[485,4]]}}}],["authent",{"_index":655,"t":{"90":{"position":[[37,12]]},"412":{"position":[[228,13]]},"416":{"position":[[178,13]]},"426":{"position":[[80,12]]}}}],["author",{"_index":254,"t":{"24":{"position":[[708,9]]}}}],["auto",{"_index":869,"t":{"118":{"position":[[295,4]]},"188":{"position":[[1975,5],[2120,5]]},"450":{"position":[[111,4]]},"452":{"position":[[137,4]]},"460":{"position":[[84,4],[450,4]]},"462":{"position":[[271,4],[372,5]]}}}],["automat",{"_index":870,"t":{"118":{"position":[[327,13]]},"252":{"position":[[83,14]]},"438":{"position":[[356,9]]},"508":{"position":[[104,13]]},"514":{"position":[[496,14]]}}}],["autoshard",{"_index":1817,"t":{"464":{"position":[[109,13],[179,12]]}}}],["avail",{"_index":663,"t":{"90":{"position":[[378,9]]},"94":{"position":[[13,9]]},"160":{"position":[[305,9]]},"168":{"position":[[123,9]]},"194":{"position":[[845,9]]},"196":{"position":[[788,9],[1124,9],[1329,9]]},"206":{"position":[[588,9]]},"242":{"position":[[28,9]]},"270":{"position":[[263,9]]},"312":{"position":[[566,9]]},"322":{"position":[[343,13]]},"342":{"position":[[760,12]]},"398":{"position":[[63,9]]},"426":{"position":[[162,9]]},"470":{"position":[[717,10]]},"506":{"position":[[196,9]]},"542":{"position":[[1527,9]]},"544":{"position":[[98,9],[145,9]]},"594":{"position":[[478,12],[1062,9]]},"598":{"position":[[38,9]]}}}],["averag",{"_index":2161,"t":{"542":{"position":[[80,7]]},"544":{"position":[[54,7],[514,7],[530,7]]},"546":{"position":[[2247,7],[2315,7],[2638,7]]},"561":{"position":[[2367,7]]},"563":{"position":[[1753,8]]},"565":{"position":[[339,7]]},"569":{"position":[[2141,7]]},"571":{"position":[[445,7]]},"573":{"position":[[296,7],[1080,7],[2017,8]]},"580":{"position":[[161,7]]},"582":{"position":[[85,7],[394,7]]}}}],["avoid",{"_index":94,"t":{"6":{"position":[[787,8]]},"127":{"position":[[45,8]]},"422":{"position":[[101,8]]},"520":{"position":[[192,8]]}}}],["await",{"_index":403,"t":{"44":{"position":[[185,5],[236,5],[309,5]]},"46":{"position":[[189,5],[434,5]]},"52":{"position":[[426,5]]},"54":{"position":[[528,5],[720,5],[872,5]]},"58":{"position":[[246,5]]},"60":{"position":[[242,5],[759,5],[1121,5],[1353,5],[1509,5]]},"62":{"position":[[599,5],[911,5]]},"64":{"position":[[646,5]]},"66":{"position":[[200,5],[251,5]]},"80":{"position":[[218,5],[410,5],[609,5],[857,5],[975,5]]},"86":{"position":[[710,5],[1094,5],[1183,5]]},"88":{"position":[[861,5],[1254,5],[1343,5]]},"90":{"position":[[1772,5],[1832,5],[1890,5],[1946,5],[3304,5]]},"141":{"position":[[185,5],[236,5]]},"143":{"position":[[186,5]]},"149":{"position":[[629,5]]},"151":{"position":[[469,5],[565,5],[632,5]]},"154":{"position":[[428,5]]},"156":{"position":[[537,5],[688,5],[827,5]]},"158":{"position":[[403,5]]},"190":{"position":[[770,5]]},"454":{"position":[[189,5],[361,5]]},"456":{"position":[[65,5],[207,5]]},"458":{"position":[[65,5],[235,5]]},"460":{"position":[[191,5],[349,5],[523,5]]},"462":{"position":[[523,5],[680,5]]},"528":{"position":[[1101,8]]}}}],["award",{"_index":2582,"t":{"610":{"position":[[561,5]]}}}],["away",{"_index":2035,"t":{"502":{"position":[[253,4]]},"528":{"position":[[626,4]]},"569":{"position":[[536,5]]},"573":{"position":[[1957,4]]}}}],["awesom",{"_index":126,"t":{"6":{"position":[[1324,7]]},"14":{"position":[[433,7]]}}}],["awk",{"_index":1373,"t":{"246":{"position":[[704,3]]}}}],["azur",{"_index":1453,"t":{"272":{"position":[[920,6]]}}}],["b",{"_index":879,"t":{"118":{"position":[[598,1]]},"306":{"position":[[697,1]]},"532":{"position":[[193,2]]}}}],["b452ed8",{"_index":2333,"t":{"561":{"position":[[1804,8]]}}}],["b6dd6899",{"_index":2318,"t":{"561":{"position":[[801,9]]}}}],["baarerstrass",{"_index":1964,"t":{"480":{"position":[[291,13]]},"592":{"position":[[232,13]]}}}],["back",{"_index":2089,"t":{"516":{"position":[[459,4]]},"538":{"position":[[157,4]]}}}],["backbon",{"_index":2074,"t":{"512":{"position":[[138,8]]}}}],["background",{"_index":1166,"t":{"188":{"position":[[2159,10],[2282,10],[2435,10]]}}}],["backup",{"_index":1584,"t":{"312":{"position":[[515,7],[608,7]]}}}],["backward",{"_index":535,"t":{"68":{"position":[[336,8]]},"104":{"position":[[1172,9]]},"154":{"position":[[79,8]]},"250":{"position":[[1276,8]]}}}],["badli",{"_index":2040,"t":{"502":{"position":[[426,6]]}}}],["balanc",{"_index":905,"t":{"131":{"position":[[70,7]]},"314":{"position":[[235,7]]}}}],["ban",{"_index":2137,"t":{"528":{"position":[[971,3],[1126,3]]}}}],["band",{"_index":642,"t":{"86":{"position":[[1321,4]]},"88":{"position":[[1475,4]]},"90":{"position":[[3124,4]]},"376":{"position":[[7,4]]}}}],["bandwidth",{"_index":812,"t":{"104":{"position":[[1136,9]]},"304":{"position":[[103,9],[278,10],[355,9]]},"320":{"position":[[253,10],[300,9]]},"324":{"position":[[65,9]]},"398":{"position":[[94,10]]},"444":{"position":[[500,9]]},"468":{"position":[[62,9]]},"470":{"position":[[94,10],[141,10],[465,9],[642,9],[982,9],[1041,9],[1126,9],[1652,9],[1765,10],[1817,10]]},"472":{"position":[[852,9],[1463,9],[2089,10],[2166,9]]},"474":{"position":[[895,10],[1144,9]]},"476":{"position":[[31,9],[310,9]]},"506":{"position":[[186,9]]},"540":{"position":[[41,9]]},"542":{"position":[[592,10],[935,9],[1054,9],[1414,9],[1537,9],[1597,9]]},"544":{"position":[[62,9],[301,9],[402,9],[814,9]]},"546":{"position":[[77,9],[282,9],[359,10],[550,10],[888,9],[957,9],[1012,9],[1162,9],[1258,9],[1331,9],[1400,9],[1620,9],[1850,10],[1963,10],[2010,9],[2392,9],[2503,10],[2646,9]]},"565":{"position":[[115,9]]},"569":{"position":[[294,9],[1541,10],[1566,9],[1598,10]]},"573":{"position":[[605,11],[2079,9],[2156,9]]}}}],["bandwidth/hardwar",{"_index":2165,"t":{"542":{"position":[[420,18]]}}}],["barrier",{"_index":2342,"t":{"561":{"position":[[3550,8]]}}}],["base",{"_index":917,"t":{"137":{"position":[[44,5]]},"162":{"position":[[501,4]]},"270":{"position":[[224,5]]},"288":{"position":[[415,5]]},"292":{"position":[[541,5]]},"312":{"position":[[888,5]]},"326":{"position":[[155,5]]},"350":{"position":[[131,5]]},"394":{"position":[[44,5]]},"424":{"position":[[296,5]]},"438":{"position":[[382,5]]},"444":{"position":[[254,5]]},"490":{"position":[[707,5]]},"502":{"position":[[538,5]]},"506":{"position":[[50,5]]},"514":{"position":[[169,5],[698,5]]},"518":{"position":[[409,5],[719,5]]},"561":{"position":[[511,5]]},"573":{"position":[[952,5]]},"596":{"position":[[65,5],[590,5]]}}}],["base32",{"_index":1065,"t":{"176":{"position":[[297,6]]}}}],["base64",{"_index":1431,"t":{"268":{"position":[[335,7],[530,10]]}}}],["bash",{"_index":1000,"t":{"162":{"position":[[89,5]]}}}],["basi",{"_index":1969,"t":{"482":{"position":[[205,5]]},"528":{"position":[[899,6]]},"594":{"position":[[44,5],[1177,5]]}}}],["batteri",{"_index":1726,"t":{"398":{"position":[[128,7]]}}}],["be",{"_index":608,"t":{"78":{"position":[[106,5]]},"186":{"position":[[966,5]]},"284":{"position":[[492,5]]},"332":{"position":[[773,5]]},"424":{"position":[[375,5]]},"428":{"position":[[453,5]]},"436":{"position":[[80,5]]},"470":{"position":[[908,5],[1259,5]]},"472":{"position":[[2893,5]]},"561":{"position":[[47,5],[3607,5]]},"569":{"position":[[115,5]]},"610":{"position":[[1364,5]]}}}],["bear",{"_index":2536,"t":{"596":{"position":[[910,4]]}}}],["becom",{"_index":1586,"t":{"312":{"position":[[639,6]]},"470":{"position":[[1550,8]]}}}],["befor",{"_index":665,"t":{"90":{"position":[[495,6],[1385,6],[1680,6]]},"135":{"position":[[0,6]]},"196":{"position":[[1057,6]]},"210":{"position":[[66,6]]},"276":{"position":[[66,6]]},"454":{"position":[[124,6]]},"456":{"position":[[0,6]]},"458":{"position":[[0,6]]},"460":{"position":[[126,6]]},"462":{"position":[[328,7],[458,6]]},"466":{"position":[[565,6]]},"490":{"position":[[791,6]]},"506":{"position":[[292,6]]},"524":{"position":[[364,6]]},"528":{"position":[[270,6]]},"590":{"position":[[316,6]]}}}],["begin",{"_index":614,"t":{"80":{"position":[[117,6]]},"156":{"position":[[1001,9]]},"230":{"position":[[28,6]]},"234":{"position":[[28,6]]},"236":{"position":[[28,6]]},"470":{"position":[[19,5]]},"573":{"position":[[891,10]]}}}],["behav",{"_index":2038,"t":{"502":{"position":[[343,7],[418,7]]},"557":{"position":[[553,7]]}}}],["behaviour",{"_index":1757,"t":{"424":{"position":[[311,9]]},"498":{"position":[[204,10]]},"514":{"position":[[374,10],[446,9]]},"618":{"position":[[421,10]]}}}],["behind",{"_index":32,"t":{"2":{"position":[[355,6]]},"246":{"position":[[594,6]]}}}],["believ",{"_index":2005,"t":{"490":{"position":[[978,7]]},"600":{"position":[[338,8]]},"610":{"position":[[294,7]]}}}],["below",{"_index":1209,"t":{"198":{"position":[[290,5]]},"248":{"position":[[106,5]]},"518":{"position":[[623,7]]},"528":{"position":[[340,5]]},"544":{"position":[[222,5]]},"561":{"position":[[3534,5],[3770,5]]},"614":{"position":[[235,5]]}}}],["benchmark",{"_index":1800,"t":{"446":{"position":[[164,11],[227,10]]},"576":{"position":[[216,10]]}}}],["beneficiary'",{"_index":1764,"t":{"428":{"position":[[300,13]]}}}],["benefit",{"_index":910,"t":{"133":{"position":[[192,7]]},"322":{"position":[[147,8]]},"502":{"position":[[490,9]]},"514":{"position":[[387,7]]},"561":{"position":[[3046,7]]},"616":{"position":[[431,8]]}}}],["besid",{"_index":1707,"t":{"358":{"position":[[145,7]]},"582":{"position":[[261,7]]}}}],["best",{"_index":2444,"t":{"573":{"position":[[1283,4],[1809,4]]}}}],["best/worst",{"_index":2426,"t":{"573":{"position":[[238,10]]}}}],["better",{"_index":899,"t":{"127":{"position":[[234,6]]},"470":{"position":[[111,6]]},"474":{"position":[[943,6]]},"476":{"position":[[236,6]]},"557":{"position":[[561,6]]},"559":{"position":[[737,7]]},"561":{"position":[[1156,6],[1476,7],[3014,6],[3170,6]]}}}],["between",{"_index":335,"t":{"36":{"position":[[244,7],[332,7]]},"86":{"position":[[1278,7]]},"131":{"position":[[78,7]]},"306":{"position":[[47,7]]},"314":{"position":[[243,7]]},"342":{"position":[[1116,7]]},"344":{"position":[[79,7]]},"378":{"position":[[117,7]]},"406":{"position":[[64,7]]},"430":{"position":[[85,7],[134,7]]},"472":{"position":[[2834,7]]},"546":{"position":[[2587,7]]},"555":{"position":[[81,7]]},"569":{"position":[[1384,7],[2044,7]]},"576":{"position":[[173,7]]},"608":{"position":[[62,7]]},"610":{"position":[[1714,7]]},"612":{"position":[[54,7]]}}}],["beyond",{"_index":112,"t":{"6":{"position":[[1021,6]]},"514":{"position":[[845,6]]},"573":{"position":[[1767,7]]}}}],["bid",{"_index":73,"t":{"6":{"position":[[289,4]]}}}],["big",{"_index":2395,"t":{"569":{"position":[[1635,3]]},"573":{"position":[[779,3],[1595,3],[1679,3]]}}}],["bigger",{"_index":1924,"t":{"474":{"position":[[30,6]]},"561":{"position":[[1678,6]]},"569":{"position":[[1479,6]]}}}],["biggest",{"_index":2450,"t":{"573":{"position":[[2309,7]]}}}],["binari",{"_index":989,"t":{"160":{"position":[[223,6]]},"166":{"position":[[16,7]]},"168":{"position":[[32,6]]},"170":{"position":[[89,6]]},"196":{"position":[[232,8]]},"200":{"position":[[168,6]]},"202":{"position":[[215,6]]},"272":{"position":[[39,7],[459,7],[505,6],[535,6],[575,6],[649,8],[693,7],[837,8]]},"274":{"position":[[31,7],[146,6]]}}}],["binaries.yml",{"_index":2319,"t":{"561":{"position":[[879,12],[1951,12]]}}}],["bind",{"_index":1180,"t":{"190":{"position":[[272,4]]},"594":{"position":[[1214,7]]}}}],["bit",{"_index":876,"t":{"118":{"position":[[572,4]]},"472":{"position":[[2945,3]]},"582":{"position":[[222,4]]}}}],["bitcoin",{"_index":2056,"t":{"508":{"position":[[0,7]]},"510":{"position":[[5,7]]}}}],["bittorr",{"_index":2050,"t":{"506":{"position":[[106,10]]}}}],["block",{"_index":1117,"t":{"188":{"position":[[125,6],[1938,6]]},"328":{"position":[[270,7]]},"332":{"position":[[697,7]]},"508":{"position":[[160,7],[220,6],[234,5],[510,6]]},"561":{"position":[[1243,8],[3355,5]]},"586":{"position":[[490,5],[510,6]]}}}],["blockchain",{"_index":34,"t":{"4":{"position":[[14,10]]},"6":{"position":[[226,11],[509,10]]},"352":{"position":[[113,10]]},"362":{"position":[[120,10]]},"504":{"position":[[74,12]]},"510":{"position":[[158,10]]},"514":{"position":[[398,11],[783,12]]},"520":{"position":[[76,10]]},"576":{"position":[[845,11]]},"586":{"position":[[54,10]]}}}],["blog",{"_index":29,"t":{"2":{"position":[[322,4]]},"318":{"position":[[350,4]]},"338":{"position":[[320,4]]}}}],["bob",{"_index":685,"t":{"90":{"position":[[2206,3],[2473,3]]},"296":{"position":[[142,3],[185,3]]},"310":{"position":[[107,3],[175,4],[180,3],[368,3]]},"330":{"position":[[35,3]]}}}],["bob'",{"_index":1524,"t":{"296":{"position":[[52,5]]},"310":{"position":[[52,5]]}}}],["bobprivatekey",{"_index":686,"t":{"90":{"position":[[2483,13],[2656,14]]}}}],["bodi",{"_index":1134,"t":{"188":{"position":[[1217,6],[2087,4]]}}}],["boilerpl",{"_index":1094,"t":{"184":{"position":[[134,11]]}}}],["boot",{"_index":1266,"t":{"216":{"position":[[44,5]]}}}],["bootstrap",{"_index":176,"t":{"14":{"position":[[179,9]]},"38":{"position":[[776,9],[845,9],[893,9]]},"44":{"position":[[403,12],[434,9],[471,9],[537,9]]},"56":{"position":[[38,9],[170,9]]},"58":{"position":[[42,13],[183,9],[216,9]]},"60":{"position":[[44,9],[195,9],[502,9],[708,9],[905,9]]},"62":{"position":[[3,9],[551,9],[863,9]]},"64":{"position":[[13,9],[140,9],[281,9],[581,9]]},"68":{"position":[[1381,9],[1482,9],[1573,9]]},"70":{"position":[[38,9]]},"118":{"position":[[170,9],[206,9]]},"178":{"position":[[150,9],[195,9],[258,9],[332,9],[359,9],[389,9],[416,9],[494,10],[598,9],[884,9]]},"180":{"position":[[214,9],[645,13]]},"210":{"position":[[37,9]]},"276":{"position":[[37,9],[201,9],[323,9]]},"294":{"position":[[295,9]]},"310":{"position":[[372,10]]},"312":{"position":[[231,14]]},"328":{"position":[[48,9]]},"332":{"position":[[273,13],[452,9]]},"348":{"position":[[0,13]]},"384":{"position":[[148,9]]}}}],["bootstrapp",{"_index":489,"t":{"60":{"position":[[87,14],[266,15],[783,15]]},"64":{"position":[[680,15]]}}}],["border",{"_index":1157,"t":{"188":{"position":[[2055,7],[2363,6],[2462,6]]}}}],["both",{"_index":209,"t":{"20":{"position":[[176,4]]},"38":{"position":[[1584,4]]},"56":{"position":[[483,4]]},"90":{"position":[[920,4]]},"194":{"position":[[549,4]]},"250":{"position":[[1144,4]]},"472":{"position":[[1742,4]]},"536":{"position":[[118,4]]},"557":{"position":[[486,4],[861,4],[1420,4]]},"559":{"position":[[197,4]]},"561":{"position":[[2979,4]]},"612":{"position":[[199,4]]}}}],["bottleneck",{"_index":2302,"t":{"557":{"position":[[1319,10]]},"573":{"position":[[2317,11]]}}}],["bottom",{"_index":1170,"t":{"188":{"position":[[2221,7]]}}}],["bound",{"_index":2497,"t":{"590":{"position":[[403,5]]},"610":{"position":[[404,5]]}}}],["boundari",{"_index":1868,"t":{"470":{"position":[[1629,8]]}}}],["bounti",{"_index":597,"t":{"74":{"position":[[545,8],[654,6]]},"626":{"position":[[218,6]]}}}],["box",{"_index":1773,"t":{"434":{"position":[[211,3]]},"440":{"position":[[165,3]]},"573":{"position":[[264,3]]}}}],["branch",{"_index":1043,"t":{"164":{"position":[[60,6]]},"334":{"position":[[252,6],[418,7]]},"571":{"position":[[136,7]]}}}],["break",{"_index":1478,"t":{"284":{"position":[[292,8]]},"338":{"position":[[260,5]]}}}],["brew",{"_index":1030,"t":{"162":{"position":[[595,4]]}}}],["briefli",{"_index":1972,"t":{"482":{"position":[[599,7]]}}}],["bring",{"_index":2041,"t":{"502":{"position":[[474,6]]},"514":{"position":[[49,6]]},"559":{"position":[[635,6]]},"610":{"position":[[2061,5]]}}}],["broadcast",{"_index":104,"t":{"6":{"position":[[884,9]]},"48":{"position":[[734,12]]},"88":{"position":[[1452,12]]},"90":{"position":[[3101,12]]},"104":{"position":[[857,12]]}}}],["broadest",{"_index":2575,"t":{"610":{"position":[[34,8]]}}}],["browser",{"_index":159,"t":{"12":{"position":[[206,7]]},"16":{"position":[[119,7]]},"22":{"position":[[129,9]]},"24":{"position":[[166,9],[204,8],[802,8]]},"32":{"position":[[258,7]]},"68":{"position":[[1434,7]]},"112":{"position":[[444,8]]},"124":{"position":[[54,7]]},"127":{"position":[[22,7],[116,7],[189,7]]},"131":{"position":[[50,8],[86,7]]},"133":{"position":[[47,8],[150,8],[435,7]]},"212":{"position":[[390,7]]},"218":{"position":[[39,7],[116,7]]},"276":{"position":[[695,7]]},"294":{"position":[[688,9]]},"300":{"position":[[338,9]]},"344":{"position":[[552,7],[692,8]]},"370":{"position":[[179,8]]}}}],["browser'",{"_index":211,"t":{"22":{"position":[[27,9]]},"24":{"position":[[974,9]]},"133":{"position":[[287,9]]}}}],["bucket",{"_index":875,"t":{"118":{"position":[[474,6],[557,7]]},"288":{"position":[[400,7]]},"292":{"position":[[175,7]]}}}],["buffer",{"_index":327,"t":{"36":{"position":[[78,7]]},"68":{"position":[[203,7],[276,7]]},"284":{"position":[[476,7],[870,7]]},"290":{"position":[[275,6]]}}}],["bug",{"_index":393,"t":{"40":{"position":[[178,4]]},"622":{"position":[[109,4],[214,4]]},"624":{"position":[[137,4]]}}}],["build",{"_index":59,"t":{"6":{"position":[[37,5],[1181,5]]},"12":{"position":[[341,5]]},"38":{"position":[[81,5],[556,5]]},"68":{"position":[[1242,8],[1285,5]]},"160":{"position":[[38,5],[283,5]]},"162":{"position":[[3,5],[213,5]]},"166":{"position":[[0,5]]},"168":{"position":[[46,8]]},"188":{"position":[[6,5]]},"194":{"position":[[1107,8]]},"196":{"position":[[245,8]]},"238":{"position":[[38,5]]},"244":{"position":[[13,5],[144,5]]},"270":{"position":[[332,6]]},"272":{"position":[[683,5],[727,5],[745,5],[787,5]]},"342":{"position":[[16,8]]},"364":{"position":[[79,5]]},"416":{"position":[[69,5]]},"440":{"position":[[29,5]]},"618":{"position":[[82,8]]},"620":{"position":[[69,5]]},"622":{"position":[[23,8]]}}}],["build/wakunode2",{"_index":1055,"t":{"168":{"position":[[99,17],[154,17]]},"174":{"position":[[174,17],[399,17]]},"176":{"position":[[522,17],[931,17]]},"178":{"position":[[277,17],[543,17]]},"180":{"position":[[270,17],[587,17],[678,17]]},"200":{"position":[[181,17]]},"202":{"position":[[280,17]]},"204":{"position":[[278,17],[485,17]]},"206":{"position":[[544,17]]},"212":{"position":[[203,17],[339,17]]},"214":{"position":[[987,17],[1276,17],[1567,17],[1729,17]]},"216":{"position":[[173,17],[1030,17]]},"218":{"position":[[561,17],[915,17],[1124,17]]},"220":{"position":[[731,17],[1050,17],[1232,17]]},"222":{"position":[[88,17],[286,17],[517,17]]},"224":{"position":[[99,17],[289,17],[444,17]]},"226":{"position":[[217,17]]},"274":{"position":[[153,17]]}}}],["built",{"_index":183,"t":{"14":{"position":[[316,5]]},"58":{"position":[[33,5]]},"170":{"position":[[73,5]]},"246":{"position":[[175,5],[1053,5]]},"332":{"position":[[0,5]]},"430":{"position":[[14,5]]},"444":{"position":[[447,5]]}}}],["bunch",{"_index":2339,"t":{"561":{"position":[[3290,5]]}}}],["bundl",{"_index":895,"t":{"127":{"position":[[78,9]]}}}],["burst",{"_index":1890,"t":{"472":{"position":[[1078,5]]},"474":{"position":[[77,7]]}}}],["busi",{"_index":1716,"t":{"378":{"position":[[82,8]]},"561":{"position":[[3703,4]]}}}],["button",{"_index":1147,"t":{"188":{"position":[[1588,7],[1612,7],[2426,6]]}}}],["buy",{"_index":2522,"t":{"594":{"position":[[1694,3],[1734,3]]}}}],["byte",{"_index":346,"t":{"36":{"position":[[427,4]]},"68":{"position":[[2560,5]]},"176":{"position":[[334,4]]},"216":{"position":[[354,4],[533,4],[715,4]]},"288":{"position":[[436,5]]},"292":{"position":[[291,4],[470,5]]},"472":{"position":[[1694,5]]},"576":{"position":[[665,6]]}}}],["bytes/sec",{"_index":815,"t":{"104":{"position":[[1212,9]]}}}],["bytestohex",{"_index":704,"t":{"92":{"position":[[462,11]]}}}],["bytestohex(privatekey",{"_index":710,"t":{"92":{"position":[[757,23]]}}}],["bytestohex(symmetrickey",{"_index":708,"t":{"92":{"position":[[709,25]]}}}],["c",{"_index":997,"t":{"162":{"position":[[67,1]]},"216":{"position":[[787,1],[800,1],[814,1]]},"306":{"position":[[837,2]]}}}],["c.waku.sandbox.status.im/tcp/30303/p2p/16uiu2hamsjvsjphxrdbniguv5bjrrzfbhttwftsyikaqbycjwmpv",{"_index":1265,"t":{"214":{"position":[[1788,92]]},"222":{"position":[[579,92]]},"224":{"position":[[507,92]]}}}],["c/o",{"_index":1960,"t":{"480":{"position":[[267,3]]},"592":{"position":[[208,3]]}}}],["c078075",{"_index":2320,"t":{"561":{"position":[[913,7],[1985,7]]}}}],["ca",{"_index":255,"t":{"24":{"position":[[718,5]]}}}],["cach",{"_index":856,"t":{"112":{"position":[[213,5],[270,5]]},"214":{"position":[[18,7]]},"220":{"position":[[448,5],[514,6],[870,5],[894,5],[1209,5],[1321,5]]}}}],["calcul",{"_index":2092,"t":{"518":{"position":[[89,11],[394,11],[698,10]]},"522":{"position":[[73,11]]},"569":{"position":[[966,10],[1932,9]]},"580":{"position":[[194,9]]}}}],["calendar",{"_index":2590,"t":{"610":{"position":[[1073,8]]}}}],["call",{"_index":669,"t":{"90":{"position":[[967,4],[2440,4]]},"202":{"position":[[232,6]]},"228":{"position":[[188,7]]},"280":{"position":[[47,7]]},"284":{"position":[[551,6]]},"472":{"position":[[2391,7]]},"563":{"position":[[564,7]]},"616":{"position":[[59,5]]}}}],["callback",{"_index":463,"t":{"54":{"position":[[56,8],[186,8],[210,8],[760,10]]},"80":{"position":[[450,10],[897,10]]},"86":{"position":[[1134,10],[1236,10]]},"88":{"position":[[1294,10],[1396,10]]},"90":{"position":[[1821,10],[1935,10],[2689,8],[2741,8],[3344,10]]},"149":{"position":[[162,8],[319,9],[333,8],[472,8],[496,8],[682,10]]},"154":{"position":[[481,9]]},"156":{"position":[[228,8],[273,8],[590,10],[880,9]]},"158":{"position":[[456,9]]}}}],["can't",{"_index":1853,"t":{"470":{"position":[[961,5]]},"472":{"position":[[420,5]]},"546":{"position":[[981,5],[1202,5],[1831,5]]}}}],["candid",{"_index":1045,"t":{"164":{"position":[[90,9]]}}}],["cap",{"_index":1830,"t":{"468":{"position":[[55,6]]},"470":{"position":[[132,8],[244,7],[269,6],[618,7]]},"472":{"position":[[578,3],[607,3],[647,3],[1447,3],[1756,3],[2082,6]]},"476":{"position":[[24,6]]}}}],["capabl",{"_index":1589,"t":{"312":{"position":[[718,13],[771,13],[909,13]]},"344":{"position":[[897,12]]},"549":{"position":[[34,10]]}}}],["capac",{"_index":772,"t":{"100":{"position":[[839,8]]},"106":{"position":[[241,8]]},"112":{"position":[[219,8],[231,8]]},"214":{"position":[[428,8]]},"220":{"position":[[454,8],[475,8],[900,9],[1215,8]]},"340":{"position":[[95,8]]}}}],["capacity:25000",{"_index":1241,"t":{"214":{"position":[[487,15]]}}}],["capacity:@waku",{"_index":1132,"t":{"188":{"position":[[1171,8]]}}}],["hackathon",{"_index":189,"t":{"14":{"position":[[419,10]]}}}],["hackenproof",{"_index":2652,"t":{"626":{"position":[[238,11]]}}}],["hammer",{"_index":2364,"t":{"563":{"position":[[869,6],[1455,6],[1562,6],[1833,6]]}}}],["hand",{"_index":2315,"t":{"561":{"position":[[157,5]]},"582":{"position":[[13,5]]}}}],["handl",{"_index":72,"t":{"6":{"position":[[268,6]]},"18":{"position":[[124,6]]},"28":{"position":[[74,6]]},"38":{"position":[[1310,6]]},"54":{"position":[[617,6]]},"76":{"position":[[70,6]]},"80":{"position":[[307,6],[1248,6]]},"92":{"position":[[196,8]]}}}],["handleinputchang",{"_index":1125,"t":{"188":{"position":[[522,17]]}}}],["happen",{"_index":475,"t":{"54":{"position":[[634,7]]},"80":{"position":[[324,7]]},"86":{"position":[[1296,6]]},"104":{"position":[[1264,6]]},"472":{"position":[[1322,7]]},"561":{"position":[[3400,7]]},"616":{"position":[[39,6]]}}}],["hard",{"_index":1635,"t":{"330":{"position":[[96,5]]}}}],["hardcod",{"_index":660,"t":{"90":{"position":[[325,9]]}}}],["harm",{"_index":2551,"t":{"600":{"position":[[423,8]]}}}],["harmless",{"_index":2568,"t":{"604":{"position":[[35,8]]}}}],["harry'",{"_index":1532,"t":{"296":{"position":[[456,7],[531,7]]}}}],["hash",{"_index":1489,"t":{"288":{"position":[[460,6]]},"292":{"position":[[186,7],[669,4],[802,4]]},"294":{"position":[[109,4]]},"334":{"position":[[139,4],[291,6]]},"354":{"position":[[57,4]]},"386":{"position":[[95,4]]},"524":{"position":[[83,4]]}}}],["have",{"_index":1885,"t":{"472":{"position":[[824,6],[2868,6]]},"506":{"position":[[299,6]]},"563":{"position":[[49,6]]}}}],["haven't",{"_index":2180,"t":{"542":{"position":[[1442,7]]}}}],["hd",{"_index":2232,"t":{"544":{"position":[[824,2],[839,2]]},"546":{"position":[[2600,2]]}}}],["head",{"_index":604,"t":{"74":{"position":[[670,4]]},"216":{"position":[[794,4]]},"612":{"position":[[268,8]]}}}],["header",{"_index":1433,"t":{"268":{"position":[[410,6],[847,6]]},"278":{"position":[[212,6]]},"280":{"position":[[176,6]]}}}],["health",{"_index":1465,"t":{"280":{"position":[[18,6],[68,6]]}}}],["healthi",{"_index":1469,"t":{"280":{"position":[[212,7]]}}}],["heard",{"_index":2580,"t":{"610":{"position":[[495,5]]}}}],["heavi",{"_index":1501,"t":{"292":{"position":[[138,5]]}}}],["height",{"_index":1155,"t":{"188":{"position":[[2040,7]]}}}],["hel1.wakudev.misc",{"_index":2365,"t":{"563":{"position":[[1090,18]]}}}],["hel1.wakudev.misc.status.im",{"_index":2325,"t":{"561":{"position":[[960,29],[2032,29]]}}}],["held",{"_index":2553,"t":{"602":{"position":[[15,4]]},"610":{"position":[[1519,4]]},"612":{"position":[[532,4]]}}}],["hello",{"_index":457,"t":{"52":{"position":[[259,7]]},"268":{"position":[[485,6]]}}}],["help",{"_index":146,"t":{"10":{"position":[[349,4]]},"18":{"position":[[59,8],[150,4]]},"40":{"position":[[335,4]]},"90":{"position":[[16,5]]},"168":{"position":[[174,4]]},"206":{"position":[[538,5],[564,4]]},"246":{"position":[[985,4]]},"268":{"position":[[987,4]]},"280":{"position":[[326,4]]},"284":{"position":[[280,5]]},"320":{"position":[[285,5]]},"344":{"position":[[11,4]]},"476":{"position":[[289,5]]},"532":{"position":[[131,5]]},"551":{"position":[[276,4]]},"571":{"position":[[268,5]]},"614":{"position":[[145,4]]},"616":{"position":[[407,4]]},"622":{"position":[[369,4],[788,4]]},"626":{"position":[[253,4]]}}}],["helper",{"_index":1027,"t":{"162":{"position":[[473,6],[490,7]]}}}],["henc",{"_index":2243,"t":{"546":{"position":[[1314,5]]},"614":{"position":[[83,6]]}}}],["here",{"_index":217,"t":{"22":{"position":[[94,4]]},"94":{"position":[[0,4]]},"137":{"position":[[179,5]]},"156":{"position":[[376,5]]},"284":{"position":[[0,4]]},"286":{"position":[[85,4]]},"306":{"position":[[0,4]]},"314":{"position":[[288,4]]},"340":{"position":[[247,5],[724,5],[869,5]]},"544":{"position":[[155,4]]},"573":{"position":[[340,5],[1031,5]]}}}],["herein",{"_index":2516,"t":{"594":{"position":[[994,6],[1257,6],[1493,7],[1527,6]]},"596":{"position":[[825,6],[1004,7]]},"610":{"position":[[1422,6]]}}}],["hesit",{"_index":395,"t":{"40":{"position":[[223,8]]}}}],["hex",{"_index":749,"t":{"100":{"position":[[247,3]]},"104":{"position":[[516,3],[594,3]]},"216":{"position":[[271,3],[359,3],[385,3],[553,3]]},"374":{"position":[[35,3]]}}}],["hexadecim",{"_index":703,"t":{"92":{"position":[[372,11],[666,11],[806,11]]}}}],["hextobyt",{"_index":705,"t":{"92":{"position":[[474,10]]}}}],["hextobytes(privatekeyhex",{"_index":715,"t":{"92":{"position":[[910,26]]}}}],["hextobytes(symmetrickeyhex",{"_index":713,"t":{"92":{"position":[[854,28]]}}}],["hide",{"_index":1491,"t":{"288":{"position":[[624,4]]},"416":{"position":[[240,6]]}}}],["high",{"_index":1087,"t":{"180":{"position":[[1071,4]]},"290":{"position":[[345,4]]},"472":{"position":[[3001,4]]},"502":{"position":[[458,4]]},"569":{"position":[[59,4]]},"573":{"position":[[711,4]]},"580":{"position":[[461,4]]},"596":{"position":[[500,4],[1027,4]]}}}],["higher",{"_index":1850,"t":{"470":{"position":[[687,6]]},"557":{"position":[[967,6]]},"559":{"position":[[644,6]]},"569":{"position":[[227,6],[272,6]]}}}],["highli",{"_index":397,"t":{"40":{"position":[[312,6]]},"270":{"position":[[139,6]]},"284":{"position":[[838,6]]}}}],["highlight",{"_index":2619,"t":{"616":{"position":[[456,11]]},"620":{"position":[[233,9]]},"624":{"position":[[252,9]]}}}],["hinder",{"_index":1920,"t":{"472":{"position":[[2978,7]]}}}],["histor",{"_index":367,"t":{"38":{"position":[[357,10]]},"68":{"position":[[537,10],[661,10]]},"139":{"position":[[87,10]]},"147":{"position":[[121,10]]},"158":{"position":[[791,10]]},"206":{"position":[[412,10]]},"214":{"position":[[1513,10],[1708,10]]},"282":{"position":[[192,10]]},"304":{"position":[[195,10]]},"438":{"position":[[456,10]]},"498":{"position":[[423,10]]},"516":{"position":[[44,8]]},"586":{"position":[[587,10]]}}}],["histori",{"_index":967,"t":{"156":{"position":[[1025,8]]},"518":{"position":[[755,8]]},"520":{"position":[[48,8]]},"532":{"position":[[229,8]]},"549":{"position":[[154,7]]}}}],["historyqueri",{"_index":2085,"t":{"516":{"position":[[104,12]]},"518":{"position":[[847,12]]}}}],["historyrespons",{"_index":2086,"t":{"516":{"position":[[151,15]]},"518":{"position":[[1038,15]]}}}],["hold",{"_index":2567,"t":{"604":{"position":[[27,4]]}}}],["home/.cargo/env",{"_index":1021,"t":{"162":{"position":[[313,18]]}}}],["homebrew",{"_index":1009,"t":{"162":{"position":[[181,10]]}}}],["hongkong",{"_index":1264,"t":{"214":{"position":[[1779,8]]},"222":{"position":[[570,8]]},"224":{"position":[[498,8]]}}}],["honour",{"_index":2125,"t":{"528":{"position":[[199,7]]}}}],["hood",{"_index":1423,"t":{"264":{"position":[[172,5]]},"438":{"position":[[653,5]]}}}],["hop",{"_index":877,"t":{"118":{"position":[[581,3],[628,4]]},"567":{"position":[[614,4],[661,4]]},"569":{"position":[[175,4],[242,5],[473,4],[608,4],[644,3],[909,4],[1148,4],[1308,4],[1352,4],[1876,4]]},"573":{"position":[[1368,3],[1953,3]]},"582":{"position":[[518,5]]}}}],["hopr",{"_index":2111,"t":{"524":{"position":[[688,6]]}}}],["host",{"_index":492,"t":{"60":{"position":[[389,4]]},"112":{"position":[[472,4]]},"174":{"position":[[347,4]]},"180":{"position":[[521,4]]},"246":{"position":[[828,4]]},"352":{"position":[[56,7]]}}}],["host]:[websocket",{"_index":279,"t":{"26":{"position":[[142,16]]}}}],["hour",{"_index":1247,"t":{"214":{"position":[[698,7],[1268,7]]},"222":{"position":[[509,7],[777,7]]},"518":{"position":[[747,4]]},"520":{"position":[[40,4]]}}}],["http",{"_index":240,"t":{"24":{"position":[[350,8],[612,5]]},"112":{"position":[[59,4],[136,4],[190,4],[315,4],[520,4]]},"114":{"position":[[198,4]]},"162":{"position":[[256,8],[397,8],[545,8]]},"256":{"position":[[65,5]]},"442":{"position":[[17,5]]}}}],["http://127.0.0.1:8645/debug/v1/info",{"_index":1430,"t":{"268":{"position":[[184,37]]},"278":{"position":[[170,37]]}}}],["http://127.0.0.1:8645/debug/v1/vers",{"_index":1429,"t":{"268":{"position":[[110,40]]}}}],["http://127.0.0.1:8645/health",{"_index":1467,"t":{"280":{"position":[[141,30]]}}}],["http://127.0.0.1:8645/relay/v1/auto/messag",{"_index":1432,"t":{"268":{"position":[[359,46]]}}}],["http://127.0.0.1:8645/store/v1/messages?contenttopics=%2fmi",{"_index":1442,"t":{"268":{"position":[[725,60]]}}}],["http://localhost:3000/d/yns_4vfvk/nwaku",{"_index":1426,"t":{"266":{"position":[[6,39]]}}}],["https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.j",{"_index":353,"t":{"36":{"position":[[735,70]]}}}],["https://creativecommons.org/licenses/by/4.0",{"_index":2548,"t":{"598":{"position":[[390,45]]}}}],["https://examples.waku.org",{"_index":184,"t":{"14":{"position":[[336,26]]}}}],["https://examples.waku.org/rln",{"_index":1655,"t":{"338":{"position":[[391,29]]}}}],["https://github.com/spacejam/sl",{"_index":811,"t":{"104":{"position":[[1091,34]]}}}],["https://github.com/vacp2p/research/issues/148",{"_index":1663,"t":{"340":{"position":[[253,46]]},"424":{"position":[[476,46]]}}}],["https://github.com/waku",{"_index":605,"t":{"74":{"position":[[678,23]]},"137":{"position":[[185,23]]},"164":{"position":[[129,23]]},"244":{"position":[[99,23]]},"258":{"position":[[10,23]]},"340":{"position":[[875,23]]},"522":{"position":[[21,23],[91,23],[164,23],[235,23]]},"526":{"position":[[31,23],[137,23],[225,23],[321,23]]},"530":{"position":[[70,23],[141,23]]},"534":{"position":[[52,23],[145,23]]},"538":{"position":[[42,23],[198,23],[362,23],[504,23]]},"540":{"position":[[172,23]]},"542":{"position":[[1080,23],[1169,23],[1321,23]]},"546":{"position":[[181,23],[2830,23]]},"549":{"position":[[459,23]]},"553":{"position":[[0,23],[42,23]]},"555":{"position":[[122,23]]},"563":{"position":[[1141,23],[1264,23]]},"571":{"position":[[962,23]]}}}],["https://ideas.waku.org",{"_index":125,"t":{"6":{"position":[[1296,23]]}}}],["https://sh.rustup.r",{"_index":1019,"t":{"162":{"position":[[280,20],[421,20],[569,20]]}}}],["https://unpkg.com/@waku/sdk@latest/bundle/index.j",{"_index":324,"t":{"34":{"position":[[227,53]]}}}],["https://vac.dev/build",{"_index":1672,"t":{"340":{"position":[[730,24]]}}}],["hub",{"_index":1355,"t":{"242":{"position":[[52,3]]}}}],["huge",{"_index":2449,"t":{"573":{"position":[[2060,4]]}}}],["hundr",{"_index":2564,"t":{"602":{"position":[[537,7]]}}}],["i.",{"_index":2134,"t":{"528":{"position":[[805,5]]},"561":{"position":[[63,4]]}}}],["i13n",{"_index":2018,"t":{"498":{"position":[[176,5],[293,5],[502,5]]},"506":{"position":[[346,4]]},"510":{"position":[[93,4]]},"518":{"position":[[280,4],[1165,4]]}}}],["id",{"_index":741,"t":{"100":{"position":[[39,2],[52,2],[112,2]]},"104":{"position":[[474,2],[537,2]]},"292":{"position":[[233,3],[628,3]]},"563":{"position":[[702,3]]}}}],["id'",{"_index":1508,"t":{"292":{"position":[[807,4]]}}}],["id=\"messag",{"_index":1143,"t":{"188":{"position":[[1481,11]]}}}],["idea",{"_index":121,"t":{"6":{"position":[[1230,5]]},"565":{"position":[[537,4]]},"573":{"position":[[593,4],[1653,4]]}}}],["ideal",{"_index":2080,"t":{"514":{"position":[[329,7]]}}}],["ident",{"_index":796,"t":{"104":{"position":[[491,8],[565,8]]},"416":{"position":[[231,8]]},"420":{"position":[[116,11]]},"472":{"position":[[151,8]]},"524":{"position":[[838,11]]},"528":{"position":[[594,10]]},"588":{"position":[[99,9]]}}}],["identif",{"_index":1747,"t":{"420":{"position":[[311,14]]}}}],["identifi",{"_index":744,"t":{"100":{"position":[[185,10]]},"288":{"position":[[311,12]]},"292":{"position":[[203,10]]},"342":{"position":[[931,12]]},"358":{"position":[[68,8]]},"386":{"position":[[21,10]]},"392":{"position":[[46,10]]},"420":{"position":[[77,11]]},"422":{"position":[[161,12]]},"428":{"position":[[190,8],[344,12]]},"482":{"position":[[653,11]]},"612":{"position":[[277,11]]},"620":{"position":[[172,8]]}}}],["idl",{"_index":820,"t":{"104":{"position":[[1387,4]]}}}],["ii",{"_index":1831,"t":{"468":{"position":[[86,3]]},"470":{"position":[[583,3]]},"472":{"position":[[1572,3],[2013,3]]},"474":{"position":[[335,3]]},"542":{"position":[[1130,3],[1574,3]]},"565":{"position":[[258,3]]},"567":{"position":[[926,3]]},"610":{"position":[[965,4]]}}}],["illustr",{"_index":1566,"t":{"306":{"position":[[18,12]]}}}],["imag",{"_index":557,"t":{"68":{"position":[[2465,6],[2550,6]]},"200":{"position":[[295,5]]},"242":{"position":[[17,6],[156,6]]},"244":{"position":[[30,5],[157,5],[175,5]]},"246":{"position":[[58,7],[116,5],[129,5]]},"272":{"position":[[857,6]]}}}],["immedi",{"_index":1399,"t":{"250":{"position":[[1075,12]]},"338":{"position":[[203,9]]},"494":{"position":[[185,11]]},"606":{"position":[[217,11]]}}}],["impact",{"_index":2121,"t":{"526":{"position":[[285,6]]},"542":{"position":[[1235,6]]},"549":{"position":[[262,6],[343,7]]},"573":{"position":[[2065,6]]},"578":{"position":[[356,6]]}}}],["implement",{"_index":92,"t":{"6":{"position":[[707,9]]},"12":{"position":[[8,11]]},"32":{"position":[[205,14]]},"129":{"position":[[137,9]]},"336":{"position":[[81,15]]},"338":{"position":[[354,14]]},"372":{"position":[[34,10]]},"412":{"position":[[56,12]]},"446":{"position":[[187,15]]},"486":{"position":[[67,11]]},"584":{"position":[[50,11],[105,11],[165,11]]}}}],["impli",{"_index":2383,"t":{"569":{"position":[[281,7]]},"586":{"position":[[10,7]]},"594":{"position":[[163,8],[1385,7]]},"600":{"position":[[246,5]]}}}],["implic",{"_index":1484,"t":{"286":{"position":[[71,13]]},"576":{"position":[[106,12],[961,12]]}}}],["implicit",{"_index":2065,"t":{"508":{"position":[[287,9]]}}}],["import",{"_index":230,"t":{"24":{"position":[[181,9]]},"34":{"position":[[205,6]]},"36":{"position":[[713,6],[728,6]]},"44":{"position":[[94,6]]},"46":{"position":[[101,6],[323,6]]},"48":{"position":[[86,6]]},"50":{"position":[[83,6]]},"58":{"position":[[135,6]]},"60":{"position":[[147,6],[1228,6],[1277,6]]},"62":{"position":[[273,6],[318,6],[813,6]]},"64":{"position":[[86,6],[131,6],[178,6]]},"66":{"position":[[123,6]]},"86":{"position":[[162,6],[415,6],[882,6]]},"88":{"position":[[162,6],[570,6],[1051,6]]},"90":{"position":[[563,6],[640,6],[734,6],[2228,6],[2291,6]]},"92":{"position":[[453,6]]},"141":{"position":[[94,6]]},"143":{"position":[[87,6]]},"145":{"position":[[92,6]]},"154":{"position":[[151,6]]},"156":{"position":[[180,6]]},"186":{"position":[[182,6],[237,6],[681,6]]},"188":{"position":[[144,6],[189,6],[228,6],[286,6],[321,6]]},"190":{"position":[[208,6]]},"192":{"position":[[194,6]]},"194":{"position":[[223,6]]},"420":{"position":[[143,9]]},"454":{"position":[[131,6],[303,6]]},"456":{"position":[[7,6],[149,6]]},"458":{"position":[[7,6],[177,6]]},"460":{"position":[[133,6],[291,6],[465,6]]},"462":{"position":[[465,6],[622,6]]},"466":{"position":[[572,6],[686,6]]},"470":{"position":[[445,10]]},"524":{"position":[[861,9]]},"569":{"position":[[139,9],[1614,9]]},"573":{"position":[[346,9]]}}}],["impos",{"_index":232,"t":{"24":{"position":[[213,6]]},"308":{"position":[[517,7]]},"318":{"position":[[245,7]]},"342":{"position":[[902,7]]},"400":{"position":[[164,8]]}}}],["imposs",{"_index":1905,"t":{"472":{"position":[[2054,10]]}}}],["improv",{"_index":398,"t":{"40":{"position":[[340,7]]},"292":{"position":[[510,7]]},"294":{"position":[[544,9]]},"344":{"position":[[874,8]]},"472":{"position":[[114,12]]},"542":{"position":[[690,11]]},"622":{"position":[[196,7]]}}}],["in/out",{"_index":1869,"t":{"470":{"position":[[1645,6]]}}}],["incent",{"_index":1671,"t":{"340":{"position":[[679,9]]},"514":{"position":[[704,10],[734,10]]}}}],["incentiv",{"_index":2046,"t":{"504":{"position":[[13,12]]}}}],["incentivis",{"_index":381,"t":{"38":{"position":[[1372,15]]},"56":{"position":[[271,15]]},"338":{"position":[[20,12]]},"340":{"position":[[393,13]]},"432":{"position":[[16,11]]},"440":{"position":[[383,15]]},"498":{"position":[[146,15]]},"502":{"position":[[16,15]]},"514":{"position":[[80,12]]},"518":{"position":[[16,12]]},"536":{"position":[[67,12]]},"538":{"position":[[420,15]]}}}],["incid",{"_index":2649,"t":{"626":{"position":[[126,9]]}}}],["incident",{"_index":2558,"t":{"602":{"position":[[202,11]]}}}],["includ",{"_index":354,"t":{"36":{"position":[[814,7]]},"80":{"position":[[689,8]]},"162":{"position":[[55,9]]},"260":{"position":[[341,7]]},"270":{"position":[[404,8]]},"300":{"position":[[305,9]]},"326":{"position":[[84,8]]},"332":{"position":[[233,9],[591,9]]},"352":{"position":[[131,9]]},"358":{"position":[[182,8]]},"370":{"position":[[171,7]]},"398":{"position":[[84,9]]},"410":{"position":[[68,9]]},"418":{"position":[[364,7]]},"424":{"position":[[392,9]]},"434":{"position":[[5,8]]},"438":{"position":[[223,8],[446,9]]},"510":{"position":[[44,7]]},"590":{"position":[[181,9]]},"594":{"position":[[172,9]]},"596":{"position":[[243,7],[727,9],[1259,9]]},"598":{"position":[[233,9]]},"600":{"position":[[104,9]]},"604":{"position":[[103,9],[210,9]]},"610":{"position":[[74,8],[1873,9]]},"624":{"position":[[98,7]]}}}],["incom",{"_index":1187,"t":{"192":{"position":[[129,8]]},"206":{"position":[[163,8]]},"282":{"position":[[141,8]]},"344":{"position":[[666,8]]}}}],["incorpor",{"_index":1545,"t":{"300":{"position":[[104,12]]},"610":{"position":[[1409,12]]}}}],["increas",{"_index":880,"t":{"118":{"position":[[610,8]]},"290":{"position":[[8,8]]},"332":{"position":[[373,9]]},"502":{"position":[[327,9]]},"565":{"position":[[470,10]]},"573":{"position":[[926,10],[1580,9],[2170,8]]},"580":{"position":[[118,9]]},"582":{"position":[[159,8],[211,8]]}}}],["incur",{"_index":2634,"t":{"620":{"position":[[554,5]]}}}],["inde",{"_index":1879,"t":{"472":{"position":[[525,6]]}}}],["indemnifi",{"_index":2566,"t":{"604":{"position":[[10,9]]}}}],["independ",{"_index":2008,"t":{"492":{"position":[[110,11]]},"498":{"position":[[94,11]]}}}],["index",{"_index":792,"t":{"104":{"position":[[318,5],[328,5]]},"156":{"position":[[41,5],[793,5]]},"188":{"position":[[1248,6]]}}}],["indic",{"_index":610,"t":{"78":{"position":[[277,9]]},"186":{"position":[[930,9]]},"306":{"position":[[216,9]]},"324":{"position":[[177,10]]},"482":{"position":[[433,9]]},"559":{"position":[[687,9]]},"561":{"position":[[3664,9]]},"565":{"position":[[505,9]]},"573":{"position":[[225,8]]}}}],["individu",{"_index":2385,"t":{"569":{"position":[[542,10],[714,10],[2016,10]]}}}],["industri",{"_index":2528,"t":{"596":{"position":[[168,8]]}}}],["inf",{"_index":1333,"t":{"230":{"position":[[84,3]]},"234":{"position":[[93,3]]},"236":{"position":[[96,3]]}}}],["info",{"_index":284,"t":{"26":{"position":[[311,5],[387,5]]},"44":{"position":[[328,4]]},"48":{"position":[[611,4]]},"50":{"position":[[365,4]]},"56":{"position":[[142,4]]},"80":{"position":[[1014,4]]},"82":{"position":[[170,4]]},"90":{"position":[[176,4]]},"98":{"position":[[127,5]]},"149":{"position":[[693,4]]},"151":{"position":[[717,4]]},"156":{"position":[[935,4]]},"158":{"position":[[542,4]]},"160":{"position":[[239,4]]},"172":{"position":[[117,4]]},"176":{"position":[[673,4]]},"178":{"position":[[796,4]]},"180":{"position":[[837,4]]},"188":{"position":[[1697,4]]},"194":{"position":[[825,4]]},"198":{"position":[[206,4]]},"202":{"position":[[439,4]]},"204":{"position":[[629,4]]},"212":{"position":[[695,4]]},"222":{"position":[[697,4]]},"226":{"position":[[304,4]]},"228":{"position":[[0,4],[104,4],[209,4]]},"240":{"position":[[115,4]]},"246":{"position":[[728,4]]},"256":{"position":[[170,4]]},"268":{"position":[[163,4]]},"270":{"position":[[466,4]]},"278":{"position":[[122,4],[562,4]]},"288":{"position":[[467,4]]},"292":{"position":[[575,4]]},"308":{"position":[[231,4]]},"320":{"position":[[264,4]]},"322":{"position":[[234,4]]},"324":{"position":[[306,4]]},"344":{"position":[[838,4]]},"444":{"position":[[169,4]]}}}],["inform",{"_index":662,"t":{"90":{"position":[[366,11]]},"92":{"position":[[273,11]]},"232":{"position":[[39,11]]},"278":{"position":[[91,11]]},"288":{"position":[[257,12],[324,11]]},"306":{"position":[[875,9]]},"308":{"position":[[325,11]]},"314":{"position":[[196,8]]},"342":{"position":[[1573,11]]},"358":{"position":[[210,11]]},"362":{"position":[[51,11]]},"376":{"position":[[33,11]]},"382":{"position":[[47,11]]},"422":{"position":[[174,11]]},"428":{"position":[[357,11]]},"478":{"position":[[78,6]]},"486":{"position":[[191,11]]},"490":{"position":[[937,11]]},"546":{"position":[[34,8]]},"573":{"position":[[986,11]]},"594":{"position":[[1076,13],[1245,11],[1505,11]]},"596":{"position":[[803,11],[982,11],[1246,12]]}}}],["infrastructur",{"_index":96,"t":{"6":{"position":[[808,15]]},"340":{"position":[[774,14]]},"432":{"position":[[153,14]]},"440":{"position":[[134,15],[301,14]]}}}],["infring",{"_index":2505,"t":{"594":{"position":[[278,12]]}}}],["infura",{"_index":1793,"t":{"442":{"position":[[122,6],[146,6]]}}}],["init",{"_index":1033,"t":{"162":{"position":[[639,4]]}}}],["initi",{"_index":1650,"t":{"336":{"position":[[73,7]]},"348":{"position":[[21,7]]},"514":{"position":[[856,7]]},"584":{"position":[[8,7]]},"616":{"position":[[17,7],[144,7]]}}}],["initialis",{"_index":568,"t":{"72":{"position":[[0,10],[191,10]]},"194":{"position":[[143,11]]},"312":{"position":[[5,12]]}}}],["inject",{"_index":2144,"t":{"532":{"position":[[200,9]]},"588":{"position":[[211,9]]}}}],["innov",{"_index":1638,"t":{"332":{"position":[[155,10]]}}}],["input",{"_index":1124,"t":{"188":{"position":[[502,5],[1462,6],[1493,6],[2341,5]]},"190":{"position":[[100,5]]}}}],["inputmessag",{"_index":1121,"t":{"188":{"position":[[363,14],[471,12]]},"190":{"position":[[614,12]]}}}],["inputmessage.length",{"_index":1181,"t":{"190":{"position":[[445,19]]}}}],["insecur",{"_index":237,"t":{"24":{"position":[[288,8]]},"28":{"position":[[57,8]]}}}],["insert",{"_index":2148,"t":{"534":{"position":[[129,9]]},"557":{"position":[[8,6],[473,7],[1469,6]]},"563":{"position":[[106,6],[445,6],[1416,9],[1523,9],[1617,6],[1658,6],[1793,9]]}}}],["inspir",{"_index":123,"t":{"6":{"position":[[1254,12]]},"510":{"position":[[169,8]]}}}],["instal",{"_index":318,"t":{"34":{"position":[[0,7],[81,7],[175,10]]},"36":{"position":[[501,7],[583,7],[680,10]]},"42":{"position":[[214,12]]},"50":{"position":[[398,12]]},"62":{"position":[[47,7],[92,7]]},"68":{"position":[[9,7],[142,12],[445,12],[1347,12]]},"72":{"position":[[244,9]]},"84":{"position":[[0,7],[122,7]]},"162":{"position":[[205,7],[341,7],[600,7]]},"184":{"position":[[292,7],[399,7]]},"240":{"position":[[17,9]]}}}],["instanc",{"_index":2049,"t":{"506":{"position":[[92,9]]},"528":{"position":[[1018,9]]},"563":{"position":[[342,9]]}}}],["instanceof",{"_index":619,"t":{"80":{"position":[[732,10]]}}}],["instead",{"_index":512,"t":{"60":{"position":[[1601,7]]},"104":{"position":[[1543,7]]},"160":{"position":[[230,8]]},"226":{"position":[[453,8]]},"250":{"position":[[116,7]]},"288":{"position":[[283,7]]},"420":{"position":[[89,7]]},"462":{"position":[[116,8],[180,8],[285,8]]},"464":{"position":[[51,8]]},"466":{"position":[[137,8],[325,7]]},"468":{"position":[[150,8]]},"578":{"position":[[283,8]]},"584":{"position":[[240,8]]}}}],["institut",{"_index":2593,"t":{"610":{"position":[[1275,11]]},"626":{"position":[[50,9]]}}}],["instruct",{"_index":544,"t":{"68":{"position":[[1331,12],[2436,13]]},"214":{"position":[[856,8]]},"240":{"position":[[64,12]]},"248":{"position":[[122,12],[323,12]]},"342":{"position":[[1776,12]]},"444":{"position":[[59,12]]}}}],["instrument",{"_index":2405,"t":{"571":{"position":[[154,10]]}}}],["integ",{"_index":2191,"t":{"544":{"position":[[264,8]]}}}],["integr",{"_index":15,"t":{"2":{"position":[[164,9]]},"6":{"position":[[329,9]]},"12":{"position":[[53,9],[314,11]]},"32":{"position":[[306,9]]},"38":{"position":[[644,9]]},"68":{"position":[[1161,9],[1669,9]]},"84":{"position":[[34,11]]},"90":{"position":[[141,9]]},"182":{"position":[[210,9]]},"184":{"position":[[326,11]]},"194":{"position":[[967,10]]},"344":{"position":[[825,12]]},"402":{"position":[[44,9]]},"412":{"position":[[242,10]]},"416":{"position":[[192,10]]},"426":{"position":[[66,9]]},"620":{"position":[[418,10]]}}}],["intellectu",{"_index":2506,"t":{"594":{"position":[[294,12]]}}}],["intend",{"_index":1768,"t":{"432":{"position":[[5,7]]},"478":{"position":[[66,8]]},"594":{"position":[[1042,8]]}}}],["intention",{"_index":1751,"t":{"424":{"position":[[104,13]]}}}],["inter",{"_index":2446,"t":{"573":{"position":[[1471,5]]}}}],["interact",{"_index":76,"t":{"6":{"position":[[346,12],[520,12]]},"14":{"position":[[87,8]]},"26":{"position":[[56,13]]},"44":{"position":[[62,8]]},"141":{"position":[[62,8]]},"196":{"position":[[478,8],[523,8]]},"220":{"position":[[29,8]]},"250":{"position":[[747,12]]},"252":{"position":[[180,8]]},"254":{"position":[[89,8]]},"268":{"position":[[53,11]]},"270":{"position":[[413,11]]},"278":{"position":[[8,8]]},"298":{"position":[[95,11]]},"306":{"position":[[35,11]]},"312":{"position":[[848,12]]},"380":{"position":[[94,11]]},"442":{"position":[[182,8]]},"484":{"position":[[218,8]]},"520":{"position":[[179,12]]},"614":{"position":[[348,11]]},"616":{"position":[[152,12],[291,12]]}}}],["interconnect",{"_index":2475,"t":{"584":{"position":[[372,14]]}}}],["interest",{"_index":1383,"t":{"248":{"position":[[243,10]]},"288":{"position":[[120,10]]},"390":{"position":[[155,9]]},"392":{"position":[[74,8],[112,10]]},"482":{"position":[[699,8]]},"567":{"position":[[531,10]]}}}],["interfac",{"_index":169,"t":{"14":{"position":[[44,9]]},"188":{"position":[[19,9],[1159,11],[1989,9]]},"192":{"position":[[171,10]]},"196":{"position":[[577,9]]}}}],["intern",{"_index":2544,"t":{"598":{"position":[[87,13]]},"610":{"position":[[1325,13],[1972,13]]}}}],["internal/priv",{"_index":1804,"t":{"450":{"position":[[178,16]]}}}],["internet",{"_index":1714,"t":{"370":{"position":[[97,8],[135,8]]},"470":{"position":[[542,8]]},"542":{"position":[[114,8]]}}}],["interoper",{"_index":334,"t":{"36":{"position":[[190,17]]},"68":{"position":[[314,17]]}}}],["interpret",{"_index":2611,"t":{"612":{"position":[[423,14]]}}}],["interv",{"_index":1945,"t":{"474":{"position":[[1121,8]]}}}],["introduc",{"_index":1557,"t":{"302":{"position":[[275,10]]},"498":{"position":[[447,9]]},"508":{"position":[[12,10],[391,10]]}}}],["invalid",{"_index":293,"t":{"28":{"position":[[81,7],[188,10]]},"508":{"position":[[243,8]]},"612":{"position":[[537,7]]}}}],["invest",{"_index":2336,"t":{"561":{"position":[[3177,8]]}}}],["investig",{"_index":295,"t":{"28":{"position":[[230,11]]},"622":{"position":[[462,14],[610,14],[696,11],[802,14]]}}}],["invoc",{"_index":1053,"t":{"166":{"position":[[54,10]]}}}],["involv",{"_index":1520,"t":{"294":{"position":[[593,8]]},"314":{"position":[[113,8]]},"328":{"position":[[478,8]]},"342":{"position":[[236,8]]},"502":{"position":[[766,8]]},"524":{"position":[[1045,9]]},"569":{"position":[[786,8]]}}}],["io4qdxtotg86ppck2kvmevcxc2advzwrxxsvnzeaoa0jhshbm5qed69rqz1s1mweeqj3aoklo_7eu9iibcpmveklcqbgmlkgny0ixnly3ayntzrmaeddbhk1gx6y_zv5dvw5qb3dtsommvhtzo1wsorrf2lol2ddwrwgimohxdha3uyaw",{"_index":1079,"t":{"178":{"position":[[618,177]]},"236":{"position":[[218,177],[441,177]]}}}],["ip",{"_index":493,"t":{"60":{"position":[[394,4]]},"102":{"position":[[161,3]]},"116":{"position":[[224,3]]},"118":{"position":[[365,2],[389,2],[439,2],[481,2],[530,2]]},"174":{"position":[[352,4]]},"176":{"position":[[443,3],[669,3],[906,3]]},"180":{"position":[[526,4]]},"212":{"position":[[778,2]]},"226":{"position":[[103,2]]},"246":{"position":[[573,3],[638,3]]},"288":{"position":[[99,2]]},"328":{"position":[[259,3]]},"332":{"position":[[243,3]]},"334":{"position":[[513,2]]},"482":{"position":[[549,2],[620,2],[727,2],[833,2]]}}}],["ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamqcsh9v81xoqtwgut3qwkzwbwy1tttqwpr3djhu2tswmn",{"_index":1342,"t":{"230":{"position":[[391,80]]}}}],["ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamubpqufqqje3jiqob5yoiubbya59nb4qqezeitnghea6w",{"_index":1460,"t":{"278":{"position":[[269,82]]}}}],["ip4/0.0.0.0/tcp/60002/ws/p2p/16uiu2hakzjwwgeaxfegnmkfpspc6vgbrqcdtlg5q3gmk2v4pqw7h",{"_index":499,"t":{"60":{"position":[[528,86],[931,86]]},"64":{"position":[[307,86]]}}}],["ip4/0.0.0.0/tcp/60003/ws/p2p/16uiu2hamfba7lgtwy5wvvikdmxvo3cklqkmvvtudu63fe8safeqj",{"_index":500,"t":{"60":{"position":[[615,86],[1018,86]]},"64":{"position":[[394,86]]}}}],["ip4/0.0.0.0/tcp/8000/ws/p2p/16uiu2hamqcsh9v81xoqtwgut3qwkzwbwy1tttqwpr3djhu2tswmn",{"_index":1343,"t":{"230":{"position":[[502,82]]}}}],["ipf",{"_index":564,"t":{"68":{"position":[[2640,4]]},"342":{"position":[[970,5],[1041,4]]},"510":{"position":[[81,5]]}}}],["ipt",{"_index":2401,"t":{"569":{"position":[[2005,3]]}}}],["ipv4",{"_index":784,"t":{"102":{"position":[[294,4]]},"212":{"position":[[18,4],[67,4]]}}}],["ish",{"_index":2458,"t":{"578":{"position":[[29,4],[92,4]]}}}],["isload",{"_index":1111,"t":{"186":{"position":[[791,9],[918,11]]},"188":{"position":[[641,9]]}}}],["isn't",{"_index":546,"t":{"68":{"position":[[1737,5]]}}}],["issu",{"_index":141,"t":{"10":{"position":[[264,6]]},"18":{"position":[[15,6]]},"24":{"position":[[673,6],[909,6]]},"30":{"position":[[322,5],[397,6]]},"40":{"position":[[243,5]]},"68":{"position":[[2103,6]]},"80":{"position":[[1097,7]]},"246":{"position":[[900,6]]},"268":{"position":[[902,6]]},"280":{"position":[[241,6]]},"468":{"position":[[5,5]]},"528":{"position":[[549,7]]},"538":{"position":[[29,6]]},"540":{"position":[[11,5]]},"542":{"position":[[1034,5],[1307,6],[1495,5]]},"563":{"position":[[37,6]]},"567":{"position":[[824,5]]},"576":{"position":[[137,5]]},"618":{"position":[[485,6],[621,7]]},"622":{"position":[[480,7],[880,6],[912,5]]}}}],["it'",{"_index":229,"t":{"24":{"position":[[176,4]]},"68":{"position":[[2510,4]]},"272":{"position":[[190,4]]},"514":{"position":[[875,4]]},"546":{"position":[[802,4]]},"565":{"position":[[230,4]]},"573":{"position":[[740,4],[2255,4]]},"586":{"position":[[462,4]]}}}],["item",{"_index":1172,"t":{"188":{"position":[[2315,6]]},"624":{"position":[[262,5]]}}}],["itself",{"_index":1226,"t":{"206":{"position":[[458,7]]},"214":{"position":[[1559,7]]},"518":{"position":[[156,6]]},"557":{"position":[[1359,6]]},"573":{"position":[[1526,7]]},"582":{"position":[[273,6]]},"588":{"position":[[255,7]]}}}],["iu4qbkyj8ovxwz4fialxz_1a8docu2wc",{"_index":1347,"t":{"234":{"position":[[212,32],[445,32]]}}}],["iu4qcqzxzdb_jsymloyor0f5e_95hbiywgo_wgx2riddbmcjzktzmlcr0wmmzv47lgik_tvwww5ming90ris83tismbgmlkgny0gmlwhaaaaacjc2vjcdi1nmsxoqpszztg",{"_index":1462,"t":{"278":{"position":[[371,131]]}}}],["javascript",{"_index":161,"t":{"12":{"position":[[227,10]]},"22":{"position":[[161,10]]},"32":{"position":[[23,10],[151,10]]},"68":{"position":[[70,10],[1453,10],[1722,10]]},"182":{"position":[[23,10]]},"196":{"position":[[594,10]]}}}],["javascript/typescript",{"_index":158,"t":{"12":{"position":[[167,21]]}}}],["jmeter",{"_index":2311,"t":{"559":{"position":[[416,7],[584,6],[787,6]]}}}],["join",{"_index":1227,"t":{"210":{"position":[[3,4]]},"276":{"position":[[3,4]]}}}],["jq",{"_index":1014,"t":{"162":{"position":[[240,2]]}}}],["js",{"_index":392,"t":{"40":{"position":[[112,3],[256,2]]},"54":{"position":[[1076,2]]},"74":{"position":[[266,2],[425,2]]},"158":{"position":[[878,2]]},"250":{"position":[[796,2]]},"338":{"position":[[387,3],[421,3]]}}}],["json",{"_index":349,"t":{"36":{"position":[[447,4]]},"68":{"position":[[425,5]]},"98":{"position":[[278,4]]}}}],["judg",{"_index":2581,"t":{"610":{"position":[[506,6]]}}}],["jump",{"_index":2394,"t":{"569":{"position":[[1342,4]]}}}],["juri",{"_index":2583,"t":{"610":{"position":[[615,4]]}}}],["jurisdict",{"_index":2515,"t":{"594":{"position":[[826,13]]},"610":{"position":[[650,14]]}}}],["k",{"_index":291,"t":{"28":{"position":[[50,1],[128,1]]},"290":{"position":[[17,1]]},"292":{"position":[[584,1],[595,1],[771,1],[829,1]]},"528":{"position":[[346,1],[404,1]]}}}],["kademlia'",{"_index":878,"t":{"118":{"position":[[587,10]]}}}],["kb",{"_index":2284,"t":{"557":{"position":[[293,3]]}}}],["kbyte",{"_index":1884,"t":{"472":{"position":[[817,6],[1034,6],[1623,6]]},"474":{"position":[[502,6]]}}}],["kbytes/msg",{"_index":1934,"t":{"474":{"position":[[726,10]]}}}],["kbytes/sec",{"_index":1936,"t":{"474":{"position":[[743,10],[785,10]]}}}],["keen",{"_index":2615,"t":{"614":{"position":[[107,4]]},"622":{"position":[[361,4]]},"624":{"position":[[55,4],[180,4]]}}}],["keep",{"_index":539,"t":{"68":{"position":[[866,7]]},"88":{"position":[[279,4]]},"104":{"position":[[1348,4],[1372,4]]},"124":{"position":[[177,4]]},"166":{"position":[[136,4]]},"250":{"position":[[1088,4],[1271,4]]},"286":{"position":[[113,4]]},"528":{"position":[[98,5]]},"542":{"position":[[411,4]]},"561":{"position":[[1708,5]]},"576":{"position":[[888,4]]}}}],["kept",{"_index":2598,"t":{"610":{"position":[[1742,4]]}}}],["key",{"_index":216,"t":{"22":{"position":[[89,4],[172,3]]},"86":{"position":[[43,3],[157,4],[258,3],[641,3],[1265,3],[1357,3]]},"88":{"position":[[31,3],[64,3],[157,4],[274,4],[353,3],[374,4],[521,3],[792,3],[996,3],[1440,3]]},"90":{"position":[[313,3],[536,4],[855,3],[935,4],[1292,3],[1360,3],[1587,3],[1655,3],[2045,3],[2134,3],[2388,3],[2815,3],[2896,3],[3078,3]]},"92":{"position":[[27,4],[140,4],[187,3],[269,3],[364,4],[554,4],[658,4],[796,4]]},"96":{"position":[[182,3]]},"100":{"position":[[232,3]]},"104":{"position":[[477,3],[507,3],[551,3],[585,3],[837,3],[849,3]]},"122":{"position":[[213,3],[239,3]]},"176":{"position":[[284,5],[346,3]]},"206":{"position":[[136,3]]},"216":{"position":[[26,3],[144,3],[215,4],[258,3],[495,3],[546,3],[629,3],[728,3],[829,3],[846,3],[1015,3]]},"218":{"position":[[461,3],[488,3],[707,3],[734,3],[1058,3],[1197,3]]},"262":{"position":[[34,3]]},"288":{"position":[[379,5],[456,3]]},"292":{"position":[[244,4]]},"374":{"position":[[7,3],[55,3]]},"386":{"position":[[121,4]]},"416":{"position":[[104,3]]},"430":{"position":[[118,3]]},"563":{"position":[[624,3],[687,3]]}}}],["key={index",{"_index":1136,"t":{"188":{"position":[[1265,11]]}}}],["key]@[domain",{"_index":524,"t":{"62":{"position":[[433,12]]},"176":{"position":[[603,12]]}}}],["keystore/keystore.json",{"_index":1419,"t":{"262":{"position":[[314,22]]}}}],["kind",{"_index":736,"t":{"98":{"position":[[211,4]]},"594":{"position":[[146,5]]}}}],["kit",{"_index":175,"t":{"14":{"position":[[172,3]]}}}],["knowledg",{"_index":1685,"t":{"342":{"position":[[1285,9]]},"394":{"position":[[58,9]]},"518":{"position":[[427,9]]},"520":{"position":[[134,10]]}}}],["known",{"_index":1581,"t":{"312":{"position":[[222,5]]},"518":{"position":[[732,5]]},"546":{"position":[[2080,5]]},"610":{"position":[[2160,5]]}}}],["l",{"_index":1051,"t":{"164":{"position":[[197,1]]}}}],["laid",{"_index":1991,"t":{"490":{"position":[[240,4]]}}}],["languag",{"_index":151,"t":{"12":{"position":[[78,9]]},"610":{"position":[[1765,8]]}}}],["laptop",{"_index":2162,"t":{"542":{"position":[[88,6]]},"546":{"position":[[600,7]]}}}],["larg",{"_index":1658,"t":{"340":{"position":[[123,5]]},"342":{"position":[[1057,6],[1178,5]]}}}],["larger",{"_index":1642,"t":{"332":{"position":[[567,6]]}}}],["last",{"_index":980,"t":{"158":{"position":[[710,4]]},"214":{"position":[[1246,4]]},"478":{"position":[[13,4]]},"590":{"position":[[13,4]]}}}],["lastmessag",{"_index":960,"t":{"156":{"position":[[628,11]]}}}],["late",{"_index":2079,"t":{"514":{"position":[[122,4]]}}}],["latenc",{"_index":1597,"t":{"314":{"position":[[279,8]]},"328":{"position":[[186,8]]},"332":{"position":[[411,8]]},"569":{"position":[[1376,7]]},"571":{"position":[[453,7]]},"573":{"position":[[1482,7]]},"582":{"position":[[569,7]]}}}],["latency=100m",{"_index":2410,"t":{"571":{"position":[[430,14]]}}}],["later",{"_index":1571,"t":{"306":{"position":[[929,5]]},"322":{"position":[[121,6]]},"532":{"position":[[292,6]]}}}],["latest",{"_index":391,"t":{"40":{"position":[[76,6]]},"72":{"position":[[354,6]]},"160":{"position":[[92,6]]},"272":{"position":[[606,6]]},"586":{"position":[[140,6]]}}}],["latitud",{"_index":2281,"t":{"557":{"position":[[241,8]]}}}],["launch",{"_index":1422,"t":{"264":{"position":[[0,6]]}}}],["law",{"_index":2512,"t":{"594":{"position":[[708,4],[976,5]]},"602":{"position":[[639,4]]},"608":{"position":[[6,3],[145,4]]},"610":{"position":[[66,3]]}}}],["lawsuit",{"_index":2604,"t":{"610":{"position":[[2241,7]]}}}],["layer",{"_index":93,"t":{"6":{"position":[[741,5],[824,5],[908,5]]},"418":{"position":[[16,6]]},"420":{"position":[[46,7]]},"444":{"position":[[248,5]]}}}],["lead",{"_index":1267,"t":{"216":{"position":[[50,7]]},"420":{"position":[[283,7]]},"528":{"position":[[722,5]]}}}],["leaf",{"_index":1649,"t":{"334":{"position":[[402,4]]}}}],["leak",{"_index":1689,"t":{"342":{"position":[[1556,4]]}}}],["learn",{"_index":25,"t":{"2":{"position":[[286,5]]},"38":{"position":[[68,5],[189,5],[324,5],[458,5],[592,5],[727,5],[880,5],[1009,5],[1133,5],[1265,5]]},"44":{"position":[[515,5]]},"68":{"position":[[494,5],[628,5]]},"168":{"position":[[182,5]]},"170":{"position":[[174,5]]},"194":{"position":[[1157,5]]},"196":{"position":[[80,5]]},"236":{"position":[[815,5]]},"246":{"position":[[1163,5]]},"254":{"position":[[51,5]]},"268":{"position":[[1199,5]]},"274":{"position":[[178,5]]},"280":{"position":[[519,5]]},"282":{"position":[[308,5]]},"294":{"position":[[443,5]]},"334":{"position":[[537,8]]},"342":{"position":[[121,5]]},"438":{"position":[[533,5]]}}}],["leav",{"_index":1892,"t":{"472":{"position":[[1116,5]]},"546":{"position":[[2514,7]]},"584":{"position":[[658,7]]}}}],["led",{"_index":2418,"t":{"571":{"position":[[834,3]]}}}],["legal",{"_index":1958,"t":{"480":{"position":[[212,5]]},"482":{"position":[[199,5]]},"592":{"position":[[152,5]]},"594":{"position":[[431,9],[785,7],[1565,6]]},"602":{"position":[[93,5]]}}}],["legal@free.technolog",{"_index":2012,"t":{"496":{"position":[[89,22]]},"612":{"position":[[902,22]]}}}],["legisl",{"_index":1970,"t":{"482":{"position":[[245,12]]},"488":{"position":[[713,12]]},"490":{"position":[[269,12]]}}}],["legitim",{"_index":1973,"t":{"482":{"position":[[688,10]]}}}],["leobago",{"_index":2187,"t":{"544":{"position":[[175,8]]}}}],["less",{"_index":881,"t":{"118":{"position":[[623,4]]},"442":{"position":[[263,5]]},"546":{"position":[[437,5],[1085,4],[1803,4]]},"569":{"position":[[237,4],[248,4]]}}}],["let",{"_index":1220,"t":{"204":{"position":[[232,4]]},"470":{"position":[[14,4]]},"472":{"position":[[687,4]]},"474":{"position":[[202,4]]}}}],["let'",{"_index":1115,"t":{"188":{"position":[[0,5]]},"218":{"position":[[1303,5]]},"569":{"position":[[0,5]]}}}],["level",{"_index":729,"t":{"98":{"position":[[35,5],[76,5],[105,7]]},"204":{"position":[[99,5]]},"228":{"position":[[113,6]]},"282":{"position":[[98,5]]},"350":{"position":[[68,5]]},"488":{"position":[[297,5]]},"561":{"position":[[1723,5]]},"569":{"position":[[64,6]]}}}],["leverag",{"_index":1712,"t":{"366":{"position":[[57,9]]},"372":{"position":[[64,9]]},"614":{"position":[[150,8]]}}}],["liabil",{"_index":1919,"t":{"472":{"position":[[2954,9]]},"492":{"position":[[179,9]]},"602":{"position":[[73,10],[484,9],[572,9]]}}}],["liabl",{"_index":2552,"t":{"600":{"position":[[498,6]]},"602":{"position":[[20,6]]}}}],["lib",{"_index":1029,"t":{"162":{"position":[[527,4]]}}}],["libp2p",{"_index":200,"t":{"18":{"position":[[86,6]]},"20":{"position":[[195,7]]},"22":{"position":[[277,6]]},"60":{"position":[[1377,7]]},"62":{"position":[[623,7],[935,7]]},"64":{"position":[[670,7]]},"82":{"position":[[185,6]]},"100":{"position":[[318,6],[755,6]]},"180":{"position":[[890,6]]},"206":{"position":[[172,6]]},"296":{"position":[[655,6]]},"310":{"position":[[117,6]]},"316":{"position":[[126,6]]},"342":{"position":[[298,6]]},"364":{"position":[[0,6]]},"420":{"position":[[60,6]]},"430":{"position":[[30,7]]},"436":{"position":[[0,6]]},"557":{"position":[[723,8]]}}}],["libp2p'",{"_index":1769,"t":{"432":{"position":[[75,8]]}}}],["libp2p.getp",{"_index":533,"t":{"66":{"position":[[66,17]]}}}],["libp2p/bootstrap",{"_index":532,"t":{"64":{"position":[[157,20]]}}}],["libp2p/websocket",{"_index":505,"t":{"60":{"position":[[1255,21]]}}}],["libp2p/websockets/filt",{"_index":507,"t":{"60":{"position":[[1310,29]]}}}],["libpq",{"_index":1023,"t":{"162":{"position":[[372,5]]}}}],["libpq.5.dylib",{"_index":1036,"t":{"162":{"position":[[672,13]]}}}],["libpq5",{"_index":1013,"t":{"162":{"position":[[233,6]]}}}],["libpqisbusi",{"_index":2343,"t":{"561":{"position":[[3641,13]]}}}],["librari",{"_index":1004,"t":{"162":{"position":[[130,8]]},"402":{"position":[[16,10]]},"618":{"position":[[47,9]]},"622":{"position":[[392,8]]}}}],["licenc",{"_index":2546,"t":{"598":{"position":[[138,7],[342,8]]}}}],["licens",{"_index":2013,"t":{"496":{"position":[[129,8]]},"598":{"position":[[101,7]]},"612":{"position":[[942,8]]}}}],["light",{"_index":362,"t":{"38":{"position":[[167,5],[231,5],[253,5],[380,5]]},"42":{"position":[[88,5],[126,5]]},"44":{"position":[[47,5],[161,5]]},"48":{"position":[[191,7]]},"52":{"position":[[49,5],[415,5]]},"54":{"position":[[1018,5],[1070,5],[1083,5]]},"76":{"position":[[169,5],[211,5]]},"86":{"position":[[699,5]]},"88":{"position":[[850,5]]},"90":{"position":[[1750,5]]},"139":{"position":[[47,5]]},"141":{"position":[[47,5],[161,5]]},"158":{"position":[[816,5]]},"186":{"position":[[297,5],[437,5],[604,5],[759,5],[841,5]]},"188":{"position":[[609,5],[1080,5]]},"190":{"position":[[387,5]]},"222":{"position":[[25,5]]},"224":{"position":[[25,5],[51,5],[163,5]]},"276":{"position":[[527,5]]},"288":{"position":[[23,5]]},"304":{"position":[[289,5]]},"308":{"position":[[165,5]]},"312":{"position":[[800,5]]},"320":{"position":[[23,5]]},"324":{"position":[[0,5],[321,5]]},"360":{"position":[[34,5]]},"366":{"position":[[2,5]]},"368":{"position":[[0,5],[34,5]]},"384":{"position":[[57,5]]},"428":{"position":[[522,5]]},"454":{"position":[[56,5]]},"512":{"position":[[245,5],[292,5],[455,5],[526,5],[615,5],[677,5],[717,5]]},"516":{"position":[[16,5]]},"524":{"position":[[934,5]]},"538":{"position":[[459,5]]},"546":{"position":[[723,5],[1573,5],[1689,5]]},"576":{"position":[[549,5]]}}}],["lightn",{"_index":2110,"t":{"524":{"position":[[674,10]]}}}],["lightnodeprovid",{"_index":1099,"t":{"186":{"position":[[90,17],[246,17],[484,18],[535,20]]}}}],["lightpush",{"_index":526,"t":{"62":{"position":[[520,10]]},"64":{"position":[[550,10]]},"110":{"position":[[31,9],[54,9],[125,9]]},"224":{"position":[[81,9],[245,9],[400,9]]},"512":{"position":[[281,10],[990,10]]},"538":{"position":[[475,10]]}}}],["lightpush.send",{"_index":450,"t":{"52":{"position":[[110,16]]}}}],["lightpush=tru",{"_index":1323,"t":{"224":{"position":[[119,14]]}}}],["lightpushnod",{"_index":853,"t":{"110":{"position":[[85,13]]},"224":{"position":[[191,13]]}}}],["lightpushnode=/dns4/nod",{"_index":1325,"t":{"224":{"position":[[464,24]]}}}],["lightpushnode=[light",{"_index":1324,"t":{"224":{"position":[[309,20]]}}}],["lightweight",{"_index":1445,"t":{"270":{"position":[[11,11]]},"284":{"position":[[924,11]]},"320":{"position":[[149,11]]},"360":{"position":[[158,11]]}}}],["like",{"_index":77,"t":{"6":{"position":[[364,5]]}}}],["limit",{"_index":234,"t":{"24":{"position":[[228,11]]},"68":{"position":[[1784,12]]},"118":{"position":[[392,5],[484,5]]},"124":{"position":[[143,11]]},"135":{"position":[[72,12]]},"262":{"position":[[186,7],[248,6]]},"304":{"position":[[73,7],[347,7]]},"308":{"position":[[87,7]]},"318":{"position":[[60,5],[153,5]]},"320":{"position":[[245,7]]},"324":{"position":[[57,7]]},"328":{"position":[[293,7]]},"332":{"position":[[720,7]]},"338":{"position":[[90,5],[149,7]]},"342":{"position":[[1224,8],[1256,8]]},"366":{"position":[[27,7]]},"394":{"position":[[5,5],[93,8]]},"398":{"position":[[9,7]]},"400":{"position":[[63,5],[135,5]]},"408":{"position":[[130,7]]},"414":{"position":[[137,7]]},"418":{"position":[[314,12]]},"424":{"position":[[418,5]]},"434":{"position":[[259,7]]},"438":{"position":[[281,8]]},"468":{"position":[[114,8],[301,8],[323,6]]},"470":{"position":[[587,7]]},"472":{"position":[[202,5],[227,5],[450,8],[711,5],[761,7],[2266,8],[2340,11],[3129,6]]},"474":{"position":[[917,5]]},"476":{"position":[[162,6],[201,5],[320,6]]},"482":{"position":[[10,5]]},"484":{"position":[[19,7]]},"490":{"position":[[40,5]]},"534":{"position":[[110,5]]},"540":{"position":[[277,5]]},"542":{"position":[[917,8],[994,7],[1396,5]]},"546":{"position":[[2435,7],[2774,5]]},"549":{"position":[[83,5]]},"557":{"position":[[676,11]]},"565":{"position":[[125,11]]},"584":{"position":[[519,7]]},"594":{"position":[[190,10]]},"602":{"position":[[513,7],[558,10]]},"604":{"position":[[228,10]]},"610":{"position":[[570,8],[2039,12]]},"612":{"position":[[402,6]]},"620":{"position":[[533,11]]}}}],["line",{"_index":722,"t":{"96":{"position":[[85,4]]},"168":{"position":[[141,4]]},"196":{"position":[[859,4]]},"198":{"position":[[83,4],[314,4]]},"200":{"position":[[51,4],[272,4]]},"202":{"position":[[516,4]]},"204":{"position":[[705,4]]},"546":{"position":[[832,5]]}}}],["link",{"_index":1035,"t":{"162":{"position":[[664,4]]},"288":{"position":[[94,4]]},"420":{"position":[[275,7]]},"422":{"position":[[110,7],[364,6],[502,6]]},"428":{"position":[[407,4],[501,4]]},"492":{"position":[[37,5]]},"514":{"position":[[351,6]]},"573":{"position":[[827,5]]},"594":{"position":[[613,6]]},"600":{"position":[[39,5],[182,7]]}}}],["linkabl",{"_index":1763,"t":{"428":{"position":[[284,8]]}}}],["linux",{"_index":993,"t":{"160":{"position":[[319,5]]},"162":{"position":[[169,5]]},"216":{"position":[[287,6],[462,6]]}}}],["list",{"_index":186,"t":{"14":{"position":[[374,4]]},"60":{"position":[[23,4],[478,4],[881,4]]},"62":{"position":[[204,4],[230,4],[393,4]]},"64":{"position":[[257,4]]},"116":{"position":[[119,4]]},"149":{"position":[[220,4]]},"151":{"position":[[191,4]]},"176":{"position":[[190,4],[366,4],[884,5]]},"192":{"position":[[394,4]]},"246":{"position":[[203,4]]},"328":{"position":[[416,4]]},"332":{"position":[[462,4],[574,4],[745,6],[880,8]]},"498":{"position":[[512,4]]},"518":{"position":[[1096,4]]}}}],["listen",{"_index":432,"t":{"48":{"position":[[769,6]]},"100":{"position":[[258,6],[296,9],[383,9]]},"112":{"position":[[106,9],[163,9]]},"114":{"position":[[123,9],[188,9]]},"118":{"position":[[122,9]]},"122":{"position":[[114,9]]},"196":{"position":[[1652,9]]},"206":{"position":[[152,6]]},"218":{"position":[[286,9],[636,9]]},"220":{"position":[[229,9],[348,9],[793,9],[839,9]]},"228":{"position":[[63,9]]},"230":{"position":[[40,9],[118,9],[359,9],[474,9]]},"236":{"position":[[668,9]]},"246":{"position":[[833,10]]},"278":{"position":[[611,9]]},"344":{"position":[[485,9]]},"374":{"position":[[86,9]]}}}],["listenaddress",{"_index":1459,"t":{"278":{"position":[[248,18],[571,15]]}}}],["litig",{"_index":2577,"t":{"610":{"position":[[277,10],[474,10]]}}}],["live",{"_index":2113,"t":{"524":{"position":[[832,5]]},"536":{"position":[[162,4]]},"571":{"position":[[541,4]]},"624":{"position":[[32,5]]}}}],["ln",{"_index":1039,"t":{"162":{"position":[[740,2]]}}}],["load",{"_index":109,"t":{"6":{"position":[[991,5]]},"96":{"position":[[43,5]]},"264":{"position":[[144,6]]},"294":{"position":[[268,4]]},"308":{"position":[[536,4]]},"354":{"position":[[129,4]]}}}],["local",{"_index":214,"t":{"22":{"position":[[57,5]]},"24":{"position":[[499,8]]},"60":{"position":[[383,5],[1546,5],[1693,8],[1749,7]]},"92":{"position":[[290,5]]},"174":{"position":[[341,5]]},"180":{"position":[[515,5]]},"218":{"position":[[887,5]]},"244":{"position":[[36,8]]},"246":{"position":[[181,7]]},"502":{"position":[[636,5]]},"530":{"position":[[47,5]]},"557":{"position":[[223,7]]},"561":{"position":[[735,8]]},"586":{"position":[[214,7]]},"594":{"position":[[970,5]]}}}],["localhost",{"_index":246,"t":{"24":{"position":[[516,9]]},"112":{"position":[[629,12]]}}}],["locat",{"_index":485,"t":{"58":{"position":[[90,6]]},"176":{"position":[[379,9]]},"196":{"position":[[1798,6]]},"268":{"position":[[101,8],[175,8],[350,8],[716,8]]},"278":{"position":[[161,8]]},"280":{"position":[[132,8]]},"300":{"position":[[35,8]]},"312":{"position":[[171,6]]},"348":{"position":[[136,6]]},"382":{"position":[[30,7]]},"542":{"position":[[1560,9]]}}}],["lock",{"_index":2068,"t":{"508":{"position":[[448,4]]}}}],["log",{"_index":193,"t":{"16":{"position":[[59,4]]},"18":{"position":[[47,4],[140,4]]},"20":{"position":[[16,4],[112,4],[167,4],[246,4]]},"22":{"position":[[14,4],[230,4],[290,4],[321,4]]},"26":{"position":[[435,3]]},"38":{"position":[[1186,4]]},"68":{"position":[[2044,4]]},"98":{"position":[[31,3],[72,3],[162,3],[219,4]]},"114":{"position":[[238,7],[266,8]]},"196":{"position":[[634,4],[693,4],[742,4],[1712,4]]},"204":{"position":[[95,3],[179,7]]},"228":{"position":[[109,3],[177,4]]},"230":{"position":[[13,3],[73,3]]},"234":{"position":[[13,3],[82,3]]},"236":{"position":[[13,3],[85,3]]},"264":{"position":[[208,4],[281,4]]}}}],["log(1000)/log(6",{"_index":2390,"t":{"569":{"position":[[1029,16]]}}}],["log(total_nodes)/log(d)=5",{"_index":2469,"t":{"582":{"position":[[492,25]]}}}],["logging.logformat.text",{"_index":735,"t":{"98":{"position":[[173,22]]}}}],["logging.loglevel.info",{"_index":730,"t":{"98":{"position":[[41,21]]}}}],["logic",{"_index":1717,"t":{"378":{"position":[[91,5]]}}}],["logo",{"_index":1954,"t":{"480":{"position":[[135,5],[238,5],[350,8],[417,5]]},"592":{"position":[[75,5],[179,5],[291,8],[368,5]]}}}],["long",{"_index":49,"t":{"4":{"position":[[297,4]]},"214":{"position":[[278,4]]},"342":{"position":[[804,4],[1064,4]]},"470":{"position":[[232,4]]},"474":{"position":[[146,4]]},"524":{"position":[[827,4]]},"569":{"position":[[1321,4]]},"622":{"position":[[721,4]]}}}],["longer",{"_index":1810,"t":{"460":{"position":[[27,6]]},"582":{"position":[[321,8]]}}}],["look",{"_index":117,"t":{"6":{"position":[[1161,7]]},"38":{"position":[[7,4]]},"42":{"position":[[202,4]]},"44":{"position":[[459,4]]},"50":{"position":[[377,4]]},"54":{"position":[[1058,4]]},"76":{"position":[[125,4]]},"92":{"position":[[175,4],[1076,4]]},"122":{"position":[[426,4]]},"158":{"position":[[860,4]]},"168":{"position":[[221,4]]},"170":{"position":[[125,4]]},"194":{"position":[[883,4],[1051,4]]},"206":{"position":[[633,4]]},"230":{"position":[[0,4]]},"234":{"position":[[0,4]]},"236":{"position":[[0,4],[733,4]]},"246":{"position":[[1114,4]]},"268":{"position":[[1122,4]]},"274":{"position":[[243,4]]},"280":{"position":[[470,4]]},"282":{"position":[[266,4]]},"294":{"position":[[407,4]]},"438":{"position":[[638,4]]},"442":{"position":[[82,4],[299,4]]},"444":{"position":[[7,4]]},"474":{"position":[[962,7]]},"563":{"position":[[19,4]]},"596":{"position":[[37,7],[213,7],[549,7]]}}}],["lookup",{"_index":882,"t":{"118":{"position":[[637,6]]},"334":{"position":[[4,6],[169,6],[320,6]]}}}],["lose",{"_index":1851,"t":{"470":{"position":[[747,6],[1533,6]]}}}],["loss",{"_index":2290,"t":{"557":{"position":[[661,4]]}}}],["lost",{"_index":2289,"t":{"557":{"position":[[612,4],[930,4]]},"602":{"position":[[127,4]]}}}],["lot",{"_index":1519,"t":{"294":{"position":[[569,4]]},"430":{"position":[[51,3]]}}}],["low",{"_index":1559,"t":{"304":{"position":[[99,3]]},"308":{"position":[[386,3]]},"328":{"position":[[182,3],[195,3]]},"332":{"position":[[407,3],[420,3]]},"424":{"position":[[343,3]]},"502":{"position":[[559,3]]},"542":{"position":[[475,4]]},"546":{"position":[[355,3],[546,3]]}}}],["lower",{"_index":2384,"t":{"569":{"position":[[487,5]]},"573":{"position":[[678,5],[1836,6],[2129,5]]}}}],["lowest",{"_index":2256,"t":{"546":{"position":[[2240,6],[2308,6],[2450,6]]}}}],["luckili",{"_index":2472,"t":{"584":{"position":[[132,8]]}}}],["m",{"_index":2126,"t":{"528":{"position":[[297,1],[397,2]]},"567":{"position":[[210,1],[284,2]]},"569":{"position":[[1859,1]]}}}],["machin",{"_index":1427,"t":{"266":{"position":[[137,8]]},"561":{"position":[[936,7],[2008,7]]},"563":{"position":[[1066,7]]}}}],["maco",{"_index":994,"t":{"160":{"position":[[329,6]]},"162":{"position":[[175,5]]}}}],["made",{"_index":1441,"t":{"268":{"position":[[666,4]]},"542":{"position":[[1261,5]]},"594":{"position":[[1057,4]]},"598":{"position":[[33,4]]}}}],["magnitud",{"_index":2255,"t":{"546":{"position":[[2183,9],[3022,9]]}}}],["main",{"_index":1598,"t":{"314":{"position":[[301,4]]},"376":{"position":[[98,4]]},"470":{"position":[[936,4]]},"542":{"position":[[912,4]]},"576":{"position":[[156,4],[579,4]]}}}],["main.jsx",{"_index":1098,"t":{"186":{"position":[[7,8]]}}}],["mainli",{"_index":2175,"t":{"542":{"position":[[986,7]]},"571":{"position":[[144,6]]}}}],["maintain",{"_index":81,"t":{"6":{"position":[[414,8]]},"104":{"position":[[1163,8]]},"216":{"position":[[86,8]]},"270":{"position":[[105,8]]},"392":{"position":[[155,8]]},"486":{"position":[[128,8]]},"514":{"position":[[880,10]]},"624":{"position":[[63,8]]}}}],["mainten",{"_index":1630,"t":{"328":{"position":[[374,11]]}}}],["major",{"_index":1046,"t":{"164":{"position":[[104,5]]},"472":{"position":[[1130,8]]}}}],["make",{"_index":999,"t":{"162":{"position":[[83,5]]},"166":{"position":[[24,4],[49,4],[121,4],[179,4]]},"170":{"position":[[24,4]]},"244":{"position":[[163,4]]},"250":{"position":[[638,4]]},"260":{"position":[[242,4]]},"314":{"position":[[191,4]]},"322":{"position":[[75,6]]},"340":{"position":[[114,6],[153,5],[445,5]]},"428":{"position":[[237,6]]},"484":{"position":[[138,6]]},"551":{"position":[[178,5]]},"559":{"position":[[433,4]]},"563":{"position":[[1462,6],[1569,6],[1840,6]]},"594":{"position":[[367,4],[716,4]]},"610":{"position":[[97,4],[953,7]]}}}],["malici",{"_index":1668,"t":{"340":{"position":[[474,9]]}}}],["manag",{"_index":320,"t":{"34":{"position":[[59,8]]},"36":{"position":[[561,8]]},"38":{"position":[[1232,6],[1278,6]]},"68":{"position":[[2143,6],[2353,6]]},"76":{"position":[[38,6]]},"78":{"position":[[145,6]]},"80":{"position":[[1211,7]]},"84":{"position":[[100,8]]},"104":{"position":[[441,11]]},"133":{"position":[[262,10]]},"184":{"position":[[377,8]]},"352":{"position":[[68,10]]}}}],["mani",{"_index":898,"t":{"127":{"position":[[184,4]]},"316":{"position":[[350,4]]},"390":{"position":[[191,4]]},"396":{"position":[[213,4]]},"424":{"position":[[89,4]]},"508":{"position":[[362,4]]}}}],["manner",{"_index":2380,"t":{"567":{"position":[[429,7]]},"610":{"position":[[388,7]]}}}],["manual",{"_index":566,"t":{"68":{"position":[[2731,8]]},"561":{"position":[[872,6],[1944,6]]}}}],["map",{"_index":1376,"t":{"246":{"position":[[766,8]]}}}],["margin",{"_index":1152,"t":{"188":{"position":[[1965,7],[2214,6],[2398,6]]}}}],["market",{"_index":100,"t":{"6":{"position":[[851,7]]},"596":{"position":[[181,7],[620,6]]}}}],["marketplac",{"_index":71,"t":{"6":{"position":[[242,13]]}}}],["massiv",{"_index":1902,"t":{"472":{"position":[[1834,9]]}}}],["master",{"_index":1044,"t":{"164":{"position":[[70,7]]}}}],["match",{"_index":256,"t":{"24":{"position":[[728,5]]},"306":{"position":[[588,5],[983,8],[1095,5]]},"512":{"position":[[885,5]]},"516":{"position":[[329,7]]}}}],["math",{"_index":1930,"t":{"474":{"position":[[384,4]]}}}],["matrix",{"_index":2025,"t":{"502":{"position":[[54,7]]}}}],["matter",{"_index":2393,"t":{"569":{"position":[[1102,6]]},"580":{"position":[[51,6]]},"594":{"position":[[1475,7]]},"596":{"position":[[437,7],[1123,7]]},"618":{"position":[[330,6]]}}}],["max",{"_index":768,"t":{"100":{"position":[[710,3],[774,3]]},"108":{"position":[[297,3],[400,3]]},"474":{"position":[[614,4],[706,4],[758,4]]}}}],["maximum",{"_index":770,"t":{"100":{"position":[[729,7],[790,7],[848,7]]},"108":{"position":[[321,7],[418,7]]},"118":{"position":[[401,7],[492,7]]},"470":{"position":[[1033,7]]},"472":{"position":[[973,7],[1455,7],[1531,7],[1576,7],[2215,7]]},"474":{"position":[[887,7]]},"540":{"position":[[33,7],[109,7],[239,7]]},"542":{"position":[[1406,7],[1589,7]]},"546":{"position":[[69,7]]},"557":{"position":[[0,7],[444,7],[1461,7]]},"569":{"position":[[891,7]]},"594":{"position":[[669,7]]},"602":{"position":[[600,7]]}}}],["mb/gb",{"_index":1243,"t":{"214":{"position":[[543,6]]}}}],["mbits/sec",{"_index":1941,"t":{"474":{"position":[[822,10]]}}}],["mbp",{"_index":1857,"t":{"470":{"position":[[1220,4],[1423,5],[1662,6]]},"540":{"position":[[56,4],[289,4]]},"542":{"position":[[960,4],[1484,5],[1610,4]]},"544":{"position":[[93,4],[332,5],[428,4],[489,6],[503,6],[734,6],[755,6],[829,4],[844,4],[859,4]]},"546":{"position":[[1993,4],[2302,5],[2368,5],[2572,5],[2786,4]]}}}],["mbytes/",{"_index":1898,"t":{"472":{"position":[[1478,8],[1657,8],[1730,8]]}}}],["mbytes/sec",{"_index":1939,"t":{"474":{"position":[[806,10]]}}}],["mbytes/second",{"_index":1889,"t":{"472":{"position":[[1047,14]]}}}],["mean",{"_index":624,"t":{"80":{"position":[[1119,4]]},"250":{"position":[[447,5]]},"306":{"position":[[140,5]]},"422":{"position":[[10,5]]},"472":{"position":[[3215,7]]},"488":{"position":[[197,5]]},"546":{"position":[[1367,7],[1484,7]]},"559":{"position":[[52,5]]},"567":{"position":[[573,5]]},"580":{"position":[[228,5]]},"590":{"position":[[375,5]]},"610":{"position":[[43,7]]},"612":{"position":[[760,4]]}}}],["meant",{"_index":2246,"t":{"546":{"position":[[1869,5]]}}}],["measur",{"_index":1761,"t":{"426":{"position":[[149,8]]},"482":{"position":[[803,8]]},"486":{"position":[[101,8]]},"536":{"position":[[105,7]]},"559":{"position":[[769,8]]},"567":{"position":[[716,8]]},"569":{"position":[[1406,8]]},"571":{"position":[[182,7],[514,13]]}}}],["mechan",{"_index":91,"t":{"6":{"position":[[682,9]]},"56":{"position":[[198,10]]},"133":{"position":[[416,10]]},"172":{"position":[[184,10]]},"196":{"position":[[1314,10]]},"210":{"position":[[136,11]]},"276":{"position":[[136,11],[363,9],[452,9]]},"294":{"position":[[55,9]]},"300":{"position":[[135,11],[187,10]]},"302":{"position":[[313,9]]},"312":{"position":[[146,9],[961,11]]},"354":{"position":[[27,9]]},"356":{"position":[[34,9]]},"384":{"position":[[34,9]]},"406":{"position":[[25,9]]},"416":{"position":[[117,10]]},"424":{"position":[[226,9]]},"432":{"position":[[28,10]]},"510":{"position":[[185,11]]},"518":{"position":[[1170,10]]},"524":{"position":[[1084,10]]},"528":{"position":[[975,9]]},"576":{"position":[[53,9]]}}}],["media",{"_index":110,"t":{"6":{"position":[[1004,5],[1101,5]]},"68":{"position":[[2536,5],[2603,5]]}}}],["median",{"_index":2192,"t":{"544":{"position":[[287,6],[718,6],[741,6]]},"571":{"position":[[637,6]]}}}],["meet",{"_index":1472,"t":{"282":{"position":[[225,4]]},"546":{"position":[[1208,4],[1544,7],[1608,7]]},"610":{"position":[[305,5]]}}}],["member",{"_index":599,"t":{"74":{"position":[[577,7]]},"342":{"position":[[1636,7]]},"576":{"position":[[906,7]]},"586":{"position":[[257,7],[344,7],[404,7]]}}}],["membership",{"_index":791,"t":{"104":{"position":[[307,10],[772,10]]},"256":{"position":[[159,10]]},"262":{"position":[[8,10],[283,10],[520,11]]},"264":{"position":[[130,10]]},"442":{"position":[[213,10],[495,11]]},"472":{"position":[[165,11],[344,10],[665,11],[731,11],[917,11],[1556,11],[1608,12],[1677,12],[2644,10],[2882,10],[3048,10]]},"474":{"position":[[273,10],[423,11],[444,10]]},"476":{"position":[[354,12]]},"576":{"position":[[367,10],[488,11]]}}}],["memori",{"_index":1251,"t":{"214":{"position":[[897,6]]},"398":{"position":[[110,7]]},"470":{"position":[[1726,7]]},"542":{"position":[[584,7]]},"578":{"position":[[366,6]]},"588":{"position":[[70,6]]}}}],["mempool",{"_index":103,"t":{"6":{"position":[[874,9]]}}}],["menduist",{"_index":2407,"t":{"571":{"position":[[250,9]]}}}],["mention",{"_index":1852,"t":{"470":{"position":[[836,7]]}}}],["merchant",{"_index":2503,"t":{"594":{"position":[[219,16]]}}}],["merg",{"_index":593,"t":{"74":{"position":[[489,5]]},"532":{"position":[[93,5]]}}}],["merkl",{"_index":808,"t":{"104":{"position":[[1071,6]]}}}],["mesh",{"_index":1514,"t":{"294":{"position":[[384,4]]},"312":{"position":[[368,5],[418,5]]},"571":{"position":[[237,5]]}}}],["messag",{"_index":11,"t":{"2":{"position":[[115,9]]},"4":{"position":[[156,9],[371,10]]},"6":{"position":[[471,7]]},"36":{"position":[[24,7],[142,7]]},"38":{"position":[[152,8],[219,8],[294,8],[368,8],[449,8],[547,8]]},"42":{"position":[[107,8],[159,8]]},"48":{"position":[[57,7],[235,7],[411,8],[520,7],[569,8],[656,8],[747,8]]},"50":{"position":[[26,7],[67,7],[130,7]]},"52":{"position":[[8,8],[83,7],[153,7],[250,8],[297,7],[401,7]]},"54":{"position":[[11,8],[78,7],[278,7],[711,8],[841,8],[977,8]]},"68":{"position":[[232,7],[382,9],[548,8],[589,8],[672,8],[753,9],[782,7],[879,8],[946,8],[1012,8],[1121,8]]},"74":{"position":[[338,7]]},"76":{"position":[[154,8]]},"78":{"position":[[93,8],[241,7]]},"80":{"position":[[401,8],[681,7]]},"82":{"position":[[114,8],[134,7],[444,7]]},"86":{"position":[[51,7],[325,9],[354,7],[383,7],[505,7],[584,7],[660,8],[685,7],[774,8],[815,7],[847,8],[972,7],[1058,8],[1157,8]]},"88":{"position":[[463,9],[489,7],[538,7],[653,7],[732,7],[811,8],[836,7],[925,8],[963,7],[1016,8],[1134,7],[1218,8],[1317,8],[1545,7]]},"90":{"position":[[0,7],[62,9],[102,8],[189,8],[458,7],[487,7],[871,8],[904,7],[990,7],[1145,8],[1235,7],[1311,8],[1376,8],[1445,8],[1527,7],[1606,8],[1671,8],[1727,8],[2190,7],[2404,8],[2465,7],[2553,8],[2717,7],[2786,7],[3014,7],[3206,7],[3264,7]]},"92":{"position":[[51,7],[1014,8]]},"96":{"position":[[201,7]]},"104":{"position":[[1196,7]]},"106":{"position":[[133,7],[170,7],[354,7],[449,7],[556,7]]},"108":{"position":[[137,8]]},"110":{"position":[[148,8]]},"112":{"position":[[262,7]]},"139":{"position":[[98,8]]},"145":{"position":[[41,8],[75,7],[226,7]]},"147":{"position":[[142,9]]},"149":{"position":[[120,8],[291,7],[380,9],[448,9],[769,8]]},"151":{"position":[[90,8],[262,7],[348,9],[456,8],[530,8],[554,8],[778,8]]},"154":{"position":[[213,8],[312,8]]},"156":{"position":[[62,9],[132,8],[252,8],[461,8],[496,8],[755,8],[771,7]]},"158":{"position":[[57,8],[117,8],[294,8],[591,7],[656,7],[720,8],[802,8]]},"188":{"position":[[41,8],[67,9],[417,10],[678,7],[867,7],[1066,7],[1293,9],[1573,11],[1739,7],[1851,7],[2143,8],[2332,8]]},"190":{"position":[[8,8],[373,7],[496,7],[605,8],[648,7]]},"192":{"position":[[11,8],[138,9],[271,8],[313,9],[402,8]]},"194":{"position":[[11,8],[201,9],[337,8],[354,9],[430,8],[472,9],[567,8],[904,8]]},"206":{"position":[[332,9],[423,8],[450,7]]},"214":{"position":[[10,7],[151,8],[212,7],[283,8],[712,7],[764,8],[904,7],[1030,7],[1092,7],[1221,8],[1319,7],[1365,7],[1524,8],[1551,7],[1675,8],[1719,9]]},"220":{"position":[[506,7],[1201,7]]},"222":{"position":[[265,8],[454,8]]},"224":{"position":[[268,8],[423,8]]},"250":{"position":[[678,8]]},"252":{"position":[[240,9]]},"262":{"position":[[127,8],[218,8],[460,8]]},"264":{"position":[[59,9]]},"268":{"position":[[229,7],[598,8]]},"282":{"position":[[66,8],[150,8],[203,8]]},"284":{"position":[[317,9],[420,7],[632,9]]},"290":{"position":[[172,9],[290,7],[454,7],[490,7],[614,7]]},"292":{"position":[[124,9],[407,8],[550,8]]},"302":{"position":[[98,8],[150,7],[227,8]]},"304":{"position":[[206,9],[257,8],[312,7]]},"306":{"position":[[157,8],[251,8],[343,9],[444,8],[574,8],[661,7],[769,7],[915,8],[974,8],[1081,8]]},"312":{"position":[[74,7],[460,8]]},"316":{"position":[[89,8],[193,9]]},"318":{"position":[[162,8]]},"320":{"position":[[72,8],[416,9]]},"322":{"position":[[42,8],[206,8],[403,8]]},"324":{"position":[[167,9],[275,8]]},"326":{"position":[[5,7],[51,8],[205,7],[397,7],[506,8]]},"338":{"position":[[170,9]]},"342":{"position":[[156,9],[219,8],[550,7],[619,9],[684,8],[866,10],[1025,9],[1392,7],[1502,8],[1591,7],[1701,8]]},"350":{"position":[[40,8],[98,7]]},"360":{"position":[[83,8]]},"368":{"position":[[54,8]]},"378":{"position":[[28,7],[97,7],[228,7]]},"388":{"position":[[115,7]]},"390":{"position":[[47,9],[87,8],[131,8]]},"392":{"position":[[189,8]]},"396":{"position":[[98,7]]},"400":{"position":[[144,8]]},"404":{"position":[[56,8],[123,8]]},"410":{"position":[[5,7],[38,8]]},"412":{"position":[[5,7],[181,7]]},"414":{"position":[[58,9]]},"422":{"position":[[270,7],[323,8],[390,9]]},"424":{"position":[[94,9]]},"426":{"position":[[180,7]]},"438":{"position":[[33,9],[95,10],[467,7]]},"468":{"position":[[332,7]]},"470":{"position":[[754,8],[815,9],[1250,8],[1540,9]]},"472":{"position":[[260,7],[274,7],[501,7],[798,7],[937,8],[1247,8],[1584,7],[1630,7],[1700,7],[2017,7],[2277,7],[2370,7],[2682,8],[2766,8],[2842,9],[2930,9],[3086,8],[3179,8],[3245,8],[3388,8]]},"474":{"position":[[119,8],[484,7],[577,8]]},"476":{"position":[[209,7],[263,8]]},"498":{"position":[[434,9]]},"512":{"position":[[863,8],[947,8],[1035,7]]},"516":{"position":[[53,8],[303,7],[316,7],[508,9]]},"520":{"position":[[377,8]]},"532":{"position":[[35,9],[183,9],[215,8]]},"534":{"position":[[121,7]]},"538":{"position":[[265,7],[347,8]]},"542":{"position":[[289,9]]},"549":{"position":[[58,8],[146,7],[237,8]]},"551":{"position":[[48,7]]},"557":{"position":[[161,8],[271,7],[381,9],[599,8],[653,7],[779,8],[916,8],[950,7],[1031,8]]},"561":{"position":[[219,8],[428,8]]},"563":{"position":[[310,8],[452,7],[1426,8],[1533,8],[1803,8]]},"565":{"position":[[77,7],[182,7],[262,7],[318,8],[416,7],[485,7],[558,8]]},"567":{"position":[[86,8],[166,8],[202,7],[339,8],[480,8],[586,7],[681,7],[779,7],[886,7],[1009,7]]},"569":{"position":[[17,7],[187,7],[391,7],[580,7],[683,7],[921,7],[1134,8],[1290,7],[1465,9],[1490,8],[1639,7],[1654,7],[1705,8],[1758,7],[1851,7],[1946,7],[2094,7]]},"571":{"position":[[73,7],[804,8],[855,9]]},"573":{"position":[[31,7],[167,7],[372,8],[783,7],[1062,8],[1207,8],[1518,7],[1554,7],[1599,9],[1683,9],[2179,7]]},"576":{"position":[[395,7],[722,8],[786,8]]},"580":{"position":[[74,8],[208,7],[267,8],[476,8]]},"582":{"position":[[172,7],[302,7],[413,8]]},"584":{"position":[[473,8]]},"586":{"position":[[304,9]]},"588":{"position":[[180,8]]}}}],["message'",{"_index":1678,"t":{"342":{"position":[[750,9]]}}}],["message/10",{"_index":1883,"t":{"472":{"position":[[779,10]]}}}],["message/payload",{"_index":935,"t":{"149":{"position":[[540,15]]},"151":{"position":[[655,15]]}}}],["message/proto",{"_index":1483,"t":{"284":{"position":[[752,13]]}}}],["messageindex\\\"\\ndetail",{"_index":2359,"t":{"563":{"position":[[661,25]]}}}],["messageobj",{"_index":470,"t":{"54":{"position":[[334,10],[382,10]]}}}],["messages.map((messag",{"_index":1135,"t":{"188":{"position":[[1224,23]]}}}],["messages.push(wakumessag",{"_index":958,"t":{"156":{"position":[[303,27]]}}}],["messages/minut",{"_index":2478,"t":{"584":{"position":[[487,16]]}}}],["messages/sec",{"_index":1887,"t":{"472":{"position":[[1016,12]]}}}],["messages[messages.length",{"_index":961,"t":{"156":{"position":[[642,24]]}}}],["messagespromis",{"_index":942,"t":{"151":{"position":[[482,16]]}}}],["messagespromises.map(async",{"_index":945,"t":{"151":{"position":[[584,26]]}}}],["messeng",{"_index":57,"t":{"6":{"position":[[5,11],[1033,11]]}}}],["meta",{"_index":1622,"t":{"326":{"position":[[238,4]]}}}],["metadata",{"_index":1470,"t":{"282":{"position":[[19,8]]},"410":{"position":[[110,8]]}}}],["metal",{"_index":2322,"t":{"561":{"position":[[944,6],[2016,6]]},"563":{"position":[[1074,6]]}}}],["method",{"_index":411,"t":{"44":{"position":[[444,7],[526,7]]},"58":{"position":[[56,6],[226,6]]},"68":{"position":[[1066,8],[1492,6]]},"72":{"position":[[63,8]]},"82":{"position":[[161,8],[270,6],[471,8]]},"86":{"position":[[1326,7]]},"88":{"position":[[1480,8]]},"90":{"position":[[352,7],[3129,7]]},"92":{"position":[[1060,8]]},"100":{"position":[[460,6]]},"122":{"position":[[457,7]]},"133":{"position":[[221,7]]},"149":{"position":[[73,6],[310,8]]},"151":{"position":[[281,8]]},"168":{"position":[[341,7]]},"190":{"position":[[282,6]]},"196":{"position":[[776,7],[969,7]]},"198":{"position":[[66,8],[265,6]]},"200":{"position":[[86,8]]},"202":{"position":[[477,6]]},"204":{"position":[[666,6]]},"218":{"position":[[32,6]]},"274":{"position":[[274,7]]},"332":{"position":[[287,6]]},"338":{"position":[[131,7],[377,6]]},"342":{"position":[[383,6],[577,7]]},"348":{"position":[[109,7]]},"376":{"position":[[117,6]]},"378":{"position":[[202,7]]},"412":{"position":[[169,7]]},"510":{"position":[[98,7]]},"526":{"position":[[17,7]]},"610":{"position":[[1602,7]]}}}],["metric",{"_index":864,"t":{"114":{"position":[[31,7],[63,7],[90,7],[148,7],[163,7],[215,7],[230,7],[258,7]]},"204":{"position":[[171,7]]},"252":{"position":[[258,7]]},"264":{"position":[[85,7]]},"266":{"position":[[75,7]]},"536":{"position":[[52,7]]},"588":{"position":[[151,7]]}}}],["microsoft",{"_index":1452,"t":{"272":{"position":[[910,9]]}}}],["migrat",{"_index":841,"t":{"106":{"position":[[567,9],[598,9]]},"248":{"position":[[112,9]]},"250":{"position":[[590,7],[1305,9]]},"444":{"position":[[407,7]]},"448":{"position":[[15,9]]},"450":{"position":[[0,9]]}}}],["million",{"_index":2307,"t":{"559":{"position":[[233,7]]}}}],["mind",{"_index":891,"t":{"124":{"position":[[185,5]]},"286":{"position":[[121,5]]}}}],["mine",{"_index":2059,"t":{"508":{"position":[[133,5]]}}}],["miner",{"_index":2058,"t":{"508":{"position":[[93,6],[168,6]]},"514":{"position":[[459,6]]}}}],["mini",{"_index":2465,"t":{"580":{"position":[[381,4]]}}}],["minim",{"_index":343,"t":{"36":{"position":[[384,9]]},"498":{"position":[[459,7]]},"622":{"position":[[545,7]]}}}],["minimum",{"_index":990,"t":{"160":{"position":[[246,7]]}}}],["minor",{"_index":2417,"t":{"571":{"position":[[771,5]]},"588":{"position":[[159,5]]}}}],["minut",{"_index":846,"t":{"108":{"position":[[182,7]]},"586":{"position":[[422,7]]}}}],["misbehav",{"_index":2037,"t":{"502":{"position":[[274,11]]}}}],["misbehaviour",{"_index":2070,"t":{"508":{"position":[[532,13]]}}}],["miss",{"_index":925,"t":{"147":{"position":[[135,6]]},"322":{"position":[[199,6]]},"404":{"position":[[116,6]]},"502":{"position":[[580,4]]}}}],["mitig",{"_index":1662,"t":{"340":{"position":[[219,10]]}}}],["mkdir",{"_index":1038,"t":{"162":{"position":[[710,5]]}}}],["mobil",{"_index":1548,"t":{"300":{"position":[[315,6]]},"370":{"position":[[192,6]]},"546":{"position":[[1751,7]]}}}],["model",{"_index":1669,"t":{"340":{"position":[[506,5]]},"418":{"position":[[140,6]]},"526":{"position":[[100,5]]}}}],["modern",{"_index":218,"t":{"22":{"position":[[122,6]]}}}],["modif",{"_index":1835,"t":{"468":{"position":[[216,13]]},"546":{"position":[[2957,14]]},"571":{"position":[[777,12]]}}}],["modifi",{"_index":213,"t":{"22":{"position":[[46,6]]},"90":{"position":[[2678,6]]},"188":{"position":[[77,6],[1890,6]]},"190":{"position":[[48,6]]},"328":{"position":[[430,9]]},"332":{"position":[[478,9]]},"472":{"position":[[2482,9]]},"494":{"position":[[7,6]]},"571":{"position":[[127,8]]},"598":{"position":[[168,6]]},"606":{"position":[[7,6]]},"612":{"position":[[386,7]]}}}],["modular",{"_index":1544,"t":{"300":{"position":[[81,7]]},"314":{"position":[[13,7]]},"364":{"position":[[12,7]]},"512":{"position":[[49,7]]}}}],["monetari",{"_index":2028,"t":{"502":{"position":[[85,8],[151,8],[192,8]]},"506":{"position":[[337,8]]},"508":{"position":[[54,8],[297,8],[411,8]]},"514":{"position":[[221,8],[289,8],[674,8],[725,8]]}}}],["money",{"_index":2132,"t":{"528":{"position":[[645,6]]}}}],["monitor",{"_index":1352,"t":{"238":{"position":[[132,10]]},"252":{"position":[[317,7]]},"254":{"position":[[76,8]]},"266":{"position":[[46,10]]},"270":{"position":[[93,7]]}}}],["more",{"_index":412,"t":{"44":{"position":[[521,4]]},"68":{"position":[[500,5]]},"135":{"position":[[91,4]]},"151":{"position":[[45,4]]},"168":{"position":[[188,4]]},"194":{"position":[[1163,5]]},"210":{"position":[[85,4]]},"276":{"position":[[85,4]]},"282":{"position":[[314,5]]},"292":{"position":[[459,4]]},"294":{"position":[[449,5]]},"300":{"position":[[361,5]]},"318":{"position":[[320,4]]},"338":{"position":[[290,4]]},"340":{"position":[[719,4],[807,4]]},"342":{"position":[[1497,4]]},"388":{"position":[[178,5]]},"438":{"position":[[539,4]]},"440":{"position":[[420,4]]},"472":{"position":[[3113,4]]},"474":{"position":[[191,4]]},"514":{"position":[[561,4]]},"524":{"position":[[773,4],[807,4],[856,4],[1129,4]]},"526":{"position":[[4,4]]},"528":{"position":[[837,4]]},"530":{"position":[[9,4]]},"546":{"position":[[370,4]]},"551":{"position":[[295,4]]},"557":{"position":[[1162,4]]},"561":{"position":[[278,4],[1438,4],[2196,4],[2535,4],[2811,4]]},"563":{"position":[[1634,4],[1700,4],[1911,4]]},"569":{"position":[[289,4],[1503,4],[1609,4]]},"573":{"position":[[745,4],[981,4],[2373,4]]}}}],["moreov",{"_index":2052,"t":{"506":{"position":[[253,9]]},"524":{"position":[[1095,9]]}}}],["mostli",{"_index":1560,"t":{"304":{"position":[[116,6]]},"370":{"position":[[0,6]]},"434":{"position":[[235,6]]},"546":{"position":[[935,6]]}}}],["motiv",{"_index":1448,"t":{"270":{"position":[[246,12]]}}}],["mount",{"_index":2275,"t":{"551":{"position":[[226,7]]},"557":{"position":[[96,8]]}}}],["move",{"_index":1692,"t":{"344":{"position":[[16,4]]}}}],["mpb",{"_index":2250,"t":{"546":{"position":[[2025,5],[2461,5]]}}}],["mpt=ipt_1+ipt_2+ipt_3+ipt_4",{"_index":2400,"t":{"569":{"position":[[1971,27]]}}}],["ms",{"_index":2376,"t":{"565":{"position":[[383,3]]},"573":{"position":[[1113,3],[1233,3],[1318,3]]}}}],["msg",{"_index":947,"t":{"151":{"position":[[626,3]]},"472":{"position":[[2435,3],[2455,3]]}}}],["msg/day",{"_index":1928,"t":{"474":{"position":[[300,8],[476,7],[1086,8]]}}}],["msg/sec",{"_index":1933,"t":{"474":{"position":[[694,7],[714,7]]}}}],["msg1",{"_index":1568,"t":{"306":{"position":[[382,4],[638,4],[752,5],[859,4],[1054,4]]}}}],["msgs/sec",{"_index":2296,"t":{"557":{"position":[[1138,9],[1224,8]]}}}],["mu",{"_index":2429,"t":{"573":{"position":[[304,2]]}}}],["much",{"_index":1918,"t":{"472":{"position":[[2717,5]]},"506":{"position":[[231,4]]},"557":{"position":[[1157,4]]},"561":{"position":[[3009,4]]},"582":{"position":[[385,4]]}}}],["multi",{"_index":86,"t":{"6":{"position":[[556,5],[587,5]]},"60":{"position":[[1727,5]]}}}],["multiaddr",{"_index":281,"t":{"26":{"position":[[209,9]]},"30":{"position":[[114,9]]},"60":{"position":[[31,9],[290,13]]},"100":{"position":[[559,9],[651,9]]},"102":{"position":[[89,10],[182,10]]},"104":{"position":[[1287,9]]},"108":{"position":[[95,9]]},"110":{"position":[[104,9]]},"120":{"position":[[139,9]]},"174":{"position":[[213,9],[247,9]]},"180":{"position":[[200,9],[340,9]]},"212":{"position":[[167,10],[550,9]]},"214":{"position":[[1609,10]]},"216":{"position":[[71,11]]},"222":{"position":[[332,10]]},"224":{"position":[[340,10]]},"226":{"position":[[140,9],[163,9],[206,10],[243,9],[317,9],[436,9]]},"310":{"position":[[68,9],[288,11]]},"332":{"position":[[257,10]]}}}],["multiaddr=[multiaddr",{"_index":1331,"t":{"226":{"position":[[271,20]]}}}],["multiaddress",{"_index":764,"t":{"100":{"position":[[578,14],[695,14]]},"106":{"position":[[93,12]]}}}],["multimedia",{"_index":115,"t":{"6":{"position":[[1137,10]]}}}],["multipl",{"_index":148,"t":{"12":{"position":[[23,8]]},"172":{"position":[[160,8]]},"174":{"position":[[117,8]]},"176":{"position":[[495,8]]},"178":{"position":[[249,8]]},"210":{"position":[[112,8]]},"272":{"position":[[62,8]]},"276":{"position":[[112,8]]},"290":{"position":[[191,8]]},"292":{"position":[[377,8]]},"304":{"position":[[145,8]]},"312":{"position":[[937,8]]},"344":{"position":[[284,8]]},"472":{"position":[[3379,8]]},"516":{"position":[[213,8]]},"520":{"position":[[317,8]]},"532":{"position":[[72,8]]},"542":{"position":[[380,8]]},"557":{"position":[[355,8]]},"567":{"position":[[605,8]]},"569":{"position":[[599,8]]},"584":{"position":[[454,8]]}}}],["multipli",{"_index":1859,"t":{"470":{"position":[[1270,10]]}}}],["mvp",{"_index":2635,"t":{"622":{"position":[[38,3],[334,4]]}}}],["my_private_key.pem",{"_index":1278,"t":{"216":{"position":[[683,18],[747,18]]}}}],["n",{"_index":1437,"t":{"268":{"position":[[483,1]]},"528":{"position":[[228,2],[394,2]]},"557":{"position":[[105,3]]},"563":{"position":[[951,1]]}}}],["n1",{"_index":2398,"t":{"569":{"position":[[1891,2]]}}}],["n5",{"_index":2399,"t":{"569":{"position":[[1909,2]]}}}],["n_1...n_i",{"_index":2379,"t":{"567":{"position":[[249,9]]}}}],["naiv",{"_index":1897,"t":{"472":{"position":[[1332,5]]}}}],["name",{"_index":258,"t":{"24":{"position":[[745,5]]},"62":{"position":[[446,7]]},"96":{"position":[[0,4]]},"98":{"position":[[0,4]]},"100":{"position":[[0,4]]},"102":{"position":[[0,4],[110,4],[149,4],[242,4],[258,4]]},"104":{"position":[[0,4]]},"106":{"position":[[0,4]]},"108":{"position":[[0,4]]},"110":{"position":[[0,4]]},"112":{"position":[[0,4]]},"114":{"position":[[0,4]]},"116":{"position":[[0,4],[173,4],[212,4]]},"118":{"position":[[0,4]]},"120":{"position":[[0,4]]},"122":{"position":[[0,4]]},"176":{"position":[[275,4],[403,4],[431,4],[508,4],[616,5],[640,4],[657,4],[708,4],[1105,4],[1143,4]]},"200":{"position":[[175,5],[301,4]]},"202":{"position":[[78,4]]},"212":{"position":[[34,4],[112,4],[248,5],[287,4],[444,4],[584,5],[744,4],[851,4],[912,4]]},"216":{"position":[[663,4]]},"226":{"position":[[385,4]]},"250":{"position":[[395,5]]},"284":{"position":[[125,5],[150,4],[341,5],[360,4]]},"302":{"position":[[22,4]]},"332":{"position":[[144,5],[341,4],[499,5],[614,5],[684,5]]},"356":{"position":[[116,5]]},"460":{"position":[[0,5]]},"470":{"position":[[118,4]]}}}],["name=[domain",{"_index":1230,"t":{"212":{"position":[[235,12]]}}}],["name=nwakunode.com",{"_index":1231,"t":{"212":{"position":[[371,18]]}}}],["name}/{encod",{"_index":1475,"t":{"284":{"position":[[96,16]]}}}],["name}/{version}/{cont",{"_index":1474,"t":{"284":{"position":[[65,24]]}}}],["napkin",{"_index":1929,"t":{"474":{"position":[[377,6]]}}}],["nascent",{"_index":2614,"t":{"614":{"position":[[23,7]]}}}],["nat",{"_index":756,"t":{"100":{"position":[[444,3]]},"226":{"position":[[365,3]]},"246":{"position":[[603,4]]}}}],["nat=ani",{"_index":1367,"t":{"246":{"position":[[610,7]]}}}],["nat=extip:[your",{"_index":1366,"t":{"246":{"position":[[550,15]]}}}],["nativ",{"_index":225,"t":{"24":{"position":[[15,6]]},"32":{"position":[[84,7],[125,6]]},"182":{"position":[[84,7],[125,6]]},"508":{"position":[[47,6],[464,6]]},"514":{"position":[[29,6]]}}}],["natur",{"_index":912,"t":{"133":{"position":[[307,7]]},"610":{"position":[[908,6]]}}}],["nearest",{"_index":2190,"t":{"544":{"position":[[256,7]]}}}],["necessari",{"_index":1411,"t":{"260":{"position":[[251,9]]},"514":{"position":[[814,9]]},"622":{"position":[[436,9],[574,9]]}}}],["need",{"_index":39,"t":{"4":{"position":[[116,4]]},"24":{"position":[[956,4]]},"60":{"position":[[1217,7]]},"92":{"position":[[332,4]]},"127":{"position":[[229,4]]},"162":{"position":[[20,4]]},"190":{"position":[[40,4]]},"192":{"position":[[43,4]]},"194":{"position":[[38,4]]},"250":{"position":[[169,4],[310,4],[629,4]]},"262":{"position":[[495,4]]},"270":{"position":[[239,6]]},"292":{"position":[[568,6]]},"332":{"position":[[521,4]]},"466":{"position":[[527,4]]},"470":{"position":[[1614,5]]},"472":{"position":[[639,4]]},"474":{"position":[[25,4]]},"482":{"position":[[321,4],[418,6]]},"498":{"position":[[140,5]]},"542":{"position":[[243,4]]},"549":{"position":[[435,6]]},"569":{"position":[[2136,4],[2199,4]]},"580":{"position":[[284,4]]},"586":{"position":[[544,4]]},"616":{"position":[[219,5],[424,6]]}}}],["neglig",{"_index":2486,"t":{"586":{"position":[[376,11]]},"602":{"position":[[54,11]]}}}],["negoti",{"_index":1762,"t":{"426":{"position":[[325,11]]},"518":{"position":[[127,11],[489,12]]},"520":{"position":[[211,11],[287,10]]},"522":{"position":[[217,11]]}}}],["neighbor",{"_index":2043,"t":{"502":{"position":[[528,9],[672,10]]}}}],["neighbour",{"_index":1086,"t":{"180":{"position":[[948,12]]}}}],["neighbourhood",{"_index":1577,"t":{"308":{"position":[[365,14]]}}}],["netflix",{"_index":2196,"t":{"544":{"position":[[437,7]]},"546":{"position":[[2119,7]]}}}],["network",{"_index":35,"t":{"4":{"position":[[31,7],[320,8]]},"6":{"position":[[983,7]]},"10":{"position":[[84,8]]},"14":{"position":[[110,7]]},"24":{"position":[[154,7]]},"30":{"position":[[22,10]]},"38":{"position":[[1472,8],[1598,7]]},"44":{"position":[[85,8]]},"46":{"position":[[92,8]]},"48":{"position":[[599,7]]},"52":{"position":[[31,7]]},"54":{"position":[[1000,7]]},"56":{"position":[[113,7],[371,8],[497,7]]},"68":{"position":[[900,8],[1422,7],[2495,8]]},"74":{"position":[[606,7]]},"78":{"position":[[71,8]]},"80":{"position":[[1060,7]]},"82":{"position":[[314,8]]},"100":{"position":[[199,7],[613,8]]},"118":{"position":[[250,8]]},"137":{"position":[[99,7]]},"141":{"position":[[85,8]]},"172":{"position":[[108,8]]},"180":{"position":[[925,7],[1018,7]]},"190":{"position":[[153,7],[672,7]]},"210":{"position":[[17,8]]},"214":{"position":[[44,7]]},"220":{"position":[[61,8]]},"236":{"position":[[867,8]]},"252":{"position":[[212,7]]},"262":{"position":[[50,8],[476,8]]},"268":{"position":[[497,7],[700,8]]},"270":{"position":[[387,8]]},"276":{"position":[[17,8]]},"280":{"position":[[454,8]]},"290":{"position":[[40,7]]},"294":{"position":[[78,8],[336,8]]},"298":{"position":[[87,7]]},"300":{"position":[[67,8]]},"302":{"position":[[60,8],[167,8],[247,8]]},"306":{"position":[[91,8],[171,7]]},"308":{"position":[[222,8],[293,7]]},"310":{"position":[[426,8]]},"312":{"position":[[197,8],[446,7]]},"316":{"position":[[327,7]]},"318":{"position":[[202,8],[277,7]]},"320":{"position":[[197,8]]},"322":{"position":[[66,8],[435,8]]},"324":{"position":[[297,8],[408,7]]},"326":{"position":[[72,8],[477,7]]},"332":{"position":[[354,8]]},"340":{"position":[[668,7]]},"342":{"position":[[427,8],[704,8],[1353,7]]},"344":{"position":[[43,7],[150,7]]},"348":{"position":[[63,8],[162,8]]},"354":{"position":[[161,7]]},"358":{"position":[[136,8]]},"360":{"position":[[206,8]]},"362":{"position":[[94,8]]},"364":{"position":[[20,7],[141,7]]},"366":{"position":[[101,8]]},"368":{"position":[[76,7]]},"370":{"position":[[153,8]]},"372":{"position":[[83,7]]},"380":{"position":[[58,7]]},"382":{"position":[[89,8]]},"384":{"position":[[122,8]]},"386":{"position":[[54,7]]},"388":{"position":[[64,7]]},"396":{"position":[[190,7]]},"400":{"position":[[201,7]]},"404":{"position":[[72,8],[157,8]]},"406":{"position":[[17,7]]},"408":{"position":[[258,8]]},"410":{"position":[[59,8]]},"412":{"position":[[114,8]]},"414":{"position":[[9,7],[68,7]]},"426":{"position":[[353,8]]},"432":{"position":[[215,8],[298,8]]},"438":{"position":[[9,7],[43,7],[559,8],[581,8]]},"440":{"position":[[82,8],[200,7],[351,8],[467,8]]},"442":{"position":[[548,8]]},"444":{"position":[[108,8],[190,7],[434,7]]},"450":{"position":[[43,7],[73,7]]},"452":{"position":[[21,7]]},"454":{"position":[[6,7],[77,7],[416,7]]},"466":{"position":[[243,7],[871,7]]},"468":{"position":[[36,7]]},"470":{"position":[[1171,8],[1583,7]]},"472":{"position":[[1401,7],[1804,7],[1984,7]]},"498":{"position":[[68,7]]},"504":{"position":[[40,8]]},"506":{"position":[[23,8]]},"508":{"position":[[80,8]]},"510":{"position":[[35,8]]},"512":{"position":[[125,8],[1056,8]]},"514":{"position":[[106,9],[550,7],[837,7]]},"526":{"position":[[295,7]]},"536":{"position":[[167,8]]},"546":{"position":[[415,7],[443,7],[738,7],[1139,7]]},"565":{"position":[[102,7],[141,7]]},"569":{"position":[[1066,7]]},"571":{"position":[[481,8]]},"573":{"position":[[109,7]]},"576":{"position":[[280,7]]},"578":{"position":[[117,7]]},"582":{"position":[[561,7]]},"584":{"position":[[441,7],[600,7]]}}}],["networkconfig",{"_index":1805,"t":{"452":{"position":[[83,13]]},"456":{"position":[[231,14]]},"458":{"position":[[259,14]]},"460":{"position":[[373,14],[547,14]]},"462":{"position":[[102,13],[166,13],[233,13],[704,14]]},"464":{"position":[[37,13],[60,13]]},"466":{"position":[[844,13]]}}}],["never",{"_index":2127,"t":{"528":{"position":[[372,5]]}}}],["new",{"_index":113,"t":{"6":{"position":[[1122,4]]},"40":{"position":[[83,5],[202,3]]},"50":{"position":[[183,3]]},"52":{"position":[[79,3],[149,3]]},"54":{"position":[[707,3]]},"72":{"position":[[13,3]]},"80":{"position":[[397,3]]},"158":{"position":[[188,3],[218,3]]},"188":{"position":[[920,3]]},"190":{"position":[[492,3]]},"194":{"position":[[563,3]]},"206":{"position":[[127,3]]},"216":{"position":[[15,3]]},"246":{"position":[[15,3]]},"250":{"position":[[79,3],[1182,3]]},"306":{"position":[[911,3]]},"452":{"position":[[79,3]]},"466":{"position":[[146,3],[361,3]]},"494":{"position":[[148,3]]},"528":{"position":[[583,3],[764,3]]},"576":{"position":[[613,3],[731,3],[825,3]]},"606":{"position":[[174,3]]},"624":{"position":[[206,3],[340,3],[400,3]]}}}],["newer",{"_index":339,"t":{"36":{"position":[[350,5]]},"248":{"position":[[159,5]]}}}],["newli",{"_index":1191,"t":{"194":{"position":[[186,5]]},"508":{"position":[[127,5]]}}}],["newseq[protectedtopic](0",{"_index":725,"t":{"96":{"position":[[134,25]]}}}],["next",{"_index":177,"t":{"14":{"position":[[194,4]]},"38":{"position":[[791,4]]},"70":{"position":[[53,4]]},"72":{"position":[[164,5]]},"80":{"position":[[461,5]]},"156":{"position":[[169,4],[742,4]]},"184":{"position":[[286,5]]},"186":{"position":[[579,5]]},"188":{"position":[[1884,5]]},"472":{"position":[[3297,4]]},"551":{"position":[[16,4]]},"557":{"position":[[323,4]]},"561":{"position":[[364,4],[815,4],[1887,4]]}}}],["nft",{"_index":70,"t":{"6":{"position":[[238,3],[285,3]]}}}],["nightli",{"_index":1450,"t":{"272":{"position":[[582,7],[667,7]]}}}],["nim",{"_index":1446,"t":{"270":{"position":[[34,3]]},"549":{"position":[[4,3]]},"563":{"position":[[219,3],[1121,3]]}}}],["node",{"_index":131,"t":{"10":{"position":[[70,5],[196,4],[237,5],[284,4],[343,5]]},"14":{"position":[[123,4]]},"24":{"position":[[1069,4]]},"26":{"position":[[195,4]]},"38":{"position":[[237,5],[386,5],[855,5],[908,4],[1317,4],[1367,4],[1426,5],[1496,5],[1615,5]]},"42":{"position":[[94,4]]},"44":{"position":[[53,4],[167,4],[178,4],[301,4],[390,4],[481,5],[547,6]]},"46":{"position":[[53,4]]},"56":{"position":[[58,4],[180,4],[214,4],[266,4],[325,5],[395,5],[514,5]]},"58":{"position":[[193,4],[239,4]]},"60":{"position":[[58,4],[205,4],[235,4],[332,4],[718,4],[752,4],[851,4],[1114,4],[1157,5],[1346,4],[1578,5],[1761,4],[1774,4]]},"62":{"position":[[15,4],[225,4],[388,4],[464,4],[561,4],[592,4],[735,4],[873,4],[904,4]]},"64":{"position":[[28,4],[494,4],[591,4],[639,4]]},"66":{"position":[[51,4],[193,4],[326,4]]},"68":{"position":[[1442,6],[1583,5],[1653,5],[2722,5],[2753,4]]},"76":{"position":[[77,4]]},"80":{"position":[[1255,4]]},"82":{"position":[[213,4],[221,4]]},"94":{"position":[[23,4]]},"100":{"position":[[64,4],[84,4],[150,4],[219,4]]},"112":{"position":[[510,4]]},"116":{"position":[[70,5],[114,4]]},"118":{"position":[[73,5],[83,4],[145,4],[180,4],[216,5],[419,5],[510,5]]},"120":{"position":[[129,4]]},"122":{"position":[[372,4],[438,4]]},"139":{"position":[[53,4]]},"141":{"position":[[53,4],[167,4],[178,4]]},"143":{"position":[[53,4]]},"147":{"position":[[100,5],[177,5]]},"149":{"position":[[99,5]]},"151":{"position":[[120,5]]},"158":{"position":[[822,4]]},"160":{"position":[[52,4]]},"168":{"position":[[255,4],[322,4]]},"170":{"position":[[137,4]]},"172":{"position":[[56,4],[148,4]]},"174":{"position":[[40,4],[290,4]]},"176":{"position":[[35,5],[126,4],[185,4],[828,4],[879,4]]},"178":{"position":[[28,5],[115,4],[160,5],[205,5],[465,4],[863,4]]},"180":{"position":[[35,5],[126,4],[183,4],[224,4],[405,5],[459,5],[476,5],[555,4],[640,4],[961,6]]},"186":{"position":[[303,4],[443,4],[610,4],[765,4],[778,5],[819,6],[847,4],[901,4],[952,4]]},"188":{"position":[[615,4],[628,5]]},"190":{"position":[[294,4],[343,5]]},"192":{"position":[[362,5]]},"194":{"position":[[401,5],[521,5]]},"196":{"position":[[21,5],[124,5],[179,4],[314,5],[349,4],[434,5],[509,5],[553,4],[650,4],[688,4],[808,6],[839,5],[950,4],[1052,4],[1087,4],[1134,4],[1259,4],[1349,6],[1429,5],[1577,5],[1647,4],[1754,4],[1810,4]]},"198":{"position":[[5,5]]},"200":{"position":[[0,4],[234,4]]},"202":{"position":[[0,5],[316,4],[344,4]]},"204":{"position":[[0,5]]},"206":{"position":[[91,4],[131,4],[598,4],[645,4]]},"208":{"position":[[56,4]]},"210":{"position":[[26,5]]},"212":{"position":[[85,4],[333,5],[398,5],[424,5],[494,5],[926,5]]},"214":{"position":[[268,4],[869,4],[1163,4],[1489,4],[1650,4]]},"216":{"position":[[0,5],[1010,4]]},"218":{"position":[[47,5],[221,4],[416,4],[841,4],[1001,4],[1375,5]]},"220":{"position":[[47,4],[176,4],[998,4],[1145,4]]},"222":{"position":[[228,4],[414,4]]},"224":{"position":[[229,4],[381,4]]},"228":{"position":[[23,5],[160,4],[204,4]]},"230":{"position":[[144,5]]},"232":{"position":[[8,4],[66,4]]},"234":{"position":[[162,5],[410,4]]},"236":{"position":[[168,5],[406,4],[720,5]]},"238":{"position":[[60,4]]},"240":{"position":[[149,4],[234,5]]},"246":{"position":[[230,4],[920,4],[979,5],[1079,4],[1126,4]]},"248":{"position":[[82,5]]},"250":{"position":[[241,4],[898,4],[1034,5],[1098,4]]},"252":{"position":[[104,4],[198,4],[299,4],[329,5]]},"254":{"position":[[23,4],[105,5]]},"256":{"position":[[204,4],[289,5]]},"262":{"position":[[114,4]]},"264":{"position":[[32,5],[220,4]]},"266":{"position":[[70,4]]},"268":{"position":[[11,4],[684,4],[922,4],[981,5],[1071,4],[1134,4]]},"270":{"position":[[64,5],[124,5],[370,4],[434,4],[500,4],[585,5]]},"272":{"position":[[9,5],[93,5],[177,4],[303,4],[387,4],[555,4],[755,4]]},"274":{"position":[[230,5],[255,4],[286,4]]},"276":{"position":[[26,5],[211,5],[333,5],[533,5],[572,4],[657,4]]},"278":{"position":[[38,4],[86,4],[117,4]]},"280":{"position":[[39,4],[63,4],[204,4],[261,4],[320,5],[437,4],[482,4]]},"294":{"position":[[232,6],[305,5],[374,5]]},"296":{"position":[[72,4]]},"300":{"position":[[50,5]]},"304":{"position":[[336,5]]},"306":{"position":[[287,4],[353,4],[421,4],[522,4],[621,4],[682,4],[692,4],[721,4],[729,4],[807,5],[832,4],[840,4],[867,4],[941,4],[1025,4],[1033,4]]},"308":{"position":[[171,5],[205,5],[301,5],[451,5],[554,6]]},"310":{"position":[[383,6]]},"312":{"position":[[25,5],[284,4],[736,4]]},"316":{"position":[[355,5]]},"320":{"position":[[29,5]]},"322":{"position":[[294,4]]},"324":{"position":[[46,5]]},"328":{"position":[[58,4],[170,5],[254,4],[328,5],[411,4]]},"330":{"position":[[61,4],[122,5]]},"332":{"position":[[39,4],[208,4],[582,5],[752,5]]},"334":{"position":[[151,4],[301,4]]},"340":{"position":[[617,4]]},"342":{"position":[[145,5],[326,4],[334,4],[1447,5],[1752,5]]},"344":{"position":[[345,6],[416,5],[457,5],[524,6],[608,5]]},"348":{"position":[[46,4]]},"352":{"position":[[124,6]]},"356":{"position":[[146,4]]},"358":{"position":[[9,4],[77,6],[191,4]]},"360":{"position":[[40,5]]},"366":{"position":[[8,4],[75,5]]},"368":{"position":[[40,5]]},"372":{"position":[[2,4]]},"374":{"position":[[2,4],[141,5]]},"380":{"position":[[23,5]]},"382":{"position":[[25,4]]},"384":{"position":[[63,5],[109,5]]},"386":{"position":[[37,4]]},"388":{"position":[[42,5]]},"396":{"position":[[218,5]]},"408":{"position":[[168,4]]},"428":{"position":[[164,5],[398,4],[492,4],[528,4]]},"432":{"position":[[46,6],[261,4]]},"438":{"position":[[439,6]]},"440":{"position":[[330,5],[425,4]]},"442":{"position":[[111,4],[166,4]]},"444":{"position":[[91,4],[133,4]]},"452":{"position":[[49,4]]},"454":{"position":[[62,5]]},"470":{"position":[[323,5],[383,4],[708,4],[1154,5],[1329,4],[1854,4]]},"472":{"position":[[1146,6]]},"476":{"position":[[68,5]]},"498":{"position":[[106,5],[199,4]]},"502":{"position":[[172,4],[217,5],[516,5],[574,5],[645,4],[699,4]]},"512":{"position":[[402,4],[485,4],[591,5],[621,5],[667,4],[683,4]]},"540":{"position":[[154,5]]},"542":{"position":[[69,4],[312,4],[536,5],[834,5],[881,4]]},"546":{"position":[[400,6],[591,5],[642,5],[1197,4],[1501,4],[1534,5],[1598,5]]},"549":{"position":[[13,5],[118,5],[276,5]]},"551":{"position":[[264,4]]},"557":{"position":[[38,4],[109,5],[140,5],[209,5],[364,5],[758,5],[1115,4],[1190,4],[1488,4]]},"559":{"position":[[102,4],[163,4],[265,4],[329,6],[347,4],[493,5],[530,5],[706,4]]},"561":{"position":[[102,4],[684,5],[1234,4]]},"563":{"position":[[100,5],[228,5],[1130,5],[1705,6]]},"565":{"position":[[43,5]]},"567":{"position":[[148,5],[243,5],[325,4],[441,5],[542,5],[640,6],[760,4],[804,4]]},"569":{"position":[[220,6],[321,5],[337,5],[429,4],[522,5],[780,5],[865,5],[953,5],[1084,5],[1115,4],[1175,6],[1217,5],[1392,6],[1535,5],[1689,4],[1886,4],[2057,4]]},"571":{"position":[[720,5]]},"573":{"position":[[581,4],[633,5],[911,4],[1346,5],[1477,4],[1730,6],[1933,4],[2096,4]]},"576":{"position":[[334,6]]},"578":{"position":[[134,5]]},"580":{"position":[[246,4]]},"582":{"position":[[459,5]]},"584":{"position":[[387,6],[588,4],[651,6]]},"588":{"position":[[25,5]]}}}],["node'",{"_index":783,"t":{"102":{"position":[[280,6]]},"196":{"position":[[1606,6],[1705,6]]},"212":{"position":[[141,6],[771,6]]},"278":{"position":[[604,6]]},"340":{"position":[[80,6]]},"386":{"position":[[107,6]]},"428":{"position":[[425,6]]},"502":{"position":[[309,6],[384,6]]},"514":{"position":[[367,6]]}}}],["node.dial(multiaddr",{"_index":510,"t":{"60":{"position":[[1486,22]]}}}],["node.filter.createsubscript",{"_index":474,"t":{"54":{"position":[[534,32]]},"80":{"position":[[224,32]]}}}],["node.lightpush.send(eciesencod",{"_index":678,"t":{"90":{"position":[[1952,33]]}}}],["node.lightpush.send(encod",{"_index":462,"t":{"52":{"position":[[432,28]]},"86":{"position":[[716,28]]},"88":{"position":[[867,28]]}}}],["node.lightpush.send(symmetricencod",{"_index":676,"t":{"90":{"position":[[1838,37]]}}}],["node.start",{"_index":406,"t":{"44":{"position":[[242,13]]},"141":{"position":[[242,13]]}}}],["node.stop",{"_index":408,"t":{"44":{"position":[[315,12]]}}}],["node.store.querygenerator([decod",{"_index":941,"t":{"151":{"position":[[403,37]]},"154":{"position":[[520,35]]},"158":{"position":[[495,35]]}}}],["node.store.querywithorderedcallback([decod",{"_index":641,"t":{"86":{"position":[[1189,46]]},"88":{"position":[[1349,46]]},"149":{"position":[[635,46]]},"154":{"position":[[434,46]]},"156":{"position":[[543,46],[833,46]]},"158":{"position":[[409,46]]}}}],["node=/ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamlce6zvqcs6kmqqrbbhyojjfyzgr1q3thtsbykzibqkfr",{"_index":1084,"t":{"180":{"position":[[751,85]]}}}],["node=[discv5",{"_index":1077,"t":{"178":{"position":[[342,12],[399,12]]}}}],["node=[p",{"_index":1081,"t":{"180":{"position":[[329,10]]}}}],["node=enr",{"_index":1078,"t":{"178":{"position":[[608,9]]}}}],["node_a",{"_index":2309,"t":{"559":{"position":[[321,7],[671,6]]}}}],["node_b",{"_index":2310,"t":{"559":{"position":[[403,7],[628,6]]}}}],["node_c",{"_index":2312,"t":{"559":{"position":[[499,7]]}}}],["node_d",{"_index":2313,"t":{"559":{"position":[[511,8]]}}}],["node_opt",{"_index":1104,"t":{"186":{"position":[[322,12]]}}}],["node_requir",{"_index":525,"t":{"62":{"position":[[488,17],[679,18],[1016,18]]},"64":{"position":[[518,17],[757,18]]}}}],["nodea",{"_index":2304,"t":{"559":{"position":[[84,6]]}}}],["nodeb",{"_index":2306,"t":{"559":{"position":[[145,6]]}}}],["nodec",{"_index":2308,"t":{"559":{"position":[[247,6]]}}}],["nodej",{"_index":196,"t":{"16":{"position":[[109,6]]},"20":{"position":[[38,7]]},"38":{"position":[[990,6],[1079,6]]},"68":{"position":[[1691,6],[1762,6],[1878,6]]},"124":{"position":[[96,6],[258,7]]},"127":{"position":[[54,6],[157,6],[210,7]]},"131":{"position":[[98,6]]},"133":{"position":[[94,7],[169,6],[338,7],[455,6]]},"135":{"position":[[28,6]]},"137":{"position":[[29,6],[119,6]]}}}],["nodekey",{"_index":745,"t":{"100":{"position":[[207,7]]},"216":{"position":[[157,7]]}}}],["nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8",{"_index":1288,"t":{"216":{"position":[[1050,72]]}}}],["nodekey=[nod",{"_index":1268,"t":{"216":{"position":[[193,13]]}}}],["nodes=1000",{"_index":2416,"t":{"571":{"position":[[698,11]]}}}],["nois",{"_index":542,"t":{"68":{"position":[[1049,5]]},"82":{"position":[[192,5]]},"342":{"position":[[305,5]]},"416":{"position":[[5,5],[41,5]]},"426":{"position":[[204,5],[278,5]]}}}],["non",{"_index":2055,"t":{"506":{"position":[[333,3]]},"514":{"position":[[585,3]]},"538":{"position":[[333,3]]},"594":{"position":[[274,3]]},"600":{"position":[[419,3]]}}}],["none",{"_index":758,"t":{"100":{"position":[[527,5]]},"106":{"position":[[332,4]]},"214":{"position":[[600,4]]}}}],["nonetheless",{"_index":1990,"t":{"490":{"position":[[117,12]]}}}],["normal",{"_index":2297,"t":{"557":{"position":[[1176,6],[1513,6]]}}}],["north",{"_index":2198,"t":{"544":{"position":[[542,5]]},"546":{"position":[[2678,5]]}}}],["note",{"_index":231,"t":{"24":{"position":[[194,4]]},"198":{"position":[[216,4]]},"268":{"position":[[299,4],[638,4]]},"420":{"position":[[156,4]]},"430":{"position":[[162,7]]},"466":{"position":[[826,5]]},"542":{"position":[[1156,4]]},"544":{"position":[[212,5]]},"546":{"position":[[1588,4],[2901,5]]},"569":{"position":[[260,4]]},"571":{"position":[[274,4]]},"573":{"position":[[202,4],[356,5],[1693,4]]},"610":{"position":[[520,4]]},"620":{"position":[[317,4]]},"622":{"position":[[339,4],[408,4]]}}}],["noth",{"_index":2492,"t":{"588":{"position":[[232,7]]},"594":{"position":[[1628,7]]},"622":{"position":[[831,7]]}}}],["notic",{"_index":732,"t":{"98":{"position":[[133,7]]},"494":{"position":[[81,7]]},"551":{"position":[[156,6]]},"561":{"position":[[658,6],[2119,6],[2458,6],[2734,6],[3474,7],[3735,6]]},"569":{"position":[[1182,6]]},"596":{"position":[[1392,6]]},"606":{"position":[[87,7]]},"610":{"position":[[870,6],[1108,6]]}}}],["notif",{"_index":1480,"t":{"284":{"position":[[601,13]]},"290":{"position":[[147,13],[652,12]]}}}],["notificationpayload",{"_index":1498,"t":{"290":{"position":[[462,19],[632,19]]}}}],["novemb",{"_index":2347,"t":{"561":{"position":[[3822,8]]}}}],["now",{"_index":1390,"t":{"250":{"position":[[165,3]]},"310":{"position":[[339,3]]},"454":{"position":[[399,3]]},"462":{"position":[[347,3]]},"464":{"position":[[77,3]]},"466":{"position":[[290,3],[882,3]]},"472":{"position":[[133,3]]},"571":{"position":[[918,5]]},"586":{"position":[[35,3]]}}}],["npm",{"_index":321,"t":{"34":{"position":[[68,3],[77,3]]},"36":{"position":[[570,3],[579,3]]},"62":{"position":[[88,3]]},"68":{"position":[[107,4]]},"72":{"position":[[72,3]]},"84":{"position":[[109,3],[118,3]]},"184":{"position":[[160,3],[169,3],[386,3],[395,3]]}}}],["npx",{"_index":569,"t":{"72":{"position":[[81,3],[334,3]]}}}],["ns1.google.com",{"_index":1372,"t":{"246":{"position":[[686,15]]}}}],["nullifi",{"_index":1604,"t":{"318":{"position":[[66,10]]},"338":{"position":[[96,10]]},"342":{"position":[[1233,10],[1265,9]]},"394":{"position":[[11,10]]},"400":{"position":[[69,10]]},"424":{"position":[[424,10]]},"438":{"position":[[290,11]]}}}],["number",{"_index":755,"t":{"100":{"position":[[436,7],[745,6],[806,6]]},"108":{"position":[[329,6],[426,6]]},"292":{"position":[[618,6]]},"328":{"position":[[318,6]]},"340":{"position":[[129,6]]},"342":{"position":[[1691,6]]},"474":{"position":[[979,8]]},"542":{"position":[[1474,6]]},"544":{"position":[[228,7]]},"546":{"position":[[131,7],[310,7],[2232,7],[2912,6]]},"557":{"position":[[452,6]]},"561":{"position":[[452,7]]},"580":{"position":[[466,6]]},"582":{"position":[[335,6]]},"586":{"position":[[319,8]]}}}],["numer",{"_index":1676,"t":{"342":{"position":[[103,8]]}}}],["nutshel",{"_index":1664,"t":{"340":{"position":[[305,9]]}}}],["nwaku",{"_index":135,"t":{"10":{"position":[[155,5]]},"14":{"position":[[66,5]]},"16":{"position":[[179,6]]},"24":{"position":[[0,5]]},"26":{"position":[[189,5]]},"30":{"position":[[333,6]]},"38":{"position":[[1226,5]]},"60":{"position":[[1572,5]]},"68":{"position":[[1818,5],[2115,5]]},"100":{"position":[[144,5]]},"129":{"position":[[128,5]]},"135":{"position":[[137,5]]},"137":{"position":[[53,5]]},"160":{"position":[[46,5],[154,6],[289,6],[296,5]]},"162":{"position":[[9,6]]},"164":{"position":[[166,5]]},"166":{"position":[[10,5]]},"168":{"position":[[0,5],[207,6],[249,5],[264,5],[296,5]]},"170":{"position":[[83,5],[197,5]]},"172":{"position":[[50,5],[142,5]]},"174":{"position":[[34,5],[284,5]]},"176":{"position":[[29,5],[728,5],[822,5]]},"178":{"position":[[22,5],[459,5],[857,5]]},"180":{"position":[[29,5],[399,5],[549,5],[634,5],[842,5]]},"196":{"position":[[45,5],[173,5],[343,5],[503,5],[547,5],[644,5],[750,6],[802,5],[833,5],[1046,5],[1343,5],[1423,5],[1600,5]]},"206":{"position":[[85,5]]},"208":{"position":[[50,5]]},"210":{"position":[[97,5]]},"212":{"position":[[327,5]]},"214":{"position":[[1157,5],[1421,5],[1644,5]]},"216":{"position":[[1023,6]]},"218":{"position":[[101,5],[835,5],[995,5],[1369,5]]},"220":{"position":[[0,5],[992,5],[1139,5]]},"222":{"position":[[10,5],[138,5],[408,5]]},"224":{"position":[[10,5],[152,5],[375,5]]},"226":{"position":[[117,5]]},"228":{"position":[[29,5]]},"230":{"position":[[67,5]]},"232":{"position":[[2,5]]},"234":{"position":[[76,5]]},"236":{"position":[[79,5],[714,5]]},"238":{"position":[[54,5],[166,5]]},"240":{"position":[[143,5]]},"242":{"position":[[4,5]]},"244":{"position":[[136,5]]},"246":{"position":[[4,5],[261,5],[1073,5],[1186,5]]},"248":{"position":[[27,6]]},"252":{"position":[[0,5],[98,5]]},"256":{"position":[[198,5]]},"258":{"position":[[55,5]]},"262":{"position":[[108,5]]},"264":{"position":[[26,5],[156,5],[289,5]]},"268":{"position":[[5,5],[80,5],[157,5],[1065,5],[1222,5]]},"270":{"position":[[0,5],[130,5],[364,5],[494,5]]},"272":{"position":[[33,5],[47,5],[103,5],[297,5],[332,5],[381,5],[418,5],[549,5],[569,5],[613,5],[769,5],[793,5],[831,5]]},"274":{"position":[[25,5],[224,5]]},"276":{"position":[[97,5],[222,5],[314,5],[411,5],[566,5]]},"278":{"position":[[32,5]]},"280":{"position":[[431,5],[542,5]]},"342":{"position":[[1792,5]]},"444":{"position":[[23,5],[85,5]]},"549":{"position":[[19,6],[197,5],[282,5]]},"551":{"position":[[34,5],[197,5],[258,5]]},"559":{"position":[[524,5]]},"561":{"position":[[678,5],[795,5],[1798,5],[1818,5],[3222,5],[3371,5]]},"563":{"position":[[1390,5],[1497,5],[1767,5]]},"565":{"position":[[37,5]]},"567":{"position":[[941,5]]},"571":{"position":[[103,5],[677,5],[749,5]]},"576":{"position":[[328,5]]},"584":{"position":[[366,5]]}}}],["nwaku'",{"_index":1397,"t":{"250":{"position":[[765,7]]}}}],["nwaku+postgr",{"_index":2278,"t":{"555":{"position":[[89,14]]}}}],["nwaku+sqlit",{"_index":2279,"t":{"555":{"position":[[108,13]]}}}],["nwakunode.com",{"_index":300,"t":{"30":{"position":[[197,13],[255,14]]},"212":{"position":[[292,14]]}}}],["o",{"_index":1370,"t":{"246":{"position":[[662,1]]}}}],["o.myaddr.l.google.com",{"_index":1371,"t":{"246":{"position":[[664,21]]}}}],["object",{"_index":449,"t":{"52":{"position":[[91,6],[161,6]]},"190":{"position":[[504,6]]},"308":{"position":[[12,9]]},"466":{"position":[[453,7]]},"490":{"position":[[831,6]]}}}],["oblig",{"_index":1978,"t":{"488":{"position":[[7,7]]},"594":{"position":[[1222,10]]}}}],["observ",{"_index":2374,"t":{"565":{"position":[[301,7],[399,7]]}}}],["obtain",{"_index":1666,"t":{"340":{"position":[[354,6]]},"428":{"position":[[256,8]]},"442":{"position":[[348,6]]},"444":{"position":[[153,8]]},"561":{"position":[[833,8],[1905,8]]},"563":{"position":[[1036,8]]}}}],["occasion",{"_index":607,"t":{"78":{"position":[[0,13]]},"370":{"position":[[115,12]]}}}],["occur",{"_index":806,"t":{"104":{"position":[[965,5]]},"186":{"position":[[887,6]]},"488":{"position":[[669,5]]}}}],["oceania",{"_index":2222,"t":{"544":{"position":[[657,7]]},"546":{"position":[[2737,7]]}}}],["oct",{"_index":2195,"t":{"544":{"position":[[372,3]]}}}],["off",{"_index":1593,"t":{"314":{"position":[[108,4]]}}}],["offer",{"_index":74,"t":{"6":{"position":[[298,6]]},"294":{"position":[[194,6]]},"298":{"position":[[43,6]]},"418":{"position":[[23,5]]},"426":{"position":[[227,5]]},"472":{"position":[[104,6]]},"594":{"position":[[1685,5],[1725,5]]}}}],["offic",{"_index":1956,"t":{"480":{"position":[[190,6]]},"592":{"position":[[130,6]]}}}],["offlin",{"_index":1561,"t":{"304":{"position":[[123,7]]},"322":{"position":[[156,7]]},"370":{"position":[[7,7],[64,7]]},"404":{"position":[[90,7]]}}}],["offline/resourc",{"_index":1774,"t":{"434":{"position":[[242,16]]}}}],["old",{"_index":1379,"t":{"248":{"position":[[45,3]]}}}],["older",{"_index":338,"t":{"36":{"position":[[340,5]]},"250":{"position":[[1109,5]]}}}],["oldest",{"_index":949,"t":{"151":{"position":[[771,6]]},"154":{"position":[[132,6],[305,6]]}}}],["omit",{"_index":965,"t":{"156":{"position":[[947,4]]},"176":{"position":[[685,4]]},"214":{"position":[[645,4],[926,4]]},"218":{"position":[[309,4]]},"220":{"position":[[278,4],[394,4],[528,4]]},"222":{"position":[[709,4]]},"573":{"position":[[409,8]]}}}],["on",{"_index":385,"t":{"38":{"position":[[1446,4]]},"56":{"position":[[345,4]]},"100":{"position":[[514,3]]},"198":{"position":[[286,3]]},"248":{"position":[[361,4]]},"272":{"position":[[245,4]]},"324":{"position":[[202,3]]},"390":{"position":[[184,3]]},"470":{"position":[[297,3],[957,3],[1015,3]]},"472":{"position":[[748,4],[3188,3],[3302,4]]},"474":{"position":[[131,3]]},"512":{"position":[[451,3]]},"542":{"position":[[147,3]]},"546":{"position":[[1497,3]]},"559":{"position":[[91,3],[152,3],[254,3],[336,3]]},"563":{"position":[[61,3]]},"569":{"position":[[123,3],[846,3]]},"576":{"position":[[346,3]]},"584":{"position":[[400,3]]},"602":{"position":[[532,4]]},"610":{"position":[[1652,3],[2085,3]]},"618":{"position":[[301,3]]}}}],["onboard",{"_index":2645,"t":{"624":{"position":[[328,7]]}}}],["onc",{"_index":1456,"t":{"274":{"position":[[0,4]]},"312":{"position":[[246,4]]},"348":{"position":[[72,4]]},"573":{"position":[[2329,4]]},"586":{"position":[[477,5]]},"624":{"position":[[0,4]]}}}],["onchain",{"_index":793,"t":{"104":{"position":[[341,7]]},"584":{"position":[[264,7]]}}}],["onchange={handleinputchang",{"_index":1145,"t":{"188":{"position":[[1521,28]]}}}],["onclick={sendmessage}>send.example.com",{"_index":1647,"t":{"334":{"position":[[218,17]]}}}],["round",{"_index":2189,"t":{"544":{"position":[[241,7]]}}}],["rout",{"_index":874,"t":{"118":{"position":[[452,7],[543,7]]},"178":{"position":[[181,7],[509,7],[905,7]]},"306":{"position":[[149,7]]},"344":{"position":[[172,8]]},"406":{"position":[[114,8]]},"444":{"position":[[240,7]]},"567":{"position":[[21,7],[79,6]]}}}],["row",{"_index":2292,"t":{"557":{"position":[[814,4]]},"559":{"position":[[241,5]]}}}],["rule",{"_index":250,"t":{"24":{"position":[[587,5]]},"342":{"position":[[922,5]]},"344":{"position":[[110,5]]},"388":{"position":[[23,5]]},"610":{"position":[[1316,5],[1386,5],[1963,5]]},"614":{"position":[[290,5]]}}}],["run",{"_index":130,"t":{"10":{"position":[[64,3],[151,3],[231,3],[271,7]]},"38":{"position":[[971,3],[1486,7]]},"44":{"position":[[293,7]]},"56":{"position":[[385,7]]},"60":{"position":[[1685,7],[1757,3]]},"68":{"position":[[1810,7]]},"100":{"position":[[72,7]]},"104":{"position":[[897,4],[956,3]]},"135":{"position":[[129,7]]},"166":{"position":[[117,3]]},"168":{"position":[[68,3],[199,7],[243,3],[260,3],[292,3]]},"170":{"position":[[0,3]]},"196":{"position":[[10,3],[41,3],[118,3],[167,3],[304,7],[333,7],[413,7],[495,7],[539,7],[655,7],[1064,8]]},"200":{"position":[[221,7],[329,3]]},"202":{"position":[[303,7],[385,3]]},"204":{"position":[[552,3]]},"206":{"position":[[522,3]]},"228":{"position":[[152,7]]},"238":{"position":[[48,3],[162,3]]},"240":{"position":[[133,7],[213,7]]},"246":{"position":[[0,3],[44,3],[257,3],[312,3],[907,7]]},"248":{"position":[[34,7],[183,7],[295,7]]},"250":{"position":[[232,3],[888,7]]},"252":{"position":[[109,7]]},"254":{"position":[[71,4]]},"256":{"position":[[188,7],[268,7]]},"262":{"position":[[366,7]]},"264":{"position":[[247,7]]},"268":{"position":[[909,7]]},"270":{"position":[[49,7],[116,7],[484,7],[564,7]]},"272":{"position":[[3,3],[83,7],[99,3],[171,3],[241,3],[291,3],[328,3],[375,3],[414,3],[823,3]]},"274":{"position":[[39,3],[81,3],[127,3]]},"278":{"position":[[24,7]]},"280":{"position":[[248,7]]},"328":{"position":[[164,3]]},"342":{"position":[[134,3]]},"432":{"position":[[42,3],[255,3]]},"434":{"position":[[150,3]]},"440":{"position":[[320,3]]},"444":{"position":[[19,3],[75,7]]},"470":{"position":[[317,3],[367,3],[519,3],[1848,3]]},"476":{"position":[[62,3]]},"498":{"position":[[112,7]]},"512":{"position":[[407,7],[490,7]]},"528":{"position":[[618,7]]},"540":{"position":[[138,3]]},"542":{"position":[[58,3],[327,7],[603,3],[828,3],[875,3]]},"546":{"position":[[386,3],[577,3],[652,3]]},"557":{"position":[[215,7]]},"559":{"position":[[536,7]]},"561":{"position":[[690,3],[845,7],[1917,7]]},"563":{"position":[[1113,7]]},"565":{"position":[[49,7]]},"571":{"position":[[284,7]]},"576":{"position":[[233,7]]}}}],["runstmt",{"_index":2354,"t":{"563":{"position":[[526,8]]}}}],["rustup",{"_index":1002,"t":{"162":{"position":[[100,7],[632,6]]}}}],["s",{"_index":1028,"t":{"162":{"position":[[499,1],[744,1]]}}}],["sa",{"_index":2015,"t":{"496":{"position":[[150,3]]},"612":{"position":[[963,3]]}}}],["sacrific",{"_index":896,"t":{"127":{"position":[[146,10]]}}}],["safeti",{"_index":1977,"t":{"486":{"position":[[141,6]]}}}],["same",{"_index":491,"t":{"60":{"position":[[378,4]]},"118":{"position":[[434,4],[525,4]]},"174":{"position":[[336,4]]},"180":{"position":[[510,4]]},"392":{"position":[[130,4]]},"420":{"position":[[244,4]]},"472":{"position":[[953,4],[1263,4],[1999,4]]},"488":{"position":[[512,4]]},"546":{"position":[[1276,5],[1417,5],[3008,4]]},"561":{"position":[[703,4],[1718,4]]},"563":{"position":[[260,4],[326,4],[1745,4]]},"588":{"position":[[0,4]]}}}],["sampl",{"_index":120,"t":{"6":{"position":[[1223,6]]},"294":{"position":[[255,8],[487,8]]},"308":{"position":[[439,8]]}}}],["sandbox",{"_index":2321,"t":{"561":{"position":[[928,7],[2000,7]]},"563":{"position":[[1058,7]]}}}],["save",{"_index":66,"t":{"6":{"position":[[173,4],[313,8]]},"262":{"position":[[298,5]]}}}],["scaffold",{"_index":181,"t":{"14":{"position":[[248,8]]},"38":{"position":[[689,8]]}}}],["scalabl",{"_index":107,"t":{"6":{"position":[[961,12]]},"314":{"position":[[262,12]]},"328":{"position":[[301,12]]},"332":{"position":[[728,12]]},"362":{"position":[[42,8]]},"414":{"position":[[36,8]]},"438":{"position":[[126,8],[302,11]]},"444":{"position":[[472,12]]},"472":{"position":[[2986,12]]},"542":{"position":[[1289,12]]}}}],["scale",{"_index":1602,"t":{"316":{"position":[[311,6]]},"396":{"position":[[174,6]]},"474":{"position":[[405,6]]},"514":{"position":[[827,5]]},"546":{"position":[[761,5]]},"573":{"position":[[1746,5]]},"618":{"position":[[268,9]]}}}],["scenario",{"_index":1562,"t":{"304":{"position":[[131,9]]},"557":{"position":[[27,8]]},"559":{"position":[[75,8]]},"561":{"position":[[990,8],[1309,8],[1484,8],[1735,8],[2062,8],[2398,8],[2674,8]]}}}],["scene",{"_index":33,"t":{"2":{"position":[[366,7]]}}}],["sceneri",{"_index":2348,"t":{"563":{"position":[[171,7]]}}}],["scheme",{"_index":1229,"t":{"212":{"position":[[195,7]]}}}],["scope",{"_index":1770,"t":{"432":{"position":[[84,6]]}}}],["score",{"_index":1754,"t":{"424":{"position":[[218,7],[268,6],[347,7]]},"502":{"position":[[622,6],[658,6],[719,7]]},"578":{"position":[[208,7]]},"584":{"position":[[313,8]]}}}],["screaming_snake_cas",{"_index":1215,"t":{"202":{"position":[[137,20]]}}}],["script",{"_index":355,"t":{"36":{"position":[[837,6],[848,7]]},"557":{"position":[[328,6]]}}}],["sdk",{"_index":149,"t":{"12":{"position":[[32,5],[189,3],[243,3]]},"32":{"position":[[39,3],[167,3]]},"68":{"position":[[81,3],[1225,3],[1464,3],[1733,3]]},"182":{"position":[[39,3]]},"196":{"position":[[610,4]]},"342":{"position":[[112,4]]},"402":{"position":[[0,4]]}}}],["se",{"_index":1881,"t":{"472":{"position":[[575,2]]}}}],["seamless",{"_index":83,"t":{"6":{"position":[[462,8]]},"12":{"position":[[305,8]]}}}],["seamlessli",{"_index":315,"t":{"32":{"position":[[295,10]]},"38":{"position":[[633,10]]},"133":{"position":[[80,10]]}}}],["second",{"_index":848,"t":{"108":{"position":[[253,8]]},"202":{"position":[[456,6]]},"214":{"position":[[400,8],[1257,7]]},"222":{"position":[[498,7],[766,7]]},"468":{"position":[[170,9],[348,8]]},"472":{"position":[[291,9],[517,7],[790,7],[1093,8],[2293,7],[2443,6],[2466,7],[2621,8],[2827,6],[3025,8],[3274,7]]},"474":{"position":[[135,7],[636,8]]},"476":{"position":[[225,8]]},"563":{"position":[[1484,7],[1591,7],[1862,7]]},"571":{"position":[[1025,7],[1065,7]]},"573":{"position":[[861,7],[1423,7]]},"576":{"position":[[412,7]]},"578":{"position":[[39,6],[103,8],[189,8]]},"580":{"position":[[183,7],[489,7]]},"582":{"position":[[108,7],[595,7]]},"584":{"position":[[538,8]]},"588":{"position":[[193,7]]}}}],["secp256k1",{"_index":1269,"t":{"216":{"position":[[240,9],[668,9]]},"374":{"position":[[16,9]]}}}],["secreci",{"_index":1736,"t":{"416":{"position":[[218,8]]}}}],["secret",{"_index":797,"t":{"104":{"position":[[500,6]]},"260":{"position":[[353,7]]}}}],["section",{"_index":26,"t":{"2":{"position":[[292,8]]},"196":{"position":[[1769,7]]},"474":{"position":[[357,8]]},"612":{"position":[[289,8]]}}}],["secur",{"_index":21,"t":{"2":{"position":[[247,8]]},"4":{"position":[[245,6]]},"6":{"position":[[654,8]]},"24":{"position":[[63,6],[260,6],[327,6]]},"88":{"position":[[284,6]]},"92":{"position":[[237,6]]},"122":{"position":[[139,6],[167,6],[206,6],[222,6],[278,6],[295,6]]},"180":{"position":[[1005,8]]},"212":{"position":[[453,6],[676,6]]},"218":{"position":[[362,6],[386,6],[454,6],[471,6],[508,6],[526,6],[666,6],[700,6],[758,6],[1019,6],[1156,6],[1190,6],[1232,6]]},"266":{"position":[[235,9]]},"316":{"position":[[225,6]]},"344":{"position":[[531,6],[574,6],[716,9]]},"372":{"position":[[101,6]]},"376":{"position":[[65,6],[135,9]]},"396":{"position":[[66,6]]},"402":{"position":[[70,7]]},"408":{"position":[[29,7]]},"412":{"position":[[69,6]]},"416":{"position":[[97,6]]},"418":{"position":[[52,8],[97,8],[131,8],[290,8],[346,8]]},"426":{"position":[[140,8],[310,6]]},"482":{"position":[[794,8]]},"486":{"position":[[36,8],[92,8]]},"594":{"position":[[1764,9]]},"626":{"position":[[8,8],[117,8],[299,7]]}}}],["security@free.technolog",{"_index":2650,"t":{"626":{"position":[[140,25]]}}}],["see",{"_index":1056,"t":{"168":{"position":[[119,3]]},"206":{"position":[[469,3]]},"238":{"position":[[154,3]]},"472":{"position":[[692,3]]},"512":{"position":[[696,4]]},"518":{"position":[[618,4]]},"522":{"position":[[17,3],[87,3],[160,3],[231,3]]},"526":{"position":[[27,3],[133,3],[221,3],[317,3]]},"530":{"position":[[66,3],[137,3]]},"534":{"position":[[48,3],[141,3]]},"538":{"position":[[38,3],[194,3],[358,3],[500,3]]},"546":{"position":[[2826,3]]},"561":{"position":[[1121,3]]},"563":{"position":[[384,3]]},"565":{"position":[[581,3]]},"569":{"position":[[348,3],[483,3]]},"571":{"position":[[416,4],[528,3]]},"573":{"position":[[1270,3],[1541,3]]},"584":{"position":[[358,3],[554,3],[642,4]]}}}],["seek",{"_index":305,"t":{"30":{"position":[[349,7]]},"40":{"position":[[34,4]]},"312":{"position":[[303,4],[741,5]]},"610":{"position":[[989,8]]}}}],["seem",{"_index":2461,"t":{"580":{"position":[[0,5],[333,5]]},"582":{"position":[[140,5],[202,5],[342,5]]}}}],["seen",{"_index":981,"t":{"158":{"position":[[715,4]]}}}],["select",{"_index":572,"t":{"72":{"position":[[170,6]]},"246":{"position":[[92,8]]},"270":{"position":[[182,6]]},"282":{"position":[[118,11]]},"296":{"position":[[577,7]]},"320":{"position":[[38,11]]},"350":{"position":[[88,9]]},"360":{"position":[[49,11]]},"438":{"position":[[372,9]]},"528":{"position":[[864,7]]},"563":{"position":[[917,6],[964,6],[1472,7],[1579,7],[1850,7]]}}}],["sell",{"_index":2523,"t":{"594":{"position":[[1701,5],[1741,4]]}}}],["semi",{"_index":2107,"t":{"524":{"position":[[556,4]]}}}],["send",{"_index":360,"t":{"38":{"position":[[135,4],[202,4]]},"42":{"position":[[102,4]]},"48":{"position":[[639,4]]},"52":{"position":[[3,4],[392,4]]},"68":{"position":[[2460,4]]},"76":{"position":[[137,4]]},"86":{"position":[[310,4],[374,4],[676,4]]},"88":{"position":[[448,4],[529,4],[827,4],[1522,7]]},"90":{"position":[[1705,4]]},"120":{"position":[[152,4]]},"188":{"position":[[33,7],[1057,4],[2420,5]]},"190":{"position":[[3,4],[364,4]]},"250":{"position":[[670,7]]},"252":{"position":[[223,4]]},"262":{"position":[[122,4],[452,7]]},"268":{"position":[[222,4]]},"284":{"position":[[619,4]]},"312":{"position":[[82,8]]},"316":{"position":[[64,7]]},"324":{"position":[[159,7]]},"342":{"position":[[197,7],[1492,4]]},"368":{"position":[[49,4]]},"388":{"position":[[123,8]]},"390":{"position":[[82,4]]},"396":{"position":[[106,7]]},"472":{"position":[[253,4],[493,5],[772,4],[1242,4]]},"512":{"position":[[743,5]]},"516":{"position":[[96,5],[143,5],[454,4]]},"518":{"position":[[839,5],[1030,5]]},"528":{"position":[[791,5]]},"538":{"position":[[325,7]]},"573":{"position":[[656,7]]},"580":{"position":[[260,4]]},"586":{"position":[[299,4]]},"610":{"position":[[852,4]]}}}],["send/rec",{"_index":2163,"t":{"542":{"position":[[276,12]]}}}],["sender",{"_index":455,"t":{"52":{"position":[[233,7]]},"86":{"position":[[401,6]]},"88":{"position":[[394,6],[556,6]]},"90":{"position":[[547,8],[976,6]]},"326":{"position":[[426,7]]},"538":{"position":[[273,8]]},"569":{"position":[[1552,6]]},"573":{"position":[[574,6]]},"584":{"position":[[223,6]]}}}],["sendmessag",{"_index":1129,"t":{"188":{"position":[[1097,11]]},"190":{"position":[[59,13],[404,11]]}}}],["sens",{"_index":2274,"t":{"551":{"position":[[184,5]]}}}],["sent",{"_index":483,"t":{"54":{"position":[[959,4]]},"82":{"position":[[300,4]]},"90":{"position":[[3046,4]]},"268":{"position":[[607,4]]},"306":{"position":[[672,4]]},"326":{"position":[[232,5]]},"342":{"position":[[413,4]]},"470":{"position":[[1265,4]]},"573":{"position":[[381,4],[851,4]]}}}],["separ",{"_index":1715,"t":{"376":{"position":[[55,9]]},"492":{"position":[[97,8]]},"518":{"position":[[530,8]]},"524":{"position":[[45,8]]}}}],["sepolia",{"_index":1404,"t":{"256":{"position":[[57,7],[92,7],[115,7]]},"442":{"position":[[9,7],[103,7],[246,7],[278,7],[320,7],[355,7],[400,7],[437,7]]},"444":{"position":[[125,7]]},"576":{"position":[[473,7]]},"586":{"position":[[95,8]]}}}],["sequenti",{"_index":929,"t":{"147":{"position":[[234,13]]}}}],["serial",{"_index":1178,"t":{"190":{"position":[[85,9]]}}}],["serialis",{"_index":459,"t":{"52":{"position":[[283,9]]},"190":{"position":[[634,9]]},"284":{"position":[[440,13]]}}}],["serialisedmessag",{"_index":460,"t":{"52":{"position":[[326,17],[472,18]]}}}],["serious",{"_index":1975,"t":{"486":{"position":[[45,9]]},"626":{"position":[[17,9]]}}}],["serv",{"_index":245,"t":{"24":{"position":[[492,6]]},"108":{"position":[[310,5],[348,5]]},"186":{"position":[[28,6]]},"214":{"position":[[30,5],[163,5]]},"218":{"position":[[110,5]]},"222":{"position":[[19,5]]},"224":{"position":[[19,5]]},"276":{"position":[[684,7]]},"298":{"position":[[130,5]]},"306":{"position":[[128,6],[294,6]]},"344":{"position":[[705,5]]},"378":{"position":[[67,7]]},"392":{"position":[[33,6]]},"474":{"position":[[1040,5]]}}}],["server",{"_index":515,"t":{"60":{"position":[[1675,6]]},"102":{"position":[[115,6],[154,6]]},"112":{"position":[[64,7],[141,6],[195,6],[525,7]]},"114":{"position":[[39,6],[71,7],[98,6],[156,6],[171,6],[223,6]]},"116":{"position":[[178,6],[217,6]]},"176":{"position":[[408,6],[436,6],[513,8],[662,6],[713,6],[769,7]]},"180":{"position":[[427,6],[541,7]]},"220":{"position":[[162,6],[263,7],[379,7],[786,6],[832,6],[1029,6]]},"226":{"position":[[27,6]]},"246":{"position":[[869,9]]},"296":{"position":[[94,7]]},"300":{"position":[[348,8]]},"310":{"position":[[87,7]]},"498":{"position":[[394,6]]},"512":{"position":[[339,6],[390,6],[427,6],[545,6],[764,7],[778,6],[842,6],[922,6],[1005,6]]},"516":{"position":[[124,7],[136,6],[432,6]]},"518":{"position":[[867,6],[917,6],[1023,6]]},"520":{"position":[[102,6],[172,6]]},"524":{"position":[[127,6],[761,7],[1189,7]]},"528":{"position":[[36,6],[142,7],[192,6],[246,6],[475,6],[587,6],[699,7],[768,7],[874,6],[1063,6],[1135,7]]},"532":{"position":[[81,7],[149,7]]},"538":{"position":[[184,7]]},"542":{"position":[[726,6]]}}}],["server'",{"_index":1329,"t":{"226":{"position":[[94,8]]},"518":{"position":[[810,8]]},"524":{"position":[[260,8],[913,8]]},"528":{"position":[[117,8],[314,8],[946,8]]}}}],["server=8.8.4.4",{"_index":1076,"t":{"176":{"position":[[1148,14]]}}}],["server=8.8.8.8",{"_index":1075,"t":{"176":{"position":[[1110,14]]}}}],["server=[dn",{"_index":1070,"t":{"176":{"position":[[645,11]]}}}],["servic",{"_index":1451,"t":{"272":{"position":[[873,7],[938,9]]},"340":{"position":[[10,7],[87,7],[341,7],[411,7],[653,7],[705,8]]},"344":{"position":[[449,7],[600,7]]},"366":{"position":[[67,7]]},"418":{"position":[[39,8]]},"428":{"position":[[93,8],[248,7]]},"432":{"position":[[207,7]]},"438":{"position":[[406,8]]},"440":{"position":[[451,8]]},"470":{"position":[[882,8]]},"526":{"position":[[111,7],[199,7]]},"546":{"position":[[1912,9],[2086,9]]},"559":{"position":[[66,8]]},"602":{"position":[[176,9]]}}}],["set",{"_index":205,"t":{"20":{"position":[[55,3]]},"42":{"position":[[75,7]]},"44":{"position":[[372,3]]},"56":{"position":[[161,3]]},"60":{"position":[[3,3]]},"68":{"position":[[1618,7],[2740,3]]},"98":{"position":[[63,4]]},"106":{"position":[[325,3]]},"184":{"position":[[7,3]]},"186":{"position":[[79,3],[289,3]]},"196":{"position":[[1561,7]]},"202":{"position":[[169,3]]},"212":{"position":[[8,3]]},"214":{"position":[[581,3],[812,7]]},"266":{"position":[[191,7]]},"282":{"position":[[36,3]]},"294":{"position":[[366,4]]},"304":{"position":[[16,3]]},"342":{"position":[[1649,3]]},"344":{"position":[[632,3]]},"388":{"position":[[16,3]]},"452":{"position":[[29,8]]},"470":{"position":[[1025,3],[1143,3],[1591,4],[1744,3]]},"512":{"position":[[893,3]]},"536":{"position":[[136,9]]},"540":{"position":[[25,3]]},"546":{"position":[[1147,4],[2565,3],[2926,3]]},"557":{"position":[[751,3]]},"569":{"position":[[166,4]]},"610":{"position":[[888,7]]},"614":{"position":[[313,3]]}}}],["setinputmessag",{"_index":1122,"t":{"188":{"position":[[378,16]]},"190":{"position":[[853,20]]}}}],["setinputmessage(e.target.valu",{"_index":1127,"t":{"188":{"position":[[551,32]]}}}],["setmessag",{"_index":1123,"t":{"188":{"position":[[428,12]]}}}],["setmessages(allmessages.map((wakumessag",{"_index":1195,"t":{"194":{"position":[[652,41]]}}}],["setmessages(filtermessages.map((wakumessag",{"_index":1189,"t":{"192":{"position":[[429,44]]}}}],["setup",{"_index":514,"t":{"60":{"position":[[1636,5]]},"238":{"position":[[119,5]]},"252":{"position":[[47,5]]},"567":{"position":[[983,5]]}}}],["sever",{"_index":1485,"t":{"286":{"position":[[94,7]]},"466":{"position":[[0,7]]},"563":{"position":[[87,7]]},"565":{"position":[[447,8]]},"612":{"position":[[581,9]]}}}],["sh",{"_index":1020,"t":{"162":{"position":[[303,2],[444,2],[592,2]]}}}],["shadow",{"_index":2403,"t":{"571":{"position":[[6,6],[871,6]]},"573":{"position":[[2212,6],[2334,6]]}}}],["shall",{"_index":2517,"t":{"594":{"position":[[1264,5]]},"604":{"position":[[4,5]]},"610":{"position":[[841,5]]}}}],["shape",{"_index":1738,"t":{"418":{"position":[[77,7]]}}}],["shard",{"_index":823,"t":{"104":{"position":[[1516,5],[1551,5],[1557,5]]},"250":{"position":[[95,5],[401,8],[526,8],[852,8],[987,8],[1232,8]]},"358":{"position":[[248,7]]},"438":{"position":[[317,8],[366,5]]},"450":{"position":[[102,8],[116,8]]},"452":{"position":[[125,8],[142,9]]},"454":{"position":[[469,7]]},"456":{"position":[[116,7],[262,7]]},"460":{"position":[[72,8],[89,8],[281,9],[404,7],[455,9]]},"462":{"position":[[259,8],[276,8],[378,9]]},"466":{"position":[[902,7]]},"468":{"position":[[76,5]]},"470":{"position":[[421,6]]},"474":{"position":[[1009,6]]},"540":{"position":[[76,5],[304,6]]},"542":{"position":[[151,6],[389,7],[462,5],[1428,6]]},"546":{"position":[[114,6],[2801,6]]}}}],["shard:public_key",{"_index":1391,"t":{"250":{"position":[[187,16]]}}}],["shard=\"4:your_public_key",{"_index":1393,"t":{"250":{"position":[[361,25]]}}}],["shardinfo",{"_index":1808,"t":{"456":{"position":[[89,10]]},"458":{"position":[[89,10]]},"462":{"position":[[125,9],[547,10]]},"464":{"position":[[168,10]]},"466":{"position":[[443,9]]}}}],["shardinfotopubsubtop",{"_index":1821,"t":{"466":{"position":[[266,23]]}}}],["shardingparam",{"_index":1815,"t":{"464":{"position":[[0,14]]}}}],["share",{"_index":116,"t":{"6":{"position":[[1148,8]]},"48":{"position":[[670,6]]},"68":{"position":[[2654,7]]},"86":{"position":[[36,6],[1388,6]]},"88":{"position":[[1421,5]]},"260":{"position":[[415,6]]},"288":{"position":[[44,5]]},"290":{"position":[[209,5]]},"430":{"position":[[43,5]]},"438":{"position":[[22,6]]},"440":{"position":[[127,6]]},"444":{"position":[[233,6],[365,6]]},"504":{"position":[[65,8]]},"506":{"position":[[15,7],[269,5]]},"510":{"position":[[145,7]]},"514":{"position":[[98,7]]},"563":{"position":[[1680,6]]}}}],["shift",{"_index":754,"t":{"100":{"position":[[404,5],[418,5]]}}}],["shift=1",{"_index":1083,"t":{"180":{"position":[[725,7]]}}}],["short",{"_index":52,"t":{"4":{"position":[[343,6]]},"246":{"position":[[655,6]]},"304":{"position":[[369,5]]},"324":{"position":[[79,5]]},"342":{"position":[[992,6]]}}}],["shorten",{"_index":2017,"t":{"498":{"position":[[162,10]]}}}],["shouldn't",{"_index":2248,"t":{"546":{"position":[[1928,9]]},"582":{"position":[[363,9]]}}}],["show",{"_index":203,"t":{"18":{"position":[[135,4]]},"544":{"position":[[21,5]]},"559":{"position":[[759,5]]},"561":{"position":[[325,5],[1213,5]]},"563":{"position":[[161,5],[1368,5]]},"573":{"position":[[21,5],[79,7],[429,4]]}}}],["shown",{"_index":2252,"t":{"546":{"position":[[2099,5]]},"571":{"position":[[599,5]]},"573":{"position":[[324,6]]}}}],["sia",{"_index":2072,"t":{"510":{"position":[[66,4]]}}}],["sibyl",{"_index":1878,"t":{"472":{"position":[[429,5]]}}}],["side",{"_index":884,"t":{"120":{"position":[[97,6],[226,5]]},"129":{"position":[[32,4]]},"512":{"position":[[434,4],[507,4]]}}}],["sign",{"_index":370,"t":{"38":{"position":[[439,4],[537,4]]},"68":{"position":[[941,4],[1111,4]]},"82":{"position":[[104,4]]},"90":{"position":[[8,7],[181,7],[478,4],[863,7],[912,7],[1139,5],[1368,7],[1439,5],[1663,7],[2396,7],[2547,5],[3035,6],[3218,6],[3280,6]]},"92":{"position":[[59,7],[1002,6]]},"176":{"position":[[355,6]]},"412":{"position":[[161,7]]}}}],["signatur",{"_index":85,"t":{"6":{"position":[[533,9],[562,9],[593,9],[629,10]]},"90":{"position":[[87,9],[2020,9],[2725,9],[2794,9],[2826,9],[2906,9]]},"426":{"position":[[122,11],[266,11]]}}}],["signaturepublickey",{"_index":680,"t":{"90":{"position":[[2049,20],[2859,18],[2947,18]]}}}],["signifi",{"_index":1624,"t":{"326":{"position":[[364,10]]},"340":{"position":[[18,9]]}}}],["signific",{"_index":350,"t":{"36":{"position":[[463,11]]},"571":{"position":[[319,11]]}}}],["significantli",{"_index":977,"t":{"158":{"position":[[569,13]]}}}],["sigprivkey",{"_index":664,"t":{"90":{"position":[[406,10],[1320,11],[1615,11],[2644,11]]}}}],["similar",{"_index":1968,"t":{"480":{"position":[[373,7]]},"524":{"position":[[648,8]]},"561":{"position":[[1629,7]]},"563":{"position":[[1883,7]]},"573":{"position":[[1873,7]]},"592":{"position":[[324,7]]}}}],["similarli",{"_index":1765,"t":{"428":{"position":[[468,10]]}}}],["simpl",{"_index":701,"t":{"92":{"position":[[339,6]]},"252":{"position":[[161,6]]},"524":{"position":[[753,7]]}}}],["simpler",{"_index":894,"t":{"127":{"position":[[70,7]]},"524":{"position":[[1006,7]]}}}],["simplest",{"_index":1199,"t":{"196":{"position":[[90,8]]},"272":{"position":[[199,8]]},"502":{"position":[[752,8]]},"518":{"position":[[248,8]]}}}],["simpli",{"_index":2272,"t":{"551":{"position":[[0,6]]}}}],["simplic",{"_index":906,"t":{"131":{"position":[[134,10]]}}}],["simplifi",{"_index":1704,"t":{"352":{"position":[[41,10]]},"452":{"position":[[63,11]]},"518":{"position":[[355,10],[607,10]]},"520":{"position":[[150,10]]}}}],["simul",{"_index":1797,"t":{"446":{"position":[[31,11]]},"536":{"position":[[126,9]]},"557":{"position":[[346,8]]},"565":{"position":[[585,10]]},"567":{"position":[[947,10]]},"569":{"position":[[2204,12]]},"571":{"position":[[13,10],[64,8],[297,10],[402,10],[738,10],[927,8]]},"573":{"position":[[66,12],[393,11],[1709,11],[2270,9]]},"576":{"position":[[241,11],[264,10]]},"578":{"position":[[323,11]]},"580":{"position":[[100,10]]},"584":{"position":[[339,11]]},"588":{"position":[[5,10]]}}}],["simultan",{"_index":531,"t":{"64":{"position":[[70,15]]},"172":{"position":[[195,15]]},"557":{"position":[[170,14],[788,15]]}}}],["singl",{"_index":633,"t":{"86":{"position":[[28,7]]},"290":{"position":[[394,6]]},"292":{"position":[[27,6],[703,6]]},"470":{"position":[[414,6]]},"474":{"position":[[1002,6]]},"542":{"position":[[455,6]]},"549":{"position":[[291,6]]},"561":{"position":[[3231,6]]},"563":{"position":[[65,6]]}}}],["site",{"_index":2007,"t":{"492":{"position":[[86,5]]},"594":{"position":[[607,5]]}}}],["site.thes",{"_index":2511,"t":{"594":{"position":[[628,10]]}}}],["sixti",{"_index":2588,"t":{"610":{"position":[[1062,5]]}}}],["size",{"_index":342,"t":{"36":{"position":[[378,5]]},"68":{"position":[[415,4]]},"106":{"position":[[286,4]]},"214":{"position":[[503,4]]},"470":{"position":[[1288,5]]},"472":{"position":[[806,4],[981,5],[1281,4],[1592,5],[1638,5],[1708,5],[2025,4],[2502,5],[2610,4],[3012,4],[3363,5]]},"474":{"position":[[45,6],[492,4]]},"520":{"position":[[356,4]]},"565":{"position":[[85,6],[270,4],[493,5]]},"569":{"position":[[1453,4],[1647,6]]},"573":{"position":[[175,6],[791,6],[1250,4]]},"580":{"position":[[62,4]]},"582":{"position":[[180,5]]}}}],["size:10gb",{"_index":1245,"t":{"214":{"position":[[570,10]]}}}],["size:512mb",{"_index":1244,"t":{"214":{"position":[[556,10]]}}}],["size:{new",{"_index":1137,"t":{"188":{"position":[[1303,10]]}}}],["spawn",{"_index":2317,"t":{"561":{"position":[[564,5]]}}}],["special",{"_index":543,"t":{"68":{"position":[[1213,11]]},"602":{"position":[[193,8]]}}}],["specialis",{"_index":1540,"t":{"298":{"position":[[136,11]]}}}],["specif",{"_index":418,"t":{"46":{"position":[[415,8]]},"86":{"position":[[1417,8]]},"160":{"position":[[124,8]]},"164":{"position":[[208,8]]},"242":{"position":[[166,8]]},"282":{"position":[[230,8],[291,13]]},"284":{"position":[[351,8]]},"290":{"position":[[124,8]]},"294":{"position":[[426,13]]},"300":{"position":[[263,8]]},"312":{"position":[[709,8],[762,8]]},"320":{"position":[[63,8]]},"326":{"position":[[323,8]]},"342":{"position":[[913,8]]},"350":{"position":[[140,8]]},"358":{"position":[[32,13]]},"360":{"position":[[74,8]]},"410":{"position":[[135,8]]},"482":{"position":[[159,8]]},"488":{"position":[[429,8]]},"542":{"position":[[1465,8]]},"569":{"position":[[2085,8],[2161,8]]},"596":{"position":[[1290,9]]},"612":{"position":[[828,8]]},"616":{"position":[[364,8]]},"618":{"position":[[204,8]]}}}],["specifi",{"_index":417,"t":{"46":{"position":[[258,7]]},"48":{"position":[[395,7]]},"98":{"position":[[196,9]]},"100":{"position":[[452,7]]},"112":{"position":[[397,9],[453,7]]},"149":{"position":[[242,7]]},"151":{"position":[[213,7]]},"154":{"position":[[25,9]]},"156":{"position":[[18,9]]},"158":{"position":[[22,9]]},"200":{"position":[[95,7]]},"204":{"position":[[241,7],[349,7]]},"206":{"position":[[60,10]]},"226":{"position":[[185,10]]},"326":{"position":[[13,9],[454,10]]},"378":{"position":[[210,9]]},"416":{"position":[[16,9]]},"462":{"position":[[392,7]]},"516":{"position":[[232,9]]},"540":{"position":[[222,7]]}}}],["speed",{"_index":2257,"t":{"546":{"position":[[2264,5],[2330,5]]},"571":{"position":[[644,6]]}}}],["speedtest",{"_index":2193,"t":{"544":{"position":[[349,9]]}}}],["spend",{"_index":1713,"t":{"370":{"position":[[39,5]]},"580":{"position":[[292,5]]}}}],["split",{"_index":2045,"t":{"504":{"position":[[7,5]]},"516":{"position":[[202,5]]},"524":{"position":[[1019,9]]}}}],["spread",{"_index":2370,"t":{"563":{"position":[[1639,6]]}}}],["sqlalchemi",{"_index":1248,"t":{"214":{"position":[[780,10]]}}}],["sqlite",{"_index":839,"t":{"106":{"position":[[527,6]]},"549":{"position":[[219,6],[326,6]]},"557":{"position":[[491,6],[573,6],[866,6],[1425,6]]},"559":{"position":[[189,7],[215,6],[721,6]]},"561":{"position":[[762,6],[1134,6],[1227,6],[1460,6],[1688,6],[1765,6],[2993,6],[3413,6]]}}}],["sqlite://store.sqlite3",{"_index":836,"t":{"106":{"position":[[369,22]]},"214":{"position":[[963,23]]}}}],["src/app.css",{"_index":1151,"t":{"188":{"position":[[1945,11]]}}}],["src/app.jsx",{"_index":1110,"t":{"186":{"position":[[669,11]]},"188":{"position":[[132,11]]},"190":{"position":[[196,11]]},"192":{"position":[[182,11]]},"194":{"position":[[211,11]]}}}],["src/main.jsx",{"_index":1103,"t":{"186":{"position":[[224,12]]}}}],["src=\"https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js\">{message.message}/ ","s":"Message structure","u":"/guides/js-waku/","h":"#message-structure","p":15},{"i":22,"t":"Have a look at the quick start guide and comprehensive tutorials to learn how to build applications using @waku/sdk: Guide Description Send and Receive Messages Using Light Push and Filter Learn how to send and receive messages on light nodes using the Light Push and Filter protocols Retrieve Messages Using Store Protocol Learn how to retrieve and filter historical messages on light nodes using the Store protocol Encrypt, Decrypt, and Sign Your Messages Learn how to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages Build React DApps Using @waku/react Learn how to use the @waku/react package seamlessly integrate @waku/sdk into a React application Scaffold DApps Using @waku/create-app Learn how to use the @waku/create-app package to bootstrap your next @waku/sdk project from various example templates Bootstrap Nodes and Discover Peers Learn how to bootstrap your node using Static Peers and discover peers using DNS Discovery Run @waku/sdk in a NodeJS Application Learn our suggested approach for using the @waku/sdk package within a NodeJS application Debug Your Waku DApp and WebSocket Learn how to troubleshoot your Waku DApp using debug logs and check WebSocket connections in nwaku Manage Your Filter Subscriptions Learn how to manage filter subscriptions and handle node disconnections in your application tip Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.","s":"Getting started","u":"/guides/js-waku/","h":"#getting-started","p":15},{"i":24,"t":"To engage in general discussions, seek assistance, or stay updated with the latest news, visit the #support and #js-waku-contribute channels on the Waku Discord. If you discover bugs or want to suggest new features, do not hesitate to open an issue in the js-waku repository. Your feedback and contributions are highly valued and will help improve the @waku/sdk package.","s":"Get help and report issues","u":"/guides/js-waku/","h":"#get-help-and-report-issues","p":15},{"i":26,"t":"How do I install the @waku/sdk package in my project? You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started. Why should I use Protocol Buffers for my application's message structure when using Waku? Protocol Buffers ensure consistent formatting, interoperability, and backward compatibility for your application's messages, with a smaller payload size than JSON. Check out the installation guide and Protobuf documentation to learn more. What are the steps to retrieve historical messages on Waku? Check out the Retrieve Messages Using Store Protocol guide to learn how to retrieve and filter historical messages using the Store protocol. How can I prevent Store peers from storing my messages? When creating your message encoder, you can configure the ephemeral option to prevent Store peers from keeping your messages on the Waku Network. How can I encrypt, decrypt, and sign messages in my Waku application? You can encrypt and decrypt your messages using symmetric, ECIES, and noise encryption methods. Check out the Encrypt, Decrypt, and Sign Your Messages guide to get started. How do I integrate Waku into a React application? Waku has a specialized SDK designed for building React applications. Check out the Build React DApps Using @waku/react guide for instructions on installation and usage. How can I bootstrap and discover peers in the Waku Network for browser nodes? The JavaScript SDK has a default bootstrap method that can be configured with Static Peers and DNS Discovery. Check out the Bootstrap Nodes and Discover Peers guide for setting up peer discovery for your node. How can I integrate Waku into a NodeJS application? Though the JavaScript SDK isn't directly usable in NodeJS due to certain limitations, we recommend running nwaku in a Docker container and consuming its REST API in a NodeJS application. How can I debug my Waku DApp and check WebSocket connections? Check out the Debug Your Waku DApp and WebSocket guide to discover how to use debug logs to troubleshoot your Waku DApp and resolve connection issues with nwaku WebSockets. How can I manage unexpected disconnections of my Filter subscription from Waku? We recommend regularly pinging peers to check for an active connection and reinitiating the subscription when it disconnects. Check out the Manage Your Filter Subscriptions guide for a detailed explanation and step-by-step instructions. How can I send images and videos on the Waku Network? While it's possible to transmit media such as images as bytes on Waku, we recommend uploading your media to a CDN or a file system like IPFS and then sharing the corresponding URL via Waku. How can I connect to my own node? To manually set your own node as a starting point use Configure static peers.","s":"JavaScript SDK FAQ","u":"/guides/js-waku/faq","h":"","p":25},{"i":28,"t":"This guide provides detailed steps to bootstrap your your node using Static Peers and discover peers in the Waku Network using DNS Discovery. info If you do not set up a bootstrap node or discovery mechanism, your node will not connect to any remote peer. tip Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.","s":"Bootstrap Nodes and Discover Peers","u":"/guides/js-waku/configure-discovery","h":"","p":27},{"i":30,"t":"The @waku/sdk package provides a built-in bootstrapping method that uses DNS Discovery to locate peers from the waku v2.prod ENR tree. import { createLightNode } from \"@waku/sdk\"; // Bootstrap node using the default bootstrap method const node = await createLightNode({ defaultBootstrap: true });","s":"Default bootstrap method","u":"/guides/js-waku/configure-discovery","h":"#default-bootstrap-method","p":27},{"i":32,"t":"To set static peers, a list of multiaddr to bootstrap the node should be passed to the bootstrapPeers parameter of the createLightNode() function: import { createLightNode } from \"@waku/sdk\"; // Bootstrap node using static peers const node = await createLightNode({ bootstrapPeers: [\"[PEER MULTIADDR]\"], }); For example, consider a node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003 with WebSocket enabled: // Define the list of static peers to bootstrap const peers = [ \"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H\", \"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\", ]; // Bootstrap node using the static peers const node = await createLightNode({ bootstrapPeers: peers, }); Alternatively, you can dial a particular node like this: // Define the list of static peers to bootstrap const peers = [ \"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H\", \"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\", ]; const node = await createLightNode(); // In case nodes are using `ws` protocol - additional configuration is needed: /* import { webSockets } from \"@libp2p/websockets\"; import { all as filterAll } from \"@libp2p/websockets/filters\"; const node = await createLightNode({ libp2p: { transports: [webSockets({ filter: filterAll })], }, }); */ const promises = peers.map(multiaddr => node.dial(multiaddr)); await Promise.all(promises); tip For local development using a nwaku node, use a ws address instead of wss. Remember that this setup is functional only when your web server is running locally. You can check how to get multi address of your locally run node in Find node address.","s":"Configure static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-static-peers","p":27},{"i":34,"t":"To bootstrap a node using DNS Discovery, first install the @waku/dns-discovery package: npm install @waku/dns-discovery yarn add @waku/dns-discovery Then, use the wakuDnsDiscovery() function to provide a list of URLs for DNS node list in the format enrtree://@: import { createLightNode } from \"@waku/sdk\"; import { wakuDnsDiscovery } from \"@waku/dns-discovery\"; // Define DNS node list const enrTree = \"enrtree://[PUBLIC KEY]@[DOMAIN NAME]\"; // Define node requirements const NODE_REQUIREMENTS = { store: 3, lightPush: 3, filter: 3, }; // Bootstrap node using DNS Discovery const node = await createLightNode({ libp2p: { peerDiscovery: [ wakuDnsDiscovery( [enrTree], NODE_REQUIREMENTS, ), ], }, }); For example, consider a node that uses the waku v2.prod and waku v2.test ENR trees for DNS Discovery: import { enrTree } from \"@waku/dns-discovery\"; // Bootstrap node using DNS Discovery const node = await createLightNode({ libp2p: { peerDiscovery: [ wakuDnsDiscovery( [enrTree[\"PROD\"], enrTree[\"TEST\"]], NODE_REQUIREMENTS, ), ], }, });","s":"Configure DNS discovery","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery","p":27},{"i":36,"t":"You can also bootstrap your node using DNS Discovery and Static Peers simultaneously: import { createLightNode } from \"@waku/sdk\"; import { bootstrap } from \"@libp2p/bootstrap\"; import { enrTree, wakuDnsDiscovery } from \"@waku/dns-discovery\"; // Define the list of static peers to bootstrap const peers = [ \"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H\", \"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\", ]; // Define node requirements const NODE_REQUIREMENTS = { store: 3, lightPush: 3, filter: 3, }; // Bootstrap node using DNS Discovery and static peers const node = await createLightNode({ libp2p: { bootstrapPeers: peers, peerDiscovery: [ wakuDnsDiscovery( [enrTree[\"PROD\"]], NODE_REQUIREMENTS, ), ], }, });","s":"Configure DNS discovery and static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery-and-static-peers","p":27},{"i":38,"t":"You can retrieve the array of peers connected to a node using the libp2p.getPeers() function within the @waku/sdk package: import { createLightNode, waitForRemotePeer } from \"@waku/sdk\"; const node = await createLightNode({ defaultBootstrap: true }); await waitForRemotePeer(node); // Retrieve array of peers connected to the node console.log(node.libp2p.getPeers());","s":"Retrieving connected peers","u":"/guides/js-waku/configure-discovery","h":"#retrieving-connected-peers","p":27},{"i":40,"t":"This guide provides detailed steps to enable and use debug logs to troubleshoot your Waku DApp, whether in a NodeJS or browser environment and check your WebSocket connections in nwaku.","s":"Debug Your Waku DApp and WebSocket","u":"/guides/js-waku/debug-waku-dapp","h":"","p":39},{"i":42,"t":"When resolving issues in your Waku DApp, debug logs can be helpful. The @waku/sdk and libp2p packages use the debug tool to handle and show logs that help you debug effectively.","s":"Enabling debug logs","u":"/guides/js-waku/debug-waku-dapp","h":"#enabling-debug-logs","p":39},{"i":44,"t":"To enable debug logs for @waku/sdk on NodeJS, you must set the DEBUG environment variable. To only enable debug logs for @waku/sdk: export DEBUG=waku* To enable debug logs for both @waku/sdk and libp2p: export DEBUG=waku*,libp2p* To enable debug logs for all components: export DEBUG=*","s":"NodeJS environments","u":"/guides/js-waku/debug-waku-dapp","h":"#nodejs-environments","p":39},{"i":46,"t":"To view debug logs in your browser's console, modify the local storage and add the debug key. Here are guides for various modern browsers: Google Chrome Firefox JavaScript KEY VALUE DESCRIPTION debug waku* Enables @waku/sdk debug logs debug waku*,libp2p* Enables @waku/sdk and libp2p debug logs debug * Enables all debug logs","s":"Browser environments","u":"/guides/js-waku/debug-waku-dapp","h":"#browser-environments","p":39},{"i":48,"t":"Nwaku provides native support for WebSocket (ws) and WebSocket Secure (wss) protocols. These are the only transports supported for connecting to the Waku Network via browsers. It's important to note that browsers impose certain limitations on WebSocket usage: Secure Context Requirement: Insecure subroutines are prohibited in secure contexts. On an https:// webpage, only wss connections are permitted, while ws connections are not allowed. This restriction does not apply if the webpage is served locally, like on localhost or 127.0.0.1. Certificate Validation: Certificate validation rules are consistent for https and wss connections. Certificates must not be expired, issued by a recognized Certificate Authority (CA), and match the domain name, among other criteria. User Feedback on Errors: Web browsers do not display errors related to subroutines to the user. If a WebSocket connection encounters an issue, users won't be alerted directly; you'll need to check the browser's console for error details. If you encounter difficulties when connecting to a remote node using wss, follow these steps:","s":"Checking WebSocket setup","u":"/guides/js-waku/debug-waku-dapp","h":"#checking-websocket-setup","p":39},{"i":50,"t":"Attempt to connect using websocat, a tool for WebSocket interactions. Test the WebSocket port using the command: websocat -v wss://[WEBSOCKET HOST]:[WEBSOCKET PORT] For example, consider a nwaku node with the multiaddr as /dns4/nwakunode.com/tcp/1234/wss/p2p/16...: $ websocat -v wss://nwakunode.com:1234 # ... [INFO websocat::ws_client_peer] Connected to ws The connection works if the [INFO websocat::ws_client_peer] Connected to ws log entry appears. If not, check that the certificate is valid","s":"Try Websocat for connection","u":"/guides/js-waku/debug-waku-dapp","h":"#try-websocat-for-connection","p":39},{"i":52,"t":"Verify the certificate's validity by passing the -k or --insecure flag to handle invalid certificates in websocat: websocat -v -k wss://nwakunode.com:1234 If this works, the certificate's invalidity is the problem, and you should investigate the cause of the error if not, check if the WebSocket port is accessible.","s":"Check certificate validity","u":"/guides/js-waku/debug-waku-dapp","h":"#check-certificate-validity","p":39},{"i":54,"t":"Use telnet or another networking tool to verify if the WebSocket port is open and accessible. For example, if the multiaddr is /dns4/nwakunode.com/tcp/1234/wss/p2p/16..., use the command: $ telnet nwakunode.com 1234 Trying 123.123.123.123... Connected to nwakunode.com. # ... If the connection succeeds, there might be an issue with nwaku. Consider seeking support on the Waku Discord or raise an issue. If the connection fails, ensure that the WebSocket port is open.","s":"Check WebSocket port accessibility","u":"/guides/js-waku/debug-waku-dapp","h":"#check-websocket-port-accessibility","p":39},{"i":56,"t":"This guide provides detailed steps to manage Filter subscriptions and handle node disconnections in your application. Have a look at the Send and Receive Messages Using Light Push and Filter guide for using the Light Push and Filter protocols.","s":"Manage Your Filter Subscriptions","u":"/guides/js-waku/manage-filter","h":"","p":55},{"i":58,"t":"Occasionally, your Filter subscriptions might disconnect from the Waku Network, resulting in messages not being received by your application. To manage your subscriptions, periodically ping peers to check for an active connection. The error message \"peer has no subscriptions\" indicates a failed ping due to disconnection. You can stop the pings if the disconnection/unsubscription is deliberate.","s":"Overview","u":"/guides/js-waku/manage-filter","h":"#overview","p":55},{"i":60,"t":"The @waku/sdk package provides a Filter.ping() function to ping subscriptions and check for an active connection. To begin, create a Filter subscription: // Create a Filter subscription const { error, subscription } = await node.filter.createSubscription({ contentTopics: [contentTopic] }); if (error) { // handle errors if happens throw Error(error); } // Subscribe to content topics and process new messages await subscription.subscribe([decoder], callback); Next, create a function to ping and reinitiate the subscription: const pingAndReinitiateSubscription = async () => { try { // Ping the subscription await subscription.ping(); } catch (error) { if ( // Check if the error message includes \"peer has no subscriptions\" error instanceof Error && error.message.includes(\"peer has no subscriptions\") ) { // Reinitiate the subscription if the ping fails await subscription.subscribe([decoder], callback); } else { throw error; } } }; // Periodically ping the subscription await pingAndReinitiateSubscription(); info Pings will fail when there are temporary network degradations or reachability issues. This does not mean that the underlying connection has been closed. Congratulations! You have successfully managed your Filter subscriptions to handle node disconnections in your application.","s":"Pinging filter subscriptions","u":"/guides/js-waku/manage-filter","h":"#pinging-filter-subscriptions","p":55},{"i":62,"t":"This guide provides detailed steps to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages using Waku message payload encryption methods. info Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to freely use custom protocols or Waku message payload encryption methods.","s":"Encrypt, Decrypt, and Sign Your Messages","u":"/guides/js-waku/message-encryption","h":"","p":61},{"i":64,"t":"Install the required packages for integrating @waku/message-encryption using your preferred package manager: NPM Yarn npm install @waku/message-encryption @waku/utils yarn add @waku/message-encryption @waku/utils","s":"Installation","u":"/guides/js-waku/message-encryption","h":"#installation","p":61},{"i":66,"t":"Symmetric encryption uses a single, shared key for message encryption and decryption. Use the generateSymmetricKey() function to generate a random symmetric key: import { generateSymmetricKey } from \"@waku/message-encryption\"; // Generate a random symmetric key const symmetricKey = generateSymmetricKey(); To send encrypted messages, create a Symmetric message encoder and send the message as usual: Sender client import { createEncoder } from \"@waku/message-encryption/symmetric\"; // Create a symmetric message encoder const encoder = createEncoder({ contentTopic: contentTopic, // message content topic symKey: symmetricKey, // symmetric key for encrypting messages }); // Send the message using Light Push await node.lightPush.send(encoder, { payload }); To decrypt the messages you receive, create a symmetric message decoder and process the messages as usual: Receiver client import { createDecoder } from \"@waku/message-encryption/symmetric\"; // Create a symmetric message decoder const decoder = createDecoder(contentTopic, symmetricKey); // Receive messages from a Filter subscription await subscription.subscribe([decoder], callback); // Retrieve messages from Store peers await node.store.queryWithOrderedCallback([decoder], callback); tip The symmetric key exchange between users can happen through an out-of-band method. For example, where the key is embedded within the URL shared by a user to access a specific resource.","s":"Symmetric encryption","u":"/guides/js-waku/message-encryption","h":"#symmetric-encryption","p":61},{"i":68,"t":"ECIES encryption uses a public key for encryption and a private key for decryption. Use the generatePrivateKey() function to generate a random ECDSA private key: import { generatePrivateKey, getPublicKey } from \"@waku/message-encryption\"; // Generate a random ECDSA private key, keep secure const privateKey = generatePrivateKey(); // Generate a public key from the private key, provide to the sender const publicKey = getPublicKey(privateKey); To send encrypted messages, create an ECIES message encoder with the public key and send the message as usual: Sender client import { createEncoder } from \"@waku/message-encryption/ecies\"; // Create an ECIES message encoder const encoder = createEncoder({ contentTopic: contentTopic, // message content topic publicKey: publicKey, // ECIES public key for encrypting messages }); // Send the message using Light Push await node.lightPush.send(encoder, { payload }); To decrypt the messages you receive, create an ECIES message decoder with the private key and process the messages as usual: Receiver client import { createDecoder } from \"@waku/message-encryption/ecies\"; // Create an ECIES message decoder const decoder = createDecoder(contentTopic, privateKey); // Receive messages from a Filter subscription await subscription.subscribe([decoder], callback); // Retrieve messages from Store peers await node.store.queryWithOrderedCallback([decoder], callback); tip Users can share their public key through broadcasting or out-of-band methods, such as embedding it in a URL or sending an unencrypted message on another content topic for others to retrieve.","s":"ECIES encryption","u":"/guides/js-waku/message-encryption","h":"#ecies-encryption","p":61},{"i":70,"t":"Message signing helps in proving the authenticity of received messages. By attaching a signature to a message, you can verify its origin and integrity with absolute certainty. info Signing messages is only possible when encrypted, but if your application does not require encryption, you can generate a symmetric key through hardcoded or deterministic methods using information available to all users. The sigPrivKey parameter allows the Symmetric and ECIES message encoders to sign the message before encryption using an ECDSA private key: Alice (sender) client import { generatePrivateKey, getPublicKey } from \"@waku/message-encryption\"; import { createEncoder as createSymmetricEncoder } from \"@waku/message-encryption/symmetric\"; import { createEncoder as createECIESEncoder } from \"@waku/message-encryption/ecies\"; // Generate a random ECDSA private key for signing messages // ECIES encryption and message signing both use ECDSA keys // For this example, we'll call the sender of the message Alice const alicePrivateKey = generatePrivateKey(); const alicePublicKey = getPublicKey(alicePrivateKey); // Create a symmetric encoder that signs messages const symmetricEncoder = createSymmetricEncoder({ contentTopic: contentTopic, // message content topic symKey: symmetricKey, // symmetric key for encrypting messages sigPrivKey: alicePrivateKey, // private key for signing messages before encryption }); // Create an ECIES encoder that signs messages const ECIESEncoder = createECIESEncoder({ contentTopic: contentTopic, // message content topic publicKey: publicKey, // ECIES public key for encrypting messages sigPrivKey: alicePrivateKey, // private key for signing messages before encryption }); // Send and receive your messages as usual with Light Push and Filter await subscription.subscribe([symmetricEncoder], callback); await node.lightPush.send(symmetricEncoder, { payload }); await subscription.subscribe([ECIESEncoder], callback); await node.lightPush.send(ECIESEncoder, { payload }); You can extract the signature and its public key (signaturePublicKey) from the DecodedMessage and compare it with the expected public key or use the verifySignature() function to verify the message origin: Bob (receiver) client import { generatePrivateKey } from \"@waku/message-encryption\"; import { createEncoder } from \"@waku/message-encryption/symmetric\"; // Generate a random private key for signing messages // For this example, we'll call the receiver of the message Bob const bobPrivateKey = generatePrivateKey(); // Create an encoder that signs messages const encoder = createEncoder({ contentTopic: contentTopic, symKey: symmetricKey, sigPrivKey: bobPrivateKey, }); // Modify the callback function to verify message signature const callback = (wakuMessage) => { // Extract the message signature and public key of the signature // You can compare the signaturePublicKey with Alice public key const signature = wakuMessage.signature; const signaturePublicKey = wakuMessage.signaturePublicKey; // Verify the message was actually signed and sent by Alice // Alice's public key can be gotten from broadcasting or out-of-band methods if (wakuMessage.verifySignature(alicePublicKey)) { console.log(\"This message was signed by Alice\"); } else { console.log(\"This message was NOT signed by Alice\"); } }; await subscription.subscribe([encoder], callback);","s":"Signing encrypted messages","u":"/guides/js-waku/message-encryption","h":"#signing-encrypted-messages","p":61},{"i":72,"t":"We used randomly generated keys for encryption and message signing in the provided examples, but real-world applications require consistent keys among client restarts. Have a look at the Key Pair Handling example, which demonstrates the secure storage and retrieval of key information from local storage using Subtle Crypto. If you need a simple way to store your keys in hexadecimal format across your application, you can use the @waku/utils package: import { bytesToHex, hexToBytes } from \"@waku/utils/bytes\"; // Generate random symmetric and private keys const symmetricKey = generateSymmetricKey(); const privateKey = generatePrivateKey(); // Store the keys in hexadecimal format const symmetricKeyHex = bytesToHex(symmetricKey); const privateKeyHex = bytesToHex(privateKey); // Restore the keys from hexadecimal format const restoredSymmetricKey = hexToBytes(symmetricKeyHex); const restoredPrivateKey = hexToBytes(privateKeyHex); Congratulations! You have successfully encrypted, decrypted, and signed your messages using Symmetric and ECIES encryption methods. Have a look at the eth-pm example for a working demo.","s":"Storing encryption keys","u":"/guides/js-waku/message-encryption","h":"#storing-encryption-keys","p":61},{"i":74,"t":"This guide provides detailed steps to bootstrap your next @waku/sdk project from various example templates using the @waku/create-app package.","s":"Scaffold DApps Using @waku/create-app","u":"/guides/js-waku/use-waku-create-app","h":"","p":73},{"i":76,"t":"Initialise a new @waku/sdk template using any of the following methods: NPM Yarn npx @waku/create-app [PROJECT DIRECTORY] yarn create @waku/app [PROJECT DIRECTORY] Next, select a template to initialise your app from: tip If you have previously installed @waku/create-app globally, we recommend uninstalling the package to ensure that npx always uses the latest version.","s":"Usage","u":"/guides/js-waku/use-waku-create-app","h":"#usage","p":73},{"i":78,"t":"We welcome and appreciate the contributions of templates for the @waku/create-app package. To contribute a template, please follow these steps: Create the template, ensuring it is user-friendly and thoroughly tested. Place the template in the examples folder in the js-waku-examples repository's root. Commit your changes with a detailed message and push them to your forked repository. Finally, submit a pull request to the js-waku-examples repository. Our team will carefully review and merge your submission upon approval. Waku also provides bounties to encourage community members to contribute to the network and earn rewards. To participate in the bounty program, head to https://github.com/waku-org/bounties.","s":"Contributing new templates","u":"/guides/js-waku/use-waku-create-app","h":"#contributing-new-templates","p":73},{"i":80,"t":"While the @waku/sdk package is primarily designed for browser environments, you can use it in a NodeJS application. However, there are certain limitations and considerations to keep in mind. This guide provides a comprehensive overview of using @waku/sdk in NodeJS.","s":"Run @waku/sdk in a NodeJS Application","u":"/guides/js-waku/run-waku-nodejs","h":"","p":79},{"i":83,"t":"@waku/sdk prioritises browser compatibility, avoiding NodeJS APIs for simpler bundling. This design choice enhances browser API compatibility but sacrifices NodeJS optimisation. While many browser APIs work in NodeJS, they might need better optimisation.","s":"API compatibility","u":"/guides/js-waku/run-waku-nodejs","h":"#api-compatibility","p":79},{"i":85,"t":"@waku/sdk focuses on the client side of the Request/Response protocol. We'll have to replicate all the functionalities added to nwaku to implement extra features.","s":"Protocol implementation","u":"/guides/js-waku/run-waku-nodejs","h":"#protocol-implementation","p":79},{"i":87,"t":"@waku/sdk aims to provide optimal default for the browser, striking a balance between browser and NodeJS compatibility while ensuring simplicity will add complexity.","s":"Codebase complexity","u":"/guides/js-waku/run-waku-nodejs","h":"#codebase-complexity","p":79},{"i":89,"t":"Certain features in @waku/sdk are tailored for browsers and might not translate seamlessly to NodeJS. For example, only WebSocket is supported in the browser, whereas a NodeJS application can benefit from using transport methods like TCP. @waku/sdk default peer management caters to the browser's ephemeral nature, which is different for NodeJS. This is why DNS Discovery and Peer Exchange are the default discovery mechanisms for the browser but not for NodeJS and desktop applications.","s":"Browser-specific protocols","u":"/guides/js-waku/run-waku-nodejs","h":"#browser-specific-protocols","p":79},{"i":91,"t":"Before using @waku/sdk in a NodeJS environment, take into account these limitations. For a more optimised solution, we recommend running nwaku in a Docker container and consuming its REST API.","s":"Recommendations","u":"/guides/js-waku/run-waku-nodejs","h":"#recommendations","p":79},{"i":93,"t":"There are plans to release a NodeJS package based on nwaku to streamline the process of using Waku Network features in NodeJS applications. You can track the progress and updates here: https://github.com/waku-org/nwaku/issues/1332.","s":"Future developments","u":"/guides/js-waku/run-waku-nodejs","h":"#future-developments","p":79},{"i":95,"t":"This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.","s":"Retrieve Messages Using Store Protocol","u":"/guides/js-waku/store-retrieve-messages","h":"","p":94},{"i":97,"t":"Use the createLightNode() function to create a Light Node and interact with the Waku Network: import { createLightNode } from \"@waku/sdk\"; // Create and start a Light Node const node = await createLightNode({ defaultBootstrap: true }); await node.start();","s":"Create a light node","u":"/guides/js-waku/store-retrieve-messages","h":"#create-a-light-node","p":94},{"i":99,"t":"Use the waitForRemotePeer() function to wait for the node to connect with Store peers: import { waitForRemotePeer, Protocols } from \"@waku/sdk\"; // Wait for a successful peer connection await waitForRemotePeer(node, [Protocols.Store]);","s":"Connect to store peers","u":"/guides/js-waku/store-retrieve-messages","h":"#connect-to-store-peers","p":94},{"i":101,"t":"Choose a content topic for filtering the messages to retrieve and create a message decoder: import { createDecoder } from \"@waku/sdk\"; // Choose a content topic const contentTopic = \"/store-guide/1/message/proto\"; // Create a message decoder const decoder = createDecoder(contentTopic);","s":"Choose a content topic","u":"/guides/js-waku/store-retrieve-messages","h":"#choose-a-content-topic","p":94},{"i":103,"t":"@waku/sdk provides the queryWithOrderedCallback() and queryGenerator() functions for querying Store nodes and retrieving historical or missed messages. The responses from Store nodes are paginated and require you to process each page sequentially.","s":"Retrieve messages","u":"/guides/js-waku/store-retrieve-messages","h":"#retrieve-messages","p":94},{"i":105,"t":"The store.queryWithOrderedCallback() function provides a straightforward method for querying Store nodes and processing messages in chronological order through a callback function. It accepts these parameters: decoders: List of decoders that specify the content topic to query for and their message decryption methods. callback: The callback function for processing the retrieved messages. options (optional): Query options to filter the retrieved messages. // Create the callback function const callback = (wakuMessage) => { // Render the message/payload in your application console.log(wakuMessage); }; // Query the Store peer await node.store.queryWithOrderedCallback([decoder], callback); info The queryWithOrderedCallback() function always returns the most recent messages in a page first.","s":"queryWithOrderedCallback","u":"/guides/js-waku/store-retrieve-messages","h":"#querywithorderedcallback","p":94},{"i":107,"t":"The store.queryGenerator() function provides more control and flexibility over processing messages retrieved from Store nodes through Async Generators. It accepts these parameters: decoders: List of decoders that specify the content topic to query for and their message decryption methods. options (optional): Query options to filter the retrieved messages. // Create the store query const storeQuery = node.store.queryGenerator([decoder]); // Process the messages for await (const messagesPromises of storeQuery) { // Fulfil the messages promises const messages = await Promise.all( messagesPromises.map(async (p) => { const msg = await p; // Render the message/payload in your application console.log(msg); }) ); } info The queryGenerator() function always returns the oldest messages in a page first.","s":"queryGenerator","u":"/guides/js-waku/store-retrieve-messages","h":"#querygenerator","p":94},{"i":110,"t":"The pageDirection option specifies the direction in which pages are retrieved: BACKWARD (default): Most recent page first. FORWARD: Oldest page first. import { PageDirection } from \"@waku/sdk\"; // Retrieve recent messages first const queryOptions = { pageDirection: PageDirection.BACKWARD, }; // Retrieve oldest messages first const queryOptions = { pageDirection: PageDirection.FORWARD, }; // Query the Store peer with options await node.store.queryWithOrderedCallback([decoder], callback, options); const storeQuery = node.store.queryGenerator([decoder, options]);","s":"pageDirection","u":"/guides/js-waku/store-retrieve-messages","h":"#pagedirection","p":94},{"i":112,"t":"The cursor option specifies the starting index for retrieving messages. For example, consider a query that retrieves the first page messages and then continues with the next page: import { waku } from \"@waku/sdk\"; // Create the callback function const messages = []; const callback = (wakuMessage) => { messages.push(wakuMessage); // Return \"true\" to stop retrieving pages // Here, it retrieves only the first page return true; }; // Retrieve the first page of messages // This retrieves all the messages if \"return true\" is not present await node.store.queryWithOrderedCallback([decoder], callback); // Create the cursor const lastMessage = messages[messages.length - 1]; const cursor = await waku.createCursor(lastMessage); // Retrieve the next page of messages // The message at the cursor index is excluded from the result await node.store.queryWithOrderedCallback([decoder], callback, { cursor: cursor, }); console.log(messages); info If you omit the cursor option, the query will start from the beginning or end of the history, depending on the page direction.","s":"cursor","u":"/guides/js-waku/store-retrieve-messages","h":"#cursor","p":94},{"i":114,"t":"The timeFilter option specifies a time frame to retrieve messages from. For example, consider a query that retrieves messages from the previous week: // Get the time frame const endTime = new Date(); const startTime = new Date(); startTime.setDate(endTime.getDate() - 7); // Retrieve a week of messages const queryOptions = { timeFilter: { startTime, endTime, }, }; // Query the Store peer with options await node.store.queryWithOrderedCallback([decoder], callback, options); const storeQuery = node.store.queryGenerator([decoder, options]); info The timeFilter option significantly reduces message retrieval performance. To optimise it, consider resuming message retrieval using a cursor that starts from the last seen message. Congratulations! You have successfully retrieved and filtered historical messages on a Light Node using the Store protocol. Have a look at the store-js and store-reactjs-chat examples for working demos.","s":"timeFilter","u":"/guides/js-waku/store-retrieve-messages","h":"#timefilter","p":94},{"i":116,"t":"This guide provides detailed steps to start using the @waku/sdk package by setting up a Light Node to send messages using the Light Push protocol, and receive messages using the Filter protocol. Have a look at the installation guide for steps on adding @waku/sdk to your project.","s":"Send and Receive Messages Using Light Push and Filter","u":"/guides/js-waku/light-send-receive","h":"","p":115},{"i":118,"t":"Use the createLightNode() function to create a Light Node and interact with the Waku Network: import { createLightNode } from \"@waku/sdk\"; // Create and start a Light Node const node = await createLightNode({ defaultBootstrap: true }); await node.start(); // Use the stop() function to stop a running node // await node.stop(); info When the defaultBootstrap parameter is set to true, your node will be bootstrapped using the default bootstrap method. Have a look at the Bootstrap Nodes and Discover Peers guide to learn more methods to bootstrap nodes.","s":"Create a light node","u":"/guides/js-waku/light-send-receive","h":"#create-a-light-node","p":115},{"i":120,"t":"Use the waitForRemotePeer() function to wait for the node to connect with peers on the Waku Network: import { waitForRemotePeer } from \"@waku/sdk\"; // Wait for a successful peer connection await waitForRemotePeer(node); The protocols parameter allows you to specify the protocols that the remote peers should have enabled: import { waitForRemotePeer, Protocols } from \"@waku/sdk\"; // Wait for peer connections with specific protocols await waitForRemotePeer(node, [ Protocols.LightPush, Protocols.Filter, ]);","s":"Connect to remote peers","u":"/guides/js-waku/light-send-receive","h":"#connect-to-remote-peers","p":115},{"i":122,"t":"Choose a content topic for your application and create a message encoder and decoder: import { createEncoder, createDecoder } from \"@waku/sdk\"; // Choose a content topic const contentTopic = \"/light-guide/1/message/proto\"; // Create a message encoder and decoder const encoder = createEncoder({ contentTopic }); const decoder = createDecoder(contentTopic); The ephemeral parameter allows you to specify whether messages should NOT be stored by Store peers: const encoder = createEncoder({ contentTopic: contentTopic, // message content topic ephemeral: true, // allows messages NOT be stored on the network }); info In this example, users send and receive messages on a shared content topic. However, real applications may have users broadcasting messages while others listen or only have 1:1 exchanges. Waku supports all these use cases.","s":"Choose a content topic","u":"/guides/js-waku/light-send-receive","h":"#choose-a-content-topic","p":115},{"i":124,"t":"Create your application's message structure using Protobuf's valid message fields: import protobuf from \"protobufjs\"; // Create a message structure using Protobuf const ChatMessage = new protobuf.Type(\"ChatMessage\") .add(new protobuf.Field(\"timestamp\", 1, \"uint64\")) .add(new protobuf.Field(\"sender\", 2, \"string\")) .add(new protobuf.Field(\"message\", 3, \"string\")); info Have a look at the Protobuf installation guide for adding the protobufjs package to your project.","s":"Create a message structure","u":"/guides/js-waku/light-send-receive","h":"#create-a-message-structure","p":115},{"i":126,"t":"To send messages over the Waku Network using the Light Push protocol, create a new message object and use the lightPush.send() function: // Create a new message object const protoMessage = ChatMessage.create({ timestamp: Date.now(), sender: \"Alice\", message: \"Hello, World!\", }); // Serialise the message using Protobuf const serialisedMessage = ChatMessage.encode(protoMessage).finish(); // Send the message using Light Push await node.lightPush.send(encoder, { payload: serialisedMessage, });","s":"Send messages using light push","u":"/guides/js-waku/light-send-receive","h":"#send-messages-using-light-push","p":115},{"i":128,"t":"To receive messages using the Filter protocol, create a callback function for message processing, then use the filter.subscribe() function to subscribe to a content topic: // Create the callback function const callback = (wakuMessage) => { // Check if there is a payload on the message if (!wakuMessage.payload) return; // Render the messageObj as desired in your application const messageObj = ChatMessage.decode(wakuMessage.payload); console.log(messageObj); }; // Create a Filter subscription const { error, subscription } = await node.filter.createSubscription({ contentTopics: [contentTopic] }); if (error) { // handle errors if happens throw Error(error); } // Subscribe to content topics and process new messages await subscription.subscribe([decoder], callback); You can use the subscription.unsubscribe() function to stop receiving messages from a content topic: await subscription.unsubscribe([contentTopic]); Congratulations! You have successfully sent and received messages over the Waku Network using the Light Push and Filter protocols. Have a look at the light-js and light-chat examples for working demos.","s":"Receive messages using filter","u":"/guides/js-waku/light-send-receive","h":"#receive-messages-using-filter","p":115},{"i":130,"t":"This guide provides detailed steps to build a nwaku node from the source code to access the latest development version or a specific commit or release of nwaku. For your convenience, you may want to download a pre-compiled binary instead. info A minimum of 2GB of RAM is required to build nwaku. Nwaku is available for Linux and macOS, with experimental Windows support.","s":"Build Nwaku from Source","u":"/guides/nwaku/build-source","h":"","p":129},{"i":132,"t":"To build nwaku, you need the standard developer tools, including a C compiler, GNU Make, Bash, Git, Rustup, and PostgreSQL client library. Debian and Ubuntu Fedora Arch Linux MacOS (Homebrew) sudo apt-get install build-essential git libpq5 jq curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source \"$HOME/.cargo/env\" sudo dnf install @development-tools git libpq-devel curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Using your favoured AUR helper sudo [AUR HELPER] -S base-devel git postgresql-libs curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh brew install cmake git postgresql@15 rustup-init # Create a symbolic link to libpq.5.dylib in /usr/local/lib/ sudo mkdir -p /usr/local/lib/ sudo ln -s /opt/homebrew/opt/postgresql@15/lib/libpq.5.dylib /usr/local/lib/libpq.dylib","s":"Prerequisites","u":"/guides/nwaku/build-source","h":"#prerequisites","p":129},{"i":134,"t":"Get the source code from the GitHub repository. The default branch is master, the release candidate for major updates. git clone https://github.com/waku-org/nwaku cd nwaku tip You can use git tag -l to check specific version tags.","s":"Clone the repository","u":"/guides/nwaku/build-source","h":"#clone-the-repository","p":129},{"i":136,"t":"Build the nwaku binary: make wakunode2 The first make invocation updates to all Git submodules. After each git pull, run make update to keep the submodules updated in the future. make update","s":"Build the binary","u":"/guides/nwaku/build-source","h":"#build-the-binary","p":129},{"i":138,"t":"Nwaku will create the wakunode2 binary in the ./build/ directory. # Run with default configuration ./build/wakunode2 # See available command line options ./build/wakunode2 --help To learn more about running nwaku, have a look at these guides: Run a Nwaku Node Run Nwaku in a Docker Container Run Nwaku with Docker Compose Node Configuration Methods","s":"Run the binary","u":"/guides/nwaku/build-source","h":"#run-the-binary","p":129},{"i":140,"t":"Run the tests for Waku: make test Congratulations! You have successfully built the nwaku binary from the source code. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Run test suite","u":"/guides/nwaku/build-source","h":"#run-test-suite","p":129},{"i":142,"t":"Waku nodes can be configured using a combination of the following methods: Command line options and flags Environment variables TOML configuration files (currently the only supported format) Default values info Take note of the precedence order: Each configuration method overrides the one below it (e.g., command line options override environment variables and configuration files).","s":"Node Configuration Methods","u":"/guides/nwaku/config-methods","h":"","p":141},{"i":144,"t":"Node configuration is primarily done using command line options, which override other methods. Specify configuration options by providing them in this format after the binary name: ./build/wakunode2 --tcp-port=65000 When running your node with Docker, provide the command line options after the image name in this format: docker run statusteam/nim-waku --tcp-port=65000","s":"Command line options","u":"/guides/nwaku/config-methods","h":"#command-line-options","p":141},{"i":146,"t":"Nodes can be configured using environment variables by prefixing the variable name with WAKUNODE2_ and using the configuration option in SCREAMING_SNAKE_CASE format. To set the tcp-port configuration, the wakunode2 binary should be called in this format: WAKUNODE2_TCP_PORT=65000 ./build/wakunode2 When running your node with Docker, start the node using the -e command option: docker run -e \"WAKUNODE2_TCP_PORT=65000\" statusteam/nim-waku info This is the second configuration method in order of precedence. Command Line Options override environment variables.","s":"Environment variables","u":"/guides/nwaku/config-methods","h":"#environment-variables","p":141},{"i":148,"t":"Nodes can be configured using a configuration file following the TOML format: TOML Config File log-level = \"DEBUG\" tcp-port = 65000 topic = [\"/waku/2/default-waku/proto\"] metrics-logging = false The config-file configuration option lets you specify the configuration file path: ./build/wakunode2 --config-file=[TOML CONFIGURATION FILE] You can also specify the configuration file via environment variables: # Using environment variables WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE] ./build/wakunode2 # Using environment variables with Docker docker run -e \"WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE]\" statusteam/nim-waku info This is the third configuration method in order of precedence. Command Line Options and Environment Variables override configuration files.","s":"Configuration files","u":"/guides/nwaku/config-methods","h":"#configuration-files","p":141},{"i":150,"t":"The default configuration is used when no other options are specified. By default, a nwaku node does the following: Generate a new Node Key and PeerID. Listen for incoming libp2p connections on the default TCP port (60000). Subscribe to the default Pub/Sub topic (/waku/2/default-waku/proto). Enable the Relay protocol for relaying messages. Enable the Store protocol as a client, allowing it to query peers for historical messages but not store any message itself. To see the default values of all configuration options, run wakunode2 --help: ./build/wakunode2 --help tip To explore the available node configuration options, have a look at the Node Configuration Options guide.","s":"Default configuration values","u":"/guides/nwaku/config-methods","h":"#default-configuration-values","p":141},{"i":152,"t":"Here are the available node configuration options, along with their default values and descriptions:","s":"Node Configuration Options","u":"/guides/nwaku/config-options","h":"","p":151},{"i":154,"t":"Name Default Value Description config-file Loads configuration from a TOML file (cmd-line parameters take precedence) protected-topic newSeq[ProtectedTopic](0) Topics and its public key to be used for message validation, topic:pubkey. Argument may be repeated","s":"Application-level config","u":"/guides/nwaku/config-options","h":"#application-level-config","p":151},{"i":156,"t":"Name Default Value Description log-level logging.LogLevel.INFO Sets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL log-format logging.LogFormat.TEXT Specifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON","s":"Log config","u":"/guides/nwaku/config-options","h":"#log-config","p":151},{"i":158,"t":"Name Default Value Description cluster-id 0 Cluster id that the node is running in. Node in a different cluster id is disconnected agent-string nwaku Node agent string which is used as identifier in network nodekey P2P node private key as 64-char hex string listen-address defaultListenAddress() Listening address for LibP2P (and Discovery v5, if enabled) traffic tcp-port 60000 TCP listening port ports-shift 0 Add a shift to all port numbers nat any Specify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip: ext-multiaddr External multiaddresses to advertise to the network. Argument may be repeated ext-multiaddr-only false Only announce external multiaddresses max-connections 50 Maximum allowed number of libp2p connections max-relay-peers Maximum allowed number of relay peers peer-store-capacity Maximum stored peers in the peerstore peer-persistence false Enable peer persistence","s":"General node config","u":"/guides/nwaku/config-options","h":"#general-node-config","p":151},{"i":160,"t":"Name Default Value Description dns-addrs true Enable resolution of dnsaddr, dns4 or dns6 multiaddrs dns-addrs-name-server [\"1.1.1.1\", \"1.0.0.1\"] DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated dns4-domain-name The domain name resolving to the node's public IPv4 address","s":"DNS addrs config","u":"/guides/nwaku/config-options","h":"#dns-addrs-config","p":151},{"i":162,"t":"Name Default Value Description relay true Enable relay protocol: true|false relay-peer-exchange false Enable gossipsub peer exchange in relay protocol: true|false rln-relay false Enable spam protection through rln-relay: true|false rln-relay-cred-path The path for persisting rln-relay credential rln-relay-membership-index The index of the onchain commitment to use rln-relay-dynamic false Enable waku-rln-relay with on-chain dynamic group management: true|false rln-relay-id-key Rln relay identity secret key as a Hex string rln-relay-id-commitment-key Rln relay identity commitment key as a Hex string rln-relay-eth-client-address ws://localhost:8540/ WebSocket address of an Ethereum testnet client e.g., ws://localhost:8540/ rln-relay-eth-contract-address Address of membership contract on an Ethereum testnet rln-relay-eth-private-key Private key for broadcasting transactions execute false Runs the registration function on-chain. By default, a dry-run will occur rln-relay-cred-password Password for encrypting RLN credentials rln-relay-tree-path Path to the RLN merkle tree sled db (https://github.com/spacejam/sled) rln-relay-bandwidth-threshold 0 # to maintain backwards compatibility Message rate in bytes/sec after which verification of proofs should happen staticnode Peer multiaddr to directly connect with. Argument may be repeated keep-alive false Enable keep-alive for idle connections: true|false pubsub-topic Default pubsub topic to subscribe to. Argument may be repeated. Deprecated! Please use shard and/or content-topic instead shard Shard to subscribe to. Argument may be repeated content-topic Default content topic to subscribe to. Argument may be repeated reliability false Enable experimental reliability protocol true|false","s":"Relay config","u":"/guides/nwaku/config-options","h":"#relay-config","p":151},{"i":164,"t":"Name Default Value Description store false Enable/disable waku store protocol storenode Peer multiaddress to query for storage store-message-retention-policy time:172800 Message store retention policy. Time retention policy: time:. Capacity retention policy: capacity:. Size retention policy: size:. Set to none to disable store-message-db-url sqlite://store.sqlite3 The database connection URL for persistent storage store-message-db-vacuum false Enable database vacuuming at start. Only supported by SQLite database engine store-message-db-migration true Enable database migration at start","s":"Store and message store config","u":"/guides/nwaku/config-options","h":"#store-and-message-store-config","p":151},{"i":166,"t":"Name Default Value Description filter false Enable filter protocol: true|false filternode Peer multiaddr to request content filtering of messages filter-subscription-timeout 300 # 5 minutes Timeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol filter-max-peers-to-serve 1000 Maximum number of peers to serve at a time. Only for v2 filter protocol filter-max-criteria 1000 Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol","s":"Filter config","u":"/guides/nwaku/config-options","h":"#filter-config","p":151},{"i":168,"t":"Name Default Value Description lightpush false Enable lightpush protocol: true|false lightpushnode Peer multiaddr to request lightpush of published messages","s":"Light push config","u":"/guides/nwaku/config-options","h":"#light-push-config","p":151},{"i":170,"t":"Name Default Value Description rest false Enable Waku REST HTTP server: true|false rest-address 127.0.0.1 Listening address of the REST HTTP server rest-port 8645 Listening port of the REST HTTP server rest-relay-cache-capacity 30 Capacity of the Relay REST API message cache rest-admin false Enable access to REST HTTP Admin API: true|false rest-allow-origin Allow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,*) for defining URLs and ports such as localhost:*, 127.0.0.1:8080, or allow any website with *","s":"REST HTTP config","u":"/guides/nwaku/config-options","h":"#rest-http-config","p":151},{"i":172,"t":"Name Default Value Description metrics-server false Enable the metrics server: true|false metrics-server-address 127.0.0.1 Listening address of the metrics server metrics-server-port 8008 Listening HTTP port of the metrics server metrics-logging true Enable metrics logging: true|false","s":"Metrics config","u":"/guides/nwaku/config-options","h":"#metrics-config","p":151},{"i":174,"t":"Name Default Value Description dns-discovery false Enable discovering nodes via DNS dns-discovery-url URL for DNS node list in format 'enrtree://@' dns-discovery-name-server [\"1.1.1.1\", \"1.0.0.1\"] DNS name server IPs to query. Argument may be repeated","s":"DNS discovery config","u":"/guides/nwaku/config-options","h":"#dns-discovery-config","p":151},{"i":176,"t":"Name Default Value Description discv5-discovery false Enable discovering nodes via Node Discovery v5 discv5-udp-port 9000 Listening UDP port for Node Discovery v5 discv5-bootstrap-node Text-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated discv5-enr-auto-update false Discovery can automatically update its ENR with the IP address discv5-table-ip-limit 10 Maximum amount of nodes with the same IP in discv5 routing tables discv5-bucket-ip-limit 2 Maximum amount of nodes with the same IP in discv5 routing table buckets discv5-bits-per-hop 1 Kademlia's b variable, increase for less hops per lookup","s":"Discv5 config","u":"/guides/nwaku/config-options","h":"#discv5-config","p":151},{"i":178,"t":"Name Default Value Description peer-exchange false Enable waku peer exchange protocol (responder side): true|false peer-exchange-node Peer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)","s":"Waku peer exchange config","u":"/guides/nwaku/config-options","h":"#waku-peer-exchange-config","p":151},{"i":180,"t":"Name Default Value Description websocket-support false Enable websocket: true|false websocket-port 8000 WebSocket listening port websocket-secure-support false Enable secure websocket: true|false websocket-secure-key-path Secure websocket key path: '/path/to/key.txt' websocket-secure-cert-path Secure websocket Certificate path: '/path/to/cert.txt'","s":"WebSocket config","u":"/guides/nwaku/config-options","h":"#websocket-config","p":151},{"i":182,"t":"Name Default Value Description rate-limit This is a repeatable option. Each one of them can describe spefic rate limit configuration for a particular protocol. \\:volume/period\\ - if protocol is not given, settings will be taken as default for un-set protocols. Ex: 80/2s -Supported protocols are: lightpush|filter|px|store|storev2|storev3 -volume must be an integer value, representing number of requests over the period of time allowed. -period\\ must be an integer with defined unit as one of h|m|s|ms - storev2 and storev3 takes precedence over store which can easy set both store protocols at once. - In case of multiple set of the same protocol limit, last one will take place. - if config is not set it means unlimited requests are allowed. -filter has a bit different approach. It has a default setting applied if not overridden. Rate limit setting for filter will be applied per subscriber-peers, not globally - it must be considered when changing the setting. Examples: - 100/1s - default for all protocols if not set otherwise. -lightpush:0/0s - lightpush protocol will be not rate limited. -store:130/1500ms - both store-v3 and store-v2 will apply 130 request per each 1500ms separately. -px:10/1h PeerExchange will serve only 10 requests in every hour. -filter:8/5m - will allow 8 subs/unsubs/ping requests for each subscribers within every 5 min. tip To configure your node using the provided configuration options, have a look at the Node Configuration Methods guide.","s":"Non relay, request-response protocol DOS protection configuration","u":"/guides/nwaku/config-options","h":"#non-relay-request-response-protocol-dos-protection-configuration","p":151},{"i":184,"t":"caution Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future. The @waku/react package provides components and UI adapters to integrate @waku/sdk into React applications effortlessly. This guide provides detailed steps for using @waku/react in your project.","s":"Build React DApps Using @waku/react","u":"/guides/js-waku/use-waku-react","h":"","p":183},{"i":186,"t":"First, set up a project using any production-grade React framework or an existing React application. For this guide, we will create a boilerplate using ViteJS: NPM Yarn npm create vite@latest [PROJECT DIRECTORY] -- --template react yarn create vite [PROJECT DIRECTORY] --template react Next, install the required packages for integrating @waku/sdk using your preferred package manager: NPM Yarn npm install @waku/react @waku/sdk protobufjs yarn add @waku/react @waku/sdk protobufjs","s":"Install the dependencies","u":"/guides/js-waku/use-waku-react","h":"#install-the-dependencies","p":183},{"i":188,"t":"In the main.jsx file, which serves as the entry point for a React app, we will set up the LightNodeProvider context provider to wrap the entire application within the Waku provider. Import the following on top of your file: src/main.jsx import { LightNodeProvider } from \"@waku/react\"; // Set the Light Node options const NODE_OPTIONS = { defaultBootstrap: true }; ReactDOM.createRoot(document.getElementById('root')).render( // Use the Light Node context provider , ) Next, create and start a Light Node using the useWaku() function within the App.jsx file: src/App.jsx import { useWaku } from \"@waku/react\"; function App() { // Create and start a Light Node const { node, error, isLoading } = useWaku(); // \"node\" is the created Light Node // \"error\" captures any error that occurs during node creation // \"isLoading\" indicates whether the node is still being created }","s":"Initialise the Waku provider","u":"/guides/js-waku/use-waku-react","h":"#initialise-the-waku-provider","p":183},{"i":190,"t":"Let's build a user interface for sending messages and viewing past messages, modify the App.jsx file with the following code block: src/App.jsx import { useState, useEffect } from 'react'; import { useWaku } from \"@waku/react\"; import { createEncoder, createDecoder } from \"@waku/sdk\"; import protobuf from 'protobufjs'; import './App.css' function App() { const [inputMessage, setInputMessage] = useState(\"\"); const [messages, setMessages] = useState([]); // Update the inputMessage state as the user input changes const handleInputChange = (e) => { setInputMessage(e.target.value); }; // Create and start a Light Node const { node, error, isLoading } = useWaku(); // Create a message encoder and decoder const contentTopic = \"/waku-react-guide/1/chat/proto\"; const encoder = createEncoder({ contentTopic }); const decoder = createDecoder(contentTopic); // Create a message structure using Protobuf const ChatMessage = new protobuf.Type(\"ChatMessage\") .add(new protobuf.Field(\"timestamp\", 1, \"uint64\")) .add(new protobuf.Field(\"message\", 2, \"string\")); // Send the message using Light Push const sendMessage = async () => {} return ( <>

Waku React Demo

{messages.map((message, index) => (
{new Date(message.timestamp).toUTCString()}
{message.message}
))}
) } export default App info In the code above, we also created a message encoder and decoder using the createEncoder() and createDecoder() functions, along with the application message structure with Protobuf. Next, modify the App.css file with the following code block: src/App.css #root { margin: 0 auto; } .chat-interface { display: flex; flex-direction: column; height: 100vh; border: 1px solid #ccc; } .chat-body { flex-grow: 1; overflow-y: auto; padding: 10px; } .message-text { background-color: #f1f1f1; color: #000; padding: 10px; margin-bottom: 10px; } .chat-footer { display: flex; padding: 10px; background-color: #f1f1f1; align-items: center; } #message-input { flex-grow: 1; border-radius: 4px; padding: 10px; margin-right: 10px; } .send-button { background-color: #007bff; border-radius: 4px; }","s":"Build the application interface","u":"/guides/js-waku/use-waku-react","h":"#build-the-application-interface","p":183},{"i":192,"t":"To send messages in our application, we need to modify the sendMessage() function to serialize user input into our Protobuf structure and push it to the network using the useLightPush() function: src/App.jsx import { useLightPush } from \"@waku/react\"; function App() { // Bind push method to a node and encoder const { push } = useLightPush({ node, encoder }); // Send the message using Light Push const sendMessage = async () => { if (!push || inputMessage.length === 0) return; // Create a new message object const timestamp = Date.now(); const protoMessage = ChatMessage.create({ timestamp: timestamp, message: inputMessage }); // Serialise the message and push to the network const payload = ChatMessage.encode(protoMessage).finish(); const { recipients, errors } = await push({ payload, timestamp }); // Check for errors if (errors.length === 0) { setInputMessage(\"\"); console.log(\"MESSAGE PUSHED\"); } else { console.log(errors); } }; }","s":"Send messages using light push","u":"/guides/js-waku/use-waku-react","h":"#send-messages-using-light-push","p":183},{"i":194,"t":"To display messages in our application, we need to use the useFilterMessages() function to create a Filter subscription, receive incoming messages, and render them in our interface: src/App.jsx import { useFilterMessages } from \"@waku/react\"; function App() { // Receive messages from Filter subscription const { messages: filterMessages } = useFilterMessages({ node, decoder }); // Render the list of messages useEffect(() => { setMessages(filterMessages.map((wakuMessage) => { if (!wakuMessage.payload) return; return ChatMessage.decode(wakuMessage.payload); })); }, [filterMessages]); }","s":"Receive messages using filter","u":"/guides/js-waku/use-waku-react","h":"#receive-messages-using-filter","p":183},{"i":196,"t":"To display messages from the past, we need to retrieve them from the Store protocol using the useStoreMessages() function when our application initialises and then render them alongside newly received messages: src/App.jsx import { useFilterMessages, useStoreMessages } from \"@waku/react\"; function App() { // Query Store peers for past messages const { messages: storeMessages } = useStoreMessages({ node, decoder }); // Receive messages from Filter subscription const { messages: filterMessages } = useFilterMessages({ node, decoder }); // Render both past and new messages useEffect(() => { const allMessages = storeMessages.concat(filterMessages); setMessages(allMessages.map((wakuMessage) => { if (!wakuMessage.payload) return; return ChatMessage.decode(wakuMessage.payload); })); }, [filterMessages, storeMessages]); } info To explore the available Store query options, have a look at the Retrieve Messages Using Store Protocol guide. tip You have successfully integrated @waku/sdk into a React application using the @waku/react package. Have a look at the web-chat example for a working demo and the Building a Tic-Tac-Toe Game with Waku tutorial to learn more.","s":"Retrieve messages using store","u":"/guides/js-waku/use-waku-react","h":"#retrieve-messages-using-store","p":183},{"i":198,"t":"How can I run a Waku node? Check out the Run Nwaku with Docker Compose guide to learn the simplest and fastest way to run a node. You can also check the comprehensive Run a Nwaku Node guide to explore other options like downloading binaries and building from source. What are the system requirements for running a node? We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient. How can I interact with my running nwaku node? You can interact with a running nwaku node using the REST API interface or the JavaScript Waku SDK. How can I view the logs of a nwaku node running in Docker? To check your node logs in Docker, use the command: \"docker-compose logs -f nwaku\" What configuration methods are available for nwaku nodes? You can configure Nwaku nodes using command line options and flags, environment variables, and TOML configuration files. Check out the Node Configuration Methods guide to understand their usage and priority. How can I configure my nwaku node before running? Check out the Node Configuration Options guide for available node configuration options, their default values and descriptions. For examples of common configuration use cases, visit the Node Configuration Examples guide. What peer discovery mechanisms are available for nwaku nodes, and how can I configure them? You can configure peer discovery for nwaku nodes through options like Static Peers, DNS Discovery, DiscV5, and Peer Exchange. Check out the Configure Peer Discovery guide for setting up your node. How do I find my nwaku node's addresses for peer discovery? The node listening and ENR addresses can be found through the node's logs and REST API. Check out the Find the node addresses section to understand how to locate your node addresses.","s":"Nwaku FAQ","u":"/guides/nwaku/faq","h":"","p":197},{"i":200,"t":"This guide provides detailed steps to configure a nwaku node for different use cases.","s":"Node Configuration Examples","u":"/guides/nwaku/configure-nwaku","h":"","p":199},{"i":202,"t":"To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms: Configure Static Peers Configure DNS Discovery Configure Discv5 Configure Peer Exchange","s":"Connect to other peers","u":"/guides/nwaku/configure-nwaku","h":"#connect-to-other-peers","p":199},{"i":204,"t":"You can set up an IPv4 DNS domain name that resolves to the public IPv4 address of a node using the dns4-domain-name option. This allows the node's publicly announced multiaddrs to use the /dns4 scheme. ./build/wakunode2 --dns4-domain-name=[DOMAIN NAME] For example, consider the domain name nwakunode.com, which resolves to a nwaku node: ./build/wakunode2 --dns4-domain-name=nwakunode.com Browser nodes can only connect to nodes with a domain name and secure WebSocket (wss) configured. These nodes will generate a discoverable ENR with /wss as the multiaddr and /dns4 as the domain name. This configuration is essential for verifying domain certificates when establishing a secure connection. info This example describes configuring a domain name that resolves to your node's IP address and is unrelated to DNS Discovery. tip You can use the domain name provided by your cloud provider to configure the domain name for your node.","s":"Configure a domain name","u":"/guides/nwaku/configure-nwaku","h":"#configure-a-domain-name","p":199},{"i":206,"t":"To enable message caching and serve them to network peers, enable the Store protocol using the following configuration options: store: Enables storing messages to serve them to peers (disabled by default). store-message-retention-policy: Retention policy of the store node (how long messages will be stored). Three different retention policies are supported: Time retention policy: time: (e.g., time:14400) Capacity retention policy: capacity: (e.g, capacity:25000) Size retention policy: size: (e.g, size:512MB or size:10GB) Set this option to none to disable the retention policy. If you omit this option, it will default to time:172800 (48 hours). store-message-db-url: Database connection URL for storing messages in the SQLAlchemy database URL format. Setting this option to an empty string will instruct the node to use the fallback in-memory message store. If you omit this option, it will default to sqlite://store.sqlite3. ./build/wakunode2 \\ --store=true \\ --store-message-retention-policy=[MESSAGE RETENTION POLICY] \\ --store-message-db-url=[DATABASE CONNECTION URL] For example, consider a nwaku node that is configured to be a Store protocol and retain messages received in the last 21600 seconds (6 hours): ./build/wakunode2 \\ --store=true \\ --store-message-retention-policy=time:21600 \\ --store-message-db-url=sqlite://store.sqlite3 You can configure nwaku as a Store client using the storenode option. This allows the node to query peers for historical messages but not store any message itself. ./build/wakunode2 --storenode=[STORE PEER MULTIADDR] For example, consider a nwaku node that does not store messages but can query peers for historical messages: ./build/wakunode2 --storenode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV","s":"Configure store protocol and message store","u":"/guides/nwaku/configure-nwaku","h":"#configure-store-protocol-and-message-store","p":199},{"i":208,"t":"Nodes generate new random key pairs at each boot, leading to different multiaddrs. To maintain consistency, you can use a pre-generated private key with the nodekey option: ./build/wakunode2 --nodekey=[NODE PRIVATE KEY] This option takes a Secp256k1 private key (64-char hex string). On Linux, you can use the OpenSSL rand command for a pseudo-random 32-byte hex string: openssl rand -hex 32 # 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 On Linux, you can create a reusable key file using OpenSSL. To get the 32-byte private key in hex format, use the ecparam command and some standard utilities: # Generate key file openssl ecparam -genkey -name secp256k1 -out my_private_key.pem # Extract 32-byte private key openssl ec -in my_private_key.pem -outform DER | tail -c +8 | head -c 32| xxd -p -c 32 # read EC key # writing EC key # 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 You can use the output 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 as a Node Key for nwaku: ./build/wakunode2 --nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8","s":"Generate and configure a node key","u":"/guides/nwaku/configure-nwaku","h":"#generate-and-configure-a-node-key","p":199},{"i":210,"t":"WebSocket is the only transport method browser nodes support using @waku/sdk. To enable WebSocket in nwaku to serve browser peers, use the following configuration options: websocket-support: Enables WebSocket (ws) on the node (disabled by default). websocket-port (optional): WebSocket listening port. If you omit this option, it will default to 8000. websocket-secure-support: Enables Secure WebSocket (wss) on the node (disabled by default). websocket-secure-key-path: Secure WebSocket key path. websocket-secure-cert-path: Secure WebSocket Certificate path. ./build/wakunode2 \\ --websocket-support=true \\ --websocket-port=[WEBSOCKET LISTENING PORT] \\ --websocket-secure-support=true \\ --websocket-secure-key-path=[SECURE WEBSOCKET KEY PATH] \\ --websocket-secure-cert-path=[SECURE WEBSOCKET CERTIFICATE PATH] For example, consider a nwaku node that enabled WebSocket (unencrypted) for local testing on port 8001: ./build/wakunode2 \\ --websocket-support=true \\ --websocket-port=8001 Consider a nwaku node that enabled Secure WebSocket (encrypted) using its key and certificate (privkey.pem and fullchain.pem) on port 8002: ./build/wakunode2 \\ --websocket-secure-support=true \\ --websocket-secure-key-path=privkey.pem \\ --websocket-secure-cert-path=fullchain.pem \\ --websocket-port=8002 tip You can use Let's Encrypt or Certbot to generate a valid certificate for your nwaku node: sudo certbot certonly -d ","s":"Configure WebSocket transport","u":"/guides/nwaku/configure-nwaku","h":"#configure-websocket-transport","p":199},{"i":212,"t":"Nwaku provides a REST API to interact with the node and Waku Network. To enable the REST API, use the following configuration options: rest: Enables the REST API server on the node (disabled by default). rest-address (optional): Listening address of the REST API server. If you omit this option, it will default to 127.0.0.1. rest-port (optional): Listening port of the REST API server. If you omit this option, it will default to 8645. rest-relay-cache-capacity (optional): Capacity of the Relay REST API message cache. If you omit this option, it will default to 30. rest-admin (optional): Enables access to REST admin API (disabled by default). rest-private (optional): Enables access to REST private API (disabled by default). ./build/wakunode2 \\ --rest=true \\ --rest-address=[REST SERVER LISTENING ADDRESS] \\ --rest-port=[REST SERVER LISTENING PORT] \\ --rest-relay-cache-capacity=[MESSAGE CACHE CAPACITY] \\ --rest-admin=[true|false] \\ --rest-private=[true|false] For example, consider a nwaku node that enabled the REST API server on port 9000: ./build/wakunode2 \\ --rest=true \\ --rest-port=9000 \\ --rest-address=127.0.0.1 Consider a nwaku node that enabled the REST admin and private API with a message cache capacity of 100: ./build/wakunode2 \\ --rest=true \\ --rest-admin=true \\ --rest-private=true \\ --rest-relay-cache-capacity=100","s":"Configure REST API server","u":"/guides/nwaku/configure-nwaku","h":"#configure-rest-api-server","p":199},{"i":214,"t":"To enable nwaku to serve light clients, enable the Filter protocol using filter option: ./build/wakunode2 --filter=true You can configure nwaku as a Filter client using the filternode and filter-timeout options. This allows the node to request content filtering of messages from peers. ./build/wakunode2 \\ --filternode=[FILTER PEER MULTIADDR] \\ --filter-timeout=[FILTER PEER TIMEOUT] For example, consider a nwaku node that requests content filtering of messages from peers with a timeout of 21600 seconds (6 hours): ./build/wakunode2 \\ --filternode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV \\ --filter-timeout=21600 info If you omit the filter-timeout option, it will default to 14400 seconds (4 hours).","s":"Configure filter protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-filter-protocol","p":199},{"i":216,"t":"To enable nwaku to serve light clients, enable the Light Push protocol using the lightpush option: ./build/wakunode2 --lightpush=true You can configure nwaku as a Light Push client using the lightpushnode option. This allows the node to request lightpush of published messages from peers. ./build/wakunode2 --lightpushnode=[LIGHT PUSH PEER MULTIADDR] For example, consider a nwaku node that requests lightpush of published messages from peers: ./build/wakunode2 --lightpushnode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV","s":"Configure light push protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-light-push-protocol","p":199},{"i":218,"t":"When using a reverse proxy server for SSL/TLS encryption, you only want to announce the proxy server's IP or domain. Nwaku provides the ext-multiaddr-only and ext-multiaddr options for specifying published multiaddr: ./build/wakunode2 \\ --ext-multiaddr-only=true \\ --ext-multiaddr=[MULTIADDR TO PUBLISH] info The ext-multiaddr-only option takes precedence over the nat and dns4-domain-name options, using the values provided by the ext-multiaddr option instead.","s":"Run nwaku behind a reverse proxy","u":"/guides/nwaku/configure-nwaku","h":"#run-nwaku-behind-a-reverse-proxy","p":199},{"i":220,"t":"This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network. info You can configure a nwaku node to use multiple peer discovery mechanisms simultaneously.","s":"Configure Peer Discovery","u":"/guides/nwaku/configure-discovery","h":"","p":219},{"i":222,"t":"You can provide static peers to a nwaku node during startup using the staticnode configuration option. To connect to multiple peers on startup, repeat the staticnode option: ./build/wakunode2 \\ --staticnode=[PEER MULTIADDR 1] \\ --staticnode=[PEER MULTIADDR 2] For example, consider a nwaku node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003: ./build/wakunode2 \\ --staticnode=/ip4/0.0.0.0/tcp/60002/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H \\ --staticnode=/ip4/0.0.0.0/tcp/60003/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ","s":"Configure static peers","u":"/guides/nwaku/configure-discovery","h":"#configure-static-peers","p":219},{"i":224,"t":"To enable DNS Discovery in a nwaku node, use the following configuration options: dns-discovery: Enables DNS Discovery on the node (disabled by default). dns-discovery-url: URL for DNS node list in the format enrtree://@ where is the fully qualified domain name and is the base32 encoding of the compressed 32-byte public key that signed the list at that location. dns-discovery-name-server (optional): DNS name server IPs to query. You can repeat this option to provide multiple DNS name servers. ./build/wakunode2 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://[PUBLIC KEY]@[DOMAIN NAME] \\ --dns-discovery-name-server=[DNS NAME SERVER IP] info If you omit the dns-discovery-name-server option, nwaku will attempt to use the CloudFlare servers 1.1.1.1 and 1.0.0.1. For example, consider a nwaku node that enables DNS Discovery, connects to a DNS node list, and queries the IPs 8.8.8.8 and 8.8.4.4: ./build/wakunode2 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\ --dns-discovery-name-server=8.8.8.8 \\ --dns-discovery-name-server=8.8.4.4","s":"Configure DNS discovery","u":"/guides/nwaku/configure-discovery","h":"#configure-dns-discovery","p":219},{"i":226,"t":"To enable Discv5 in a nwaku node, use the following configuration options: discv5-discovery: Enables Discv5 on the node (disabled by default). discv5-bootstrap-node: ENR for Discv5 routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries. ./build/wakunode2 \\ --discv5-discovery=true \\ --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 1] \\ --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 2] For example, consider a nwaku node that enables Discv5 and bootstraps its routing table using a static ENR: ./build/wakunode2 \\ --discv5-discovery=true \\ --discv5-bootstrap-node=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw info When Discv5 is enabled and used with DNS Discovery, the nwaku node will attempt to bootstrap the Discv5 routing table by extracting ENRs from peers discovered through DNS.","s":"Configure Discv5","u":"/guides/nwaku/configure-discovery","h":"#configure-discv5","p":219},{"i":228,"t":"To enable Peer Exchange in a nwaku node, use the following configuration options: peer-exchange: Enables Peer Exchange on the node as a responder (disabled by default). peer-exchange-node (optional): Multiaddr for bootstrap node with the peer exchange protocol enabled. ./build/wakunode2 \\ --peer-exchange=true \\ --peer-exchange-node=[PEER MULTIADDR WITH EXCHANGE ENABLED] For example, consider two nwaku nodes configured as a server (peer exchange responder node) and client (node using peer exchange) on the same local host (IP: 0.0.0.0): Server: Nwaku Node with Peer Exchange Enabled ./build/wakunode2 --peer-exchange=true Client: Nwaku Node Bootstrapping with Peer Exchange ./build/wakunode2 \\ --tcp-port=30305 \\ --ports-shift=1 \\ --peer-exchange-node=/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLCe6zVqCS6KMqqRbbhyoJjfYZGr1Q3thTSbyKzibQkFR info nwaku provides a relay-peer-exchange option via libp2p for peer exchange, allowing network growth through neighbouring nodes. However, this feature can compromise security and network robustness, so we recommend only using it in high-trust environments.","s":"Configure peer exchange","u":"/guides/nwaku/configure-discovery","h":"#configure-peer-exchange","p":219},{"i":230,"t":"info When starting the node, nwaku will display all the public listening and discovery addresses at the INFO log level. You can find the addresses of a running node through its logs or by calling the Get node info endpoint of the REST API.","s":"Find Your Node Address","u":"/guides/nwaku/find-node-address","h":"","p":229},{"i":232,"t":"Look for the log entry that begins with Listening on, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 Listening on topics=\"waku node\" tid=1623445 file=waku_node.nim:922 full=[/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn][/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn] # Listening TCP transport address /ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn # Listening WebSocket address /ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn","s":"Listening addresses","u":"/guides/nwaku/find-node-address","h":"#listening-addresses","p":229},{"i":234,"t":"A nwaku node can encode its addressing information in an Ethereum Node Record (ENR).","s":"Discoverable ENR addresses","u":"/guides/nwaku/find-node-address","h":"#discoverable-enr-addresses","p":229},{"i":236,"t":"Look for the log entry that begins with DNS: discoverable ENR, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 DNS: discoverable ENR topics=\"waku node\" tid=1623445 file=waku_node.nim:923 enr=enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB # ENR the node addresses are encoded in enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB","s":"ENR for DNS discovery","u":"/guides/nwaku/find-node-address","h":"#enr-for-dns-discovery","p":229},{"i":238,"t":"Look for the log entry that begins with Discv5: discoverable ENR, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 Discv5: discoverable ENR topics=\"waku node\" tid=1623445 file=waku_node.nim:924 enr=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw # ENR the node addresses are encoded in enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw Congratulations! You have successfully found the listening and discoverable addresses for your nwaku node. Have a look at the Configure Peer Discovery](/guides/nwaku/configure-discovery) guide to learn how to discover and connect with peers in the network.","s":"ENR for Discv5","u":"/guides/nwaku/find-node-address","h":"#enr-for-discv5","p":229},{"i":240,"t":"nwaku-compose is a ready-to-use Docker Compose setup that configures the following automatically: nwaku node running Relay and Store protocols with RLN enabled. Simple frontend to interact with the node and Waku network to send and receive messages. Grafana metrics dashboard for advanced users and node operators to monitor the node.","s":"Run Nwaku with Docker Compose","u":"/guides/nwaku/run-docker-compose","h":"","p":239},{"i":242,"t":"tip Check out the Waku Node Operator Cheatsheet to learn how to easily run, monitor, and interact with a node.","s":"Video tutorial","u":"/guides/nwaku/run-docker-compose","h":"#video-tutorial","p":239},{"i":244,"t":"Git or GitHub Desktop Docker and Docker Compose Ethereum Sepolia HTTPS Endpoint Wallet with Sepolia Ethereum (~0.6 Sepolia ETH) A password to protect your RLN membership info We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.","s":"Prerequisites","u":"/guides/nwaku/run-docker-compose","h":"#prerequisites","p":239},{"i":246,"t":"git clone https://github.com/waku-org/nwaku-compose cd nwaku-compose","s":"Clone the repository","u":"/guides/nwaku/run-docker-compose","h":"#clone-the-repository","p":239},{"i":248,"t":"Docker Compose reads the .env file from the filesystem. You can use .env.example as a template to provide the configuration values. The recommended process for working with .env files is to duplicate .env.example, rename it as .env, and then make the necessary value edits. cp .env.example .env ${EDITOR} .env caution Ensure that you do NOT include any secrets in the .env.example file, as it could accidentally be shared in your Git repository.","s":"Configure the setup","u":"/guides/nwaku/run-docker-compose","h":"#configure-the-setup","p":239},{"i":250,"t":"The RLN membership is your access key to The Waku Network. Its registration is done on-chain, allowing your nwaku node to send messages decentralised and privately, respecting some rate limits. Other peers won't relay messages that exceed the rate limit. This command registers your membership and saves it in the keystore/keystore.json file. You should have Docker running at this step: ./register_rln.sh tip If you only want to relay traffic without sending messages to the network, you don't need to register for RLN membership.","s":"Register for RLN membership","u":"/guides/nwaku/run-docker-compose","h":"#register-for-rln-membership","p":239},{"i":252,"t":"Launch all the processes: nwaku node, database for storing messages, and Grafana for metrics with the following command. Your RLN membership is loaded into nwaku under the hood: docker-compose up -d View the logs of the node to confirm that it is running correctly: docker-compose logs -f nwaku","s":"Run the node","u":"/guides/nwaku/run-docker-compose","h":"#run-the-node","p":239},{"i":254,"t":"Visit http://localhost:3000/d/yns_4vFVk/nwaku-monitoring to view your node metrics in real time. tip To access Grafana from outside your machine, remove 127.0.0.1 and open the port. Consider setting up a password for Grafana to ensure security.","s":"Monitor the node","u":"/guides/nwaku/run-docker-compose","h":"#monitor-the-node","p":239},{"i":256,"t":"Your nwaku node provides a REST API on port 8645 for interacting with it: # Get nwaku version curl --location 'http://127.0.0.1:8645/debug/v1/version' # Get nwaku info curl --location 'http://127.0.0.1:8645/debug/v1/info' Send a message to a contentTopic, which all subscribers will receive. Please note that the payload is encoded in base64. curl --location 'http://127.0.0.1:8645/relay/v1/auto/messages' \\ --header 'Content-Type: application/json' \\ --data '{ \"payload\": \"'$(echo -n \"Hello Waku Network - from Anonymous User\" | base64)'\", \"contentTopic\": \"/my-app/2/chatroom-1/proto\" }' Retrieve messages sent to a contentTopic. Please note that this query can be made to any Store node within the network: curl --location 'http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true' \\ --header 'Accept: application/json' tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord. Congratulations! You have successfully started a nwaku node with RLN enabled using Docker Compose. Have a look at the Node Configuration Examples and Advanced Configuration guides to learn how to configure nwaku for different use cases.","s":"Interact with the node","u":"/guides/nwaku/run-docker-compose","h":"#interact-with-the-node","p":239},{"i":258,"t":"This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.","s":"Run Nwaku in a Docker Container","u":"/guides/nwaku/run-docker","h":"","p":257},{"i":260,"t":"Ensure Docker is installed on your system using the appropriate instructions provided in the Docker documentation. info We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.","s":"Prerequisites","u":"/guides/nwaku/run-docker","h":"#prerequisites","p":257},{"i":262,"t":"The Nwaku Docker images are available on the Docker Hub public registry under the statusteam/nim-waku repository. Please visit statusteam/nim-waku/tags for images of specific releases.","s":"Get Docker image","u":"/guides/nwaku/run-docker","h":"#get-docker-image","p":257},{"i":264,"t":"You can also build the Docker image locally: # Clone the repository git clone --recurse-submodules https://github.com/waku-org/nwaku cd nwaku # Build docker image make docker-image","s":"Build Docker image","u":"/guides/nwaku/run-docker","h":"#build-docker-image","p":257},{"i":266,"t":"Run nwaku in a new Docker container: docker run [OPTIONS] [IMAGE] [ARG...] OPTIONS are your selected Docker options IMAGE is the image and tag you pulled from the registry or built locally ARG... is the list of arguments for your node configuration options Run nwaku using the most typical configuration: docker run -i -t -p 60000:60000 -p 9000:9000/udp statusteam/nim-waku:v0.20.0 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\ --discv5-discovery=true \\ --nat=extip:[YOUR PUBLIC IP] # or, if you are behind a nat: --nat=any To find your public IP, use: dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{ print $2}' info We recommend using explicit port mappings (-p) when exposing ports accessible from outside the host (listening and discovery ports, API servers). tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord. Congratulations! You have successfully built and started a nwaku node in a Docker container. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Run Docker container","u":"/guides/nwaku/run-docker","h":"#run-docker-container","p":257},{"i":268,"t":"If you are currently using Nwaku, running an old version and want to upgrade your node, please follow the below migration instructions for each target release newer than your current running version in ascending order. For example, if you are interested in the version v0.32.0 and are currently running v0.30.0, follow the instructions for v0.31.0 and then the ones for v0.32.0","s":"Upgrade Instructions","u":"/guides/nwaku/upgrade-instructions","h":"","p":267},{"i":270,"t":"v0.32.0 The --protected-topic CLI config was deprecated and is replaced by the new --protected-shard configuration. Instead of configuring topic:public_key you will now need to configure shard:public_key For example, if you used to run your node with --protected-topic=\"waku/2/rs/3/4:your_public_key\" you will need to replace this configuration for --protected-shard=\"4:your_public_key\" v0.31.0 Named sharding was deprecated in this version. This means that pubsub topics will only be supported if they comply with the static sharding format: /waku/2/rs// In order to migrate your existing application, you need to: Make sure that your clients are sending messages to pubsub topics in the required format. Check that in your interactions with Nwaku's REST API or when using js-waku, the configured pubsub topics follow the static sharding format defined above. When running a node with the --pubsub-topic CLI flag, the values provided should comply with the static sharding format. If your application relies on nodes or clients that may not be updated immediately, keep your node on an older version while subscribing to both the current pubsub topic and the new pubsub topic that will comply with the static sharding format. In that case, you can keep backward compatibility for a migration period.","s":"Target Releases","u":"/guides/nwaku/upgrade-instructions","h":"#target-releases","p":267},{"i":272,"t":"Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.","s":"Content Topics","u":"/learn/concepts/content-topics","h":"","p":271},{"i":274,"t":"Here is the recommended format for content topics: /{application-name}/{version}/{content-topic-name}/{encoding} application-name: This is the unique name of your decentralised application (DApp) to prevent conflicts with other DApps. version: Typically starting at 1, this field helps track breaking changes in your messages. content-topic-name: The specific name of the content topic used for filtering. encoding: The message encoding or serialisation format, with Protocol Buffers (proto) being the recommended choice. For example, if your DApp is called SuperCrypto and it allows users to receive notifications and send private messages, you can consider using the following content topics: /supercrypto/1/notification/proto /supercrypto/1/private-message/proto tip While you can choose any encoding format for your Content Topic, we highly recommend using Protocol Buffers (proto) because of its efficiency. Choosing a lightweight format ensures optimal performance of your DApp.","s":"Naming format","u":"/learn/concepts/content-topics","h":"#naming-format","p":271},{"i":276,"t":"When choosing a content topic, it is essential to consider the privacy implications. Here are several factors to keep in mind:","s":"Naming considerations","u":"/learn/concepts/content-topics","h":"#naming-considerations","p":271},{"i":278,"t":"The Filter, Store, and Light Push protocols share content topics with peers, allowing them to link IP and content topic interests. The Relay protocol, using GossipSub, provides recipient anonymity, which can be compromised if the content topic exposes user information. For example, instead of using Personally Identifiable Information (PII) in the content topic (e.g., a public key), you can create buckets (e.g., based on the first 4 bytes of the public key hash). info Waku is developing privacy-preserving features like Anonymous Filter Subscription for the Filter protocol and Anonymous Query for the Store protocol to hide content topics from potential adversaries.","s":"Protocols disclose content topics to peers","u":"/learn/concepts/content-topics","h":"#protocols-disclose-content-topics-to-peers","p":271},{"i":280,"t":"You can increase k-anonymity within the network by using a unified content topic across the entire application or targeting specific features like notifications or private messages, allowing multiple users to share it. We recommend switching functionality using the Protocol Buffer (proto) message format. By doing so, applications can retain a high granularity and functionality while using a single content topic, preserving user privacy. For example: message NotificationPayload { ... } message FeatureAbcPayload { ... } // By default, all fields in protobuf are optional so only field may be encoded at a time message Payload { NotificationPayload notification = 1; FeatureAbcPayload feature_abc = 2; }","s":"Increasing k-anonymity preserves user anonymity","u":"/learn/concepts/content-topics","h":"#increasing-k-anonymity-preserves-user-anonymity","p":271},{"i":282,"t":"When an application uses a single content topic, all users using request/response protocols (Filter, Store) receive all its messages. For heavy traffic, developers can create buckets by hashing a unique identifier (e.g., recipient's ID, public key, or app domain topic) and adding its first byte to the content topic, like /my-app/0/a/proto. This approach divides traffic into multiple topics, reducing the messages users have to download. Developers can add more first bytes to the content topic over time to improve efficiency and privacy based on messages and user needs. info The k value of k-anonymity equals the number of IDs for which the first character of the hash is \"a\". For example, using a single content topic in an application with 10,000 users results in k = 10,000. However, using the hash ID's first character, k reduces to 10,000 / 16 = 625.","s":"Creating buckets help in distributing traffic","u":"/learn/concepts/content-topics","h":"#creating-buckets-help-in-distributing-traffic","p":271},{"i":284,"t":"Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources. This guide provides detailed steps to download, build, configure, and connect a nwaku node to the Waku Network. It also includes interacting with the node and finding its addresses. info We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.","s":"Run a Nwaku Node","u":"/guides/nwaku/run-node","h":"","p":283},{"i":286,"t":"To run a node, you must have the nwaku binary. Nwaku provides multiple options for running a node: Run nwaku in Docker (recommended)​ We recommend using Docker Compose to run a node because it's the simplest and fastest way to configure and run one: Description Documentation Docker Compose Run a nwaku node with Docker Compose Run Nwaku with Docker Compose Docker Container Run a nwaku node in a Docker Container Run Nwaku in a Docker Container Download the binary​ Description Documentation Precompiled Binary Download a precompiled binary of the nwaku node Download Nwaku Binary Nightly Release Try the latest nwaku updates without compiling the binaries Download Nightly Release Build the binary​ Description Documentation Build from Source Build the node from the nwaku source code Build Nwaku from Source tip You can run the nwaku binaries and Docker images on cloud service providers like Google Cloud, Microsoft Azure, Amazon Web Services, and DigitalOcean.","s":"Get the node binary","u":"/guides/nwaku/run-node","h":"#get-the-node-binary","p":283},{"i":288,"t":"Once you have gotten the nwaku binary, run it using the default configuration: # Run the Docker Compose docker-compose up -d # Run the standalone binary ./build/wakunode2 tip To learn how to customise the configuration of a nwaku node, have a look at the Node Configuration Methods and Node Configuration Examples guides.","s":"Run the node","u":"/guides/nwaku/run-node","h":"#run-the-node","p":283},{"i":290,"t":"To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms: Description Documentation Static Peers Configure the bootstrap nodes that nwaku should establish connections upon startup Configure Static Peers DNS Discovery Enable nwaku to bootstrap nodes using the DNS Discovery mechanism Configure DNS Discovery Discv5 Enable nwaku to discover peers using the Discv5 mechanism Configure Discv5 Peer Exchange Enable Peer Exchange protocol for light nodes to request peers from your nwaku node Configure Peer Exchange tip We suggest configuring WebSocket transport for your node to enable support and serving of browser peers using @waku/sdk.","s":"Bootstrap the node","u":"/guides/nwaku/run-node","h":"#bootstrap-the-node","p":283},{"i":292,"t":"You can interact with a running nwaku node through the REST API, such as querying the node information using the Get node info endpoint: Request Response curl --location 'http://127.0.0.1:8645/debug/v1/info' \\ --header 'Accept: application/json' { \"listenAddresses\": [ \"/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmUbPquFQqje3jiqoB5YoiUbBya59NB4qqEzeiTNGHeA6w\" ], \"enrUri\": \"enr:-Iu4QCQZXZDb_JsYmLoYor0F5E_95HbIywgO_wgx2rIdDbmCJZkTzmlCr0wmMzV47lgik_tVwww5mIng90Ris83TisMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQPszztG-Ev52ZB7tk0jF8s6Md4KvyY_rhzNZokaaB_ABIN0Y3CC6mCFd2FrdTIB\" } info The listenAddresses field stores the node's listening addresses, while the enrUri field stores the discoverable ENR URI for peer discovery.","s":"Interact with the node","u":"/guides/nwaku/run-node","h":"#interact-with-the-node","p":283},{"i":294,"t":"You can check the health status of the node by calling the Get node health status endpoint of the REST API: Request Response curl --location 'http://127.0.0.1:8645/health' \\ --header 'Accept: text/plain' Node is healthy tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord. Congratulations! You have successfully started, configured, and connected a nwaku node to the Waku Network. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Check the node health status","u":"/guides/nwaku/run-node","h":"#check-the-node-health-status","p":283},{"i":296,"t":"When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping. Once a connection is established, the node must actively seek out additional peers to have: Sufficient peers in the Relay mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed. Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections. Peers with specific capabilities: The node seeks out peers with specific capabilities, such as Store, Light Push, or Filter. This allows for targeted interactions and enhanced functionality based on the desired capabilities. Waku supports multiple peer discovery mechanisms, such as: Configuring Static Peers Peer Discovery via DNS Discv5 Ambient Peer Discovery Peer Exchange","s":"Peer Discovery","u":"/learn/concepts/peer-discovery","h":"","p":295},{"i":298,"t":"Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more. Pros​ Decentralised with random sampling from a global view. Continuously researched and improved. Cons​ Requires lots of connections and involves frequent churn. Relies on User Datagram Protocol (UDP), which is not supported in web browsers.","s":"Discv5","u":"/learn/concepts/discv5","h":"","p":297},{"i":300,"t":"DNS Discovery protocol is executed. Alice retrieves Bob's ENR (Ethereum Node Record) from DNS Server. Alice executes the Discv5 protocol with Bob using UDP connection details from ENR. Bob returns Carol's, David's and Erin's ENRs to Alice. Alice decodes ENRs and extracts the details of Carol, David, and Erin's TCP and UDP connections. Alice executes the Discv5 protocol with Carol using UDP connection details from ENR. Carol returns Frank's, Gwen's and Harry's ENRs to Alice. Alice decodes ENRs and extracts Frank's, Gwen's and Harry's TCP and UDP connection details. Alice selects to dial David, Frank and Gwen. Alice dials David, Frank and Gwen over libp2p using TCP connection details from ENRs.","s":"Overview","u":"/learn/concepts/discv5","h":"#overview","p":297},{"i":302,"t":"Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialised purposes and contribute to the robust functionality of Waku, forming its foundation.","s":"Network Domains","u":"/learn/concepts/network-domains","h":"","p":301},{"i":304,"t":"Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as Discv5 and Peer Exchange. These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.","s":"Discovery domain","u":"/learn/concepts/network-domains","h":"#discovery-domain","p":301},{"i":306,"t":"GossipSub derives its name from the practice within Pub/Sub networks where peers gossip about the messages they have encountered, thus establishing a message delivery network. Waku employs gossiping through Relay to distribute messages across the network. Additionally, Waku introduces RLN Relay, an experimental mechanism that combines privacy preservation and economic spam protection.","s":"Gossip domain","u":"/learn/concepts/network-domains","h":"#gossip-domain","p":301},{"i":308,"t":"Waku provides a set of protocols to optimise its performance in resource-limited environments like low bandwidth or mostly offline scenarios for multiple purposes. Store enables the retrieval of historical messages. Filter efficiently retrieves a subset of messages to conserve bandwidth. Light Push facilitates message publication for nodes with limited bandwidth and short connection windows.","s":"Request/response domain","u":"/learn/concepts/network-domains","h":"#requestresponse-domain","p":301},{"i":310,"t":"Here is a diagram illustrating the interaction between different protocols within the Waku Network. The Pub/Sub topic pubtopic1 serves as a means of routing messages (the network employs a default Pub/Sub topic) and indicates that it is subscribed to messages on that topic for a relay. Node D serves as a Store and is responsible for storing messages. Node A creates a WakuMessage msg1 with Content Topic contentTopic1. Node F requests to get messages filtered by Pub/Sub topic pubtopic1 and Content Topic contentTopic1. Node D subscribes F to this filter and will forward messages that match that filter in the future. Node A publishes msg1 on pubtopic1. The message is sent from Node A to Node B and then forwarded to Node D. Node D, upon receiving msg1, stores the message for future retrieval by other nodes and forwards it to Node C. Node D also pushes msg1 to Node F, informing it about the arrival of a new message. At a later time, Node E comes online and requests messages matching pubtopic1 and contentTopic1 from Node D. Node D responds with msg1 and potentially other messages that match the query.","s":"Overview of protocol interaction","u":"/learn/concepts/network-domains","h":"#overview-of-protocol-interaction","p":301},{"i":312,"t":"Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr. This bootstrapping method allows anyone to register and publish a domain name for the network, promoting increased decentralisation. Pros​ Low latency, low resource requirements. Easy bootstrap list updates by modifying the domain name, eliminating the need for code changes. Ability to reference a larger list of nodes by including other domain names in the code or ENR tree. Cons​ Vulnerable to censorship: Domain names can be blocked or restricted. Limited scalability: The listed nodes are at risk of being overwhelmed by receiving all queries. Also, operators must provide their ENR to the domain owner for listing.","s":"DNS Discovery","u":"/learn/concepts/dns-discovery","h":"","p":311},{"i":314,"t":"DNS lookup query to retrieve TXT data stored on example.com domain. enrtree-root is returned, and the value of e is the enr-root, the root hash of the node subtree. DNS lookup query to retrieve TXT data stored on .example.com domain. enrtree-branch is returned; this tree contains hashes of node subtrees. DNS lookup query to retrieve TXT data stored on DU...VQ.example.com domain, the first leaf of enrtree-branch. enr record is returned. Returned value is decoded, and peer connection details such as IP address and port are learned.","s":"Overview","u":"/learn/concepts/dns-discovery","h":"#overview","p":311},{"i":316,"t":"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network. info Peer Exchange enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood. Pros​ Low resource requirements. Decentralised with random sampling of nodes from a global view using Discv5. Cons​ Decreased anonymity. Imposes additional load on responder nodes.","s":"Peer Exchange","u":"/learn/concepts/peer-exchange","h":"","p":315},{"i":318,"t":"DNS Discovery protocol is executed. Alice retrieves Bob's websocket multiaddr from DNS Server. Alice dials Bob using libp2p protocols. Alice executes a Peer Exchange query to Bob. Bob returns Carol's and David's ENR to Alice. Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs. Alice dials Carol and David. Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network.","s":"Overview","u":"/learn/concepts/peer-exchange","h":"#overview","p":315},{"i":320,"t":"Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:","s":"Protocols","u":"/learn/concepts/protocols","h":"","p":319},{"i":322,"t":"Relay protocol employs a Pub/Sub architecture to facilitate the sending and receiving of messages among peers. It extends the libp2p GossipSub protocol to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. It also scales the Waku Network to accommodate many nodes efficiently.","s":"Relay","u":"/learn/concepts/protocols","h":"#relay","p":319},{"i":324,"t":"RLN Relay protocol extends the Relay protocol by using Rate Limit Nullifiers (RLN) to provide efficient and economic spam-prevention. It enforces a rate limit on messages over time for all peers in the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the RLN Relay blog post.","s":"RLN relay","u":"/learn/concepts/protocols","h":"#rln-relay","p":319},{"i":326,"t":"Filter protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network, particularly tailored for devices with limited bandwidth. info Filter protocol helps optimise bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages.","s":"Filter","u":"/learn/concepts/protocols","h":"#filter","p":319},{"i":328,"t":"Store protocol is responsible for storing messages relayed in the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection. info Using Relay and Filter protocols is recommended when a node is online, as Store does not guarantee data availability. The Store protocol is suitable for retrieving messages when connecting to the network, like when a DApp starts.","s":"Store","u":"/learn/concepts/protocols","h":"#store","p":319},{"i":330,"t":"Light Push is a Request/Response protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the Relay network. info While the Light Push protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation.","s":"Light push","u":"/learn/concepts/protocols","h":"#light-push","p":319},{"i":332,"t":"Waku Message specifies the structure and format of messages in the Waku Network. It includes the following attributes: content_topic attribute for content-based filtering. payload attribute containing the message data payload to be sent. meta attribute for conveying additional details to various protocols for application-specific processing. timestamp attribute signifying the time at which the message was generated by its sender. ephemeral attribute specifying whether the network should not store the message.","s":"Waku message","u":"/learn/concepts/protocols","h":"#waku-message","p":319},{"i":334,"t":"Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node. Pros​ Low latency. Low resource requirements. Cons​ Vulnerable to censorship: Node IPs can be blocked or restricted. Limited scalability: The number of nodes is fixed and cannot easily be expanded. Maintenance challenges: Updating the node list requires modifying the code, which can be cumbersome and involves releasing and deploying.","s":"Static Peers","u":"/learn/concepts/static-peers","h":"","p":333},{"i":336,"t":"Alice establishes connections with Bob and Carol using their node details, which are predefined (hard-coded) into Alice's node.","s":"Overview","u":"/learn/concepts/static-peers","h":"#overview","p":333},{"i":338,"t":"Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery. Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended: TCP: By default, Waku nodes use TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes. Secure WebSocket: In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely. Other protocols like WebRTC, WebTransport, and QUIC have been researched and studied for potential integration. info Waku ensures compatibility and improved communication capabilities by following these recommended transports.","s":"Transports","u":"/learn/concepts/transports","h":"","p":337},{"i":340,"t":"How can I start building my application using Waku? Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node. Does messaging on Waku require a gas fee? No, sending and receiving messages on Waku involves no gas fee. What encryption does Waku use? Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to use custom protocols or Waku message payload encryption methods freely. Where does Waku store the messages? Waku's Store protocol is designed to temporarily store messages within the network. However, Waku does not guarantee the message's availability and recommends using Codex for long-term storage. Can Waku only be used for wallet-to-wallet messaging? No, Waku is flexible and imposes no specific rules on identifiers. How does Waku differ from IPFS? Waku focuses on short, ephemeral, real-time time messages, while IPFS focuses on large, long-term data storage. Although there's an overlap between the two technologies, Waku does not currently support large data for privacy reasons. What are Rate Limiting Nullifiers (RLN)? Rate Limiting Nullifier is a zero-knowledge (ZK) protocol enabling spam protection in a decentralized network while preserving privacy. Each message must be accompanied by a ZK proof, which Relay nodes verify to ensure the publishers do not send more messages than they are allowed. The ZK proof does not leak any private information about message publishers - it only proves they are members of a set of users allowed to publish a certain number of messages per given time frame. How to start a Waku node? Follow the README instructions at nwaku-compose.","s":"Waku FAQ","u":"/learn/faq","h":"","p":339},{"i":342,"t":"The following features are currently experimental and under research and initial implementation:","s":"Research","u":"/learn/research","h":"","p":341},{"i":344,"t":"We aim to enable an incentivised spam protection technique to enhance Relay by using Rate Limit Nullifiers (RLN). In this advanced method, peers are limited to a certain messaging rate per epoch, and an immediate financial penalty is enforced for spammers who break this rate. You can find more details in the RLN Relay blog post. We have prepared a PoC implementation of this method in JS: https://examples.waku.org/rln-js/","s":"Economic spam resistance","u":"/learn/research","h":"#economic-spam-resistance","p":341},{"i":346,"t":"Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: https://github.com/vacp2p/research/issues/148. In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivising the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in Store and Filter to protect against DoS attacks. Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: https://vac.dev/building-privacy-protecting-infrastructure You can also read more about the ongoing challenges the Waku team is working on here: https://github.com/waku-org/research","s":"Prevention of denial of service (DoS) and node incentivisation","u":"/learn/research","h":"#prevention-of-denial-of-service-dos-and-node-incentivisation","p":341},{"i":348,"t":"Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.","s":"Comparing Waku and libp2p","u":"/learn/waku-vs-libp2p","h":"","p":347},{"i":350,"t":"Waku intends to incentivise mechanisms to run nodes, but it is not part of libp2p's scope. Additionally, users or developers do not have to deploy their infrastructure as a prerequisite to use Waku. It is a service network. However, you are encouraged to run a node to support and decentralise the network.","s":"Waku as a service network","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-service-network","p":347},{"i":352,"t":"Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment. Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, Store/Light Push/Filter caters to those use cases.","s":"Waku as a turnkey solution","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-turnkey-solution","p":347},{"i":354,"t":"libp2p does not have strong spam protection guarantees, RLN Relay is a protocol being developed by the Waku team towards this goal.","s":"Economic spam protection","u":"/learn/waku-vs-libp2p","h":"#economic-spam-protection","p":347},{"i":356,"t":"Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations. Some of the Waku's security features include the following:","s":"Security Features","u":"/learn/security-features","h":"","p":355},{"i":358,"t":"Waku ensures pseudonymity across its protocol layers, using libp2p PeerID as identifiers instead of disclosing true identities. However, it is important to note that pseudonymity does not provide complete anonymity. Actions performed under the same pseudonym (PeerID) can be linked, leading to the potential re-identification of the actual actor.","s":"Pseudonymity","u":"/learn/security-features","h":"#pseudonymity","p":355},{"i":360,"t":"Anonymity means an adversary cannot connect an actor to their actions or data. To achieve anonymity, avoiding linking activities with actors or their Personally Identifiable Information (PII) is crucial. In Waku, the following anonymity features are provided: Publisher-message unlinkability: Ensures that the publisher of messages in the Relay protocol cannot be linked to their published messages. Subscriber-topic unlinkability: Ensures that the subscriber of topics in the Relay protocol cannot be linked to the topics they have subscribed to.","s":"Anonymity/unlinkability","u":"/learn/security-features","h":"#anonymityunlinkability","p":355},{"i":362,"t":"The spam protection feature in Relay ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the scoring mechanism of GossipSub v1.1. Peers assign scores to their connections based on their behaviour and remove peers with low scores. Ongoing research is being conducted, including developing Rate Limit Nullifiers (RLN), which can be explored further at: https://github.com/vacp2p/research/issues/148.","s":"Spam protection","u":"/learn/security-features","h":"#spam-protection","p":355},{"i":364,"t":"Confidentiality in Waku is ensured through data encryption, while integrity and authenticity are achieved through digital signatures. These security measures are available in Waku Message (version 1) and Noise protocols, which offer payload encryption and encrypted signatures. Noise protocols also facilitate secure channel negotiation within the Waku Network.","s":"Data confidentiality, integrity, and authenticity","u":"/learn/security-features","h":"#data-confidentiality-integrity-and-authenticity","p":355},{"i":366,"t":"In protocols like Store and Filter, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their PeerID to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's PeerID, considered Personally Identifiable Information (PII). In Store, the queried node can link the querying node's PeerID to the topics being queried. Similarly, in Filter, a node can link the PeerID of a light node to its content filter.","s":"Security considerations","u":"/learn/security-features","h":"#security-considerations","p":355},{"i":368,"t":"Definitions and usage of the terminology used in the Waku ecosystem.","s":"Waku Docs Glossary","u":"/learn/glossary","h":"","p":367},{"i":370,"t":"Bootstrapping is the initial entry point of a node to the Waku Network. Once connected, other peer discovery methods can be employed to locate other peers in the network.","s":"Bootstrapping","u":"/learn/glossary","h":"#bootstrapping","p":367},{"i":372,"t":"A content topic is a string attached to messages to enable protocol-level features like selective message processing and retrieval based on specific criteria.","s":"Content topic","u":"/learn/glossary","h":"#content-topic","p":367},{"i":374,"t":"Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including Waku.","s":"Dappnode","u":"/learn/glossary","h":"#dappnode","p":367},{"i":376,"t":"Discv5 is a peer discovery mechanism using a Distributed Hash Table (DHT) to store ENR records, providing censorship resistance, load distribution, and enhanced network resilience.","s":"Discv5","u":"/learn/glossary","h":"#discv5","p":367},{"i":378,"t":"DNS discovery is a peer discovery mechanism that allows the retrieval of an ENR tree from the TXT field of a domain name, enabling the storage of node connection details and promoting decentralisation.","s":"DNS discovery","u":"/learn/glossary","h":"#dns-discovery","p":367},{"i":380,"t":"Ethereum Node Record (ENR) is a specification used to represent and identify nodes, facilitating discovery and communication within the network. Besides connection details, ENR also includes node configuration information like enabled protocol and shards.","s":"ENR","u":"/learn/glossary","h":"#enr","p":367},{"i":382,"t":"Filter is a protocol that enables light nodes to selectively subscribe to specific messages transmitted by peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network.","s":"Filter","u":"/learn/glossary","h":"#filter","p":367},{"i":384,"t":"GossipSub is a protocol for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems.","s":"GossipSub","u":"/learn/glossary","h":"#gossipsub","p":367},{"i":386,"t":"Libp2p is a modular network stack and protocol suite that allows developers to build decentralised, peer-to-peer applications across various network protocols.","s":"Libp2p","u":"/learn/glossary","h":"#libp2p","p":367},{"i":388,"t":"A light node is a resource-limited device or client that leverages service nodes to access the Relay network.","s":"Light node","u":"/learn/glossary","h":"#light-node","p":367},{"i":390,"t":"Light push is a protocol enabling light nodes to send messages to the Relay network and receive acknowledgements confirming that a peer has received them.","s":"Light push","u":"/learn/glossary","h":"#light-push","p":367},{"i":392,"t":"Mostly offline devices are clients who spend most of their time offline or disconnected from the internet and only occasionally to the internet and Waku Network. Examples include browsers and mobile phones.","s":"Mostly offline","u":"/learn/glossary","h":"#mostly-offline","p":367},{"i":394,"t":"A node is a device or client that implements Waku protocols and leverages the Waku Network to enable secure and private peer-to-peer web3 communication.","s":"Node","u":"/learn/glossary","h":"#node","p":367},{"i":396,"t":"A node key is a Secp256k1 (64-char hex string) private key for generating the PeerID, listening addresses, and discovery addresses of a Waku node.","s":"Node key","u":"/learn/glossary","h":"#node-key","p":367},{"i":398,"t":"Out-of-band refers to exchanging information through a separate, secure channel distinct from the main communication method to enhance security.","s":"Out-of-band","u":"/learn/glossary","h":"#out-of-band","p":367},{"i":400,"t":"The payload field in a Waku Message contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in Waku Message Payload Encryption.","s":"Payload","u":"/learn/glossary","h":"#payload","p":367},{"i":402,"t":"A peer refers to other nodes and participants of the Waku Network with whom communication and interaction are possible.","s":"Peer","u":"/learn/glossary","h":"#peer","p":367},{"i":404,"t":"Peer discovery is when a node locates and gets information about other peers in the Waku Network.","s":"Peer discovery","u":"/learn/glossary","h":"#peer-discovery","p":367},{"i":406,"t":"Peer exchange is a peer discovery mechanism that enables light nodes to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on Discv5.","s":"Peer exchange","u":"/learn/glossary","h":"#peer-exchange","p":367},{"i":408,"t":"PeerID is the unique identifier of a node in the Waku Network generated from the cryptographic hash of the node's public key.","s":"Peer ID","u":"/learn/glossary","h":"#peer-id","p":367},{"i":410,"t":"A protocol is a set of rules that enables nodes within the Waku Network to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more.","s":"Protocol","u":"/learn/glossary","h":"#protocol","p":367},{"i":412,"t":"Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication.","s":"Pub/Sub","u":"/learn/glossary","h":"#pubsub","p":367},{"i":414,"t":"A Pub/Sub topic is a string that serves as an identifier for the topic of interest among GossipSub peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic.","s":"Pub/Sub topic","u":"/learn/glossary","h":"#pubsub-topic","p":367},{"i":416,"t":"Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity.","s":"Rate limit nullifiers","u":"/learn/glossary","h":"#rate-limit-nullifiers","p":367},{"i":418,"t":"Relay is a protocol that extends the GossipSub protocol to enable secure and censorship resistant message sending and receiving among peers while preserving privacy. It also scales the Waku Network to accommodate many nodes efficiently.","s":"Relay","u":"/learn/glossary","h":"#relay","p":367},{"i":420,"t":"Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power.","s":"Resource-limited","u":"/learn/glossary","h":"#resource-limited","p":367},{"i":422,"t":"RLN Relay is an extension of the Relay protocol that uses Rate Limit Nullifiers (RLN) to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers.","s":"RLN relay","u":"/learn/glossary","h":"#rln-relay","p":367},{"i":424,"t":"SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications.","s":"SDK","u":"/learn/glossary","h":"#sdk","p":367},{"i":426,"t":"Store is a protocol that enables the storage of relayed messages in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network.","s":"Store","u":"/learn/glossary","h":"#store","p":367},{"i":428,"t":"A transport is a network mechanism that establishes connections between peers and enables efficient transmission, routing, and delivery of data packets.","s":"Transport","u":"/learn/glossary","h":"#transport","p":367},{"i":430,"t":"Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication protocols designed to operate in resource-limited environments and suitable for node or desktop application use. Additionally, these protocols collectively form the Waku Network.","s":"Waku","u":"/learn/glossary","h":"#waku","p":367},{"i":432,"t":"Waku Message defines the structure of messages in the Waku Network, including the content topic, payload, and metadata for application-specific processing.","s":"Waku message","u":"/learn/glossary","h":"#waku-message","p":367},{"i":434,"t":"Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the Waku Network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability.","s":"Waku message payload encryption","u":"/learn/glossary","h":"#waku-message-payload-encryption","p":367},{"i":436,"t":"The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to resource limited devices.","s":"Waku network","u":"/learn/glossary","h":"#waku-network","p":367},{"i":438,"t":"Waku Noise is a specified way to use the Noise Protocol Framework to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties.","s":"Waku noise","u":"/learn/glossary","h":"#waku-noise","p":367},{"i":440,"t":"The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include: DoS/spam protection with privacy-preserving Rate-Limiting Nullifiers. Scalability by sharding traffic into 8 pubsub topics. Automatic shard selection based on content topic. Services for resource-restricted nodes, including historical message storage and retrieval, filtering, etc. tip If you want to learn more about the Waku Network, the The Waku Network: Technical Overview article provides an in-depth look under the hood.","s":"The Waku Network","u":"/learn/waku-network","h":"","p":439},{"i":442,"t":"Applications or projects can build decentralized communication components on this network, gaining from the fault-tolerance of shared infrastructure, the out-of-the-box censorship resistance of a p2p network and the privacy-preservation of Waku protocols. Supporters of public goods and decentralized infrastructure can run their nodes to support the network. We are also working on incentivisation vectors to encourage more node operators to provide services to the network.","s":"Why join the Waku network?","u":"/learn/waku-network","h":"#why-join-the-waku-network","p":439},{"i":444,"t":"Ethereum Sepolia HTTPS endpoint, which can be yours or from a third party. Have a look at the Access a Sepolia Node Using Infura guide for a free Infura option. This node is used to interact with the on-chain RLN membership contract. Wallet with Sepolia Ethereum (less than 0.1 Sepolia ETH). Have a look at the Create a Sepolia Ethereum Wallet and Obtain Sepolia Ethereum from Faucet guides to get a Sepolia wallet and fund it with some Sepolia Ethereum. This wallet is required to register RLN membership, which is essential for publishing on the network.","s":"Prerequisites","u":"/learn/waku-network","h":"#prerequisites","p":439},{"i":446,"t":"Have a look at the Run Nwaku with Docker Compose guide for instructions on running a nwaku node in the Waku Network. Use the Sepolia node and wallet you obtained above. info The public Waku Network replaces the previous experimental shared routing layer based on a default pubsub topic (/waku/2/default-waku/proto). If your project currently uses this or any other shared pubsub topics, we encourage you to migrate to the public Waku Network with built-in DoS protection, scalability, and reasonable bandwidth usage.","s":"Running a Waku network node","u":"/learn/waku-network","h":"#running-a-waku-network-node","p":439},{"i":448,"t":"On this page Last updated: 9 February 2024 This Privacy Policy is intended to inform users of our approach to privacy in respect of this website (\"Website\"). In this regard, if you are visiting our Website, this Privacy Policy applies to you.","s":"Privacy Policy","u":"/privacy-policy","h":"","p":447},{"i":450,"t":"For the purposes of this Privacy Policy and the collection and processing of personal data as a controller, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we” or other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/privacy-policy","h":"#1-who-we-are","p":447},{"i":452,"t":"We aim to limit the collection and collection and processing of personal data from users of the Website. We only collect and process certain personal data for specific purposes and where we have the legal basis to do so under applicable privacy legislation. We will not collect or process any personal data that we don’t need and where we do store any personal data, we will only store it for the least amount of time needed for the indicated purpose. In this regard, we collect and process the following personal data from your use of the Website: IP address: As part of such use of the Website we briefly process your IP address but we have no way of identifying you. We however have a legitimate interest in processing such IP addresses to ensure the technical functionality and enhance the security measures of the Website. This IP address is not stored by us over time.","s":"2) We limit the collection and processing of personal data from your use of the Website","u":"/privacy-policy","h":"#2-we-limit-the-collection-and-processing-of-personal-data-from-your-use-of-the-website","p":447},{"i":454,"t":"In addition to our limited and collection of personal data, third parties may collect or process personal data as a result of the Website making use of certain features or to provide certain content. To the extent you interact with such third party content or features, their respective privacy policies will apply.","s":"3) Third party processing of personal data","u":"/privacy-policy","h":"#3-third-party-processing-of-personal-data","p":447},{"i":456,"t":"As a general approach, we take data security seriously and we have implemented a variety of security measures on the Website to maintain the safety of your personal data when you submit such information to us.","s":"4) Security measures we take in respect of the Website","u":"/privacy-policy","h":"#4-security-measures-we-take-in-respect-of-the-website","p":447},{"i":458,"t":"We are obliged to protect the privacy of personal data that you may have submitted in the unlikely event that we export your personal data to places outside the European Union or Switzerland. This means that personal data will only be processed in countries or by parties that provide an adequate level of protection as deemed by Switzerland or the European Commission. Otherwise, we will use other forms of protections, such as specific forms of contractual clauses to ensure such personal data is provided the same protection as required in Switzerland or Europe. In any event, the transmission of personal data outside the European Union and Switzerland will always occur in conformity with applicable privacy legislation.","s":"5) Exporting data outside the European Union and Switzerland","u":"/privacy-policy","h":"#5-exporting-data-outside-the-european-union-and-switzerland","p":447},{"i":460,"t":"As explained in this Privacy Policy, we limit our collection and processing of your personal data wherever possible. Nonetheless, you still have certain choices and rights in respect of the personal data which we do collect and process. As laid out in relevant privacy legislation, you have the right to: Ask us to correct or update your personal data (where reasonably possible); Ask us to remove your personal data from our systems; Ask us for a copy of your personal data, which may also be transferred to another data controller at your request; Withdraw your consent to process your personal data (only if consent was asked for a processing activity), which only affects processing activities that are based on your consent and doesn’t affect the validity of such processing activities before you have withdrawn your consent; Object to the processing of your personal data; and File a complaint with the Federal Data Protection and Information Commissioner (FDPIC), if you believe that your personal data has been processed unlawfully.","s":"6) Your choices and rights","u":"/privacy-policy","h":"#6-your-choices-and-rights","p":447},{"i":462,"t":"On this Website, you may come across links to third party websites. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these third party websites.","s":"7) Third party links","u":"/privacy-policy","h":"#7-third-party-links","p":447},{"i":464,"t":"We may modify or replace any part of this Privacy Policy at any time and without notice. Please check the Website periodically for any changes. The new Privacy Policy will be effective immediately upon its posting on our Website.","s":"8) This Privacy Policy might change","u":"/privacy-policy","h":"#8-this-privacy-policy-might-change","p":447},{"i":466,"t":"To the extent that you have any questions about the Privacy Policy, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"9) Contact information","u":"/privacy-policy","h":"#9-contact-information","p":447},{"i":468,"t":"Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Waku RFCs website. Benchmarks: Results of implementations and engineering-related benchmarks for Waku clients.","s":"Research","u":"/research/","h":"","p":467},{"i":470,"t":"On this page A migration guide for refactoring your application code from Waku v0.026 to v0.027.","s":"Migrating to Waku v0.027","u":"/migrations/js-waku/migration_v0.026_0.027","h":"","p":469},{"i":472,"t":"Migrating to Waku v0.027 Table of Contents Network Configuration Default Network Configuration Static Sharding Auto Sharding Pubsub Topic Configuration Removed APIs Type Changes Internal/Private Utility Function Changes","s":"Table of Contents","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#table-of-contents","p":469},{"i":474,"t":"The way to configure network settings for a Waku node has been simplified. The new NetworkConfig type only allows for Static Sharding or Auto Sharding.","s":"Network Configuration","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#network-configuration","p":469},{"i":476,"t":"If no network configuration is provided when creating a Light Node, The Waku Network configuration will be used by default. Before import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode(); // This would use the default pubsub topic, that was, `/waku/2/default-waku/proto` After import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode(); // This will now use The Waku Network configuration by default: // { clusterId: 1, shards: [0,1,2,3,4,5,6,7] }","s":"Default Network Configuration","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#default-network-configuration","p":469},{"i":478,"t":"Before import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ shardInfo: { clusterId: 1, shards: [0, 1, 2, 3] } }); After import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ networkConfig: { clusterId: 1, shards: [0, 1, 2, 3] } });","s":"Static Sharding","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#static-sharding","p":469},{"i":480,"t":"Before import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ shardInfo: { clusterId: 1, contentTopics: [\"/my-app/1/notifications/proto\"] } }); After import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ networkConfig: { clusterId: 1, contentTopics: [\"/my-app/1/notifications/proto\"] } });","s":"Auto Sharding","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#auto-sharding","p":469},{"i":482,"t":"Named pubsub topics are no longer supported. You must use either Static Sharding or Auto Sharding to configure pubsub topics. Before import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ pubsubTopics: [\"/waku/2/default-waku/proto\"] }); After Use Static Sharding: import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ networkConfig: { clusterId: 1, shards: [0, 1, 2, 3, 4, 5, 6, 7] } }); Or use Auto Sharding: import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ networkConfig: { clusterId: 1, contentTopics: [\"/your-app/1/default/proto\"] } });","s":"Pubsub Topic Configuration","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#pubsub-topic-configuration","p":469},{"i":484,"t":"The following APIs have been removed: ApplicationInfo type: Use string for application and version in NetworkConfig instead. shardInfo option in createLightNode: Use networkConfig instead. pubsubTopics option in createLightNode: Use networkConfig with Static Sharding or Auto Sharding instead. If you were using ApplicationInfo before, you should now use ContentTopicInfo (Auto Sharding) and specify your application and version in the content topic string. Before import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ shardInfo: { clusterId: 1, application: \"my-app\", version: \"1\" } }); After import { createLightNode } from \"@waku/sdk\"; const waku = await createLightNode({ networkConfig: { clusterId: 1, contentTopics: [\"/my-app/1/default/proto\"] } });","s":"Removed APIs","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#removed-apis","p":469},{"i":486,"t":"ShardingParams has been removed. Use NetworkConfig instead. NetworkConfig is now defined as StaticSharding | AutoSharding. StaticSharding is equivalent to the previous ShardInfo. AutoSharding is equivalent to the previous ContentTopicInfo.","s":"Type Changes","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#type-changes","p":469},{"i":488,"t":"Several utility functions have been updated or added: ensureShardingConfigured has been removed. Use derivePubsubTopicsFromNetworkConfig instead. New function derivePubsubTopicsFromNetworkConfig has been added to derive pubsub topics from the network configuration. shardInfoToPubsubTopics now accepts Partial instead of Partial. New function pubsubTopicsToShardInfo has been added to convert pubsub topics to a ShardInfo object. If you were using any of these utility functions directly, you'll need to update your code accordingly. Before import { ensureShardingConfigured } from \"@waku/utils\"; const result = ensureShardingConfigured(shardInfo); After import { derivePubsubTopicsFromNetworkConfig } from \"@waku/utils\"; const pubsubTopics = derivePubsubTopicsFromNetworkConfig(networkConfig); Note: The default NetworkConfig for The Waku Network is now { clusterId: 1, shards: [0,1,2,3,4,5,6,7] }.","s":"Internal/Private Utility Function Changes","u":"/migrations/js-waku/migration_v0.026_0.027","h":"#internalprivate-utility-function-changes","p":469},{"i":490,"t":"Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour. The goal of this document is to outline and contextualize our approach to TWN i13n. After providing an overview of Waku and relevant prior work, we focus on Waku Store - a client-server protocol for querying historical messages. We introduce a minimal viable addition to Store to enable i13n, and list research directions for future work.","s":"Incentivisation","u":"/research/research-and-studies/incentivisation","h":"","p":489},{"i":492,"t":"On this page","s":"Incentivisation in decentralised networks","u":"/research/research-and-studies/incentivisation","h":"","p":489},{"i":494,"t":"We can think of incentivisation tools as a two-by-two matrix: rewards vs punishment; monetary vs reputation. In other words, there are four quadrants: monetary reward: the node gets rewarded; monetary punishment: the nodes deposits funds that are taken away (slashed) if it misbehaves; reputation reward: the node's reputation increases if it behaves well; reputation punishment: the node's reputation decreases if it behaves badly. Reputation only works if high reputation brings tangible benefits. For example, if nodes chose neighbors based on reputation, low-reputation nodes miss out on potential revenue. Reputation scores may be local (a node assigns scores to its neighbors) or global (each node gets a uniform score). Global reputation in its simplest form involves a trusted third party, although decentralised approaches are also possible.","s":"Incentivisation tools","u":"/research/research-and-studies/incentivisation","h":"#incentivisation-tools","p":489},{"i":496,"t":"We may split incentivized decentralised networks into early file-sharing, blockchains, and decentralised storage.","s":"Prior work","u":"/research/research-and-studies/incentivisation","h":"#prior-work","p":489},{"i":498,"t":"Early P2P file-sharing networks employ reputation-based approaches and sticky defaults. For instance, the BitTorrent protocol rewards uploading peers with faster downloads. The download bandwidth available to a peer depends on how much it has uploaded. Moreover, peers share pieces of a file before having received it in whole. This non-monetary i13n policy has been proved to work in practice.","s":"Early P2P file-sharing","u":"/research/research-and-studies/incentivisation","h":"#early-p2p-file-sharing","p":489},{"i":500,"t":"Bitcoin has introduced proof-of-work (PoW) for native monetary rewards in a P2P network. PoW miners are automatically assigned newly mined coins for generating blocks. Miners must expend physical resources to generate a block. If the block is invalid, these expenses are not compensated (implicit monetary punishment). Proof-of-stake (PoS), used in Ethereum and many other cryptocurrencies, introduces explicit monetary punishments. PoS validators lock up (stake) native tokens and get rewarded for validating blocks or slashed for misbehaviour.","s":"Blockchains","u":"/research/research-and-studies/incentivisation","h":"#blockchains","p":489},{"i":502,"t":"Post-Bitcoin decentralised storage networks include Codex, Storj, Sia, Filecoin, IPFS. Their i13n methods combine techniques from early P2P file-sharing with blockchain-inspired reward mechanisms.","s":"Decentralised storage","u":"/research/research-and-studies/incentivisation","h":"#decentralised-storage","p":489},{"i":504,"t":"On this page Waku is a family of protocols for a modular privacy-preserving censorship-resistant decentralised communication network. The backbone of Waku is the Relay protocol (and its spam-protected version RLN-Relay). Additionally, there are light protocols: Store, Filter, and Lightpush. Light protocols are also referred to as client-server protocols and request-response protocols. A server is a node running Relay and a server-side of at least one light protocol. A client is a node running a client-side of any of the light protocols. A server may sometimes be referred to as a full node, and a client as a light node. There is no strict definition of a full node vs a light node in Waku (see discussion). In light protocols, a client sends a request to a server, and a server performs some actions and returns a response: Store: the server responds with messages relayed that match a set of criteria; Filter: the server will relay (only) messages that pass a filter to the client; Lightpush: the server publishes the client's message to the Relay network.","s":"Waku background","u":"/research/research-and-studies/incentivisation","h":"","p":489},{"i":506,"t":"Waku has no consensus and no native token, which brings it closer to reputation-incentivised file-sharing networks. As of late 2023, Waku only operates under reputation-based rewards and punishments. While RLN-Relay adds monetary punishments for spammers, slashing is yet to be activated. Monetary rewards and punishments should ideally be atomically linked with the node's behaviour. A benefit of blockchains in this respect is that the desired behaviour of miners or validators can be verified automatically. Enforcing atomicity in a communication network is more challenging: it is non-trivial to prove that a given piece of data has been relayed. Our goal is to combine monetary and reputation-based incentives for Waku. Monetary incentives have demonstrated their robustness in blockchains. We think they are necessary to scale the network beyond the initial phase when it's maintained altruistically.","s":"Waku i13n challenges","u":"/research/research-and-studies/incentivisation","h":"#waku-i13n-challenges","p":489},{"i":508,"t":"Waku Store is a light protocol for querying historic messages that works as follows: the client sends a HistoryQuery to the server; the server sends a HistoryResponse to the client. The response may be split into multiple parts, as specified by pagination parameters in PagingInfo. We define a relevant message as a message that matches client-defined criteria (e.g., relayed within a given time frame). Upon receiving a request, a server should quickly send back a response containing all and only relevant messages.","s":"Waku Store","u":"/research/research-and-studies/incentivisation","h":"#waku-store","p":489},{"i":510,"t":"On this page An incentivised Store protocol has the following extra steps: pricing: cost calculation price advertisement price negotiation payment: payment itself proof of payment reputation results cross-checking In this document, we focus on the simplest proof-of-concept (PoC) i13n for Store. Compared to the fully-fledged protocol, the PoC version is simplified in the following ways: cost calculation is based on a common-knowledge price; there is no price advertisement and no price negotiation; each query is paid for in a separate transaction, txid acts a proof of payment; the reputation system is simplified (see below); the results are not cross-checked. In the PoC protocol: the client calculates the price based on the known rate per hour of history; the client pays the appropriate amount to the server's address; the client sends a HistoryQuery to the server alongside the proof of payment (txid); the server checks that the txid corresponds to a confirmed transaction with at least the required amount; the server sends a HistoryResponse to the client. In further subsections, we list the potential direction for future work towards a fully-fledged i13n mechanism.","s":"Waku Store incentivisation","u":"/research/research-and-studies/incentivisation","h":"","p":489},{"i":512,"t":"For PoC, we assume a constant price per hour of history. This price and the blockchain address of the server are assumed to be common knowledge. This simplifies the client-server interaction, avoiding the price negotiation step. In the future versions of the protocol, the price will be negotiated and will depend on multiple parameters, such as the total size of the relevant messages in the response.","s":"Pricing","u":"/research/research-and-studies/incentivisation","h":"#pricing","p":489},{"i":514,"t":"DoS protection - see https://github.com/waku-org/research/issues/66 Cost calculation - see https://github.com/waku-org/research/issues/35 Price advertisement - see https://github.com/waku-org/research/issues/51 Price negotiation - see https://github.com/waku-org/research/issues/52","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work","p":489},{"i":516,"t":"For the PoC, each request is paid for with a separate transaction. The transaction hash (txid) acts as a proof of payment. The server verifies the payment by ensuring that: the transaction has been confirmed; the transaction is paying the proper amount to the server's account; the txid does not correspond to any prior response. The client gives proof of payment before it receives the response. Other options could be: the client pays after the fact; the client pays partly upfront and partly after the fact; a centralised third party (either trusted or semi-trusted, like a smart contract) ensures atomicity; cryptographically ensured atomicity (similar to atomic swaps, Lightning, or Hopr). Our design considerations are: the PoC protocol should be simple; servers are more \"permanent\" entities and are more likely to have long-lived identities; it is more important to protect the clients's privacy than the server's privacy. In light of these criteria, we suggest that the client pays first. This is simpler than splitting the payment, or involving an extra atomicity-enforcing mechanism. Moreover, pre-payment is arguably more privacy-preserving than post-payment, which encourages servers to deanonymise clients to prevent fraud.","s":"Payment","u":"/research/research-and-studies/incentivisation","h":"#payment","p":489},{"i":518,"t":"Add more payment methods - see https://github.com/waku-org/research/issues/58 Design a subscription model with service credentials - see https://github.com/waku-org/research/issues/59 Add privacy to service credentials - see https://github.com/waku-org/research/issues/60 Consider the impact of network disruptions - see https://github.com/waku-org/research/issues/65","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-1","p":489},{"i":520,"t":"We use reputation to discourage the server from taking the payment and not responding. The client keeps track of the server's reputation: all servers start with zero reputation points; if the server honours the request, it gets +n points; if the server does not respond before a timeout, it gets -m points. if the server's reputation drops below k points, the client will never query it again. n, m, and k are subject to configuration. Optionally, a client may treat a given server as trusted, assigning it a constant positive reputation. Potential issues: An attacker can establish new server identities and continue running away with clients' money. Countermeasures: a client only queries trusted servers (which however leads to centralisation); when querying a new server, a client first sends a small (i.e. cheap) request as a test; more generally, the client selects a server on a case-by-case basis, weighing the payment amount against the server's reputation. The ban mechanism can theoretically be abused. For instance, a competitor may attack the victim server and cause the clients who were awaiting the response to ban that server. Countermeasure: prevent DoS-attacks.","s":"Reputation","u":"/research/research-and-studies/incentivisation","h":"#reputation","p":489},{"i":522,"t":"Design a more comprehensive reputation system: local reputation - see https://github.com/waku-org/research/issues/48 global reputation - see https://github.com/waku-org/research/issues/49","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-2","p":489},{"i":524,"t":"As there is no consensus over past messages, a client may want to query multiple servers and merge their responses. Cross-checking helps ensure that servers are a) not censoring real messages; b) not injecting fake messages into history. Cross-checking is absent in PoC but may be considered later.","s":"Results cross-checking","u":"/research/research-and-studies/incentivisation","h":"#results-cross-checking","p":489},{"i":526,"t":"Cross-checking the results against censorship - see https://github.com/waku-org/research/issues/57 Use RLN to limit fake message insertion - see https://github.com/waku-org/research/issues/38","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-3","p":489},{"i":528,"t":"On this page We should think about what the success metrics for an incentivised protocol are, and how to measure them both in simulated settings, as well as in a live network.","s":"Evaluation","u":"/research/research-and-studies/incentivisation","h":"","p":489},{"i":530,"t":"On this page Analyze privacy issues - see https://github.com/waku-org/research/issues/61 Analyze decentralised storage protocols and their relevance e.g. as back-end storage for Store servers - see https://github.com/waku-org/research/issues/34 Analyze the role of message senders, in particular, whether they should pay for sending non-ephemeral messages - see https://github.com/waku-org/research/issues/32 Generalise incentivisation protocol to other Waku light protocols (Lightpush and Filter) - see https://github.com/waku-org/research/issues/67.","s":"Longer-term future work","u":"/research/research-and-studies/incentivisation","h":"","p":489},{"i":532,"t":"This issue explains i) why The Waku Network requires a capped bandwidth per shard and ii) how to solve it by rate limiting with RLN by daily requests (instead of every x seconds), which would require RLN v2, or some modifications in the current circuits to work. It also explains why the current rate limiting RLN approach (limit 1 message every x seconds) is not practical to solve this problem.","s":"Capped Bandwidth in Waku","u":"/research/research-and-studies/capped-bandwidth","h":"","p":531},{"i":534,"t":"First of all, lets begin with the terminology. We have talked in the past about \"predictable\" bandwidth, but a better name would be \"capped\" bandwidth. This is because it is totally fine that the waku traffic is not predictable, as long as its capped. And it has to be capped because otherwise no one will be able to run a node. Since we aim that everyone is able to run a full waku node (at least subscribed to a single shard) its of paramount importance that the bandwidth requirements (up/down) are i) reasonable to run with a residential internet connection in every country and ii) limited to an upper value, aka capped. If the required bandwidth to stay up to date with a topic is higher than what the node has available, then it will start losing messages and won't be able to stay up to date with the topic messages. And not to mention the problems this will cause to other services and applications being used by the user. The main problem is that one can't just chose the bandwidth it allocates to relay. One could set the maximum bandwidth willing to allocate to store but this is not how relay works. The required bandwidth is not set by the node, but by the network. If a pubsub topic a has a traffic of 50 Mbps (which is the sum of all messages being sent multiplied by its size, times the D_out degree), then if a node wants to stay up to date in that topic, and relay traffic in it, then it will require 50 Mbps. There is no thing such as \"partially contribute\" to the topic (with eg 25Mbps) because then you will be losing messages, becoming an unreliable peer. The network sets the pace. So waku needs an upper boundary on the in/out bandwidth (mbps) it consumes. Just like apps have requirements on cpu and memory, we should set a requirement on bandwidth, and then guarantee that if you have that bandwidth, you will be able to run a node without any problem. And this is the tricky part.","s":"Problem","u":"/research/research-and-studies/capped-bandwidth","h":"#problem","p":531},{"i":536,"t":"With the recent productisation effort of RLN, we have part of the problem solved, but not entirely. RLN offers an improvement, since now have a pseudo-identity (RLN membership) that can be used to rate limit users, enforcing a limit on how often it can send a message (eg 1 message every 10 seconds). We assume of course, that getting said RLN membership requires to pay something, or put something at stake, so that it can't be sibyl attacked. Rate limiting with RLN so that each entity just sends 1 message every x seconds indeed solves the spam problem but it doesn't per se cap the traffic. In order to cap the traffic, we would first need to cap the amount of memberships we allow. Lets see an example: We limit to 10.000 RLN memberships Each ones is rate limited to send 1 message/10 seconds Message size of 50 kBytes Having this, the worst case bandwidth that we can theoretically have, would be if all of the memberships publish messages at the same time, with the maximum size, continuously. That is 10.000 messages/sec * 50 kBytes = 500 MBytes/second. This would be a burst every 10 seconds, but enough to leave out the majority of the nodes. Of course this assumption is not realistic as most likely not everyone will continuously send messages at the same time and the size will vary. But in theory this could happen. A naive (and not practical) way of fixing this, would be to design the network for this worst case. So if we want to cap the maximum bandwidth to 5 MBytes/s then we would have different options on the maximum i) amount of RLN memberships and ii) maximum message size: 1.000 RLN memberships, 5 kBytes message size: 1000 * 5 = 5 MBytes/s 10.000 RLN memberships, 500 Bytes message size: 10000 * 0.5 = 5 MBytes/s In both cases we cap the traffic, however, if we design The Waku Network like this, it will be massively underutilized. As an alternative, the approach we should follow is to rely on statistics, and assume that i) not everyone will be using the network at the same time and ii) message size will vary. So while its impossible to guarantee any capped bandwidth, we should be able to guarantee that with 95 or 99% confidence the bandwidth will stay around a given value, with a maximum variance. The current RLN approach of rate limiting 1 message every x seconds is not very practical. The current RLN limitations are enforced on 1 message every x time (called epoch). So we currently can allow 1 msg per second or 1 msg per 10 seconds by just modifying the epoch size. But this has some drawbacks. Unfortunately, neither of the options are viable for waku: A small epoch size (eg 1 seconds) would allow a membership to publish 24*3600/1=86400 messages a day, which would be too much. In exchange, this allows a user to publish messages right after the other, since it just have to wait 1 second between messages. Problem is that having an rln membership being able to publish this amount of messages, is a bit of a liability for waku, and hinders scalability. A high epoch size (eg 240 seconds) would allow a membership to publish 24*3600/240=360 messages a day, which is a more reasonable limit, but this won't allow a user to publish two messages one right after the other, meaning that if you publish a message, you have to way 240 seconds to publish the next one. Not practical, a no go. But what if we widen the window size, and allow multiple messages within that window?","s":"Current approach","u":"/research/research-and-studies/capped-bandwidth","h":"#current-approach","p":531},{"i":538,"t":"In order to fix this, we need bigger windows sizes, to smooth out particular bursts. Its fine that a user publishes 20 messages in one second, as long as in a wider window it doesn't publish more than, lets say 500. This wider window could be a day. So we could say that a membership can publish 250 msg/day. With this we solve i) and ii) from the previous section. Some quick napkin math on how this can scale: 10.000 RLN memberships Each RLN membership allow to publish 250 msg/day Message size of 5 kBytes Assuming a completely random distribution: 10.000 * 250 = 2 500 000 messages will be published a day (at max) A day has 86 400 seconds. So with a random distribution we can say that 30 msg/sec (at max) 30 msg/sec * 5 kBytes/msg = 150 kBytes/sec (at max) Assuming D_out=8: 150 kBytes/sec * 8 = 1.2 MBytes/sec (9.6 Mbits/sec) So while its still not possible to guarantee 100% the maximum bandwidth, if we rate limit per day we can have better guarantees. Looking at these numbers, considering a single shard, it would be feasible to serve 10.000 users considering a usage of 250 msg/day. TODO: Analysis on 95%/99% interval confidence on bandwidth given a random distribution.","s":"Solution","u":"/research/research-and-studies/capped-bandwidth","h":"#solution","p":531},{"i":540,"t":"Waku should guarantee a capped bandwidth so that everyone can run a node. The guarantee is a \"statistical guarantee\", since there is no way of enforcing a strict limit. Current RLN approach is to rate limit 1 message every x seconds. A better approach would be x messages every day, which helps achieving such bandwidth limit. To follow up: Variable RLN memberships. Eg. allow to chose tier 1 (100msg/day) tier 2 (200msg/day) etc.","s":"TLDR","u":"/research/research-and-studies/capped-bandwidth","h":"#tldr","p":531},{"i":542,"t":"TLDR: This issue aims to set the maximum bandwidth in x Mbps that each waku shard should consume so that the maximum amount of people can run a full waku node. It is up to https://github.com/waku-org/research/issues/22 to specify how this maximum will be enforced. Conclusion: Limit to 10 Mbps each waku shard.","s":"Maximum Bandwidth for Global Adoption","u":"/research/research-and-studies/maximum-bandwidth","h":"","p":541},{"i":544,"t":"Waku is designed in a way that everyone should be able to run a full node on an average laptop with a residential Internet connection, at least in one shard. This will enable true decentralization and give power to the users, since they won't need to rely on third parties to send/receive messages. Professional node operators running in data centers, can of course contribute to multiple shards, but we should keep the bandwidth/hardware requirements of single shard rather low. This vision opposes the federated approach, where a few nodes requiring vast amounts of resources (cpu, memory, bandwidth) run in data centres, taking the power from the user. While federated approaches are an improvement from traditional client-server architectures, waku envisions a fully peer-to-peer architecture where anyone should be able to run a node. In order to ensure that anyone can run a node in desktop, there are two main limiting factors: Bandwidth consumption in Mbps CPU/memory resources (mainly limited by RLN proof verification) This issue focuses on i) bandwidth consumption and https://github.com/waku-org/research/issues/30 on ii) CPU/memory resources. Note that on https://github.com/waku-org/research/issues/23 an analysis on the impact on RLN was already made, but wasn't focused on scalability. Said issues do. In https://github.com/waku-org/research/issues/22 we discussed why and how to limit the maximum bandwidth per shard, but we haven't come up with a specific number in Mbps. This issue i) presents data from the available bandwidth at different locations and ii) suggests a maximum bandwidth in Mbps that waku should enforce.","s":"Introduction","u":"/research/research-and-studies/maximum-bandwidth","h":"#introduction","p":541},{"i":546,"t":"The following tables show: Table [1] The Q25, Q75 and average bandwidth (upload/download) in Mbps available on different continents. Raw data is available here and credits to @leobago for the summarized version. Note: The below numbers were rounded to the nearest integer. Table [2] The median global bandwidth (upload/download) in Mbps, taken from speedtest (accessed 12 Oct 2023). Table [3] Download bandwidth requirements in Mbps for Netflix video streaming, source. Table [1] Download (Mbps) Upload (Mbps) Q25 Average Q75 Q25 Average Q75 North-America 58 107 137 38 68 85 South-America 21 54 72 13 33 44 Europe 49 93 119 30 56 72 Asia 23 53 71 15 37 50 Oceania 44 84 108 27 50 63 Africa 12 26 33 7 17 22 Table [2] Median Download (Mbps) Median Upload (Mbps) Global 83 38 Table [3] Video resolution Recommended Bandwidth HD 3 Mbps Full HD 5 Mbps 4K/UHD 15 Mbps","s":"Bandwidth availability and usage","u":"/research/research-and-studies/maximum-bandwidth","h":"#bandwidth-availability-and-usage","p":541},{"i":548,"t":"With the above data, we should be informed to take a decision on the maximum bandwidth that we should enforce per shard. With this number, we will apply the techniques explained in https://github.com/waku-org/research/issues/22 to ensure (with some statistical confidence) that the bandwidth won't exceed that number. The trade-off is clear: We enforce a low bandwidth: more people can run full waku nodes, overall network throughput is less, network decentralization is easier, gives power to the user as its fully sovereign. We don't enforce a low bandwidth: not possible to run full waku nodes in laptops acting as a centralization force, nodes are run by few professional operators in data centers, waku users just use light clients, network throughput can scale way easier, federated approach. So it's about where to draw this line. Points to take into account: Relay contributes to bandwidth the most: Relay is the protocol that mostly contributes to bandwidth usage, and it can't choose to allocate fewer bandwidth resources like other protocols (eg store can choose to provide less resources and it will work). In other words, the network sets the relay bandwidth requirements, and if the node can't meet them, it just wont work. Upload and download bandwidth are the same: Due to how gossipsub works, and hence relay, the bandwidth consumption is symmetric, meaning that upload and download bandwidth is the same. This is because of D and the reciprocity of the connections, meaning that one node upload is another download. Nodes not meeting requirements can use light clients. Note that nodes not meeting the bandwidth requirements can still use waku, but they will have to use light protocols, which are a great alternative, especially on mobile, but with some drawbacks (trust assumptions, less reliability, etc) Waku can't take all the bandwidth: Waku is meant to be used in conjunction with other services, so it shouldn't consume all the existing bandwidth. If Waku consumes x Mbps and someone bandwidth is x Mpbs, the UX won't be good. Compare with existing well-known services: As shown in Table [3], Netflix 4K video streaming takes 15Mbps, so that is an order of magnitude to take into account. Coming up with a number: Lowest average download speed across continents is Africa (26 Mbps) Lowest average upload speed across continents is Africa (17 Mbps) Since in waku the bandwidth consumption is symmetric, we are limited by the lowest (17 Mpbs) However waku should not consume all bandwidth, leaving some room for other applications. We could set 10 Mbps, which is between Full HD video and 4K. With 10Mbps the % of average bandwidth waku will consume is: North-America 9 % South-America 18 % Europe 11 % Asia 18 % Oceania 12 % Africa 38 % Conclusion: Limit to 10 Mbps each waku shard. How? Not trivial, see https://github.com/waku-org/research/issues/22#issuecomment-1727795042 Note: This number is not set in stone and is subject to modifications, but it will most likely stay in the same order of magnitude if changed.","s":"Selecting a maximum bandwidth","u":"/research/research-and-studies/maximum-bandwidth","h":"#selecting-a-maximum-bandwidth","p":541},{"i":551,"t":"Since RLN has been chosen as the spamming protection mechanism for waku, we must understand the practical implications of using it. This issue explains the main differences between relay and rln-relay and gives some benchmarks after running simulations using waku-simulator, in a network with the following characteristics: 100 nwaku nodes, each one with a valid rln membership and publishing a message every 10 seconds to a common topic. rln contract deployed in Ethereum Sepolia 10.000 memberships registered in the contract pure relay (store and light protocols disabled) The main deltas rln vs rln-relay are: New proof field in WakuMessage containing 384 extra bytes. This field must be generated and attached to each message. New validator, that uses proof to Accept or Reject the message. The proof has to be verified. New dependency on a blockchain, Ethereum, or any EVM chain, to keep track of the members allowed to publish. But what are the practical implications of these?","s":"Introduction","u":"/research/research-and-studies/rln-key-benchmarks","h":"#introduction","p":549},{"i":553,"t":"Proof generation is constant-ish. 0.15 second for each proof Proof verification is constant-ish, 0.012 seconds. In a network with 10k nodes and D=6 this would add an overhead delay of 0.06 seconds. Gossipsub scoring drops connections from spammer peers, which acts as the punishment (instead of slashing). Validated in the simulation. Rln doesn't have any impact on memory consumption.","s":"TLDR:","u":"/research/research-and-studies/rln-key-benchmarks","h":"#tldr","p":549},{"i":555,"t":"Seems that proof generation times stay constant no matter the size of the message. In the following simulation it was increased from: 1kB, 10kB, 50kB, 150kB. On average it takes 0.15 seconds to calculate the message proof. This means that when a node wants to send a message, it will need to spend this time generating the proof. It seems very reasonable and it actually acts as a mini proof of work, where a consumer computer won't be able to publish a really high number of messages per second.","s":"Proof generation times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-generation-times","p":549},{"i":557,"t":"On the other hand, rln also adds an overhead in the gossipsub validation process. On average it takes 0.012 seconds to verify the proof. It seems that when we increase the message size, validation time seems to increase a bit, which can be for any other reason besides rln itself (eg deserializing the message might take longer). This number seems reasonable and shouldn't affect that much the average delay of a message. Assuming a d-regular graph, with 10k nodes and D=6, we can have up to log(total_nodes)/log(D)=5 hops. So in the worst case, rln will add a network latency of 0.012*5 = 0.06 seconds","s":"Proof verification times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-verification-times","p":549},{"i":559,"t":"For the initial release of RLN, slashing won't be implemented and it still remains unclear if it will be implemented in the future. Luckily, even if slashing is not implemented rln can be used to detect spam and punish the sender off-chain (instead of slashing an onchain collateral). This is done with gossipsub scoring. In the following simulation, we can see 100 nwaku interconnected nodes, where one of them suddenly starts spamming the network with multiple valid rln messages 3000 messages/minute. Since its rate limited to 1msg/10 seconds, we can see that in almost no time, every node in the network disconnects from the spammer peer (see red node), leaving it with 0 peers, which disincentivise such attacks and without requiring a financial slashing.","s":"Spam protection","u":"/research/research-and-studies/rln-key-benchmarks","h":"#spam-protection","p":549},{"i":561,"t":"Using RLN implies that waku should now piggyback on a blockchain (the case study uses Ethereum Sepolia) and has to stay up to date with the latest events emitted by the rln smart contract. These events are used to locally construct a tree that contains all members allowed to create valid proofs to send messages. Some numbers: A tree with 10k members takes 2Mbytes of space. Negligible. A tree with 10k members takes `<4 minutes to synchronize. Assumable since it's done just once. With a block range of 5000 blocks for each request, we would need 520 requests to synchronize 1 year of historical data from the tree. Assumable since most of the free endpoints out there allow 100k/day.","s":"RLN tree sync","u":"/research/research-and-studies/rln-key-benchmarks","h":"#rln-tree-sync","p":549},{"i":563,"t":"Same simulation with 100 nodes was executed with rln and without rln: Memory consumption is almost identical with rln without rln Couldn't capture cpu metrics Minor differences in messages per seconds is due to injection technique, nothing related to rln itself.","s":"Performance relay vs. rln-relay","u":"/research/research-and-studies/rln-key-benchmarks","h":"#performance-relay-vs-rln-relay","p":549},{"i":566,"t":"The Nim Waku Node, nwaku, has the capability of archiving messages until a certain limit (e.g. 30 days) so that other nodes can synchronize their message history throughout the Store protocol. The nwaku originally used SQLite to archive messages but this has an impact on the node. Nwaku is single-threaded and therefore, any SQLite operation impacts the performance of other protocols, like Relay. Therefore, the Postgres adoption is needed to enhance that. https://github.com/waku-org/nwaku/issues/1888","s":"Introduction","u":"/research/benchmarks/postgres-adoption","h":"#introduction","p":564},{"i":568,"t":"Simply pass the next parameter to nwaku --store-message-db-url=\"postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/postgres Notice that this only makes sense if the nwaku has the Store protocol mounted --store=true (start the nwaku node with --help parameter for more Store options)","s":"How to connect the nwaku to Postgres","u":"/research/benchmarks/postgres-adoption","h":"#how-to-connect-the-nwaku-to-postgres","p":564},{"i":570,"t":"https://github.com/waku-org/nwaku-compose https://github.com/waku-org/test-waku-query","s":"Examples of nwaku using Postgres","u":"/research/benchmarks/postgres-adoption","h":"#examples-of-nwaku-using-postgres","p":564},{"i":572,"t":"The following repository was created as a tool to stress and compare performance between nwaku+Postgres and nwaku+SQLite: https://github.com/waku-org/test-waku-query","s":"Stress tests","u":"/research/benchmarks/postgres-adoption","h":"#stress-tests","p":564},{"i":574,"t":"Maximum insert throughput​ Scenario 1 node subscribed to pubsubtopic ‘x’ and the Store protocol mounted. ‘n’ nodes connected to the “store” node, and publishing messages simultaneously to pubsubtopic ‘x’. All nodes running locally in a Dell Latitude 7640. Each published message is fixed, 1.4 KB: publish_one_client.sh The next script is used to simulate multiple nodes publishing messages: publish_multiple_clients.sh Sought goal Find out the maximum number of concurrent inserts that both SQLite and Postgres could support, and check whether Postgres behaves better than SQLite or not. Conclusion Messages are lost after a certain threshold, and this message loss is due to limitations in the Relay protocol (GossipSub - libp2p.) For example, if we set 30 nodes publishing 300 messages simultaneously, then 8997 rows were stored and not the expected 9000, in both SQLite and Postgres databases. The reason why few messages were lost is because the message rate was higher than the relay protocol can support, and therefore a few messages were not stored. In this example, the test took 38.8’’, and therefore, the node was receiving 232 msgs/sec, which is much more than the normal rate a node will work with, which is ~10 msgs/sec (rate extracted from Grafana’s stats for the status.prod fleet.) As a conclusion, the bottleneck is within the Relay protocol itself and not the underlying databases. Or, in other words, both SQLite and Postgres can support the maximum insert rate a Waku node will operate within normal conditions.","s":"Insert test results","u":"/research/benchmarks/postgres-adoption","h":"#insert-test-results","p":564},{"i":576,"t":"In this case, we are comparing Store performance by means of Rest service. Scenario nodea: one _nwaku node with Store and connected to Postgres. nodeb: one _nwaku node with Store and using SQLite. Both Postgres and SQLite contain +1 million rows. nodec: one _nwaku node with REST enabled and acting as a Store client for node_a. noded: one _nwaku node with REST enabled and acting as a Store client for node_b. With jmeter, 10 users make REST Store requests concurrently to each of the “rest” nodes (node_c and node_d.) All nwaku nodes running statusteam/nim-waku:v0.19.0 This is the jmeter project used. Results With this, the node_b brings a higher throughput than the node_a and that indicates that the node that uses SQLite performs better. The following shows the measures taken by jmeter with regard to the REST requests.","s":"Query test results (jmeter)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-jmeter","p":564},{"i":578,"t":"In this test suite, only the Store protocol is being analyzed, i.e. without REST. For that, a go-waku node is used, which acts as Store client. On the other hand, we have another go-waku app that publishes random Relay messages periodically. Therefore, this can be considered a more realistic approach. The following diagram shows the topology used: For that, the next apps were used: Waku-publisher. This app can publish Relay messages with different numbers of clients Waku-store-query-generator. This app is based on the Waku-publisher but in this case, it can spawn concurrent go-waku Store clients. That topology is defined in this docker-compose file. Notice that the two nwaku nodes run the very same version, which is compiled locally. Comparing archive SQLite & Postgres performance in nwaku-b6dd6899​ The next results were obtained by running the docker-compose-manual-binaries.yml from test-waku-query-c078075 in the sandbox machine (metal-01.he-eu-hel1.wakudev.misc.status.im.) Scenario 1 Store rate: 1 user generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, we can see that the SQLite performance is better regarding the store requests. The following graph shows how the SQLite node has blocking periods whereas the Postgres always gives a steady rate. Scenario 2 Store rate: 10 users generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, is more evident that the SQLite performs better. Scenario 3 Store rate: 25 users generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, the performance is similar regarding the timings. The store rate is bigger in SQLite and Postgres keeps the same level as in scenario 2. Comparing archive SQLite & Postgres performance in nwaku-b452ed8​ This nwaku commit is after a few Postgres optimizations were applied. The next results were obtained by running the docker-compose-manual-binaries.yml from test-waku-query-c078075 in the sandbox machine (metal-01.he-eu-hel1.wakudev.misc.status.im.) Scenario 1 Store rate 1 user generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 1 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. It cannot be appreciated but the average *Store* time was 11ms. Scenario 2 Store rate: 10 users generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 10 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. Scenario 3 Store rate: 25 users generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 25 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. Conclusions​ After comparing both systems, SQLite performs much better than Postgres However, a benefit of using Postgres is that it performs asynchronous operations, and therefore doesn’t consume CPU time that would be better invested in Relay for example. Remember that nwaku is single-threaded and chronos performs orchestration among a bunch of async tasks, and therefore it is not a good practice to block the whole nwaku process in a query, as happens with SQLite After applying a few Postgres enhancements, it can be noticed that the use of concurrent Store queries doesn’t go below the 250ms barrier. The reason for that is that most of the time is being consumed in this point. The libpqisBusy() function indicates that the connection is still busy even the queries finished. Notice that we usually have a rate below 1100 req/minute in status.prod fleet (checked November 7, 2023.)","s":"Query test results (only Store protocol)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-only-store-protocol","p":564},{"i":580,"t":"This study aims to look for possible issues when having only one single database while several Waku nodes insert or retrieve data from it. The following diagram shows the scenery used for such analysis. There are three nim-waku nodes that are connected to the same database and all of them are trying to write messages to the same PostgreSQL instance. With that, it is very common to see errors like: ERR 2023-11-27 13:18:07.575+00:00 failed to insert message topics=\"waku archive\" tid=2921 file=archive.nim:111 err=\"error in runStmt: error in dbConnQueryPrepared calling waitQueryToFinish: error in query: ERROR: duplicate key value violates unique constraint \\\"messageindex\\\"\\nDETAIL: Key (storedat, id, pubsubtopic)=(1701091087417938405, 479c95bbf74222417abf76c7f9c480a6790e454374dc4f59bbb15ca183ce1abd, /waku/2/default-waku/proto) already exists.\\n The db-postgres-hammer is aimed to stress the database from the select point of view. It performs N concurrent select queries with a certain rate. Results​ The following results were obtained by using the sandbox machine (metal-01.he-eu-hel1.wakudev.misc) and running nim-waku nodes from https://github.com/waku-org/nwaku/tree/b452ed865466a33b7f5b87fa937a8471b28e466e and using the test-waku-query project from https://github.com/waku-org/test-waku-query/tree/fef29cea182cc744c7940abc6c96d38a68739356 The following shows the results Two nwaku-postgres-additional inserting messages plus 50 db-postgres-hammer making 10 selects per second. Five nwaku-postgres-additional inserting messages plus 50 db-postgres-hammer making 10 selects per second. In this case, the insert time gets more spread because the insert operations are shared amongst five more nodes. The Store query time remains the same on average. Five nwaku-postgres-additional inserting messages plus 100 db-postgres-hammer making 10 selects per second. This case is similar to 2. but stressing more the database.","s":"Multiple nodes & one single database","u":"/research/benchmarks/postgres-adoption","h":"#multiple-nodes--one-single-database","p":564},{"i":582,"t":"TLDR: We present the results of 1000 nwaku nodes running rln using different message sizes, in a real network with bandwidth limitations and network delays. The goal is to study the message propagation delay distribution, and how it's affected by i) rln and ii) message size in a real environment. We observe that for messages of 10kB the average end-to-end propagation delay is 508 ms. We can also observe that the message propagation delays are severely affected when increasing the message size, which indicates that it is not a good idea to use waku for messages of eg. 500kB. See simulation parameters.","s":"Message Propagation Times With Waku-RLN","u":"/research/research-and-studies/message-propagation","h":"","p":581},{"i":584,"t":"Waku uses relay as a routing protocol, which is an adaptation of gossipsub. It routes messages following a publisher/subscriber architecture, where nodes can publish messages or subscribe to topics. If message m is published to topic t, all i nodes n_1...n_i subscribed to t will get m. The relay protocol ensures that every node gets the messages of the topics it is subscribed to. However, since relay works in a decentralized manner, all nodes contribute to the gossiping of a message, until it has successfully reached all the interested nodes (subscribed to it). This means that a message can travel multiple hops until it reaches all nodes. The amount of hops determines the message propagation time, which is measured as the time difference of when the node published the message and when another node received. This issue aims to go from theory to practice, by i) understanding message propagation times in theory and ii) presenting nwaku simulation results in an end-to-end setup with rln, with real message propagation times.","s":"Introduction","u":"/research/research-and-studies/message-propagation","h":"#introduction","p":581},{"i":586,"t":"Let's start with message propagation times in theory. On a high level, it depends on: The gossipsub configuration, being D one of the most important parameters. This sets the hops that a message will travel to reach all nodes. Higher D, less hops, less delay. Note that a higher D implies more bandwidth consumption. The node. Different nodes will see different propagation times, because a message can travel different paths. A node connected directly to the publisher (1 hop) will see lower propagation times than other nodes further away. Individual propagation times. Since a message can travel multiple hops to reach its destination, each hop adds a contribution to the overall message propagation time. This individual propagation time depends on the characteristics on the nodes involved in the connections. In a D-regular graph, like the one formed by waku nodes around a topic, the maximum amount of hops that a message can travel to reach all nodes can be calculated as ceil(log(total_nodes)/log(D)). For example, with log(1000)/log(6) = 3.85 = 4. So in a network with 1000 nodes and D=6, no matter which node publishes the message, in 4 hops it will reach all the nodes. Notice the \"worst case\" since some nodes might be directly connected to the publisher, so they will get the message in just 1 hop. But how long does it take to jump each hop? It depends on: The latency between nodes. Can be measured as the time to respond to a ping. The size of the messages. The bigger the message, the more time it takes to transmit. Nodes bandwidth. Sender upload bandwidth and receiver download bandwidth. More important when using big message sizes. Message validation time. When each node receives a message, it applies some validation to decide if the message is further gossiped or not. In the case of waku, this is RLN (paper, rfc) Assuming a message m that travels 4 hops from node n1 (publisher) to n5 (subscriber) we can calculate the message propagation time mpt=ipt_1+ipt_2+ipt_3+ipt_4 where ipt is the individual propagation time between each node in the chain. However, specific message propagation times are useless, we need average times under specific conditions. And for this, we need simulations.","s":"Theory","u":"/research/research-and-studies/message-propagation","h":"#theory","p":581},{"i":588,"t":"Using shadow simulator, we have developed a tool that allows to simulate message propagation delays of nwaku (using a slightly modified branch, mainly to instrument it with tools to measure the times + starting from an already connected mesh. Thanks @Menduist for the help. Note that running this simulation requires a significant amount of resources, done with 256 GB of RAM. The configuration of the simulation is (see config): latency=100ms. Average latency in our current waku network. Thanks @vpavlin for the measurements. See this for live data. down_bandwidth=83Mbps, up_bandwidth=38Mbps. As shown in Table 2 that's the worldwide median speed. D=6, which is the current nwaku configuration. nodes=1000. Amount of nodes used in the simulation nwaku was used with a minor modification A total of 10 messages were published, that led to 9990 received messages. Since shadow doesn't take into account CPU times (by now), we simulate it with sleepAsync as per https://github.com/waku-org/research/issues/23 findings. 0.012 seconds for proof verification and 0.15 seconds for proof generation.","s":"Simulations","u":"/research/research-and-studies/message-propagation","h":"#simulations","p":581},{"i":590,"t":"The following figure shows the message propagation time with real simulations, showing the distribution in a network with the above configuration with three different message sizes: 10kB, 100kB, 500kB. Note that the whiskers indicate the best/worst values and the box contains P25 to P75 values. Average mu and P95 are also shown. Raw data here. Important note. The first messages sent in the simulations are omitted, since they show an abnormal propagation delay that doesn't reflect reality. This is due to how flow control works in TCP, where right after connection, the sender node has no idea of the \"bandwidth\" of the receiver node, so it will start sending packages at a lower rate. This translates into high transmission times, and it's more pronounced when dealing with big message sizes. In other words, in a 100Mpbs link, 100Mbits won't be sent in 1 second, or at least not a the beginning, when the node is slowly increasing the rate until based on ACK/NACK ratio. For more information about this, this is explained in here. Conclusions: Using small messages 10kB the average propagation delay is 508 ms, quite reasonable for applications using waku. The variance is acceptable, with 95% of the messages arriving in <627 ms. When using a size of 10kB we can see that the best case propagation delay is 263 ms. This corresponds to the nodes that are just 1 hop from the publisher. The proof generation time 0.15 seconds affects the most, where the rest is the inter-node latency and the transmission of the message itself. We can see that the message propagation delay increases with big messages, 100kB and 500kB. So its probably not a good idea to use waku for such big messages. Note that these simulations had 1000 nodes, so if we scale it to 10000 or beyond, propagation times would be worse. Best case propagation time (lower part of the whisker) is quite similar in all cases. This is because it corresponds to the node that is just 1 hop away from the publisher. Future work: Current waku D values (average of 6 ranging from 4 to 12) have a huge impact on the bandwidth that a node consumes. Are we willing to lower D in order to reduce bandwidth but increase message propagation times? Since shadow doesn't take CPU time into account, it's currently simulated for rln, which should be the biggest bottleneck. Once shadow has this feature times would be more accurate.","s":"Results","u":"/research/research-and-studies/message-propagation","h":"#results","p":581},{"i":592,"t":"We take security seriously at Waku and across the Institute of Free Technology and its affiliates. Please report any security incidents via security@free.technology. Please report any discovered vulnerabilities in our bounty programme at HackenProof to help ensure our protocols and software remain secure.","s":"Security","u":"/security","h":"","p":591},{"i":594,"t":"On this page Waku is a nascent technology and the Waku community is still growing. Hence, the Waku team is keen to work closely with projects to help leverage Waku technology to drive the success of their own applications. We describe below the expected flow for working with Waku and some rules of engagement to set expectations for project teams interacting with the Waku team.","s":"Rules of Engagement","u":"/rules-of-engagement","h":"","p":593},{"i":596,"t":"We encourage the initial discussion to happen over a video call. However, in-person event or online discussions are also an option. During this initial interaction, the project team should present their product and the needs they have in relation to peer-to-peer communication and real time interaction. The Waku team will provide an overview of Waku and point to specific protocol and software that should help fulfil such needs. Benefits and caveats are highlighted and further documentation and examples will be provided.","s":"1. Initial discussion","u":"/rules-of-engagement","h":"#1-initial-discussion","p":593},{"i":598,"t":"Projects should review Waku documentations and libraries in their own time; start building a PoC using Waku. Projects should start designing over Waku and come up with skeleton design or user flows about specific friction points or complex area (e.g. user experience, scaling). Project should appoint one or two Waku SME (Subject Matter Expert) to drive most discussions with Waku team to start acquire expertise on Waku behaviour. Project's Waku SMEs should present unresolved design issues to Waku team. The Waku team will then review and provide skeleton design solutions on how to overcome said unresolved or complex issues.","s":"2. Solution design","u":"/rules-of-engagement","h":"#2-solution-design","p":593},{"i":600,"t":"The project should finalise a design, solution or protocol they will build using Waku. If they wish to, they can present this solution to the Waku team to get feedback and identify technical gaps. The Waku team can provide feedback, highlight potential caveats, and communicate on delivery timeline for gaps, if any. note While the Waku team can provide feedback or even design potential solution on how Waku could be integrated in an application. It is the responsibility of the project team to understand the potential caveats and limitations that may incur with such a design. The Waku team can provide options, but it is up to the project team to decide on the final solution.","s":"3. Commitment","u":"/rules-of-engagement","h":"#3-commitment","p":593},{"i":602,"t":"The project then start building their MVP using Waku. The Waku team can provide support regarding API usage, bugs encountered, documentation gaps. Waku team will use feedback raised by project to improve APIs, fix bugs and enhance documentation. Waku team continues R&D to deliver any committed technical gaps. Project delivers their MVP. note The Waku team is keen to help any usage of Waku library. Please note that code snippets are necessary for preliminary investigations of issues. Sometimes, a code snippet is not enough; in this case, a minimal reproduction repo is necessary to allow us to do further investigation. If the project is open-source, then the Waku team might try to further investigate using it, as long as the reproduction steps are easy. If no code is provided to help with the investigation, then there is nothing the Waku team can do. For any unresolved issue, the project must open an issue on the related GitHub repository under the waku-org organisation.","s":"4. Building","u":"/rules-of-engagement","h":"#4-building","p":593},{"i":604,"t":"Once the project application is live, the Waku team is keen to maintain regular contact. This can include discussion around performance, bugs found by users, etc. The Waku team is keen to regularly present new and upcoming development to project team, highlight items that are particularly relevant. If a project wishes to take onboard any new Waku protocol, or decide to extend their product with a new functionality using Waku, the circle can resume from step 1.","s":"5. Ongoing relation","u":"/rules-of-engagement","h":"#5-ongoing-relation","p":593},{"i":606,"t":"On this page Last updated: 14 February 2024 These website terms of use ('Website Terms of Use') are entered into by you and us, and they govern your access and use of this Website, including any content and functionality contained in the Website. It is your responsibility to read the Website Terms of Use carefully before your use of the Website and your use of the Website means you have agreed to be bound and comply with these Website Terms of Use. If you do not agree with these Website Terms of Use, you must not access or use the Website.","s":"Terms of Use","u":"/terms","h":"","p":605},{"i":608,"t":"For the purposes of these Website Terms of Use, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at: Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we”, “us” or any other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/terms","h":"#1-who-we-are","p":605},{"i":610,"t":"The Website is provided by us on an ‘as is’ basis and you use the Website at your own sole discretion and risk. We disclaim all warranties of any kind, express or implied, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement of intellectual property or other violation of rights. We do not warrant or make any representations concerning the completeness, accuracy, legality, utility, reliability, suitability or availability of the use of the Website, the content on this Website or otherwise relating to the Website, such content or on any sites linked to this site.These disclaimers will apply to the maximum extent permitted by applicable law. We make no claims that the Website or any of its content is accessible, legally compliant or appropriate in your jurisdiction. Your access or use of the Website is at your own sole discretion and you are solely responsible for complying with any applicable local laws. The content herein or as accessible through this website is intended to be made available for informational purposes only and should not be considered as creating any expectations or forming the basis of any contract, commitment or binding obligation with us. No information herein shall be considered to contain or be relied upon as a promise, representation, warranty or guarantee, whether express or implied and whether as to the past, present or the future in relation to the projects and matters described herein. The information contained herein does not constitute financial, legal, tax, or other advice and should not be treated as such. Nothing in this Website should be construed by you as an offer to buy or sell, or soliciting any offer to buy or sell any tokens or any security.","s":"2) Disclaimers","u":"/terms","h":"#2-disclaimers","p":605},{"i":612,"t":"The Website may also contain forward-looking statements that are based on current expectations, estimates, forecasts, assumptions and projections about the technology, industry and markets in general. The forward looking statements, which may include statements about the roadmap, project descriptions, technical details, functionalities, features, the development and use of tokens by projects, and any other statements related to such matters or as accessible through this website are subject to a high degree of risk and uncertainty. The forward looking statements are subject to change based on, among other things, market conditions, technical developments, and regulatory environment. The actual development and results, including the order and the timeline, might vary from what’s presented. The information contained herein is a summary and does not purport to be accurate, reliable or complete and we bear no responsibility for the accuracy, reliability or completeness of information contained herein. Because of the high degree of risk and uncertainty described above, you should not place undue reliance on any matters described in this website or as accessible through this website. While we aim to update our website regularly, all information, including the timeline and the specifics of each stage, is subject to change and may be amended or supplemented at any time, without notice and at our sole discretion.","s":"3) Forward looking statements","u":"/terms","h":"#3-forward-looking-statements","p":605},{"i":614,"t":"The Website and its contents are made available under Creative Commons Attribution 4.0 International license (CC-BY 4.0). In essence this licence allows users to copy, modify and distribute the content in any format for any purpose, including commercial use, subject to certain requirements such as attributing us. For the full terms of this licence, please refer to the following website: https://creativecommons.org/licenses/by/4.0/.","s":"4) Intellectual property rights","u":"/terms","h":"#4-intellectual-property-rights","p":605},{"i":616,"t":"To the extent the Website provides any links to a third party website, then their terms and conditions, including privacy policies, govern your use of those third party websites. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. We have no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through the Website. If you access such third party websites through the Website, it is at your own risk and you are solely responsible for your activities on such third party websites.","s":"5) Third-party website links","u":"/terms","h":"#5-third-party-website-links","p":605},{"i":618,"t":"We will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these Website Terms of Use, the Website, the content on the Website, or your use of the Website, even if we have been advised of the possibility of such damages. In any event, our aggregate liability for such claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the maximum extent permitted by applicable law.","s":"6) Limitation of liability","u":"/terms","h":"#6-limitation-of-liability","p":605},{"i":620,"t":"You shall indemnify us and hold us harmless from and against any and all claims, damages and expenses, including attorneys’ fees, arising from or related to your use of the Website, the content on the Website, including without limitation your violation of these Website Terms of Use.","s":"7) Indemnity","u":"/terms","h":"#7-indemnity","p":605},{"i":622,"t":"We may modify or replace any part of this Website Terms of Use at any time and without notice. You are responsible for checking the Website periodically for any changes. The new Website Terms of Use will be effective immediately upon its posting on the Website.","s":"8) Modifications","u":"/terms","h":"#8-modifications","p":605},{"i":624,"t":"Swiss law governs these Website Terms of Use and any disputes between you and us, whether in court or arbitration, without regard to conflict of laws provisions.","s":"9) Governing law","u":"/terms","h":"#9-governing-law","p":605},{"i":626,"t":"In these terms, “dispute” has the broadest meaning enforceable by law and includes any claim you make against or controversy you may have in relation to these Website Terms of Use, the Website, the content on the Website, or your use of the Website. We prefer arbitration over litigation as we believe it meets our principle of resolving disputes in the most effective and cost effective manner. You are bound by the following arbitration clause, which waives your right to litigation and to be heard by a judge. Please note that court review of an arbitration award is limited. You also waive all your rights to a jury trial (if any) in any and all jurisdictions. If a (potential) dispute arises, you must first use your reasonable efforts to resolve it amicably with us. If these efforts do not result in a resolution of such dispute, you shall then send us a written notice of dispute setting out (i) the nature of the dispute, and the claim you are making; and (ii) the remedy you are seeking. If we and you are unable to further resolve this dispute within sixty (60) calendar days of us receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and us through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration. Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against us.","s":"10) Disputes","u":"/terms","h":"#10-disputes","p":605},{"i":628,"t":"These Website Terms of Use cover the entire agreement between you and us regarding the Website and supersede all prior and contemporaneous understandings, agreements, representations and warranties, both written and oral, with respect to the Website. The captions and headings identifying sections and subsections of these Website Terms of Use are for reference only and do not define, modify, expand, limit, or affect the interpretation of any provisions of these Website Terms of Use. If any part of these Website Terms of Use is held invalid or unenforceable, that part will be severable from these Website Terms of Use, and the remaining portions will remain in full force and effect. If we fail to enforce any of these Website Terms of Use, that does not mean that we have waived our right to enforce them. If you have any specific questions about these Website Terms of Use, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"11) About these Website Terms of Use","u":"/terms","h":"#11-about-these-website-terms-of-use","p":605}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,1.203,1,4.999,2,4.566,3,3.704,4,4.249,5,2.006,6,3.846,7,1.384,8,1.878,9,3.571,10,4.397,11,1.224,12,4.999,13,2.08,14,2.324,15,3.398,16,3.211,17,3.27,18,4.118,19,3.211,20,5.296,21,2.908,22,2.865,23,2.954,24,3.211,25,3.27,26,4.999,27,6.295,28,4,29,5.296,30,6.295,31,2.954,32,5.693,33,6.295]],["t/4",[0,1.343,6,2.977,7,1.395,10,4.432,11,1.602,12,5.04,13,2.722,19,3.237,21,2.932,34,4.032,35,1.63,36,3.425,37,3.237,38,3.296,39,2.932,40,5.338,41,4.801,42,2.726,43,3.237,44,5.338,45,2.584,46,3.359,47,3.806,48,4.801,49,4.284,50,3.825,51,3.825,52,4.801,53,4.432,54,4.032,55,2.618]],["t/6",[0,1.389,3,3.131,4,3.593,5,1.303,6,3.054,9,1.499,11,0.669,14,1.27,15,1.857,16,3.32,19,1.755,21,1.59,22,1.566,28,3.382,34,3.382,35,0.681,40,4.477,41,2.603,46,2.817,56,4.924,57,5.322,58,0.837,59,2.622,60,1.895,61,5.322,62,5.322,63,3.877,64,3.717,65,3.131,66,4.813,67,2.733,68,4.813,69,1.895,70,5.322,71,3.441,72,2.323,73,3.441,74,2.403,75,6.509,76,2.622,77,3.441,78,3.441,79,4.813,80,2.251,81,2.323,82,2.187,83,3.112,84,1.895,85,6.162,86,4.813,87,4.027,88,3.112,89,1.755,90,4.813,91,1.667,92,2.128,93,5.169,94,2.733,95,2.895,96,2.733,97,2.873,98,3.441,99,2.251,100,3.112,101,2.024,102,1.724,103,3.441,104,2.603,105,2.733,106,2.074,107,2.187,108,2.733,109,2.496,110,4.813,111,4.477,112,2.895,113,1.667,114,3.441,115,3.441,116,1.857,117,1.521,118,1.978,119,2.403,120,2.895,121,2.895,122,1.614,123,3.112,124,3.441,125,3.441,126,3.112]],["t/10",[0,1.197,16,3.186,22,2.842,28,3.968,35,1.236,36,3.371,38,3.244,42,2.683,45,2.543,58,0.714,127,6.245,128,3.674,129,5.254,130,3.113,131,1.339,132,4.086,133,3.13,134,2.227,135,1.724,136,3.026,137,2.511,138,5.648,139,5.254,140,4.362,141,3.186,142,4.725,143,4.96,144,3.513,145,4.086,146,3.186,147,4.53]],["t/12",[0,1.203,14,2.324,15,4.424,18,4.118,37,4.181,58,0.937,59,3.101,83,5.693,92,3.893,122,2.954,148,3.05,149,6.366,150,2.908,151,5.693,152,2.908,153,3.893,154,3.619,155,3.001,156,3.619,157,2.956,158,6.295,159,3.332,160,3.27,161,4.566,162,5.208,163,5.362,164,4.999,165,5.693,166,5.296]],["t/14",[0,1.423,18,3.731,22,2.595,35,1.129,58,0.878,60,4.78,76,2.81,126,5.158,131,0.765,135,1.574,153,3.527,155,2.719,156,3.279,157,2.057,167,4.882,168,4.78,169,4.53,170,1.574,171,4.53,172,3.438,173,5.809,174,5.704,175,5.704,176,2.81,177,3.356,178,3.848,179,2.62,180,3.984,181,5.158,182,4.137,183,3.984,184,5.704,185,3.731,186,3.279,187,5.704,188,4.315,189,5.704]],["t/16",[0,1.396,6,2.84,7,1.331,8,1.806,13,2,15,3.267,37,3.088,42,2.601,43,3.088,58,0.692,92,3.744,149,5.58,154,3.481,157,3.225,159,3.204,160,3.145,161,5.794,163,5.226,170,1.671,190,5.093,191,3.334,192,3.96,193,6.044,194,5.093,195,3.267,196,3.847,197,6.054,198,5.794,199,5.093,200,2.373,201,6.054,202,2.565,203,2.84]],["t/18",[0,1.013,19,3.52,58,0.994,65,4.06,128,4.06,157,3.604,195,3.724,203,4.465,204,5.885,205,5.005,206,4.159,207,6.072,208,6.072,209,5.805,210,2.739,211,1.834,212,6.901]],["t/20",[6,3.104,7,1.013,11,1.287,13,2.186,14,1.7,19,2.349,58,0.885,60,2.536,65,2.71,82,2.926,128,2.71,133,2.308,134,1.642,150,2.128,192,3.013,195,3.571,203,3.633,204,4.788,205,3.34,206,2.776,207,4.621,208,4.621,209,5.566,210,2.626,211,2.058,213,1.851,214,3.217,215,3.658,216,2.776,217,3.217,218,2.128,219,4.165,220,2.438,221,3.658,222,4.606,223,2.195,224,4.165,225,3.34,226,3.502,227,2.926,228,4.165,229,4.165,230,4.165,231,2.59,232,3.571,233,2.71,234,3.874,235,5.566,236,3.34,237,3.109,238,4.165,239,4.165,240,3.874,241,4.165,242,2.065,243,7.119,244,4.606,245,2.128,246,5.983,247,4.606]],["t/22",[0,1.008,5,1.68,7,1.325,11,1.549,13,2.473,15,1.649,18,4.49,22,1.39,23,1.433,25,4.749,35,0.959,38,1.587,58,1.128,59,2.388,60,2.67,72,2.062,117,1.35,118,2.788,130,1.568,131,1.197,133,1.531,135,0.843,137,1.949,153,1.889,155,1.456,157,2.7,162,3.081,163,3.172,170,0.843,173,3.668,176,2.97,177,1.797,178,1.531,179,1.042,180,2.134,181,2.762,199,2.57,203,3.22,206,2.922,242,1.37,248,2.762,249,2.426,250,2.762,251,1.974,252,1.949,253,2.724,254,2.566,255,2.863,256,2.054,257,1.536,258,1.797,259,3.253,260,3.172,261,3.386,262,2.216,263,2.617,264,2.349,265,2,266,3.081,267,2.311,268,1.682,269,1.587,270,3.273,271,2.617,272,2.57,273,1.682,274,1.46,275,2.852,276,1.998,277,2.311,278,1.841,279,2.216,280,2.216,281,2.426,282,1.48,283,1.031,284,1.797]],["t/24",[0,1.343,17,3.296,28,4.032,42,2.726,84,3.495,99,4.151,113,3.992,118,3.649,132,5.39,141,3.237,142,4.801,145,4.151,146,3.237,147,4.602,157,2.289,203,2.977,267,4.801,285,5.738,286,3.025,287,4.602,288,5.04,289,4.602,290,4.801,291,5.976,292,5.338,293,4.151,294,6.346,295,4.284,296,5.04,297,5.338,298,2.765,299,4.432]],["t/26",[0,1.337,5,1.862,7,1.237,11,1.637,13,2.075,15,1.997,18,3.681,23,3.84,24,3.881,25,1.922,35,0.949,37,1.12,53,1.534,58,0.905,59,1.823,65,1.292,110,3.346,116,1.185,118,2.757,128,1.292,130,0.71,131,0.842,133,2.403,135,1.021,136,1.064,137,3.059,141,1.12,149,3.931,156,1.263,157,0.792,159,1.163,161,3.478,162,1.396,163,3.137,167,1.235,168,1.21,176,2.362,178,1.855,192,1.437,195,1.185,203,1.03,204,3.48,206,2.23,207,1.534,208,1.534,209,3.113,213,0.883,214,1.534,215,2.939,217,1.534,218,1.015,220,1.163,224,1.986,232,1.185,233,1.292,237,1.483,240,1.848,242,2.15,251,0.894,255,1.834,256,2.032,257,1.99,258,2.177,259,3.037,260,3.137,261,2.585,263,1.997,264,1.064,265,1.527,266,3.047,270,3.237,271,2.588,272,1.848,273,1.21,274,1.695,275,2.821,276,2.421,283,1.618,300,3.346,301,1.744,302,2.196,303,1.593,304,0.918,305,2.403,306,2.684,307,1.235,308,0.83,309,1.358,310,1.662,311,1.744,312,1.662,313,1.547,314,1.986,315,2.684,316,1.437,317,0.783,318,1.568,319,1.101,320,2.196,321,2.196,322,1.593,323,2.196,324,1.593,325,1.292,326,0.766,327,1.163,328,1.483,329,1.662,330,1.986,331,1.848,332,1.662,333,1.437,334,1.986,335,1.015,336,2.196,337,2.684,338,1.662,339,1.483,340,1.358,341,1.744,342,0.999,343,1.662,344,1.185,345,1.848,346,1.744,347,1.437,348,1.986,349,1.324]],["t/28",[0,1.26,5,2.252,22,2.54,35,1.699,38,2.9,58,0.981,91,2.705,118,3.21,130,1.806,131,1.36,133,2.798,137,2.244,170,2.089,176,3.728,263,4.084,264,3.666,265,3.542,274,2.28,277,4.224,278,3.365,279,4.049,280,4.049,281,4.434,282,2.705,283,1.884,284,3.285,305,2.798,318,2.366,319,2.798,335,2.579,350,2.11,351,4.434]],["t/30",[0,0.947,5,1.578,58,0.952,131,1.117,157,3.003,170,1.78,176,4.542,183,4.505,203,3.026,210,2.56,211,2.681,264,3.125,265,2.661,313,3.481,317,2.3,352,3.988,353,5.832,354,3.414,355,4.505,356,5.019,357,2.696,358,2.935,359,4.88,360,3.795]],["t/32",[5,2.24,7,0.674,8,0.915,22,1.395,23,1.439,39,1.417,43,1.564,58,0.912,86,2.773,122,1.439,130,1.573,131,1.293,135,0.846,152,2.792,157,1.106,176,3.694,179,1.046,186,3.475,198,2.224,200,1.906,210,2.399,211,2.86,255,1.173,263,4.307,271,3.262,274,0.924,283,1.035,318,1.299,356,4.81,357,3.496,358,3.413,361,2.526,362,2.435,363,5.465,364,1.804,365,1.417,366,1.949,367,1.804,368,3.869,369,2.224,370,1.725,371,2.58,372,1.804,373,1.537,374,2.773,375,2.773,376,2.931,377,4.398,378,4.398,379,2.32,380,2.58,381,2.32,382,3.862,383,2.07,384,3.067,385,4.863,386,3.067,387,1.593,388,2.07,389,2.58,390,3.067,391,3.067,392,3.067,393,1.804,394,2.07,395,2.773,396,2.435,397,1.486,398,2.006]],["t/34",[0,0.817,45,1.485,58,0.93,131,1.263,157,1.316,170,1.007,176,3.325,179,1.245,186,3.881,195,1.969,200,1.43,203,1.711,204,3.442,207,2.548,208,2.548,210,2.679,211,2.892,220,1.931,255,1.395,257,1.156,264,4.153,265,3.886,347,2.386,353,3.299,354,1.931,355,2.548,356,4.068,357,3.157,358,2.533,365,1.685,376,3.355,387,2.891,399,2.009,400,7.355,401,6.83,402,3.069,403,5.678,404,3.648,405,3.299,406,1.589,407,6.104,408,4.556,409,2.548,410,5.034,411,3.648,412,3.299,413,3.648]],["t/36",[5,2.219,45,1.932,58,0.772,131,1.151,157,1.711,176,4.226,186,2.728,210,3.125,211,2.925,255,1.815,257,1.503,263,4.248,264,3.274,265,3.247,356,4.073,357,3.291,358,2.159,363,4.29,376,4.073,377,4.29,378,4.29,387,2.464,400,4.29,401,6.111,403,3.991,407,6.111,408,5.313,409,3.313,410,4.29,412,4.29,414,3.991,415,4.744]],["t/38",[5,2.048,58,0.743,131,1.241,157,3.019,200,2.549,203,3.051,210,2.581,211,2.688,238,7.569,256,3.547,269,3.378,274,2.521,356,5.045,357,2.719,358,3.809,359,4.92,360,3.826,416,6.503,417,5.47,418,5.47,419,6.503]],["t/40",[0,1.089,8,2.213,18,4.854,23,3.481,58,0.848,135,2.048,137,2.983,159,3.927,160,3.854,170,2.048,266,4.715,270,5.008,271,4.004,272,6.242,273,4.086,274,2.235,305,3.718,335,3.428,420,5.008]],["t/42",[0,1.089,18,4.854,58,0.848,72,5.008,141,3.785,146,4.638,157,2.676,203,3.481,225,5.381,270,6.637,273,5.008,329,5.613,387,3.854,421,4.854,422,5.381]],["t/44",[8,2.961,157,3.405,160,3.523,164,5.386,266,4.309,270,7.065,273,5.467,284,3.99,318,2.874,387,3.523,423,4.737,424,7.942,425,6.782,426,6.782]],["t/46",[0,0.903,8,2.687,51,3.706,137,2.472,153,3.802,155,2.931,157,2.911,159,3.254,161,4.459,185,4.022,195,3.318,211,1.634,270,7.117,273,5.269,298,2.678,368,3.458,387,3.194,427,5.172,428,5.56,429,3.706,430,4.045,431,3.802,432,6.148,433,5.56,434,6.148,435,6.148,436,6.148]],["t/48",[0,0.609,7,0.911,14,1.53,21,3.368,23,1.945,35,0.82,39,1.915,42,2.633,45,1.688,58,0.474,65,2.439,131,0.556,134,1.479,135,1.144,140,4.28,141,3.126,159,3.859,170,1.144,193,3.137,198,3.007,202,3.089,210,1.646,217,2.896,271,4.347,274,2.71,296,3.293,305,2.078,316,2.712,322,3.007,325,2.439,326,1.446,335,1.915,339,2.799,351,3.293,368,2.332,382,4.867,388,2.799,394,5.436,406,1.806,427,3.488,428,3.749,437,2.332,438,3.137,439,5.542,440,3.749,441,6.128,442,4.146,443,4.445,444,6.128,445,3.488,446,3.137,447,2.564,448,2.332,449,3.749,450,3.137,451,5.625,452,3.308,453,3.007,454,4.146,455,4.146,456,4.146,457,4.146,458,3.293,459,2.564,460,2.896,461,4.632,462,3.137,463,2.634,464,2.712,465,4.146,466,3.749,467,4.146]],["t/50",[23,2.797,31,2.797,58,0.904,76,2.937,131,0.8,135,1.646,179,2.034,211,2.359,271,4.269,273,3.284,274,2.847,350,2.989,361,3.097,365,2.754,373,3.964,382,6.281,421,3.9,451,4.164,452,3.218,468,5.016,469,8.025,470,4.025,471,3.687,472,7.152,473,5.962,474,5.962,475,5.392,476,5.392,477,7.909,478,3.789,479,5.962]],["t/52",[23,3.266,31,3.266,72,4.699,271,3.757,362,5.529,373,3.489,440,6.295,451,4.862,452,3.757,461,4.423,469,7.904,472,6.295,476,6.295,480,4.554,481,8.741,482,6.942,483,5.529,484,7.353,485,5.529,486,6.295,487,5.856,488,3.551]],["t/54",[0,0.896,35,1.207,42,2.621,58,0.918,99,5.253,135,1.684,141,4.096,147,4.425,179,2.081,211,2.386,218,2.818,271,4.334,274,2.704,288,4.845,361,3.169,365,2.818,373,4.024,421,3.991,471,3.772,475,5.517,480,3.991,488,3.112,489,8.03,490,4.261,491,7.261,492,6.101,493,4.616,494,6.101,495,6.101,496,5.517,497,4.616]],["t/56",[7,1.544,11,1.366,13,2.32,58,1.005,72,4.741,117,3.104,131,0.942,137,3.533,170,1.939,206,4.233,251,2.86,252,2.823,253,3.489,254,4.652,255,3.67,275,4.132,276,4.595,305,3.52,335,3.245]],["t/58",[0,0.971,5,2.07,11,1.645,13,2.184,23,3.102,35,1.308,69,3.641,206,3.985,252,2.658,255,2.529,274,1.992,275,5.489,276,5.534,324,4.795,332,7.058,333,4.325,461,4.201,497,5.002,498,5.979,499,3.985,500,4.618,501,4.325,502,5.251,503,6.612,504,6.612]],["t/60",[5,0.889,11,1.079,13,1.2,23,2.602,35,0.719,72,3.744,113,1.759,131,0.487,141,1.852,157,1.31,170,1.002,177,2.136,200,2.174,203,1.704,206,2.189,211,2.898,213,2.706,223,1.731,245,1.677,255,2.575,274,1.671,275,5.742,276,2.375,332,6.474,333,2.375,334,5.016,350,1.372,357,2.319,358,3.693,461,5.833,493,2.747,497,4.197,500,2.536,505,3.631,506,2.536,507,3.283,508,3.343,509,2.536,510,5.016,511,3.283,512,2,513,1.423,514,1.372,515,4.405,516,3.629,517,5.547,518,2.747,519,3.631,520,3.631,521,3.631,522,3.631,523,3.631,524,3.631,525,3.631,526,2.088,527,3.283,528,3.283,529,2.375,530,2.245]],["t/62",[0,1.27,7,1.245,11,1.682,35,1.121,37,2.889,43,2.889,47,2.616,58,1.058,106,3.413,131,1.025,137,2.276,170,1.563,203,2.657,232,4.124,259,5.495,260,3.705,261,3.955,262,4.107,274,1.706,305,2.838,312,4.284,313,3.615,317,2.02,335,2.616,350,2.14,387,2.942,447,3.502,531,3.705,532,2.997,533,4.107,534,4.497,535,4.284,536,3.705,537,5.121,538,5.121]],["t/64",[15,3.895,45,2.938,58,0.825,195,3.895,203,4.194,204,5.528,205,5.234,206,4.35,207,6.244,208,6.244,259,5.242,262,7.044,539,7.52]],["t/66",[5,0.821,11,1.937,22,1.526,24,1.71,58,0.732,63,1.775,89,1.71,116,2.816,179,1.144,200,1.315,202,2.211,210,2.542,211,2.774,213,2.904,223,1.598,226,1.775,232,1.81,251,2.607,252,2.574,253,1.331,254,1.775,255,1.283,256,1.421,257,1.062,259,4.224,260,3.413,262,4.644,269,1.742,275,1.973,286,2.487,307,3.601,310,6.952,313,1.402,347,2.194,357,2.677,358,2.914,430,4.153,488,1.71,508,3.145,509,2.342,513,1.315,514,1.267,515,2.663,516,3.413,540,2.194,541,5.79,542,3.413,543,5.386,544,4.143,545,2.194,546,2.211,547,3.947,548,4.718,549,3.032,550,2.821,551,3.859,552,2.537,553,2.537,554,2.432,555,2.663,556,3.032,557,1.549,558,1.847]],["t/68",[5,0.75,11,1.9,21,1.417,22,1.395,24,1.564,46,3.969,58,0.691,89,1.564,104,2.32,116,1.655,170,0.846,200,1.202,202,1.299,210,2.399,211,2.766,213,2.765,223,1.462,232,1.655,251,2.801,252,2.429,253,1.217,254,1.623,255,1.173,256,2.061,257,0.972,259,4.048,260,3.181,262,4.383,275,1.804,286,2.881,307,3.399,309,1.896,311,6.337,313,1.282,342,1.395,347,2.006,357,2.875,358,2.75,430,4.587,490,2.142,508,2.931,513,1.906,514,1.838,515,2.435,516,3.181,542,3.181,544,3.862,545,3.181,546,2.061,547,3.679,550,2.58,551,3.643,552,2.32,553,2.32,554,2.224,555,2.435,556,2.773,559,4.13,560,5.084,561,4.398,562,2.773,563,4.398,564,5.465,565,3.067,566,4.398,567,2.773,568,2.773]],["t/70",[11,1.916,13,0.628,14,0.701,15,1.026,24,0.969,45,0.774,46,3.053,58,0.585,85,5.302,89,0.969,104,1.438,146,0.969,179,1.116,200,1.282,202,0.805,210,2.289,211,2.844,213,1.731,232,1.765,251,0.774,252,2.057,253,0.754,254,1.006,255,0.727,259,4.175,261,5.987,262,4.183,284,1.118,286,2.053,307,3.244,310,3.871,311,4.064,313,1.368,340,1.175,350,0.718,357,3.116,358,2.625,364,1.118,429,1.145,430,4.296,480,3.347,508,3.799,513,1.282,514,1.236,516,3.773,531,1.243,542,2.14,543,2.752,544,1.509,545,2.14,546,1.386,547,3.871,548,2.958,549,2.958,555,1.509,559,3.471,560,4.304,561,3.895,562,1.718,564,2.958,566,1.718,569,1.509,570,1.509,571,1.599,572,2.752,573,1.9,574,1.9,575,1.9,576,1.9,577,0.936,578,0.969,579,5.117,580,2.372,581,4.768,582,3.271,583,3.271,584,2.958,585,2.208,586,4.307,587,1.9,588,1.9,589,1.9,590,1.9,591,1.9,592,1.9,593,1.9,594,1.9,595,2.372,596,4.307,597,1.9,598,2.372,599,1.378,600,1.9,601,2.598,602,3.271,603,1.378,604,1.9,605,1.9,606,1.509,607,1.718,608,1.718,609,1.9,610,3.271,611,1.9]],["t/72",[11,1.174,13,1.994,21,1.876,31,1.905,39,1.876,45,1.653,46,2.149,51,3.637,54,2.58,58,0.911,72,2.741,117,2.667,170,1.121,179,2.457,203,1.905,210,1.612,211,2.663,217,2.836,220,3.812,256,1.721,257,1.912,259,3.887,260,2.656,261,4.215,286,2.877,310,4.566,311,3.225,313,1.698,357,3.732,368,2.284,430,4.759,529,2.656,530,2.511,539,3.416,541,3.672,542,2.656,543,3.416,546,1.721,560,3.416,563,3.672,577,2,612,4.061,613,3.672,614,4.061,615,3.672,616,3.672,617,4.061,618,4.061,619,3.416,620,2.448,621,7.201,622,4.061,623,4.061,624,4.061,625,4.061,626,4.061,627,4.061,628,4.061,629,4.061,630,4.061,631,4.061,632,4.061,633,4.061,634,3.225,635,4.061,636,3.225]],["t/74",[58,0.881,60,4.246,137,3.099,153,4.767,157,2.781,170,2.128,173,5.833,176,3.798,177,4.536,178,3.864,179,2.63,180,5.385,203,3.617,305,3.864,335,3.562]],["t/76",[22,2.842,58,0.932,60,5,113,3.026,133,3.13,134,2.227,157,2.253,173,6.169,177,3.674,178,4.086,180,5.695,203,2.93,204,3.862,207,4.362,208,5.695,213,2.511,218,2.885,231,3.513,290,4.725,313,2.611,637,6.86,638,8.154,639,6.86,640,6.245,641,3.862,642,6.245,643,4.362,644,6.245,645,4.725]],["t/78",[0,1.208,6,2.414,11,1.001,35,1.018,60,2.834,67,4.087,132,5.382,134,1.835,144,2.894,170,1.42,173,3.893,179,2.807,180,6.211,202,2.181,203,2.414,213,2.069,218,2.377,254,2.724,279,3.732,291,5.19,295,4.83,305,2.579,335,2.377,470,3.474,536,3.366,646,5.146,647,4.653,648,5.146,649,5.146,650,5.146,651,5.146,652,4.329,653,3.732,654,3.27,655,5.146,656,4.329,657,4.329,658,2.453,659,3.366,660,4.653,661,4.329,662,4.653,663,5.146,664,3.27,665,5.146,666,6.471,667,4.087,668,5.146,669,3.732,670,4.087,671,5.146,672,4.329,673,2.673,674,5.146]],["t/80",[13,2.406,37,3.715,58,1.028,137,2.928,157,3.243,159,3.855,160,3.783,170,2.01,203,3.417,249,5.784,266,5.712,309,4.503,325,4.285,326,2.54,675,6.586,676,6.127,677,6.586,678,5.784]],["t/83",[31,3.266,37,3.551,39,3.216,94,5.529,106,4.196,157,2.511,159,5.058,168,5.262,192,5.718,266,6.072,533,5.049,679,6.961,680,6.295,681,6.961,682,6.961,683,6.613,684,5.049,685,4.862]],["t/85",[7,1.712,10,5.438,17,4.044,92,4.814,135,2.149,157,2.808,200,3.052,280,5.647,546,3.299,584,7.04,686,6.55,687,6.55,688,7.785,689,5.89]],["t/87",[44,6.423,157,2.754,159,4.898,170,2.107,192,4.995,195,4.121,218,3.527,226,4.041,266,4.851,317,2.723,690,4.995,691,6.423,692,7.635,693,6.904,694,7.635]],["t/89",[5,1.975,13,2.666,17,3.194,42,2.641,53,4.294,58,0.703,63,3.254,91,2.979,150,2.84,157,2.911,159,4.769,179,2.098,199,5.172,206,3.706,264,2.979,265,3.33,266,6.079,271,3.318,313,2.57,317,2.878,325,3.617,372,3.617,388,4.15,427,5.172,695,5.56,696,5.56,697,5.56,698,4.459,699,5.56,700,5.56,701,4.651]],["t/91",[58,0.848,130,2.4,133,3.718,135,2.048,136,3.595,157,2.676,160,3.854,167,4.173,168,4.086,266,4.715,304,3.102,326,2.588,327,3.927,328,5.008,580,4.086,683,5.613,702,3.854,703,5.381,704,6.242]],["t/93",[0,1.079,13,2.428,17,3.818,35,1.455,58,0.84,84,4.048,135,2.029,194,6.184,203,3.449,223,3.504,266,5.745,431,4.545,673,3.818,705,4.962,706,3.749,707,7.35,708,5.561,709,7.35,710,7.35]],["t/95",[7,1.712,11,1.514,58,0.89,131,1.044,137,3.13,170,2.149,213,3.13,253,3.09,255,2.978,256,3.299,257,2.467,258,4.581,305,3.902,335,3.597]],["t/97",[0,0.996,35,1.342,58,0.775,76,3.341,131,1.266,157,2.446,200,2.659,210,2.692,211,2.723,213,3.456,242,3.041,253,3.413,356,5.691,357,2.835,358,3.913,359,5.131,360,3.99,711,6.133]],["t/99",[5,2.188,7,1.586,58,0.825,131,0.968,157,2.603,200,2.829,210,2.864,211,2.582,257,2.286,274,2.693,358,3.284,417,7.52,418,6.071,712,7.52,713,5.731,714,7.216]],["t/101",[11,1.821,157,2.405,210,2.647,211,2.77,213,3.419,255,2.55,256,2.825,257,2.113,357,3.556,508,4.019,513,3.334,514,3.215,551,5.646,552,5.044,553,5.044,715,5.941,716,6.029]],["t/103",[11,1.416,45,2.965,131,1.206,157,2.627,170,2.01,200,2.855,223,3.472,256,3.086,257,2.848,258,4.285,717,6.586,718,6.586,719,3.129,720,5.784,721,3.783,722,6.127,723,3.417,724,4.187,725,7.283]],["t/105",[5,1.212,11,1.792,13,1.636,89,2.526,131,0.664,170,1.367,186,2.847,200,3.612,211,2.61,213,1.991,223,3.321,255,1.894,256,2.952,257,2.207,260,3.24,308,3.046,313,2.912,350,1.872,357,2.07,358,2.253,364,2.914,399,2.727,513,1.941,514,1.872,516,6.253,551,4.199,554,3.592,603,3.592,645,3.747,717,4.478,719,3.757,724,2.847,726,4.952,727,4.952,728,4.952,729,2.985,730,3.343,731,2.526,732,3.747,733,4.478,734,4.952,735,2.985,736,4.166]],["t/107",[11,1.866,13,1.513,89,2.336,131,0.614,170,1.264,186,2.633,200,2.583,211,2.786,213,1.841,223,3.141,255,1.751,256,2.792,257,2.088,260,2.995,286,2.183,304,1.914,308,2.917,313,1.914,350,1.731,357,3.529,358,3.512,364,2.694,389,3.852,399,2.522,513,1.795,514,1.731,518,3.464,532,2.424,535,3.464,551,3.971,645,3.464,718,4.141,719,3.316,724,2.633,730,3.091,731,2.336,732,3.464,733,4.141,735,2.76,737,4.579,738,3.321,739,5.543,740,3.852,741,4.579,742,4.141,743,4.579,744,4.579,745,5.232,746,4.141,747,4.579,748,4.141]],["t/110",[5,1.329,11,1.444,157,1.958,210,2.155,211,2.846,256,3.586,257,1.72,301,4.312,308,3.438,317,1.936,357,3.538,358,2.471,399,5.011,516,3.552,554,3.938,719,2.332,724,4.865,731,2.769,736,6.247,739,4.567,740,4.567,748,6.715,749,9.098,750,3.938,751,3.938,752,6.715,753,5.429,754,5.429]],["t/112",[0,0.59,11,1.792,69,2.214,157,1.45,177,3.523,179,1.371,200,1.576,210,1.595,211,2.848,213,2.407,242,2.685,256,3.904,308,2.263,350,1.519,357,3.316,358,3.257,360,4.211,365,1.857,399,3.942,431,2.485,502,3.192,506,2.807,516,5.189,554,4.343,603,2.915,719,2.573,724,5.297,731,2.05,735,4.314,750,2.915,755,8.332,756,5.038,757,3.041,758,4.019,759,2.554,760,4.019,761,4.019,762,1.857,763,4.019,764,4.019,765,4.019,766,2.807,767,3.192,768,3.041,769,2.915]],["t/114",[5,1.053,7,0.946,11,1.831,31,2.019,55,2.599,56,3.256,58,0.72,108,3.418,113,3.052,117,1.902,131,0.577,179,2.149,188,3.256,211,2.698,242,1.93,253,1.708,255,1.646,256,3.863,257,2.598,258,2.532,291,3.122,308,3.298,350,1.627,357,3.428,358,1.959,365,2.91,516,2.816,529,2.816,530,2.662,554,3.122,636,3.418,683,3.256,719,2.706,731,2.195,739,3.621,740,3.621,752,3.892,755,3.892,770,7.451,771,5.299,772,6.299,773,6.299,774,5.299,775,6.299,776,4.304,777,3.418,778,4.304,779,2.532,780,3.892,781,3.256,782,4.304,783,4.304]],["t/116",[7,1.88,11,1.663,58,1.075,117,2.971,131,0.902,137,3.438,157,3.085,170,1.856,178,3.37,203,3.155,204,4.158,242,3.015,251,2.738,252,2.703,253,3.394,254,3.559,255,2.572,305,4.286,318,2.849,319,3.37,335,3.106,689,5.087]],["t/118",[0,0.781,5,1.302,25,2.763,35,1.053,58,0.957,76,2.621,117,2.351,118,3.058,130,1.721,131,1.343,137,2.138,157,1.919,176,4.443,200,2.87,210,2.111,211,2.662,213,2.943,242,2.385,253,2.906,304,2.224,313,3.061,317,1.897,318,2.254,350,2.01,356,5.047,357,2.224,358,3.81,359,5.54,360,4.308,364,3.13,502,5.815,711,4.81,784,5.319]],["t/120",[0,0.862,5,2.299,7,2.066,8,1.752,14,2.168,35,1.162,58,0.671,131,0.788,157,2.824,200,2.302,210,3.108,211,2.775,274,2.653,351,4.665,358,3.563,364,3.456,417,7.41,418,6.587,557,2.713,712,7.41,713,4.665,731,2.996,785,5.874,786,5.874]],["t/122",[0,0.665,5,1.108,11,1.86,13,2.159,14,2.412,35,0.896,42,1.944,53,4.564,54,2.876,58,0.517,63,2.396,104,3.424,116,2.443,122,2.124,157,1.633,179,1.544,202,2.769,210,1.797,211,2.755,213,2.627,251,1.843,252,1.82,253,1.797,257,2.43,307,4.722,350,1.711,357,3.51,360,2.663,364,2.663,420,3.055,508,5.061,513,3.291,514,3.173,547,5.801,551,4.622,552,3.424,553,3.424,568,4.093,715,4.564,716,4.093,731,2.309,787,2.443,788,4.526]],["t/124",[11,1.732,58,0.909,97,3.242,113,2.911,117,2.655,137,2.415,178,3.011,203,2.819,204,3.715,210,2.385,211,2.113,213,3.195,214,5.552,243,6.313,300,5.433,303,6.461,350,2.271,357,2.512,408,4.055,452,3.242,689,4.545,762,2.775,789,6.008,790,4.055,791,5.433,792,5.433,793,8.056,794,5.433,795,5.433,796,6.008,797,4.915,798,5.433]],["t/126",[0,0.82,7,1.227,11,1.929,35,1.105,58,1.052,113,3.666,200,2.188,211,2.743,213,3.042,232,3.013,251,3.082,253,3.004,254,4.006,303,4.049,357,3.164,358,2.54,532,2.955,545,3.652,550,4.697,581,4.224,613,5.048,799,5.725,800,5.583,801,5.048,802,5.048,803,4.697,804,5.048,805,5.048,806,4.697,807,7.568,808,5.048]],["t/128",[0,0.593,7,1.322,11,1.733,13,1.335,23,1.895,31,1.895,35,0.799,56,3.056,58,0.909,72,2.727,113,1.957,117,1.785,179,1.378,200,3.117,211,2.807,213,2.886,223,2.866,232,2.18,252,2.886,253,2.85,254,2.138,255,2.746,275,3.537,291,2.93,357,3.002,358,3.267,461,4.562,502,3.208,507,3.653,508,3.623,509,2.822,510,3.653,511,3.653,512,3.311,513,2.814,514,2.713,515,3.208,516,5.202,529,2.643,530,2.498,531,2.643,532,2.138,603,2.93,636,3.208,732,3.056,735,2.435,809,4.04,810,3.398,811,6.011,812,3.208,813,3.398,814,4.04,815,4.04,816,4.04]],["t/130",[42,2.704,43,3.211,45,2.563,59,4.038,131,0.844,135,2.665,137,2.531,170,1.738,231,3.541,290,4.763,293,4.118,305,3.155,335,2.908,350,2.379,393,3.704,488,3.211,557,2.908,578,3.211,653,4.566,705,4.249,817,4,818,3.893,819,6.295,820,4.118,821,4.999,822,4.999,823,4.118,824,6.295,825,4.763,826,4.566,827,5.296,828,5.693,829,4.763,830,4.763]],["t/132",[39,1.925,43,3.138,58,0.476,59,3.031,135,1.15,204,4.522,211,2.289,213,1.675,245,1.925,421,4.025,443,5.304,546,1.766,706,2.126,745,3.31,817,2.648,822,3.31,827,3.506,828,3.769,831,3.769,832,3.506,833,4.168,834,2.295,835,4.168,836,6.015,837,6.152,838,5.563,839,3.31,840,4.168,841,4.168,842,4.168,843,4.168,844,4.168,845,7.788,846,4.168,847,3.023,848,4.168,849,4.168,850,5.807,851,6.152,852,7.312,853,7.312,854,7.312,855,7.312,856,4.168,857,4.168,858,4.168,859,6.152,860,4.168,861,6.152,862,6.152,863,6.152,864,4.168,865,4.168,866,4.168,867,4.168,868,4.168,869,4.168,870,2.648,871,4.168,872,6.152,873,4.168,874,4.168,875,4.168,876,4.168]],["t/134",[22,3.168,23,3.266,58,0.796,84,3.834,135,1.922,231,3.916,295,4.699,317,2.483,557,3.216,673,3.616,705,4.699,817,4.423,818,4.305,836,6.105,877,5.856,878,5.856,879,6.961,880,6.961,881,6.295,882,5.856,883,5.529,884,5.856,885,7.904,886,6.961]],["t/136",[59,3.523,84,5.573,130,2.313,135,1.974,196,4.544,309,4.422,399,3.938,657,6.016,723,3.355,823,4.678,834,5.573,836,6.208,887,5.679,888,7.151,889,8.038]],["t/138",[25,3.244,36,3.371,59,3.077,117,2.76,130,3.23,131,1.094,135,2.756,136,3.951,137,2.511,146,3.186,211,2.168,213,2.511,283,2.752,304,2.611,308,2.36,313,2.611,317,2.227,327,3.306,471,3.862,578,3.186,639,5.254,823,4.086,887,4.96,890,4.316,891,3.244,892,4.216]],["t/140",[0,1.05,25,3.714,58,0.817,117,3.16,122,3.355,130,2.313,131,0.959,135,2.453,137,2.875,150,3.303,179,2.44,183,4.994,283,3,470,6,529,4.678,530,4.422,817,4.544,818,4.422,823,4.678,834,3.938]],["t/142",[0,0.903,42,2.641,58,0.703,131,0.825,134,2.193,160,4.192,191,3.386,220,3.254,282,2.979,283,3.229,298,2.678,308,3.05,313,3.374,317,2.193,344,4.356,350,2.324,423,5.637,437,3.458,471,4.991,483,4.883,702,3.194,723,2.885,729,3.706,892,5.448,893,4.651,894,4.883,895,4.459,896,6.409,897,4.294,898,3.907]],["t/144",[0,0.939,58,0.731,130,2.679,131,1.111,136,4.013,170,2.286,220,4.384,283,2.795,308,3.471,313,2.674,337,4.64,372,4.873,406,3.608,471,5.122,675,5.785,731,3.263,823,4.185,890,3.386,892,5.591,896,5.08,899,4.84,900,8.282,901,4.64]],["t/146",[0,0.837,58,0.992,130,2.484,131,1.164,136,3.72,160,3.988,220,4.064,242,2.557,283,3.134,308,3.28,313,2.385,318,2.417,350,2.156,372,3.356,373,2.858,406,2.485,423,6.062,471,4.748,585,3.85,729,3.438,823,3.731,887,4.53,890,3.019,892,3.85,895,4.137,896,4.53,901,4.137,902,5.704,903,5.704,904,5.704,905,7.678,906,5.809,907,3.078]],["t/148",[0,0.684,58,0.891,65,2.742,130,1.507,131,0.625,134,1.662,136,3.233,160,4.42,211,2.491,220,2.467,270,3.146,273,3.675,283,3.44,308,2.522,313,1.948,344,5.422,350,1.761,372,2.742,373,2.335,423,5.943,471,2.882,514,1.761,729,2.809,731,3.403,890,3.532,892,3.146,894,5.299,895,3.38,896,3.701,901,3.38,906,3.526,908,5.897,909,3.146,910,4.66,911,3.38,912,3.38,913,3.255,914,2.809,915,3.701,916,3.526,917,4.66,918,6.672,919,3.146]],["t/150",[5,1.259,7,1.573,8,2.134,11,1.6,14,1.9,22,2.342,58,0.588,113,2.493,117,2.274,130,1.665,131,1.193,134,1.835,135,1.42,137,2.069,146,3.65,182,3.732,257,2.267,258,3.028,274,1.55,283,3.001,286,2.453,298,2.242,308,3.361,317,3.333,372,3.028,373,2.579,387,2.673,430,2.579,512,2.834,514,1.945,546,2.181,578,2.625,719,2.211,731,2.625,787,2.777,887,4.087,890,2.724,891,2.673,911,3.732,912,3.732,920,3.893,921,4.087,922,4.653,923,3.732,924,2.611,925,3.594]],["t/152",[131,1.098,155,3.904,283,2.764,298,3.568,308,3.095,317,2.921,431,5.064,578,4.177,926,6.889]],["t/154",[11,1.342,58,0.789,102,3.458,109,5.005,155,3.289,283,2.329,298,3.006,317,2.461,344,4.692,364,4.06,406,3.006,430,3.458,452,3.724,514,3.285,559,3.8,702,3.585,892,4.658,894,5.48,895,5.005,908,5.221,927,6.901,928,6.901,929,6.901,930,4.82,931,4.267]],["t/156",[42,3.634,155,3.152,220,4.478,223,3.152,240,5.562,270,4.463,273,5.416,298,2.88,317,2.358,318,2.802,350,2.499,406,2.88,461,4.201,731,3.372,909,6.297,932,6.612,933,6.612,934,4.463,935,6.612,936,6.612,937,6.612,938,5.979,939,5.562,940,6.612,941,5.562]],["t/158",[5,2.164,8,1.766,14,2.186,35,1.172,46,2.095,58,0.677,130,1.281,131,1.056,135,1.093,150,1.829,152,3.277,155,1.887,195,2.137,257,1.876,265,1.633,274,1.784,276,2.59,282,1.918,298,1.725,313,1.655,317,1.412,361,3.076,372,3.484,373,3.945,387,3.076,406,1.725,430,1.984,559,2.18,731,2.019,787,3.829,797,4.386,914,3.569,922,3.58,924,2.16,930,2.765,931,2.448,942,7.093,943,5.633,944,4.136,945,5.921,946,2.329,947,3.58,948,2.871,949,3.33,950,3.33,951,3.144,952,3.959,953,3.58,954,2.871,955,5.921,956,3.907,957,3.33,958,3.58,959,3.33,960,3.959,961,3.959,962,3.959,963,5.355,964,5.921,965,5.355,966,3.33,967,3.33,968,4.981,969,2.995,970,4.173,971,2.871,972,3.959,973,4.981]],["t/160",[8,1.863,152,2.885,155,2.977,264,4.663,298,2.721,317,2.227,329,4.725,360,3.674,361,4.236,370,3.513,397,3.951,406,4.35,459,5.042,559,3.44,719,2.683,930,4.362,931,3.862,974,8.154,975,6.86,976,6.245,977,6.86,978,6.245,979,5.254,980,5.254,981,4.086,982,5.648]],["t/162",[0,0.387,5,1.336,7,1.2,8,2.223,11,0.513,46,2.279,58,0.492,63,2.279,64,3.008,81,1.78,89,1.345,101,1.551,102,1.321,104,1.995,105,2.094,130,1.393,144,1.483,152,2.911,155,1.257,192,1.725,200,1.033,206,1.589,211,0.701,259,1.423,271,1.423,274,1.297,298,1.149,301,2.094,309,2.663,317,2.247,322,1.912,355,3.008,360,1.551,361,1.369,393,1.551,406,1.149,430,3.735,509,1.841,512,3.006,513,2.14,514,2.625,546,1.825,634,4.335,653,3.959,756,3.623,797,2.663,829,1.995,898,1.675,914,4.492,916,4.767,924,3.679,930,4.401,931,3.897,943,3.42,944,1.841,951,3.42,973,2.218,983,5.205,984,1.483,985,4.099,986,4.306,987,3.894,988,2.817,989,2.384,990,4.306,991,2.636,992,3.008,993,2.384,994,4.306,995,2.817,996,4.306,997,3.008,998,2.094,999,2.384,1000,2.636,1001,2.218,1002,3.623,1003,2.636,1004,2.636,1005,1.995,1006,2.636,1007,1.369,1008,2.384,1009,1.345,1010,2.636,1011,2.094,1012,1.516,1013,2.384,1014,4.306,1015,2.636,1016,2.736,1017,2.384,1018,2.946,1019,2.636,1020,3.42]],["t/164",[0,0.732,5,1.22,7,1.096,8,2.087,11,1.796,42,2.141,51,4.218,55,2.056,155,2.376,233,2.932,242,3.137,257,3.117,274,1.501,298,2.171,317,1.777,318,2.112,347,4.578,360,2.932,406,2.171,719,2.141,914,4.218,959,4.192,965,4.507,971,3.614,973,4.192,1005,6.118,1021,4.984,1022,4.507,1023,8.353,1024,5.712,1025,4.507,1026,4.984,1027,4.984,1028,4.984,1029,3.364,1030,4.507,1031,6.635,1032,6.997,1033,3.77,1034,4.507,1035,5.075]],["t/166",[5,2.195,7,1.972,8,1.565,11,1.021,19,2.677,55,2.993,155,2.502,211,1.395,255,3.997,275,4.268,298,2.287,317,1.872,332,3.971,361,2.726,406,2.287,448,4.08,460,3.666,513,2.844,514,1.984,658,2.502,893,3.971,907,2.833,914,3.164,956,3.995,968,6.103,970,4.268,983,3.666,1016,3.335,1036,4.746,1037,6.103,1038,4.746,1039,3.807,1040,4.746,1041,5.249,1042,6.994,1043,5.489,1044,2.891]],["t/168",[5,1.851,7,1.662,8,2.255,11,1.471,155,3.605,298,3.294,317,2.697,361,3.928,406,3.294,409,6.925,658,3.605,914,4.558,983,5.282,1045,6.838,1046,3.857]],["t/170",[0,0.672,8,1.965,11,0.89,14,2.849,58,0.523,131,0.614,152,3.044,155,2.183,159,2.424,167,5.895,168,4.25,211,1.751,298,1.995,308,1.731,317,1.633,327,2.424,342,2.084,347,2.995,369,3.321,373,3.868,376,2.76,397,4.09,406,1.995,443,6.487,449,4.141,450,3.464,452,2.471,488,2.336,572,7.101,658,2.183,721,2.378,731,3.361,787,3.556,914,3.971,924,2.404,931,2.831,971,4.779,983,4.602,1047,3.852,1048,5.543,1049,3.321,1050,5.958,1051,3.636,1052,4.579,1053,4.579,1054,2.336]],["t/172",[8,2.483,152,3.846,155,3.074,273,4.586,298,2.81,317,2.3,360,3.795,373,4.173,397,5.005,406,2.81,443,4.678,450,4.88,787,4.494,913,7.439,914,3.888,983,5.815,1055,6.449]],["t/174",[8,1.939,65,3.826,118,3.739,131,1.123,155,3.1,186,3.739,220,3.442,264,5.016,265,3.819,298,2.833,317,2.319,347,5.476,370,3.657,397,4.055,402,5.47,406,4.032,719,2.794,914,3.92,930,4.542,931,4.021,979,5.47,980,5.47]],["t/176",[8,1.342,35,0.891,58,0.514,65,2.648,84,3.584,97,2.429,118,2.588,131,1.28,152,2.079,155,2.145,176,3.206,265,3.455,274,1.356,298,1.961,307,2.531,317,1.605,326,2.269,354,4.046,367,3.828,370,4.997,373,3.261,406,1.961,423,3.143,762,2.079,787,2.429,914,3.922,930,3.143,931,2.783,941,3.786,953,5.884,970,3.828,1044,3.584,1056,5.727,1057,5.474,1058,3.786,1059,3.264,1060,3.405,1061,5.159,1062,2.648,1063,4.024,1064,4.545,1065,5.474,1066,3.574,1067,4.923,1068,4.5,1069,3.786,1070,3.038,1071,3.574,1072,4.07]],["t/178",[0,0.987,5,2.556,7,1.88,8,2.551,63,5.408,131,0.902,155,3.205,251,2.738,298,2.929,317,2.398,361,3.493,406,2.929,658,4.076,686,7.194,914,4.053,983,4.697,1073,4.697]],["t/180",[8,2.395,21,4.7,42,3.45,155,2.908,271,5.801,298,2.658,317,2.176,373,4.024,406,2.658,430,4.024,451,4.261,787,3.293,914,4.84,916,7.216,983,5.608,1074,5.517,1075,6.101,1076,5.517,1077,6.101]],["t/182",[5,0.817,7,1.964,14,2.357,22,1.519,42,1.434,55,1.378,58,0.382,117,1.476,122,1.567,131,0.697,137,1.342,148,1.618,150,1.543,155,1.592,170,0.922,179,1.139,221,2.652,255,1.989,257,2.284,268,1.839,269,1.734,279,2.422,282,3.094,283,2.433,284,3.059,298,2.265,308,1.965,313,1.396,317,2.571,318,3.889,326,2.724,365,1.543,367,1.965,376,2.013,381,2.526,406,1.455,409,2.332,447,3.949,448,1.878,500,2.332,512,2.864,526,1.92,532,2.752,643,2.332,654,2.122,658,3.723,702,2.701,723,2.996,781,2.526,895,2.422,908,2.526,931,2.065,956,1.839,1009,3.677,1039,2.422,1042,2.809,1044,2.864,1062,1.965,1066,2.652,1078,2.526,1079,3.339,1080,3.339,1081,6.386,1082,2.332,1083,2.652,1084,3.339,1085,3.339,1086,3.339,1087,3.339,1088,3.339,1089,4.702,1090,2.809,1091,3.339,1092,3.339,1093,3.339,1094,3.339,1095,2.332,1096,3.339,1097,3.339,1098,3.339,1099,2.652,1100,3.339,1101,3.339,1102,3.339,1103,3.339,1104,3.339,1105,2.526,1106,3.339,1107,3.339,1108,2.526,1109,3.339,1110,2.652,1111,3.339,1112,3.339]],["t/184",[0,0.963,13,2.166,15,3.539,42,2.817,58,0.75,137,2.636,149,4.58,157,3.035,161,4.755,162,5.347,163,6.079,164,5.207,165,5.929,166,5.516,170,2.323,178,3.286,190,5.516,191,3.611,192,4.289,193,6.366,194,5.516,195,3.539,196,4.166,203,3.076,305,3.286,335,3.029,1113,6.557]],["t/186",[13,1.831,15,2.992,45,2.257,58,0.978,137,2.229,157,3.086,162,4.786,163,6.003,177,3.262,178,4.287,180,5.261,195,2.992,203,3.534,204,4.657,205,4.021,206,3.341,207,6.41,208,6.41,213,3.439,243,5.981,318,2.349,319,2.778,399,3.053,639,6.336,1114,4.664,1115,5.544,1116,4.664,1117,4.664,1118,5.544,1119,5.544,1120,5.544,1121,5.544]],["t/188",[0,0.587,13,1.321,58,0.682,60,3.93,131,1.296,134,1.426,162,3.791,163,2.616,170,1.97,177,2.353,200,2.339,210,2.833,211,2.846,213,3.181,242,2.675,253,3.36,269,3.099,308,1.511,318,2.528,319,2.004,344,3.852,349,2.41,357,2.494,359,3.025,360,2.353,420,2.699,439,5.395,448,2.249,461,4.535,478,2.541,499,2.41,501,2.616,1001,3.364,1122,3.999,1123,7.912,1124,3.999,1125,3.176,1126,3.616,1127,3.999,1128,3.999,1129,3.999,1130,5.966,1131,3.999,1132,6.453,1133,3.616,1134,3.025,1135,5.395,1136,3.616,1137,3.176,1138,3.999,1139,2.793]],["t/190",[0,0.304,11,1.643,13,0.684,56,3.473,58,0.525,59,1.02,60,1.938,79,1.872,84,1.14,97,1.117,113,1.003,131,0.472,134,1.255,157,0.747,162,1.315,163,3.003,169,3.646,177,1.218,185,1.354,200,1.379,202,1.491,210,2.409,211,2.869,213,2.177,214,2.458,242,0.928,243,1.644,251,1.869,253,1.397,254,1.095,303,3.329,307,2.582,317,0.738,344,1.899,350,0.782,357,3.231,424,1.741,429,2.121,461,1.315,462,2.662,508,2.121,518,1.566,547,3.473,551,2.767,552,2.662,553,1.566,652,1.741,654,1.315,735,1.247,750,1.501,756,1.741,762,2.121,791,1.872,792,1.872,793,3.182,794,1.872,795,1.872,797,1.28,798,1.872,818,2.839,906,1.566,926,1.741,941,1.741,944,1.446,1059,2.552,1132,3.182,1133,1.872,1134,1.566,1135,1.872,1140,1.741,1141,1.566,1142,2.552,1143,4.591,1144,1.741,1145,3.519,1146,3.182,1147,1.872,1148,2.07,1149,4.897,1150,2.07,1151,2.07,1152,2.07,1153,1.872,1154,7.729,1155,5.415,1156,2.07,1157,2.07,1158,3.519,1159,2.07,1160,2.07,1161,2.07,1162,2.07,1163,2.07,1164,2.07,1165,3.519,1166,2.07,1167,2.07,1168,2.07,1169,2.07,1170,2.07,1171,4.591,1172,2.07,1173,2.07,1174,1.501,1175,2.07,1176,4.591,1177,6.069,1178,2.07,1179,2.07,1180,2.07,1181,4.591,1182,2.07,1183,2.07,1184,2.07,1185,3.182,1186,2.07,1187,2.07,1188,5.415,1189,6.601,1190,4.591,1191,5.415,1192,3.519,1193,1.872,1194,2.07,1195,2.07,1196,1.872,1197,1.741,1198,3.519,1199,3.519,1200,1.446,1201,2.07]],["t/192",[11,1.632,13,1.295,23,1.839,35,1.163,39,1.811,58,0.672,60,2.159,113,1.899,131,0.788,162,2.491,200,2.764,202,1.661,210,1.556,211,2.943,213,1.576,214,2.738,232,3.172,251,2.393,253,1.556,254,4.974,303,2.843,307,3.306,313,1.639,357,3.684,358,1.784,429,2.362,461,3.735,518,2.965,735,2.362,799,2.965,801,3.544,802,3.544,803,6.59,804,3.544,806,3.297,808,3.544,944,4.105,1134,2.965,1146,3.544,1147,3.544,1149,3.544,1153,5.315,1202,3.919,1203,7.051,1204,3.544,1205,3.919,1206,3.544,1207,3.919,1208,3.919,1209,3.919]],["t/194",[11,1.857,13,1.806,39,2.526,58,0.625,60,3.011,131,0.733,162,3.474,169,4.342,186,3.143,200,2.924,210,2.17,211,2.913,213,2.198,252,2.999,255,2.854,275,4.389,357,2.285,462,4.136,551,3.295,732,5.644,735,4.497,810,4.599,813,4.599,921,4.342,1134,4.136,1144,4.599,1210,7.68,1211,6.746,1212,5.467]],["t/196",[0,0.559,5,0.931,7,1.264,11,1.811,13,1.899,15,2.054,22,1.732,25,1.977,31,1.786,39,1.758,56,2.88,58,0.792,59,1.875,60,2.096,90,3.442,113,1.844,117,2.54,131,0.771,137,1.53,157,1.373,162,3.653,163,2.49,179,1.299,182,2.76,198,2.76,200,2.254,203,1.786,210,1.511,211,2.851,250,3.442,252,2.311,255,1.456,256,2.436,257,2.446,275,2.239,281,3.023,284,2.239,304,1.591,308,1.438,350,1.438,357,2.896,462,2.88,530,2.354,551,3.465,578,1.941,636,3.023,637,3.202,719,2.47,732,4.349,735,3.465,810,3.202,813,3.202,1134,2.88,1141,5.241,1144,3.202,1210,5.199,1211,5.199,1213,6.927,1214,3.442,1215,5.749,1216,3.806,1217,3.806,1218,3.806,1219,3.806,1220,3.806,1221,3.806]],["t/198",[0,0.673,5,1.889,8,0.849,23,3.808,24,3.685,25,1.478,26,2.26,36,2.472,45,1.159,58,0.753,59,1.402,63,1.506,76,2.257,89,2.337,91,1.379,122,1.335,128,1.674,130,2.958,131,1.386,133,1.426,135,2.613,136,3.193,137,3.103,145,1.861,149,1.988,152,3.045,155,1.356,160,1.478,161,2.064,167,2.577,168,2.523,169,2.26,179,1.563,182,2.064,185,1.861,236,2.064,249,2.26,263,1.536,264,1.379,265,2.981,273,3.63,283,3.144,298,1.24,308,2.731,313,1.915,316,1.861,317,1.015,318,1.206,319,1.426,344,1.536,352,1.76,354,1.506,394,1.921,398,2.997,423,1.988,471,2.833,483,2.26,578,2.933,580,1.567,620,1.715,787,1.536,817,1.808,820,1.861,823,1.861,825,2.153,826,3.322,892,1.921,894,2.26,924,1.038,981,2.997,1056,1.636,1222,2.26,1223,2.573,1224,2.26,1225,2.153,1226,2.26,1227,3.322,1228,2.846,1229,2.064,1230,2.394]],["t/200",[58,0.927,122,3.803,131,1.087,135,2.237,137,3.258,150,3.744,170,2.237,283,2.736,305,4.062,335,3.744]],["t/202",[0,1.004,5,2.437,35,1.354,63,3.621,91,3.314,118,3.933,131,0.917,135,1.888,148,3.314,170,1.888,176,3.37,263,3.692,264,3.314,265,3.567,283,3.361,304,2.86,349,4.123,478,4.347,580,3.768,1056,3.933,1231,6.186]],["t/204",[14,1.624,21,2.957,22,2.002,58,0.863,80,2.878,131,1.232,135,1.215,152,2.957,159,2.329,170,1.767,179,2.184,264,3.101,265,1.815,271,2.375,274,1.928,283,2.796,286,2.097,308,1.663,318,1.865,319,2.205,329,5.709,350,1.663,354,2.329,361,3.325,365,2.033,370,2.475,394,4.321,406,4.315,451,3.073,459,6.305,480,2.878,491,3.979,559,2.423,847,3.191,890,3.388,967,3.702,977,7.407,981,4.188,982,5.789,1078,3.329,1232,4.4,1233,4.4,1234,4.4,1235,4.4,1236,3.494,1237,4.4,1238,3.979]],["t/206",[5,1.801,7,1.037,8,1.758,11,1.925,14,1.09,35,0.584,42,1.268,49,1.993,55,1.218,58,0.674,131,0.987,134,1.053,135,1.627,150,1.364,179,1.61,211,2.086,220,1.563,233,1.737,252,1.187,257,3.166,258,2.776,274,1.421,283,1.989,308,2.966,315,2.141,317,2.102,318,1.999,347,4.403,361,1.533,365,2.18,448,2.654,546,1.251,719,2.027,766,3.295,781,2.233,797,1.825,890,3.563,898,3.745,907,2.546,925,2.062,959,2.483,971,2.141,1005,4.459,1022,2.669,1023,8.182,1024,5.292,1025,2.669,1029,3.185,1030,2.669,1031,3.569,1048,2.483,1108,3.569,1239,2.344,1240,2.952,1241,2.952,1242,2.952,1243,2.952,1244,2.952,1245,2.952,1246,2.952,1247,2.952,1248,2.952,1249,2.952,1250,2.952,1251,2.952,1252,2.952,1253,2.141,1254,4.266,1255,2.952,1256,2.952,1257,2.669,1258,2.669,1259,2.233,1260,2.952,1261,2.952,1262,2.952,1263,2.952,1264,2.483,1265,2.483,1266,2.483,1267,2.483]],["t/208",[24,1.941,46,4.386,58,0.947,81,2.569,113,1.844,131,0.771,135,1.051,150,1.758,211,2.476,213,1.53,217,2.658,220,2.015,237,4.676,286,3.302,308,2.173,344,3.103,361,1.977,406,1.658,430,4.947,471,3.555,542,3.761,595,2.76,615,3.442,672,3.202,702,1.977,723,1.786,745,3.023,797,3.555,821,3.023,827,4.836,831,3.442,832,5.828,890,3.043,947,3.442,949,3.202,950,3.202,951,6.13,1110,3.023,1268,3.806,1269,3.202,1270,3.806,1271,5.199,1272,8.287,1273,5.749,1274,3.442,1275,7.88,1276,6.927,1277,3.806,1278,5.749,1279,3.023,1280,3.806,1281,5.749,1282,6.927,1283,3.806,1284,3.806,1285,3.806,1286,3.806,1287,3.023,1288,3.442,1289,3.023,1290,3.806]],["t/210",[5,0.794,8,2.298,21,4.515,22,1.476,42,2.692,58,0.811,131,1.096,134,1.157,135,1.958,157,1.17,159,2.69,179,1.106,211,2.521,259,2.743,271,5.777,283,1.095,286,1.546,308,2.369,313,1.356,317,2.235,365,2.348,368,1.824,373,3.861,382,2.576,388,2.189,394,2.189,430,4.096,448,1.824,451,4.955,452,1.75,470,2.189,567,2.933,766,2.265,787,2.743,845,2.933,890,3.317,916,6.183,1029,3.431,1074,2.933,1076,5.668,1140,2.728,1291,7.094,1292,3.243,1293,5.082,1294,3.243,1295,3.243,1296,3.243,1297,3.243,1298,3.243,1299,3.243,1300,3.243,1301,3.243,1302,5.082,1303,3.243,1304,2.189,1305,3.243]],["t/212",[0,0.478,8,2.442,11,0.992,35,0.644,46,3.326,58,0.372,76,1.604,131,0.954,134,1.161,135,1.735,152,2.903,167,6.003,168,5.13,170,0.899,179,1.111,211,2.6,283,1.099,308,3.442,317,2.92,365,2.356,373,3.563,397,3.966,450,2.464,488,2.601,766,4.389,787,3.838,890,3.326,924,2.594,971,5.157,1029,4.242,1047,2.739,1048,6.887,1049,2.362,1050,5.683,1058,2.739,1306,6.284,1307,3.256,1308,3.256,1309,3.256,1310,3.256,1311,3.256,1312,3.256,1313,3.256,1314,2.275,1315,3.256,1316,3.256,1317,3.256]],["t/214",[5,2.134,7,1.082,8,2.069,11,1.349,14,1.817,58,0.793,131,0.93,135,2.217,179,1.679,211,2.318,253,1.953,255,3.892,283,1.661,308,3.036,317,1.755,350,1.86,361,2.556,365,2.274,448,2.768,513,2.719,546,2.939,658,3.306,766,3.437,890,4.251,907,3.743,1036,4.45,1037,7.336,1108,5.248,1258,4.45,1259,3.723,1264,4.14,1265,4.14,1266,4.14,1267,4.14,1318,4.921,1319,4.921,1320,4.921,1321,4.921,1322,4.921,1323,4.921,1324,3.569]],["t/216",[5,2.14,7,1.272,8,2.313,11,1.508,14,2.136,58,0.886,131,1.04,135,2.413,179,1.975,253,3.471,254,4.628,283,1.953,308,2.93,361,3.006,365,2.674,409,6.107,448,3.255,546,3.286,658,3.696,890,4.628,1045,5.234,1046,3.955,1264,4.869,1265,4.869,1266,4.869,1267,4.869,1325,5.787,1326,5.787,1327,5.787]],["t/218",[58,0.882,135,1.586,170,2.13,211,2.051,259,3.101,293,3.758,298,2.503,308,3.52,350,2.171,361,5.196,370,3.232,393,3.38,397,2.784,406,2.503,459,4.771,532,3.041,702,2.984,731,2.931,890,3.041,895,4.167,957,4.833,963,9.045,967,4.833,977,4.833,1046,3.936,1328,5.745,1329,7.716,1330,5.745,1331,4.563,1332,5.745,1333,5.745]],["t/220",[0,1.059,5,2.188,35,1.428,58,0.825,91,3.496,118,4.149,131,1.199,135,2.467,137,2.901,148,3.496,170,1.992,265,2.977,274,2.174,283,3.017,305,3.616,335,3.334,350,2.727,414,6.071]],["t/222",[5,2.132,58,0.882,97,3.101,131,1.035,135,2.13,148,2.784,170,1.586,179,1.96,211,2.475,263,4.164,274,2.324,283,1.939,308,2.916,361,4.008,365,2.654,366,3.651,367,3.38,368,3.232,369,4.167,370,3.232,371,4.833,372,3.38,373,2.879,374,5.195,375,5.195,762,2.654,890,4.084,931,3.553,1013,6.977,1137,4.563,1334,6.977,1335,7.716,1336,5.745,1337,5.745]],["t/224",[8,2.042,58,0.648,131,1.102,134,1.332,135,1.89,148,1.809,170,1.031,179,1.274,186,3.937,211,2.389,220,1.976,237,2.521,261,2.608,264,5.083,265,4.11,274,1.125,283,1.26,307,2.1,308,2.889,317,1.332,347,3.707,350,1.411,352,2.309,365,1.725,370,3.851,397,4.191,402,3.141,405,3.377,406,4.212,430,2.84,459,2.309,468,3.141,559,2.056,719,2.434,766,2.608,890,2.999,931,2.309,979,3.141,980,3.141,1029,2.521,1275,3.377,1338,3.734,1339,2.965,1340,3.734,1341,3.734,1342,3.734,1343,4.767,1344,3.734,1345,3.734,1346,3.734,1347,3.734,1348,3.734,1349,3.377,1350,3.734,1351,3.734]],["t/226",[5,1.089,8,2.484,58,0.868,89,2.27,97,2.402,118,2.558,131,1.237,134,1.587,135,2.096,148,2.156,170,1.228,176,4.97,179,1.518,211,2.351,263,2.402,264,3.127,265,2.663,283,1.502,308,2.439,317,1.587,350,1.682,354,4.681,365,2.056,468,3.743,478,4.825,595,3.227,762,2.056,890,3.416,931,2.752,1029,3.004,1056,5.996,1061,5.126,1064,5.304,1343,5.429,1352,6.454,1353,4.45,1354,4.024]],["t/228",[2,2.843,5,2.536,7,0.862,8,2.503,14,1.447,17,2.036,20,3.297,21,1.811,35,1.163,58,0.806,63,5.44,65,2.306,89,1.999,131,1.313,133,1.964,134,1.398,135,2.317,160,2.036,170,1.082,176,2.895,179,1.337,211,2.231,283,1.984,308,2.665,317,1.398,350,1.481,361,3.053,365,1.811,366,2.491,367,2.306,368,2.205,369,2.843,370,2.205,371,3.297,372,2.306,373,1.964,387,2.036,397,2.847,546,2.49,890,3.732,924,1.43,1029,2.646,1073,4.105,1355,5.877,1356,3.919,1357,3.919,1358,3.919,1359,3.919,1360,3.919,1361,3.919,1362,2.646,1363,2.965]],["t/230",[89,3.615,130,2.292,131,1.292,135,1.956,152,4.083,167,3.986,168,3.903,242,3.177,265,2.924,273,4.868,350,3.641,398,4.636,462,5.361,559,3.903,585,4.783,787,3.825,909,4.783,1364,5.14]],["t/232",[117,2.946,131,0.894,135,1.84,152,3.929,179,2.275,211,2.261,271,3.599,273,4.684,372,3.923,388,4.501,478,4.237,506,4.657,787,5.325,1289,5.295,1365,5.609,1366,4.657,1367,5.609,1368,5.295,1369,5.609,1370,5.295,1371,5.609,1372,6.667,1373,6.667,1374,6.667,1375,6.667]],["t/234",[131,1.294,135,2.26,152,3.783,307,4.606,354,4.335,577,4.034,995,5.357,1376,5.94]],["t/236",[117,2.827,131,1.111,135,1.766,152,2.955,179,2.183,211,1.701,264,4.013,273,4.561,307,3.598,354,5.141,478,4.065,506,4.468,1236,6.578,1289,5.08,1365,5.382,1366,4.468,1367,5.382,1368,5.08,1369,5.382,1370,5.08,1371,5.382,1377,6.397,1378,5.785,1379,8.282,1380,8.282,1381,8.282]],["t/238",[5,1.879,25,2.963,35,1.129,117,3.393,118,3.279,131,1.164,135,2.119,137,2.293,152,3.547,179,1.946,211,1.516,265,2.353,273,4.229,274,1.718,283,1.925,307,3.208,354,4.915,478,3.624,506,3.984,529,3.731,530,3.527,787,3.078,1056,4.415,1230,4.798,1236,6.893,1289,4.53,1354,6.943,1365,4.798,1366,3.984,1367,4.798,1368,4.53,1369,4.798,1370,4.53,1371,4.798,1378,5.158,1382,5.704,1383,5.704]],["t/240",[0,0.939,7,1.406,8,1.908,11,1.244,35,1.266,36,4.47,38,3.323,58,0.731,76,3.152,130,2.069,131,1.303,134,2.281,135,2.286,136,3.099,202,2.711,251,2.605,252,2.572,257,2.027,283,2.159,396,5.08,619,5.382,913,4.468,924,2.334,985,2.639,1060,4.84,1384,6.397,1385,6.397,1386,5.382,1387,5.785,1388,5.382,1389,4.84]],["t/242",[0,1.154,22,3.578,23,3.689,24,4.011,25,4.084,38,4.084,76,3.874,130,2.544,131,1.263,138,7.11,139,6.615,1389,5.949]],["t/244",[8,1.908,36,3.453,87,4.84,102,3.206,130,2.679,131,1.111,133,3.206,135,1.766,136,4.013,236,4.64,350,2.418,394,4.318,443,4.64,634,5.08,701,4.84,825,4.84,826,6.007,836,4.468,877,5.382,924,2.334,985,2.639,988,4.185,995,5.418,1002,5.382,1224,5.08,1225,4.84,1364,4.64,1390,6.949,1391,6.397]],["t/246",[36,5.24,135,2.284,673,4.299,836,5.78,882,6.962,883,6.572,884,6.962]],["t/248",[31,2.907,36,3.344,58,0.708,116,3.344,133,3.105,136,3.002,170,1.71,180,4.328,190,5.213,218,2.863,223,2.954,245,2.863,283,2.091,295,4.183,298,3.534,344,4.881,834,3.413,836,4.328,993,5.603,1287,4.921,1392,9.96,1393,6.196,1394,9.595,1395,5.603,1396,6.196,1397,5.213,1398,6.196,1399,6.196,1400,6.196,1401,6.196]],["t/250",[0,0.85,5,1.416,11,1.7,14,2.136,16,2.952,19,2.952,22,2.634,35,1.534,39,2.674,46,3.063,64,4.042,66,5.234,130,1.872,131,0.776,135,1.597,136,2.804,251,3.157,293,3.786,305,2.9,326,2.704,344,3.124,430,2.9,464,3.786,471,3.579,488,2.952,899,4.379,924,2.829,954,4.197,985,3.199,988,5.72,999,5.234,1009,3.955,1402,4.042,1403,5.234,1404,5.623,1405,5.787,1406,5.787,1407,5.234]],["t/252",[11,1.286,36,4.566,109,4.795,130,2.139,131,1.135,134,2.358,135,2.575,136,4.099,185,4.325,223,3.152,257,2.095,273,4.659,319,3.313,471,4.088,913,4.618,985,2.728,988,4.325,1031,5.002,1226,5.251,1304,4.463,1386,5.562,1408,6.612,1409,3.89,1410,5.979,1411,5.251,1412,6.612]],["t/254",[21,3.274,22,3.225,54,4.503,55,2.924,99,4.636,131,0.95,145,4.636,185,4.636,218,3.274,318,3.003,319,3.551,365,3.274,373,3.551,450,5.361,488,3.615,913,4.95,1002,5.962,1386,7.436,1389,5.361,1413,7.086,1414,5.962,1415,5.962,1416,4.636]],["t/256",[0,0.578,8,1.175,11,1.147,22,1.792,25,2.046,28,2.503,35,1.167,36,2.126,45,1.604,47,1.82,58,0.674,76,1.94,117,1.741,122,1.848,130,1.274,131,1.184,135,2.321,136,1.908,137,1.583,140,2.751,141,2.009,142,2.98,143,3.128,144,3.978,145,2.577,146,2.009,147,2.857,150,1.82,167,2.216,168,2.169,170,1.087,179,1.344,202,1.669,211,2.502,231,2.216,232,3.184,242,1.766,251,1.604,252,1.583,256,1.669,257,1.248,269,2.046,283,2.387,307,2.216,350,1.489,352,4.856,373,1.974,437,3.318,508,4.263,512,2.169,513,1.544,529,2.577,530,2.436,531,2.577,719,1.692,730,2.659,805,3.562,850,6.237,985,1.625,1047,3.314,1388,3.314,1417,3.939,1418,3.562,1419,5.899,1420,3.939,1421,4.963,1422,3.128,1423,5.335,1424,3.939,1425,3.128,1426,2.503,1427,3.939,1428,3.939,1429,3.128,1430,3.939,1431,3.939,1432,3.939]],["t/258",[36,3.895,59,3.555,130,2.892,131,0.968,135,2.467,136,4.331,137,3.593,170,1.992,205,5.234,283,2.435,305,3.616,327,3.82,335,3.334,396,5.731,821,5.731,891,3.748,1387,6.525,1389,5.459]],["t/260",[8,2.076,58,0.796,128,4.096,130,2.828,131,1.172,133,3.489,135,1.922,136,4.235,156,4.003,170,1.922,204,4.305,218,3.216,236,5.049,315,5.049,350,2.631,394,4.699,825,5.267,826,6.34,924,2.54,1224,5.529,1225,5.267,1433,5.856]],["t/262",[0,1.089,135,2.048,136,4.406,144,4.173,145,4.854,295,5.008,337,6.595,557,3.428,559,4.086,578,3.785,705,5.008,901,6.595,1409,4.365,1434,7.419,1435,6.709,1436,7.419]],["t/264",[59,4.404,135,1.992,136,4.705,211,2.376,295,4.871,337,7.044,368,4.059,673,3.748,834,3.974,836,5.04,882,7.52,883,5.731,884,6.071,889,6.525,1437,7.216]],["t/266",[22,1.683,25,1.921,28,2.35,32,3.345,45,1.506,52,2.799,58,0.87,97,1.996,113,1.792,117,1.635,122,1.736,130,2.647,131,1.098,133,1.854,135,2.1,136,3.965,137,1.487,140,2.584,141,1.887,142,2.799,143,2.938,144,2.081,145,2.42,146,1.887,147,2.683,150,1.709,168,2.037,179,1.262,183,3.929,186,2.127,211,2.454,242,1.658,264,2.726,265,2.321,283,2.567,308,2.875,327,2.978,337,4.938,350,1.398,368,2.081,369,2.683,370,3.164,373,3.412,397,1.792,398,2.42,488,1.887,529,2.42,530,2.287,559,3.098,641,2.287,657,3.112,745,5.407,787,1.996,885,3.345,901,2.683,930,2.584,957,3.112,1056,2.127,1226,2.938,1343,4.733,1349,3.345,1414,3.112,1435,3.345,1438,5.626,1439,3.345,1440,3.345,1441,3.699,1442,3.699,1443,3.699,1444,3.699,1445,3.699,1446,3.699,1447,2.938,1448,3.699,1449,3.699,1450,3.699,1451,3.699,1452,3.699,1453,3.345,1454,3.699,1455,3.345]],["t/268",[58,0.737,130,2.983,131,0.865,134,2.969,135,1.78,144,3.628,179,2.2,191,5.078,230,5.832,231,5.186,282,3.125,293,4.219,315,6.039,705,4.354,723,3.026,729,3.888,897,4.505,1035,4.678,1456,6.449,1457,6.449,1458,5.426,1459,6.449,1460,4.678,1461,7.529,1462,6.449,1463,5.832]],["t/270",[0,0.575,11,0.762,13,1.942,23,1.839,39,3.258,42,1.684,45,1.596,58,0.672,76,1.931,84,2.159,102,3.926,113,2.847,122,1.839,130,1.901,131,1.051,134,1.398,167,2.205,168,2.159,170,1.082,179,1.337,191,2.159,192,2.564,220,4.442,229,3.544,231,3.306,251,1.596,263,4.228,283,2.832,284,2.306,291,2.843,298,1.707,301,3.113,309,3.634,376,2.362,393,2.306,406,1.707,483,3.113,500,2.738,512,2.159,514,3.453,526,2.253,546,2.49,729,2.362,834,2.159,908,2.965,1016,5.599,1017,5.315,1018,4.756,1035,4.263,1117,3.297,1174,2.843,1461,3.544,1463,3.544,1464,5.877,1465,4.667,1466,3.919,1467,2.564,1468,3.919,1469,3.919,1470,3.919,1471,5.932,1472,3.919,1473,3.919,1474,3.919,1475,2.843,1476,3.113]],["t/272",[7,1.454,11,1.814,17,3.434,25,3.434,43,3.372,82,4.201,117,2.922,223,3.152,255,3.236,256,2.802,257,2.095,258,3.89,304,2.764,318,2.802,460,4.618,513,2.592,514,3.197,557,3.908,641,4.088,797,4.088,909,4.463,921,5.251,924,2.412,1477,5.979,1478,6.612,1479,5.562,1480,6.612]],["t/274",[7,1.431,11,1.486,13,2.525,14,1.661,16,2.296,18,5.478,22,2.048,46,2.382,58,0.874,133,3.83,134,1.605,146,2.296,154,2.588,179,1.535,202,1.907,215,5.168,218,2.079,220,4.432,231,2.531,242,2.018,251,1.833,252,1.809,255,1.722,297,3.786,306,3.264,307,4.299,365,2.079,406,3.648,431,2.783,499,2.713,513,3.482,514,3.5,533,3.264,557,2.079,585,3.038,654,2.86,691,3.786,708,3.405,715,4.545,762,2.079,779,2.648,790,3.038,806,3.786,851,5.474,1439,4.07,1481,4.5,1482,4.5,1483,3.574,1484,4.07,1485,4.07,1486,4.5,1487,4.07,1488,4.5,1489,4.5,1490,4.5,1491,3.574]],["t/276",[9,3.46,309,4.911,365,3.669,431,4.911,513,3.113,514,3.002,677,7.182,715,5.547,847,5.76,1492,7.182,1493,6.009,1494,7.182]],["t/278",[0,0.736,5,1.227,7,1.933,9,2.185,14,1.851,17,2.605,20,4.219,43,2.558,58,0.803,116,2.707,170,1.384,179,1.711,202,2.125,213,2.016,237,3.385,253,1.991,254,2.655,255,3.104,257,2.227,275,2.951,350,1.895,370,2.821,393,2.951,399,2.762,430,3.522,513,3.629,514,3.499,559,3.871,577,3.463,706,2.558,719,2.155,870,3.187,898,4.466,924,1.83,946,2.951,984,2.821,1065,4.219,1206,4.535,1324,3.637,1426,5.156,1455,4.535,1460,3.637,1495,3.187,1496,4.219,1497,3.503,1498,3.101,1499,4.535,1500,3.281,1501,3.983]],["t/280",[7,1.075,9,2.131,11,1.784,13,2.281,14,1.805,17,2.541,35,0.968,46,2.589,55,2.018,58,0.915,97,2.64,116,2.64,133,2.451,148,2.37,179,1.669,200,2.707,202,2.926,211,2.769,215,3.884,220,2.589,232,2.64,269,2.541,303,3.547,307,2.751,308,1.848,317,1.744,482,3.884,513,2.707,514,2.61,540,3.2,557,2.26,762,2.26,790,4.661,851,4.114,1070,3.301,1125,3.884,1257,4.423,1362,3.301,1426,3.108,1458,4.114,1487,6.245,1498,3.024,1502,4.423,1503,4.891,1504,3.7,1505,4.891,1506,6.906,1507,6.906,1508,4.891]],["t/282",[7,0.951,9,1.885,11,1.453,13,2.089,39,1.999,43,3.226,55,1.785,58,0.94,60,2.383,69,2.383,108,5.023,148,2.097,154,2.488,179,1.477,195,2.336,202,3.484,211,1.987,213,1.74,237,4.269,252,1.74,255,1.655,257,1.371,268,2.383,298,1.885,299,3.023,304,1.809,350,1.636,399,4.528,430,2.169,459,2.676,482,6.529,513,3.223,514,3.452,532,2.291,540,4.137,559,2.383,687,3.641,689,3.274,706,2.207,820,2.831,898,2.75,943,5.023,946,2.546,954,4.587,956,2.383,1065,3.641,1426,2.75,1483,3.437,1497,5.22,1509,4.328,1510,4.328,1511,4.328,1512,4.328,1513,4.328,1514,6.325,1515,7.474,1516,4.328,1517,4.328,1518,4.328]],["t/284",[0,1.075,2,3.858,7,1.169,8,2.184,35,1.053,38,2.763,39,2.457,42,2.285,59,2.621,76,2.621,81,3.591,130,2.918,131,1.311,133,2.666,135,2.49,137,2.138,152,2.457,170,1.468,236,3.858,245,2.457,274,1.602,283,2.471,293,3.48,297,4.475,305,2.666,335,2.457,350,2.01,394,3.591,398,3.48,421,3.48,546,2.254,558,2.93,578,2.713,641,3.289,706,2.713,820,3.48,825,4.025,826,5.31,924,1.941,1224,4.225,1225,4.025,1389,4.025,1491,4.225,1519,4.475,1520,5.319,1521,5.319]],["t/286",[19,2.061,22,1.838,36,4.292,58,0.462,59,3.917,84,2.225,130,3.19,131,1.238,133,3.013,135,2.827,136,4.695,148,1.957,155,3.422,156,4.128,170,1.659,198,2.93,282,1.957,283,1.363,290,3.056,308,1.527,327,3.8,337,2.93,339,2.727,433,3.653,493,3.056,620,2.435,705,4.058,817,4.562,818,2.498,820,5.202,822,3.208,823,6.203,1222,3.208,1223,3.653,1238,5.436,1522,6.011,1523,6.011,1524,3.456,1525,4.04,1526,4.04,1527,4.04,1528,4.04]],["t/288",[22,2.935,25,3.35,36,4.494,58,0.737,117,2.85,130,2.983,131,1.237,135,2.298,136,4.034,137,2.593,179,2.2,211,2.213,283,3.288,313,2.696,317,2.3,319,3.232,608,5.832,823,5.447,890,3.414,1095,4.505,1304,4.354,1529,6.449,1530,6.449]],["t/290",[0,0.68,5,2.491,7,1.018,8,2.531,22,2.108,35,0.917,42,1.99,58,0.888,63,4.112,80,3.031,91,3.764,118,3.82,131,1.254,135,2.48,148,2.244,155,2.208,156,2.664,157,1.671,159,2.452,170,1.279,176,3.827,253,1.839,263,3.586,264,3.764,265,3.501,267,3.505,271,2.5,274,1.395,283,3.156,304,1.937,349,2.792,388,3.127,448,2.606,478,2.944,580,2.551,658,2.208,664,2.944,1056,4.466,1231,4.189,1334,4.189]],["t/292",[5,1.416,58,0.662,76,2.851,89,2.952,130,1.872,131,1.173,135,1.597,152,2.674,167,3.255,168,3.187,211,2.589,257,2.457,265,2.388,342,2.634,350,2.93,352,3.579,354,4.104,577,2.851,658,2.759,719,2.486,721,3.006,730,3.907,787,3.124,790,5.234,850,4.596,981,3.786,1236,4.596,1364,4.197,1418,5.234,1421,4.869,1423,5.234,1531,7.753,1532,5.787,1533,7.753,1534,5.787,1535,5.787,1536,5.787]],["t/294",[0,0.808,22,2.505,23,2.583,25,2.86,28,3.498,35,1.089,45,2.242,58,0.629,117,2.433,122,2.583,130,1.781,131,1.355,135,2.069,137,2.213,140,3.845,141,2.808,142,4.165,143,4.372,144,3.096,145,3.601,146,2.808,147,3.993,150,2.543,167,3.096,168,3.032,179,1.878,211,1.463,242,2.468,274,1.658,283,2.877,352,3.404,529,3.601,530,3.404,585,3.716,658,2.624,721,2.86,730,3.716,850,4.372,1364,3.993,1421,4.631,1537,7.496,1538,6.306,1539,5.505,1540,5.505,1541,5.505]],["t/296",[0,0.903,2,3.023,5,2.563,8,1.243,11,1.196,14,1.538,24,3.138,35,1.217,42,1.79,63,2.206,65,2.452,76,2.053,80,2.726,91,2.981,106,2.512,131,0.981,148,2.019,154,2.396,176,2.053,191,2.295,200,1.634,218,1.925,223,1.987,251,1.697,252,1.675,253,1.654,254,2.206,255,1.594,256,1.766,257,1.321,263,2.249,264,2.019,265,3.331,274,1.853,276,2.726,283,1.407,288,4.886,330,3.769,333,2.726,342,2.799,352,2.577,383,2.813,557,2.842,578,2.126,637,3.506,706,2.126,812,3.31,847,3.023,924,2.245,1056,2.396,1095,2.911,1225,3.153,1259,3.153,1458,3.506,1542,3.153,1543,2.813,1544,3.31,1545,5.175,1546,3.023,1547,7.312,1548,6.152,1549,4.168,1550,3.769,1551,4.168,1552,3.769,1553,6.152,1554,4.168]],["t/298",[0,0.732,3,2.932,4,3.364,5,1.22,7,1.096,8,1.486,16,3.569,25,2.589,35,1.385,42,2.141,45,2.029,58,0.8,74,3.481,91,2.414,109,3.614,117,2.202,120,5.887,131,1.085,154,2.865,159,2.638,170,1.931,176,2.455,185,4.578,198,3.614,202,2.112,257,1.579,265,2.056,274,1.501,299,3.481,304,2.083,318,2.112,349,3.004,354,2.638,478,3.167,542,4.578,557,2.302,643,4.887,670,3.958,757,3.77,1056,4.649,1057,4.192,1061,3.364,1376,3.614,1475,3.614,1497,3.481,1545,4.192,1555,4.887,1556,4.507,1557,4.984,1558,4.984,1559,3.958,1560,3.614,1561,3.958,1562,4.507,1563,3.481,1564,4.984,1565,4.984,1566,4.984]],["t/300",[7,1.686,58,0.877,131,0.607,256,1.918,264,3.166,265,1.867,274,2.682,335,4.113,354,5.183,372,4.511,380,5.497,387,2.351,397,2.193,532,2.396,551,3.938,581,7.547,595,4.739,601,5.189,641,2.799,735,3.938,995,2.961,998,6.089,1056,3.757,1057,7.063,1376,3.283,1567,4.093,1568,4.093,1569,4.093,1570,6.534,1571,6.45,1572,6.934,1573,6.534,1574,6.534,1575,6.534,1576,6.534,1577,6.534]],["t/302",[0,1.312,2,5.234,35,1.428,74,5.04,76,3.555,132,4.721,200,2.829,448,4.059,459,5.528,1239,5.731,1502,6.525,1578,7.216,1579,5.459,1580,7.216,1581,6.525,1582,6.525,1583,7.216,1584,5.04,1585,5.234,1586,6.525]],["t/304",[0,1.21,5,2.016,7,1.395,14,2.342,35,1.256,43,3.237,58,0.725,63,3.359,82,4.032,91,3.992,122,2.977,131,0.851,153,3.924,159,3.359,160,3.296,202,2.689,245,2.932,265,3.399,269,3.296,304,2.653,342,2.888,352,3.924,397,3.074,557,2.932,701,4.801,715,4.432,1056,3.649,1587,5.04,1588,5.738,1589,5.04,1590,6.346,1591,5.338,1592,5.738]],["t/306",[0,1.21,5,1.553,9,2.765,11,1.779,35,1.811,80,4.151,89,3.237,91,3.074,101,3.734,102,3.18,140,4.432,269,3.296,406,2.765,829,4.801,893,4.801,923,4.602,924,3.006,984,3.569,985,2.618,1498,3.924,1543,4.284,1555,4.432,1593,5.738,1594,4.432,1595,6.931,1596,6.346,1597,5.04,1598,4.801,1599,5.338,1600,5.338]],["t/308",[0,0.917,7,1.373,8,1.863,11,1.766,52,4.725,82,3.968,131,0.838,148,3.026,154,3.591,160,3.244,170,1.724,253,2.479,254,3.306,255,2.389,256,3.455,257,1.979,258,3.674,274,1.881,318,2.646,326,2.844,558,3.44,559,3.44,683,4.725,779,3.674,830,4.725,1007,4.716,1584,4.362,1601,4.216,1602,4.96,1603,4.96,1604,4.96,1605,6.245,1606,6.245]],["t/310",[0,0.564,7,0.845,11,1.894,35,1.146,55,1.585,76,1.893,113,1.862,131,1.396,150,1.775,196,3.68,213,1.545,226,2.034,252,1.545,254,2.034,255,2.665,256,1.628,257,2.208,269,1.996,317,1.371,431,2.377,448,3.257,458,5.534,501,2.514,512,3.189,513,2.27,514,3.306,526,2.21,531,2.514,577,1.893,603,2.787,658,2.76,664,2.442,719,1.651,721,1.996,751,5.054,832,3.233,906,2.908,923,5.054,924,1.402,1046,1.96,1064,2.684,1069,3.233,1073,2.684,1226,5.534,1304,6.127,1500,2.514,1543,2.594,1607,3.233,1608,3.843,1609,7.757,1610,8.322,1611,6.968,1612,3.475,1613,3.233,1614,2.908,1615,3.233]],["t/312",[3,2.574,8,1.305,14,2.353,16,2.232,35,0.866,38,2.273,39,2.022,45,1.782,51,2.638,65,2.574,84,2.41,88,3.957,107,2.78,129,3.681,131,1.108,170,1.208,172,2.638,176,3.141,183,3.056,186,4.752,221,3.475,245,2.945,252,1.759,256,1.854,264,3.089,265,2.63,268,2.41,274,1.318,313,1.829,326,1.526,335,2.022,354,3.981,355,4.453,361,2.273,370,2.461,373,2.193,406,3.827,429,2.638,446,3.311,459,5.67,499,2.638,558,2.41,654,2.78,664,2.78,719,1.88,790,2.954,818,3.943,847,3.174,1046,2.232,1070,2.954,1142,3.174,1404,3.174,1447,3.475,1559,3.475,1561,3.475,1586,3.957,1601,4.304,1616,4.376,1617,4.376,1618,4.376,1619,3.957,1620,3.056,1621,4.376,1622,4.376,1623,4.376,1624,3.681,1625,3.475,1626,4.376]],["t/314",[5,1.268,25,2.691,47,3.814,131,0.964,152,2.393,256,3.498,257,2.616,264,4,274,1.56,298,3.132,327,2.742,335,2.393,342,2.357,354,4.37,355,3.618,370,2.913,373,2.596,399,2.853,403,6.945,459,5.105,551,3.122,652,6.945,719,3.547,735,5.375,878,6.047,906,3.919,1072,7.466,1376,3.757,1447,6.557,1497,5.021,1627,5.18,1628,7.189,1629,5.18,1630,5.18,1631,5.18]],["t/316",[5,2.337,7,1.64,8,2.225,16,2.788,19,3.805,35,1.476,45,2.226,58,0.625,63,3.949,82,3.474,109,3.965,120,4.599,131,1.281,185,3.576,253,2.17,269,2.84,274,2.247,326,1.907,350,2.066,383,3.69,438,4.136,542,4.88,558,4.109,577,2.693,643,3.818,658,3.556,799,4.136,1056,4.289,1073,3.818,1426,3.474,1475,3.965,1559,4.342,1561,4.342,1601,3.69,1632,5.467,1633,3.576,1634,5.467,1635,5.467,1636,4.944]],["t/318",[0,0.826,5,1.376,7,1.672,35,1.113,58,0.643,63,2.976,97,3.035,131,0.754,176,2.77,256,2.383,264,3.684,265,2.32,271,4.104,274,2.291,354,4.025,361,3.95,380,6.397,387,2.921,397,2.724,551,3.389,581,7.82,595,4.078,601,7.331,719,2.415,735,3.389,998,6.039,1467,3.678,1567,5.084,1568,6.876,1569,6.876,1571,4.73,1572,5.084,1637,4.73]],["t/320",[0,1.235,7,1.85,8,1.956,13,2.78,107,4.166,170,2.323,226,3.471,268,3.611,431,4.055,533,4.755,535,4.961,577,3.23,693,5.929,702,3.406,738,4.755,812,5.207,834,3.611,1426,5.347,1563,4.58,1587,5.207,1620,4.58,1638,5.516,1639,5.929,1640,6.557,1641,6.557,1642,5.929,1643,4.426,1644,4.961]],["t/322",[0,0.939,3,3.764,5,2.248,6,3.002,7,2.019,8,1.908,9,2.787,10,4.468,11,1.611,21,2.955,28,4.065,35,1.266,82,4.065,102,3.206,131,0.858,154,3.678,213,2.572,251,2.605,252,2.572,259,3.453,387,3.323,684,4.64,923,4.64,924,2.334,984,3.598,1543,4.318,1645,5.382,1646,5.08,1647,4.64,1648,4.468,1649,5.785]],["t/324",[5,1.516,7,1.783,11,1.205,29,5.213,35,1.605,55,2.556,58,0.708,101,4.773,154,3.563,170,1.71,304,2.59,306,5.884,326,2.829,335,2.863,398,4.054,438,4.688,532,3.28,924,3.3,985,3.731,1009,4.138,1416,4.054,1600,6.824,1646,4.921,1650,4.328,1651,3.735,1652,4.921,1653,5.213,1654,4.494,1655,4.494]],["t/326",[5,1.975,7,1.774,9,2.678,11,1.569,14,2.269,35,1.217,37,3.136,58,0.703,131,0.825,146,3.136,253,2.44,255,3.087,256,2.605,316,4.022,326,2.144,350,2.324,379,4.651,488,3.136,512,3.386,513,3.164,514,3.05,557,2.84,641,3.802,683,4.651,695,5.56,924,2.945,1007,4.192,1491,4.883,1633,4.022,1656,5.56,1657,5.56,1658,3.706,1659,5.56]],["t/328",[5,1.482,7,1.966,8,1.806,11,1.739,18,3.96,35,1.581,47,2.797,58,0.692,131,0.812,133,3.034,200,2.373,242,2.714,255,2.316,256,3.789,257,3.013,274,1.824,340,3.744,350,2.288,578,3.088,664,3.847,698,4.391,719,2.601,720,4.808,721,3.145,834,3.334,924,2.915,1589,4.808,1603,4.808,1613,5.093,1615,5.093,1658,3.649,1660,5.474]],["t/330",[5,2.222,7,1.793,11,1.586,14,2.305,35,1.614,52,4.725,131,0.838,251,2.543,252,3.278,253,3.237,254,4.316,274,1.881,282,3.026,326,2.178,350,2.36,351,6.476,501,4.086,546,2.646,687,5.254,751,4.53,830,4.725,924,2.279,1007,3.244,1658,3.764,1661,7.374,1662,5.648,1663,6.245,1664,6.245,1665,4.53]],["t/332",[0,1.15,7,1.291,11,1.903,13,1.94,35,1.55,47,2.713,53,4.102,55,2.423,134,2.095,153,3.632,214,4.102,220,3.109,223,2.8,232,4.226,245,2.713,255,2.247,257,1.861,286,2.8,327,3.109,335,2.713,383,3.965,420,3.965,513,2.302,531,3.842,545,3.842,557,2.713,706,2.996,731,3.994,803,4.941,1666,9.103,1667,5.874,1668,5.874,1669,5.874,1670,5.311]],["t/334",[0,0.85,3,3.405,5,1.416,13,1.912,38,3.006,43,2.952,45,3.157,58,0.662,84,3.187,107,3.677,130,1.872,131,1.306,139,4.869,152,2.674,176,2.851,186,3.328,263,3.124,322,4.197,326,2.018,370,3.255,429,3.488,446,4.379,535,4.379,558,3.187,705,3.907,818,3.579,956,3.187,1142,4.197,1538,4.869,1559,4.596,1561,4.596,1563,4.042,1601,5.234,1620,4.042,1624,4.869,1671,5.787,1672,5.787,1673,4.379,1674,4.869,1675,5.787,1676,4.869,1677,5.787,1678,4.869]],["t/336",[58,0.899,80,5.144,131,1.263,274,2.369,335,3.633,581,5.949,601,6.245,607,7.11,818,4.862,1571,6.615,1679,7.863,1680,7.863]],["t/338",[0,1.226,5,1.095,6,3.041,7,1.675,8,1.335,14,1.652,15,2.415,21,3.52,35,1.282,42,1.922,43,2.283,45,1.822,47,2.994,48,3.386,58,0.741,80,2.927,131,1.189,133,3.248,134,2.311,146,2.283,148,2.168,154,2.573,159,3.43,160,2.325,192,2.927,218,2.994,226,2.369,271,3.498,274,2.295,299,3.126,317,1.596,318,1.896,319,2.243,350,1.691,372,4.482,376,2.697,388,5.638,448,2.517,451,3.126,453,3.246,536,2.927,715,3.126,787,2.415,921,3.554,1064,3.126,1116,3.765,1500,2.927,1524,3.726,1543,3.021,1553,3.765,1560,3.246,1597,3.554,1681,4.475,1682,4.047,1683,4.475,1684,4.047,1685,4.475,1686,4.475,1687,4.475,1688,4.475,1689,3.386]],["t/340",[0,1.428,7,1.267,8,0.852,9,2.001,10,3.209,11,1.78,13,0.943,14,1.696,23,1.34,24,1.457,25,1.483,35,1.141,36,1.541,37,2.343,40,3.865,41,3.476,42,1.227,43,1.457,45,1.163,46,1.512,47,2.663,49,3.101,50,2.769,51,2.769,52,2.161,53,1.995,54,1.815,55,2.378,58,0.884,59,1.407,87,3.476,101,1.68,102,1.431,106,1.721,130,0.924,131,0.971,133,1.431,134,1.018,135,0.788,137,1.148,149,1.995,150,1.319,182,2.071,191,1.573,202,1.21,216,1.721,218,1.319,226,1.512,232,1.541,242,2.584,251,1.871,252,1.148,257,1.826,259,3.907,269,1.483,274,0.86,304,1.194,312,2.161,313,1.921,315,2.071,317,1.018,318,1.21,325,1.68,326,1.602,345,3.865,366,1.815,387,1.483,438,2.161,447,1.766,453,2.071,480,1.868,531,1.868,532,1.512,533,2.071,534,3.649,535,3.476,536,1.868,537,2.583,538,2.583,557,1.319,569,2.268,577,1.407,578,1.457,667,2.268,723,1.34,771,2.402,924,1.042,946,1.68,956,1.573,985,1.178,1009,2.343,1012,2.642,1044,1.573,1046,2.94,1082,1.995,1498,1.766,1563,1.995,1650,3.209,1658,1.721,1690,1.995,1691,2.856,1692,2.856,1693,2.856,1694,2.583,1695,4.155,1696,2.583,1697,2.856,1698,2.856,1699,2.268,1700,2.402,1701,2.268,1702,5.764,1703,2.161,1704,2.856,1705,2.856,1706,2.856]],["t/342",[17,4.299,92,5.117,134,2.951,191,4.558,829,6.261,1409,4.869,1560,6.002,1707,6.261]],["t/344",[5,1.482,8,1.806,11,1.177,29,5.093,58,0.692,92,3.744,101,3.562,102,3.034,106,3.649,278,3.649,291,5.794,304,2.531,313,3.34,325,3.562,326,2.786,335,2.797,398,3.96,690,3.96,924,2.915,985,3.296,1009,4.561,1044,3.334,1388,5.093,1476,4.808,1485,5.474,1650,4.228,1651,3.649,1652,4.808,1653,5.093,1654,4.391,1655,4.391,1708,4.808,1709,5.474,1710,6.054,1711,4.391,1712,6.054]],["t/346",[0,0.68,5,1.901,9,2.018,31,2.174,35,0.917,38,2.406,58,0.759,96,3.679,102,3.33,122,2.174,128,2.726,131,0.621,167,2.606,170,1.834,255,1.772,257,1.468,278,2.792,304,2.778,383,3.127,431,4.804,490,3.236,658,2.208,659,3.031,673,2.406,703,4.819,708,3.505,723,2.174,779,2.726,834,4.278,898,2.944,926,3.897,956,2.551,971,3.36,981,3.031,985,1.911,1287,5.276,1501,3.679,1504,5.877,1524,5.376,1598,3.505,1647,3.36,1670,4.189,1676,3.897,1695,4.189,1713,4.633,1714,4.633,1715,4.633,1716,4.633,1717,6.169,1718,4.633,1719,4.189,1720,4.633,1721,3.505,1722,3.36,1723,4.633,1724,4.633,1725,3.897,1726,3.36,1727,4.189,1728,4.633,1729,4.189,1730,4.633]],["t/348",[0,1.143,116,4.202,150,3.597,183,5.438,226,4.956,387,4.044,430,3.902,437,4.379,1126,7.04,1562,7.04,1731,7.04,1732,6.55,1733,7.785]],["t/350",[0,1.29,16,3.582,35,1.739,42,3.017,43,3.582,58,0.803,91,3.403,96,5.578,130,2.843,131,1.179,202,2.976,227,4.463,278,4.233,536,4.595,1524,4.038,1598,5.314,1678,5.908,1734,5.908,1735,7.023,1736,7.023,1737,7.023]],["t/352",[0,1.235,3,3.858,4,4.426,7,1.85,8,1.956,9,2.856,14,2.42,24,3.344,58,0.75,111,7.079,122,3.076,130,2.121,134,2.338,153,4.055,160,3.406,170,1.81,245,3.029,326,2.287,459,4.055,699,5.929,1498,4.055,1602,5.207,1633,4.289,1738,5.516,1739,6.557,1740,5.516,1741,6.557,1742,6.557,1743,6.557,1744,5.929]],["t/354",[0,1.143,7,1.712,43,3.971,101,4.581,102,3.902,387,4.044,499,4.693,659,5.093,924,2.841,985,3.212,1546,5.647,1658,4.693,1745,7.04,1746,7.04]],["t/356",[0,1.21,7,1.811,17,3.296,21,4.636,74,4.432,93,5.04,99,4.151,134,2.263,150,2.932,156,3.649,170,1.752,172,3.825,202,2.689,245,2.932,326,2.213,534,6.543,676,5.338,690,4.151,723,2.977,817,4.032,1227,4.602,1524,3.649,1642,5.738,1658,3.825,1725,5.338,1747,6.346,1748,5.338,1749,5.338,1750,6.346,1751,6.346]],["t/358",[0,0.971,7,1.454,58,0.756,93,5.251,170,1.825,210,2.624,218,3.054,360,3.89,367,3.89,387,3.434,393,3.89,437,3.719,606,5.251,779,3.89,870,4.201,920,6.401,946,3.89,992,4.618,1269,5.562,1409,3.89,1426,4.201,1500,4.325,1659,5.979,1752,9.329,1753,5.251,1754,5.251,1755,6.612,1756,6.612,1757,5.979]],["t/360",[0,0.875,7,1.739,11,1.726,17,3.097,47,2.754,94,4.735,134,2.126,170,1.646,218,3.654,274,1.796,333,3.9,512,4.888,514,3.354,526,3.428,577,2.937,870,5.639,924,2.886,946,3.508,1046,4.527,1426,5.639,1495,3.789,1496,5.016,1501,4.735,1542,4.511,1754,4.735,1757,7.152,1758,5.962,1759,6.653]],["t/362",[5,1.936,11,1.159,17,3.097,43,3.041,58,0.682,89,3.041,91,2.889,101,3.508,102,3.964,128,3.508,182,4.324,218,2.754,245,2.754,274,1.796,326,2.079,452,3.218,499,3.594,684,4.324,706,3.041,924,2.175,984,3.354,985,2.46,1009,3.041,1416,3.9,1501,4.735,1542,4.511,1560,4.324,1601,4.025,1650,4.164,1719,5.392,1729,5.392,1760,5.962,1761,5.962,1762,5.392,1763,5.962,1764,7.048,1765,5.962,1766,4.735,1767,4.735,1768,5.392,1769,4.324]],["t/364",[0,1.354,7,1.83,11,1.254,15,3.481,21,3.846,28,4.098,35,1.276,47,2.98,74,4.505,82,4.098,85,7.004,89,4.247,218,2.98,231,3.628,232,3.481,259,4.976,269,3.35,312,6.299,570,5.122,578,3.29,762,2.98,1542,4.88,1770,5.122,1771,6.449,1772,4.354,1773,5.122]],["t/366",[7,1.696,37,2.931,45,2.34,58,0.657,131,1.249,253,2.281,255,3.332,257,2.445,274,2.324,365,2.654,499,3.463,513,2.252,514,2.171,577,2.83,719,3.742,723,2.696,750,5.596,834,3.164,870,4.903,920,7.046,946,4.539,981,3.758,1137,4.563,1426,3.651,1495,3.651,1496,4.833,1524,4.436,1658,3.463,1722,4.167,1759,4.833,1774,5.745,1775,5.745,1776,5.745]],["t/368",[0,1.241,58,0.966,316,5.529,1581,7.643,1732,7.111,1777,7.111]],["t/370",[0,1.121,5,2.265,35,1.831,131,1.024,176,3.761,265,3.15,274,2.3,313,3.192,349,4.602,352,4.721,478,4.851,1095,5.333,1543,5.154,1707,5.776]],["t/372",[7,1.679,8,2.277,11,1.799,17,3.966,223,3.639,256,3.235,460,5.333,513,2.993,514,2.886,557,3.527,571,6.423,641,4.721,706,3.894,797,4.721,909,5.154]],["t/374",[0,1.154,13,2.598,16,4.011,34,4.996,99,5.144,111,6.615,131,1.055,206,4.74,245,3.633,369,5.703,817,4.996,1778,7.863,1779,6.245]],["t/376",[3,4.325,4,4.962,5,1.799,35,1.455,58,0.84,91,3.561,106,4.431,109,5.331,170,2.029,257,2.329,265,3.032,354,3.891,1056,4.226,1061,4.962,1376,5.331,1497,5.134,1555,6.315,1556,6.647,1780,7.35]],["t/378",[5,1.799,8,2.192,14,2.713,16,3.749,51,4.431,91,3.561,131,0.986,256,3.115,264,3.561,265,3.73,274,2.214,335,3.396,354,3.891,355,5.134,406,3.202,459,4.545,790,4.962,1447,5.837,1619,6.647]],["t/380",[6,3.295,7,1.544,8,2.095,35,1.39,58,0.803,82,4.463,131,1.287,245,3.245,265,2.898,269,3.648,274,2.116,283,2.37,335,3.245,354,4.652,557,3.245,577,3.46,946,4.132,995,4.595,1018,3.791,1090,5.908,1376,5.094,1781,6.351]],["t/382",[5,1.799,7,1.616,8,2.192,11,1.429,35,1.455,37,3.749,58,0.84,131,0.986,253,2.918,255,2.812,341,5.837,379,5.561,488,3.749,512,4.048,513,2.881,514,2.778,557,3.396,641,4.545,924,2.682,1491,5.837]],["t/384",[7,1.746,16,4.051,34,5.047,35,1.572,58,0.908,107,5.047,128,4.673,154,4.566,577,3.913,984,4.467,1782,7.942,1783,7.942]],["t/386",[5,2.265,7,2.034,13,2.522,14,2.818,16,3.894,35,1.831,43,3.894,59,3.761,153,4.721,387,3.966,1587,6.063,1784,7.635,1785,6.904]],["t/388",[35,1.572,131,1.271,253,3.153,326,2.77,488,4.051,546,3.365,558,4.374,924,2.898,1524,4.566,1633,5.196,1786,6.681]],["t/390",[5,1.887,7,1.695,8,2.299,11,1.499,35,1.526,131,1.034,251,3.139,252,3.742,253,3.695,254,4.081,924,2.813,1411,6.123,1661,6.972]],["t/392",[0,1.1,35,1.482,55,3.09,159,3.965,179,2.555,245,3.46,276,4.9,498,6.773,546,3.174,1591,6.301,1592,6.773,1602,5.948,1603,7.264,1633,4.9,1787,6.773,1788,7.694]],["t/394",[0,1.359,5,2.265,6,3.582,7,1.679,8,2.277,12,6.063,21,3.527,35,1.511,46,4.041,92,4.721,131,1.024,546,3.235,1633,4.995,1786,6.423]],["t/396",[0,1.11,46,4.002,131,1.234,152,4.25,265,3.12,286,3.605,430,4.61,787,4.081,797,4.676,920,5.721,949,6.361,950,6.361,951,6.005,1271,6.838]],["t/398",[6,3.617,21,4.3,24,3.932,28,4.899,63,4.081,89,3.932,106,4.647,172,4.647,313,3.223,555,6.123,577,3.798,1105,5.833,1582,6.972,1644,5.833]],["t/400",[0,1.397,11,1.851,13,2.872,47,3.188,226,3.653,232,5.136,259,5.136,313,2.885,327,3.653,341,5.48,448,3.881,532,3.653,546,2.924,731,3.52,790,4.658,1543,4.658,1789,6.24,1790,6.901]],["t/402",[0,1.202,5,2.004,6,3.842,35,1.621,76,4.034,131,1.098,172,4.936,340,5.064,670,6.504]],["t/404",[0,1.202,5,2.361,35,1.621,131,1.098,265,3.379,352,5.064,577,4.034,1690,5.72]],["t/406",[5,2.396,8,2.192,14,2.713,19,3.749,35,1.455,63,3.891,91,3.561,131,1.213,176,3.621,252,2.955,253,2.918,265,3.032,274,2.214,658,3.504,769,5.331,1056,4.226,1674,6.184]],["t/408",[0,1.166,35,1.572,131,1.065,286,3.786,430,3.98,559,4.374,920,6.009,946,4.673,981,5.196,1483,6.307,1497,5.547,1791,7.182]],["t/410",[0,1.089,7,1.631,8,2.213,11,1.443,35,1.468,131,0.995,153,4.588,200,2.908,251,3.021,255,2.838,256,3.144,257,2.351,269,3.854,304,3.102,318,3.144,342,3.376,453,5.381,779,4.365,924,2.707]],["t/412",[6,3.481,11,1.912,14,2.739,154,4.266,251,3.021,252,2.983,282,3.595,512,4.086,514,3.437,684,5.381,923,5.381,1046,3.785,1460,5.381,1792,7.419,1793,6.709,1794,7.419]],["t/414",[5,2.225,11,1.443,81,5.008,252,2.983,274,2.235,367,4.365,448,4.173,514,3.874,751,5.381,797,4.588,923,5.381,946,4.365,984,4.173,1460,6.595]],["t/416",[8,2.277,200,2.993,326,3.227,706,3.894,985,3.15,1009,4.72,1012,4.39,1426,4.851,1498,4.721,1650,5.333,1700,6.423,1701,6.063,1795,6.904,1796,7.635]],["t/418",[0,1.059,3,4.245,4,4.871,5,1.766,7,1.965,8,2.152,9,3.144,11,1.403,21,3.334,35,1.428,131,0.968,154,4.149,251,2.938,252,2.901,684,5.234,924,2.633,984,4.059,1498,4.462,1646,5.731,1648,5.04,1649,6.525]],["t/420",[160,4.005,172,4.647,245,3.562,326,2.689,446,5.833,558,5.126,578,3.932,1007,4.005,1253,5.591,1633,5.043,1797,5.385,1798,7.709,1799,7.709,1800,6.486]],["t/422",[7,1.544,11,1.366,35,1.39,55,2.898,58,0.803,82,4.463,101,4.132,306,5.094,326,3.065,438,5.314,532,3.718,924,3.207,985,3.626,1009,4.483,1416,4.595,1600,5.908,1650,4.906,1651,4.233,1653,5.908,1654,5.094,1801,7.023]],["t/424",[3,4.581,6,3.653,13,2.572,15,4.202,17,4.044,21,3.597,46,4.121,149,5.438,153,4.814,421,5.093,534,6.183,558,4.288,839,6.183,1802,6.183]],["t/426",[5,1.868,7,1.679,8,2.277,11,1.799,14,2.818,35,1.831,51,4.602,256,3.235,257,2.419,664,4.851,720,6.063,924,2.786,1603,6.063,1660,6.904]],["t/428",[5,1.905,8,2.322,35,1.541,47,3.597,48,5.89,80,5.093,91,3.772,154,4.476,226,4.121,274,2.345,388,5.255,1064,5.438,1597,6.183,1682,7.04]],["t/430",[0,1.283,1,5.529,5,2.139,6,3.266,7,1.922,12,5.529,13,2.3,16,3.551,21,3.216,35,1.378,37,3.551,38,3.616,46,3.685,58,0.796,119,4.862,131,0.934,160,3.616,326,2.428,558,3.834,701,5.267,1585,5.049,1589,5.529,1598,5.267]],["t/432",[0,1.367,11,1.81,13,2.547,35,1.526,214,5.385,223,3.675,232,4.161,245,3.562,376,4.647,513,3.022,514,2.914,557,3.562,1477,6.972]],["t/434",[0,1.298,6,3.325,10,4.95,11,1.719,15,3.825,21,3.274,35,1.402,46,3.751,92,4.382,170,1.956,232,4.771,259,4.771,260,4.636,261,4.95,313,2.963,570,5.628,1738,5.962,1759,5.962,1770,5.628,1803,7.086]],["t/436",[0,1.121,5,2.265,9,3.326,11,1.485,35,1.831,99,4.995,102,3.826,107,4.851,326,2.663,488,4.72,558,4.205,1633,4.995,1804,7.635]],["t/438",[0,1.022,6,3.266,7,1.922,8,2.076,15,3.757,21,3.216,58,0.796,59,3.429,63,3.685,91,3.373,259,3.757,312,6.613,430,3.489,570,5.529,620,4.196,731,3.551,751,5.049,992,4.862,1116,5.856,1499,6.295,1745,6.295,1770,5.529,1805,6.961,1806,6.295]],["t/440",[0,1.2,9,3.089,11,1.589,17,2.639,22,2.312,25,2.639,35,1.75,51,3.062,58,0.581,99,3.323,102,2.546,107,4.506,116,2.742,117,2.245,131,0.681,170,1.402,245,3.276,255,1.943,256,2.153,258,2.989,286,2.421,293,3.323,304,2.124,326,1.772,446,5.365,488,3.617,513,1.991,514,2.68,558,3.906,641,3.141,678,4.034,706,2.591,948,3.684,954,3.684,1009,2.591,1016,3.228,1018,3.828,1060,3.843,1110,4.034,1409,2.989,1410,4.594,1498,4.385,1524,2.921,1633,3.323,1650,3.548,1807,3.843,1808,5.08,1809,5.08,1810,4.034,1811,3.843,1812,5.08,1813,5.08]],["t/442",[0,0.903,3,3.617,4,4.15,6,2.885,7,1.352,9,2.678,13,2.031,24,3.136,31,2.885,35,1.893,38,3.194,42,3.467,59,3.029,96,6.409,116,3.318,130,1.989,131,1.082,164,4.883,170,1.697,178,3.081,278,3.706,304,2.57,536,4.022,559,3.386,948,4.459,1498,3.802,1524,3.535,1703,6.106,1740,5.172,1814,6.148,1815,6.148,1816,6.148,1817,4.651,1818,6.148]],["t/444",[35,1.105,45,2.273,58,0.865,64,3.899,76,2.75,87,6.963,117,3.344,131,1.015,137,3.042,213,2.244,308,2.11,443,4.049,488,2.848,634,4.434,847,4.049,919,3.768,985,3.122,988,4.951,995,6.293,997,3.899,1046,2.848,1071,4.434,1364,4.049,1390,7.807,1404,4.049,1722,4.049,1802,4.434,1819,5.583,1820,3.652,1821,7.568,1822,5.583,1823,5.583,1824,5.048]],["t/446",[0,1.27,35,1.711,36,3.056,58,0.873,87,4.284,93,4.497,102,2.838,107,3.598,116,4.124,117,2.502,130,2.472,131,1.025,135,2.109,136,2.744,137,2.276,178,2.838,183,3.955,188,4.284,191,3.119,216,3.413,315,4.107,316,3.705,317,2.02,350,2.14,514,2.888,536,3.705,559,4.208,706,2.889,829,4.284,911,4.107,912,4.107,1007,2.942,1016,4.855,1035,4.107,1064,3.955,1174,4.107,1390,4.284,1465,4.497,1504,4.284,1722,4.107]],["t/448",[9,4.231,84,3.974,145,4.721,202,3.058,268,3.974,447,4.462,577,3.555,724,4.149,781,5.459,1024,5.528,1054,4.954,1402,5.04,1643,4.871,1734,6.071,1825,6.525,1826,6.525,1827,6.525]],["t/450",[9,2.699,47,2.863,119,6.702,152,2.863,172,5.451,223,2.954,738,4.494,1024,3.832,1062,3.646,1404,4.494,1495,3.937,1579,4.688,1584,4.328,1828,4.054,1829,8.677,1830,8.179,1831,5.603,1832,6.824,1833,4.688,1834,5.603,1835,5.603,1836,5.603,1837,5.603,1838,5.603,1839,5.603,1840,5.603,1841,4.921,1842,5.603,1843,4.494]],["t/452",[9,2.118,13,1.606,21,2.246,39,3.176,47,4.228,55,2.837,58,0.786,106,2.93,119,6.392,134,1.734,152,4.007,200,1.905,202,2.06,218,2.246,223,4.529,227,3.089,257,2.528,325,2.86,326,1.695,342,3.129,370,4.878,501,3.18,532,2.573,557,2.246,620,2.93,690,3.18,946,2.86,1054,4.424,1063,3.006,1409,2.86,1460,3.525,1495,5.815,1584,4.802,1643,3.281,1772,3.281,1811,3.678,1833,3.678,1844,4.089,1845,4.089,1846,4.861,1847,4.861,1848,4.861]],["t/454",[9,2.905,17,4.418,47,3.929,58,0.762,69,3.672,76,3.285,119,5.941,170,1.84,223,3.178,325,5.004,326,2.325,342,3.034,383,4.501,447,4.123,513,3.334,834,3.672,919,5.741,1024,4.123,1054,3.401,1402,4.657,1495,5.405,1820,5.564,1849,5.044]],["t/456",[21,4.225,47,4.225,67,5.948,81,5.056,92,4.632,268,4.125,286,3.57,342,3.408,577,3.69,702,3.891,1054,3.82,1495,4.759,1772,5.056,1850,6.773,1851,7.49,1852,7.49]],["t/458",[9,3.16,13,1.734,45,2.137,47,4.349,48,3.971,58,0.6,67,4.168,102,4.495,170,2.002,218,2.425,223,2.502,239,4.746,279,3.807,342,3.301,367,3.088,424,4.415,526,3.018,557,2.425,645,3.971,909,3.543,1001,4.415,1099,4.168,1414,6.103,1495,5.981,1585,5.262,1820,3.434,1841,7.123,1845,4.415,1853,4.746,1854,5.761,1855,8.314,1856,7.255,1857,4.746,1858,5.249,1859,4.746,1860,5.249,1861,5.249,1862,4.746,1863,4.415,1864,5.249]],["t/460",[9,2.846,24,2.309,47,4.679,84,2.493,102,2.268,119,4.564,128,2.663,216,2.728,223,4.667,325,2.663,326,1.579,333,5.016,340,4.041,342,2.06,344,2.443,452,2.443,490,3.161,533,3.283,577,2.23,580,2.493,658,2.158,706,2.309,738,3.283,799,3.424,1024,2.799,1139,3.161,1200,4.564,1402,3.161,1416,2.961,1495,6.222,1828,2.961,1845,3.808,1865,3.424,1866,4.526,1867,4.526,1868,4.526,1869,8.396,1870,4.526,1871,4.093,1872,4.526,1873,4.526,1874,8.396,1875,4.943,1876,4.093,1877,4.526,1878,4.526,1879,3.808,1880,4.526,1881,4.526,1882,3.808,1883,4.526]],["t/462",[9,3.173,333,4.764,513,2.855,721,3.783,870,4.628,919,6.583,1024,4.503,1054,4.974,1105,5.51,1614,5.51,1820,6.379,1884,6.586,1885,6.586,1886,5.784,1887,6.127]],["t/464",[9,3.916,19,3.715,23,3.417,55,3.004,113,3.528,144,4.096,225,5.282,227,4.628,429,4.39,500,5.087,654,4.628,664,4.628,934,4.916,1024,5.559,1054,4.586,1465,5.784,1476,5.784,1655,5.282]],["t/466",[9,3.46,144,4.467,156,4.566,1024,4.911,1409,4.673,1849,6.009,1888,7.182,1889,6.681,1890,7.182,1891,6.681,1892,6.681,1893,7.182]],["t/468",[0,1.42,7,2.126,37,3.647,42,3.072,69,3.938,92,4.422,463,4.544,546,3.03,1034,6.466,1054,3.647,1560,5.186,1689,5.41,1749,6.016,1777,6.016,1894,4.207,1895,6.016,1896,5.679,1897,8.038]],["t/470",[0,1.202,13,2.705,137,3.292,724,4.708,818,5.064,1035,5.94,1898,8.189,1899,8.189,1900,7.406]],["t/472",[0,1.031,35,1.739,168,3.868,200,2.753,263,3.791,283,3.238,317,2.505,513,2.753,514,2.654,654,5.585,1016,4.463,1018,4.744,1035,5.094,1059,5.094,1061,4.741,1279,5.578,1416,4.595,1422,5.578,1900,6.351,1901,7.023]],["t/474",[0,1.132,14,2.846,35,1.526,113,3.735,131,1.034,263,4.161,283,2.602,318,3.267,620,4.647,1018,5.024,1059,5.591,1422,6.123,1779,6.123,1902,5.385]],["t/476",[0,1.355,35,1.705,58,0.985,131,0.754,157,2.743,170,1.552,210,3.018,211,2.84,213,2.26,253,2.232,283,2.908,317,3.073,356,5.564,357,3.179,358,3.46,514,2.125,580,3.097,762,2.598,911,4.078,912,4.078,1016,3.573,1018,3.035,1467,3.678,1903,4.078,1904,5.084]],["t/478",[0,1.173,97,4.312,157,2.882,210,3.171,211,2.895,356,5.732,357,3.34,358,3.635,408,5.393,580,3.334,762,4.393,944,5.58,1018,4.312,1902,4.228,1903,5.794,1905,4.58]],["t/480",[0,1.21,157,2.972,210,3.27,211,2.915,356,5.837,357,3.445,358,3.749,508,4.966,580,3.495,762,3.806,1902,4.432,1903,5.976,1905,4.801,1906,8.239]],["t/482",[0,1.163,42,2.063,58,0.906,97,2.592,157,2.858,210,3.145,211,2.863,263,3.679,283,1.621,356,5.704,357,3.313,358,3.606,406,2.092,408,3.241,508,2.894,514,2.576,580,2.644,762,3.661,777,3.813,911,3.483,912,3.483,944,3.354,1016,4.331,1018,4.916,1039,3.483,1059,4.944,1259,3.633,1324,3.483,1902,4.761,1903,4.944,1907,4.342,1908,3.813,1909,4.342]],["t/484",[0,0.988,13,2.592,58,1.034,60,2.597,134,1.682,157,2.427,168,2.597,210,2.671,211,2.777,231,4.413,263,2.545,308,2.543,356,5.67,357,2.813,358,3.062,393,4.616,508,2.842,513,1.849,514,1.782,580,3.706,731,2.405,762,3.625,797,4.161,1018,4.234,1059,4.88,1416,3.085,1422,3.745,1467,3.085,1902,5.976,1903,4.88,1905,5.091,1908,3.745,1909,4.264,1910,6.729,1911,4.264]],["t/486",[58,0.848,188,6.88,211,1.972,376,4.472,393,4.365,1416,4.854,1467,4.854,1902,6.351,1905,5.613,1911,6.709,1912,7.419,1913,9.093,1914,9.093,1915,9.093]],["t/488",[0,0.718,35,1.367,39,2.26,58,0.789,69,2.694,84,3.803,113,3.346,200,3.409,210,2.741,211,2.656,283,1.651,317,1.744,322,3.547,357,2.887,393,4.063,437,2.751,466,4.423,514,2.61,539,5.809,580,2.694,689,6.056,730,3.301,762,2.26,799,3.7,818,3.024,1016,4.388,1018,2.64,1279,5.484,1416,3.2,1467,4.517,1493,3.7,1593,4.423,1902,3.416,1903,3.547,1904,4.423,1905,3.7,1908,3.884,1916,6.906,1917,8.005,1918,4.891,1919,4.891,1920,4.891,1921,4.891,1922,4.891,1923,4.891,1924,4.891,1925,4.891]],["t/490",[0,1.402,1,4.342,6,2.565,7,1.867,8,1.631,11,1.063,16,2.788,31,3.5,35,1.082,39,2.526,130,1.768,131,1.001,156,3.143,170,1.509,186,3.143,196,3.474,217,3.818,218,2.526,234,4.599,257,2.364,258,3.216,268,3.011,278,3.295,383,3.69,397,2.649,546,2.317,678,4.342,719,2.349,750,3.965,1546,3.965,1560,3.965,1599,4.599,1767,4.342,1828,3.576,1885,4.944,1926,8.493,1927,5.467,1928,6.745,1929,4.944,1930,5.467,1931,5.467,1932,4.599,1933,4.944,1934,4.944]],["t/492",[724,5.135]],["t/494",[16,2.296,24,2.296,31,2.112,131,1.242,179,1.535,219,4.07,268,2.479,278,2.713,340,2.783,366,4.135,368,2.531,421,2.944,643,4.545,669,6.073,698,3.264,706,2.296,720,3.574,723,2.112,919,3.038,981,4.257,1070,3.038,1083,3.574,1222,3.574,1362,3.038,1363,3.405,1500,2.944,1563,3.143,1585,3.264,1601,3.038,1636,4.07,1690,4.545,1696,4.07,1764,6.07,1766,3.574,1820,2.944,1824,4.07,1935,3.786,1936,4.5,1937,5.474,1938,5.782,1939,6.07,1940,7.43,1941,3.574,1942,4.5,1943,4.5,1944,4.5,1945,3.574,1946,3.405,1947,4.5,1948,5.884,1949,3.574,1950,4.5,1951,3.574,1952,4.5,1953,3.786,1954,6.507,1955,4.5]],["t/496",[16,4.892,34,5.15,35,1.604,51,4.886,116,4.375,344,4.375,1956,6.819,1957,8.105,1958,6.819]],["t/498",[5,2.197,7,1.341,31,2.862,35,1.207,116,4.334,252,2.452,268,3.36,317,2.176,343,6.075,344,4.334,569,4.845,578,3.112,580,3.36,669,4.425,706,3.112,769,4.425,820,5.253,948,4.425,1007,3.169,1024,3.772,1543,4.118,1594,4.261,1928,4.845,1939,4.845,1940,4.425,1958,5.132,1959,6.101,1960,5.132,1961,6.101,1962,6.101,1963,4.616,1964,5.517,1965,5.517,1966,5.132,1967,5.517,1968,4.616]],["t/500",[31,2.601,35,1.097,58,0.634,193,5.698,286,3.59,319,2.778,452,4.065,484,4.664,558,3.053,669,5.462,684,4.021,948,4.021,995,3.626,1012,4.33,1060,4.194,1142,6.656,1214,5.013,1453,5.013,1599,6.336,1766,4.403,1938,5.698,1939,6.793,1946,4.194,1969,5.013,1970,7.532,1971,6.811,1972,5.544,1973,5.544,1974,5.544,1975,5.544,1976,5.013,1977,5.544,1978,5.544,1979,6.811,1980,7.532,1981,5.544,1982,5.544,1983,4.403,1984,5.544]],["t/502",[16,3.647,34,4.544,35,1.415,51,4.31,91,3.464,116,3.859,123,6.466,245,3.303,313,2.989,344,3.859,345,6.016,669,5.186,893,5.41,948,5.186,1655,5.186,1694,6.466,1708,5.679,1928,5.679,1958,6.016,1969,6.466,1985,7.151,1986,7.151,1987,7.151]],["t/504",[0,1.07,1,3.293,3,2.439,4,2.799,6,1.945,7,2.145,9,1.806,11,1.418,16,2.115,35,1.213,101,2.439,102,2.078,130,1.982,131,1.206,172,3.694,231,2.332,251,1.688,253,3.694,255,2.789,257,1.942,282,2.009,287,3.007,318,1.757,362,3.293,397,4.727,409,4.28,458,3.293,460,2.896,546,3.812,658,2.921,686,5.155,721,3.183,724,2.384,735,2.499,779,2.439,891,2.154,924,3.282,985,1.71,1046,2.115,1073,2.896,1498,2.564,1587,3.293,1598,3.137,1754,3.293,1777,3.488,1937,3.488,1988,4.146,1989,3.749,1990,4.137,1991,3.488,1992,4.146]],["t/506",[0,1.152,2,3.42,6,2.212,34,4.276,35,1.553,38,2.45,47,2.179,81,3.183,112,3.967,116,2.545,193,3.568,195,2.545,278,2.842,304,1.971,333,3.085,339,3.183,344,2.545,452,2.545,480,3.085,569,3.745,616,4.264,669,4.88,698,3.42,706,3.432,812,3.745,870,2.996,893,3.568,924,2.455,981,3.085,985,1.945,1060,3.568,1082,3.294,1366,3.294,1397,3.967,1402,3.294,1409,2.774,1546,3.42,1648,3.294,1651,2.842,1654,3.42,1676,3.967,1707,3.568,1727,6.085,1767,5.344,1935,3.967,1938,5.936,1939,6.794,1940,5.69,1946,3.568,1951,3.745,1965,4.264,1968,3.568,1971,4.264,1983,3.745,1993,4.264,1994,4.716,1995,4.716,1996,4.716,1997,6.085,1998,4.264,1999,4.716,2000,4.716]],["t/508",[0,0.844,7,1.263,11,1.811,31,2.696,55,2.37,134,2.049,148,2.784,227,3.651,251,3.547,252,2.31,253,2.281,257,1.82,258,3.38,269,2.984,327,3.041,364,3.38,376,4.651,397,4.221,458,4.563,460,4.013,546,3.691,658,2.739,664,3.651,719,2.468,721,4.008,722,4.833,731,2.931,771,4.833,898,3.651,924,2.096,1082,4.013,1828,5.047,1956,4.833,2001,5.195,2002,5.195,2003,5.745,2004,5.745,2005,5.195]],["t/510",[7,1.541,23,3.289,31,1.821,45,1.58,69,3.213,91,1.88,105,4.633,128,2.283,134,2.081,152,1.793,156,2.231,186,2.231,196,2.466,231,2.183,251,2.376,257,1.848,278,2.339,280,2.815,281,3.082,305,1.945,346,3.082,397,3.396,546,3.303,598,2.815,620,2.339,706,2.976,719,1.667,723,1.821,724,2.231,750,2.815,768,2.936,891,2.016,897,2.711,925,2.711,966,4.908,1009,1.98,1012,4.482,1044,2.137,1051,4.633,1063,3.607,1105,2.936,1108,2.936,1222,3.082,1229,2.815,1331,3.082,1339,4.633,1411,3.082,1433,3.265,1500,2.539,1544,3.082,1701,3.082,1711,5.084,1721,2.936,1731,3.509,1746,3.509,1769,2.815,1773,4.633,1779,4.633,1928,4.633,1933,3.509,1940,4.231,2001,3.509,2002,3.509,2006,7.661,2007,4.633,2008,5.567,2009,6.323,2010,5.834,2011,3.509,2012,6.339,2013,2.711,2014,3.509]],["t/512",[7,1.406,11,1.244,34,4.065,76,3.152,94,5.08,148,3.099,152,2.955,196,4.065,231,3.598,233,3.764,305,3.206,342,2.911,364,3.764,397,4.013,546,2.711,721,3.323,768,4.84,769,4.64,1044,3.523,1108,4.84,1229,4.64,1701,5.08,1711,4.64,1773,6.578,1779,5.08,1828,4.185,2006,8.172,2015,6.007,2016,5.08,2017,5.382]],["t/514",[102,3.684,673,5.307,891,5.307,966,6.184,1504,5.561,1773,5.837,2006,7.606,2007,5.837,2008,5.837,2018,7.35,2019,7.35,2020,7.35,2021,7.35]],["t/516",[7,0.87,9,3.09,37,2.019,49,2.672,91,1.918,95,3.33,102,1.984,105,6.252,210,1.571,218,3.277,252,1.591,253,1.571,267,2.995,280,2.871,304,3.291,306,2.871,308,1.496,346,3.144,397,3.437,399,2.18,460,2.765,480,2.59,536,2.59,546,3.571,580,2.18,619,3.33,658,1.887,676,3.33,680,3.58,703,2.871,721,3.076,723,1.857,821,3.144,919,2.672,992,2.765,997,2.765,1012,3.404,1063,2.448,1105,2.995,1331,4.702,1363,4.48,1411,3.144,1497,2.765,1498,2.448,1563,2.765,1579,2.995,1651,2.386,1655,2.871,1711,4.295,1721,5.956,1726,2.871,1791,3.58,1820,2.59,1843,2.871,1929,3.58,1932,3.33,1956,3.33,1964,3.58,1997,7.119,2009,6.691,2011,3.58,2012,5.355,2013,2.765,2022,5.921,2023,5.921,2024,3.959,2025,3.959,2026,3.58,2027,3.959,2028,3.959,2029,3.959,2030,3.959,2031,3.144,2032,3.959,2033,3.959,2034,3.959,2035,3.959]],["t/518",[9,2.955,35,1.342,37,3.459,195,4.641,275,3.99,304,2.835,313,2.835,365,3.133,673,5.157,891,5.157,987,7.775,1524,4.944,1725,5.705,2009,5.131,2036,6.782,2037,6.782,2038,6.782,2039,5.131,2040,6.782,2041,6.782]],["t/520",[58,0.439,80,2.514,91,1.862,95,3.233,113,2.806,122,2.717,130,1.243,141,1.96,242,1.723,251,1.565,283,1.297,286,1.832,304,1.607,306,2.787,308,1.452,309,2.377,349,4.675,358,1.749,397,4.793,399,2.117,470,2.594,482,4.599,487,3.233,546,3.959,580,2.117,641,2.377,658,2.76,702,1.996,708,2.908,719,2.994,721,1.996,757,2.908,897,2.684,992,2.684,1037,3.233,1063,2.377,1073,4.045,1082,2.684,1269,3.233,1331,5.534,1363,4.381,1425,4.599,1500,2.514,1504,2.908,1637,3.233,1647,2.787,1690,4.045,1700,3.233,1717,5.534,1766,3.052,1844,3.233,1895,3.233,1940,6.343,1945,3.052,1960,3.233,2009,4.381,2016,3.052,2042,3.843,2043,3.843,2044,4.872,2045,3.843,2046,3.843,2047,2.908,2048,3.475,2049,3.843,2050,3.843,2051,5.791,2052,3.233,2053,3.475,2054,3.843,2055,3.843,2056,5.791,2057,3.843,2058,3.843,2059,3.843]],["t/522",[37,3.932,128,4.536,249,6.123,304,3.223,368,4.336,643,5.385,673,4.835,891,4.835,1940,7.252,2060,7.709,2061,7.709]],["t/524",[11,1.829,23,4.012,54,4.273,146,3.43,148,3.258,218,3.106,293,4.399,365,3.106,397,4.143,532,3.559,546,2.849,662,6.081,719,2.889,721,3.493,768,5.087,1051,6.791,1069,5.657,1141,5.087,1613,5.657,1711,4.877,1993,6.081,2062,6.724,2063,6.081,2064,6.081,2065,6.724]],["t/526",[3,4.449,11,1.471,23,3.548,58,0.864,69,4.165,326,2.637,673,4.779,891,4.779,985,3.12,1051,6.005,1647,5.484,2064,6.838,2066,7.562,2067,6.361,2068,7.562]],["t/528",[7,1.729,35,1.556,278,4.74,284,4.626,318,3.332,713,6.245,724,4.521,913,5.492,1772,5.308,1894,4.626,1935,6.615,1949,6.245,2031,6.245]],["t/530",[0,0.869,7,1.944,9,2.578,11,1.53,16,3.018,51,4.743,53,4.133,141,3.018,251,2.41,253,2.349,255,2.264,257,1.875,278,3.567,381,4.477,397,2.867,409,4.133,420,3.994,545,3.871,673,4.895,724,3.402,767,4.7,891,4.895,898,3.76,1721,4.477,1828,3.871,1968,4.477,2005,5.351,2069,7.995,2070,5.918,2071,5.918,2072,5.918,2073,5.918,2074,5.918,2075,5.918]],["t/532",[0,0.91,11,1.205,31,2.907,35,1.226,45,3.303,141,3.161,191,4.468,268,3.413,326,3.154,393,3.646,485,4.921,658,2.954,762,2.863,907,4.378,985,3.731,1007,3.219,1009,4.138,1018,3.344,1042,5.213,1044,3.413,1594,4.328,1865,6.137,2076,4.921,2077,4.183,2078,6.824,2079,6.196,2080,5.884,2081,5.213,2082,6.196]],["t/534",[0,0.911,5,0.781,11,1.367,13,1.054,19,1.627,31,1.497,35,0.993,39,1.474,45,3.305,49,2.154,55,1.316,58,0.365,60,1.757,130,2.274,131,1.089,132,2.087,202,1.352,210,1.266,216,1.923,227,2.027,233,1.877,242,1.431,257,1.011,274,0.961,282,3.005,289,4.498,298,1.39,318,2.979,319,3.108,326,1.113,328,2.154,342,1.452,399,1.757,406,1.39,464,2.087,485,4.925,487,2.684,499,3.025,506,2.229,512,1.757,514,2.889,531,2.087,540,2.087,578,1.627,685,2.229,690,2.087,774,5.217,915,2.534,924,2.263,954,4.498,969,3.796,970,1.877,1007,4.81,1016,2.027,1018,1.722,1099,2.534,1141,2.414,1253,2.314,1524,1.834,1550,2.885,1644,2.414,1658,1.923,1732,2.684,1788,2.684,1797,2.229,1857,2.885,1953,2.684,1990,2.154,2017,2.684,2076,5.584,2077,2.154,2083,3.191,2084,5.018,2085,2.885,2086,2.534,2087,3.191,2088,3.191,2089,2.885,2090,5.018,2091,3.191,2092,2.534,2093,5.018,2094,3.191,2095,2.684,2096,4.538,2097,2.885,2098,4.692,2099,3.191,2100,3.191,2101,3.191,2102,2.885,2103,2.885,2104,3.191,2105,2.314,2106,3.191,2107,3.191,2108,3.191,2109,3.191,2110,3.191,2111,3.191]],["t/536",[0,0.619,11,1.801,14,2.455,24,0.942,35,0.834,37,1.628,39,0.853,45,0.752,55,2.071,58,0.365,63,0.978,74,1.29,101,1.087,107,1.174,122,1.978,131,0.248,134,0.659,148,0.895,150,0.853,171,1.467,177,1.087,179,0.63,191,2.321,202,1.786,211,1.649,216,1.113,226,0.978,227,1.174,233,4.646,237,1.247,251,2.044,268,1.758,269,0.959,282,2.042,284,1.087,289,1.339,293,1.208,298,0.805,299,1.29,304,0.772,308,1.206,326,2.453,366,1.174,367,2.48,379,1.397,399,1.017,429,1.113,464,1.208,485,3.347,499,1.113,509,1.29,526,1.062,585,1.247,620,1.924,712,1.554,723,1.498,729,1.113,736,1.554,746,2.886,757,2.415,762,3.4,830,2.415,881,1.67,891,0.959,907,4.262,915,1.467,954,3.057,969,2.415,970,3.335,985,3.349,988,5.166,992,1.29,1007,2.607,1009,2.56,1039,4.111,1043,1.397,1044,2.321,1046,3.587,1062,2.48,1063,2.606,1066,1.467,1082,1.29,1125,1.467,1200,2.229,1274,1.67,1362,1.247,1467,1.208,1475,1.339,1579,1.397,1594,2.944,1651,1.924,1658,1.924,1673,1.397,1690,1.29,1709,4.539,1717,1.467,1721,1.397,1887,1.554,1895,1.554,1934,1.67,1963,1.397,1966,2.685,1979,1.67,2015,2.315,2052,1.554,2076,4.926,2077,2.154,2078,2.685,2080,3.057,2086,2.535,2095,1.554,2105,3.057,2112,1.847,2113,1.67,2114,2.886,2115,3.192,2116,1.847,2117,1.847,2118,1.847,2119,1.397,2120,1.847,2121,3.546,2122,1.847,2123,3.811,2124,2.685,2125,1.847,2126,2.886,2127,1.847,2128,1.67,2129,1.67,2130,1.554,2131,1.554,2132,1.67,2133,2.886,2134,1.467,2135,1.847,2136,4.215,2137,1.847,2138,1.67,2139,1.847,2140,1.847,2141,1.847,2142,1.554,2143,1.847,2144,1.67,2145,1.847,2146,1.554,2147,1.554,2148,1.67,2149,1.467,2150,1.67,2151,1.847,2152,1.847,2153,2.415,2154,1.847,2155,3.192,2156,1.847,2157,1.847]],["t/538",[11,1.301,14,1.328,24,1.835,26,2.857,39,1.662,49,2.429,97,1.942,117,1.59,188,2.722,202,2.334,211,2.266,228,3.254,233,3.241,248,3.254,282,1.743,304,1.504,316,2.354,326,1.255,340,2.225,365,2.545,381,2.722,448,2.024,540,2.354,542,4.378,685,2.513,723,1.688,729,2.169,830,5.063,907,2.973,915,2.857,956,1.982,968,5.63,970,2.117,985,2.272,988,4.378,1007,2.861,1009,1.835,1018,1.942,1039,3.995,1044,1.982,1046,4.123,1049,3.995,1082,2.513,1110,2.857,1139,2.513,1193,3.254,1314,2.513,1555,4.674,1648,2.513,1658,3.32,1673,2.722,1753,2.857,1896,2.857,2015,3.995,2077,2.429,2078,3.027,2085,3.254,2119,2.722,2121,5.63,2123,3.254,2126,4.981,2128,3.254,2146,3.027,2153,5.673,2158,3.027,2159,3.598,2160,5.508,2161,7.499,2162,6.692,2163,3.598,2164,3.598,2165,3.598,2166,3.598,2167,5.508,2168,3.598,2169,5.508,2170,5.508,2171,3.598,2172,3.598,2173,3.598,2174,3.598,2175,3.598,2176,3.598,2177,3.598,2178,3.598,2179,3.598]],["t/540",[0,0.856,11,1.515,14,2.152,97,3.147,130,1.886,131,0.782,134,2.079,146,2.974,191,3.211,268,4.291,319,2.922,326,3.061,342,2.653,423,4.072,620,3.514,685,4.072,762,3.6,907,3.147,985,3.215,988,3.814,1007,4.047,1009,2.974,1542,4.411,1651,3.514,1658,5.29,1810,4.63,1953,4.905,1991,4.905,2076,4.63,2080,5.651,2086,4.63,2105,4.228,2142,4.905,2153,4.411,2180,7.792,2181,5.83,2182,5.83]],["t/542",[0,1.37,130,2.139,131,0.887,141,3.372,318,2.802,319,3.313,326,2.306,328,4.463,673,3.434,690,4.325,723,3.969,731,3.372,970,5.489,1007,3.434,1018,4.566,1062,3.89,1063,4.088,1651,3.985,1990,4.463,2080,4.795,2098,6.401,2183,5.979,2184,5.979,2185,5.562,2186,5.002]],["t/544",[0,0.943,5,1.281,8,1.004,10,3.656,11,0.655,37,1.718,38,1.749,39,1.556,45,2.131,47,2.966,107,2.14,129,4.403,130,2.537,131,1.052,132,2.203,141,3.275,148,1.632,150,1.556,202,2.218,218,1.556,267,2.548,268,2.883,274,1.014,282,1.632,287,2.442,299,2.352,309,2.082,319,1.688,326,2.239,352,2.082,360,1.981,366,2.14,397,1.632,437,1.894,464,2.203,540,2.203,546,1.427,557,1.556,558,3.536,578,1.718,620,2.03,673,3.335,701,2.548,702,1.749,729,2.03,759,2.14,919,2.273,956,1.855,970,3.079,985,2.159,1007,4.312,1011,2.674,1012,1.936,1018,3.908,1044,1.855,1063,2.082,1197,2.833,1253,2.442,1339,2.674,1429,2.674,1475,2.442,1494,3.045,1601,2.273,1614,2.548,1644,2.548,1645,4.403,1651,2.03,1703,2.548,1726,2.442,1788,2.833,1797,2.352,1800,4.403,1820,2.203,1879,4.403,1896,2.674,1990,2.273,2039,2.548,2077,3.533,2086,2.674,2089,3.045,2098,4.857,2114,3.045,2185,2.833,2187,2.082,2188,3.045,2189,3.368,2190,3.045,2191,3.368,2192,3.368,2193,3.368,2194,2.674,2195,3.368,2196,3.368,2197,3.368,2198,3.368,2199,3.96,2200,5.234,2201,3.045,2202,3.368,2203,3.045,2204,2.833,2205,3.368,2206,3.368]],["t/546",[45,1.452,47,1.647,97,2.952,133,1.787,134,1.272,150,1.647,231,2.005,338,4.138,343,4.138,408,4.492,422,2.586,431,2.205,437,2.005,488,1.819,578,2.79,643,3.821,762,2.527,777,2.831,817,2.266,820,4.353,897,2.49,956,1.964,969,4.138,975,2.999,1007,3.877,1039,2.586,1049,2.586,1061,5.97,1083,2.831,1089,3.224,1366,2.49,1368,4.344,1863,2.999,1990,2.407,2098,7.227,2187,4.115,2207,6.655,2208,6.655,2209,5.47,2210,3.224,2211,3.224,2212,3.565,2213,3.565,2214,3.565,2215,3.565,2216,3.565,2217,6.018,2218,3.565,2219,4.602,2220,3.565,2221,3.224,2222,3.224,2223,3.224,2224,4.946,2225,3.565,2226,3.565,2227,3.565,2228,4.946,2229,3.565,2230,3.565,2231,3.224,2232,3.565,2233,3.565,2234,5.47,2235,3.565,2236,5.47,2237,5.47,2238,3.565,2239,3.565,2240,3.565,2241,3.565,2242,3.224,2243,3.565,2244,3.565,2245,3.565,2246,3.565,2247,3.224,2248,3.565,2249,3.565,2250,3.224,2251,3.565,2252,3.224,2253,3.224,2254,3.224,2255,3.565,2256,3.565,2257,4.946,2258,3.565]],["t/548",[0,1.2,7,0.992,13,0.668,31,2.117,35,1.055,38,1.05,45,1.837,47,1.594,58,0.684,130,1.46,131,0.934,132,2.257,170,0.558,202,1.462,211,1.851,218,0.934,226,1.07,236,1.466,253,1.791,257,0.641,268,1.114,274,0.609,282,0.98,289,1.466,304,0.845,310,2.61,316,1.323,318,1.912,319,1.013,324,1.466,326,1.203,328,3.6,338,2.61,339,1.365,340,1.25,343,4.035,349,1.219,367,2.655,379,1.53,408,1.365,437,1.94,447,1.25,464,2.257,490,1.412,526,1.983,546,1.462,558,1.9,577,0.996,598,1.466,620,1.219,654,1.285,673,1.792,702,3.11,703,2.502,715,2.41,723,0.949,729,2.079,820,3.489,891,1.05,892,1.365,924,1.946,956,2.937,970,1.19,984,1.137,1007,4.814,1018,1.862,1020,1.606,1044,1.114,1061,1.365,1062,2.03,1071,3.583,1117,2.902,1139,1.412,1174,1.466,1197,1.701,1304,1.365,1339,1.606,1363,1.53,1403,1.828,1407,1.828,1479,3.796,1524,1.983,1544,1.606,1591,1.701,1601,2.329,1602,1.606,1614,1.53,1639,1.828,1648,1.412,1651,2.72,1657,1.828,1703,1.53,1708,1.606,1726,1.466,1748,1.701,1800,1.701,1810,1.606,1817,1.53,1825,1.828,1863,1.701,1865,1.53,1879,1.701,1941,1.606,1949,1.606,1990,3.046,1998,1.828,2013,1.412,2047,1.53,2080,2.502,2081,1.701,2095,3.796,2096,1.828,2098,4.529,2105,1.466,2130,1.701,2131,1.701,2142,1.701,2146,1.701,2150,1.828,2184,1.828,2185,1.701,2186,1.53,2187,2.79,2188,1.828,2190,1.828,2194,1.606,2199,2.61,2210,3.12,2219,1.701,2221,1.828,2222,1.828,2223,1.828,2224,3.12,2228,1.828,2231,1.828,2242,1.828,2247,1.828,2252,4.08,2253,1.828,2254,3.12,2257,1.828,2259,1.828,2260,2.022,2261,2.902,2262,3.45,2263,2.022,2264,2.022,2265,1.701,2266,2.022,2267,2.022,2268,1.828,2269,2.022,2270,2.022,2271,2.022,2272,2.022,2273,1.828,2274,2.022,2275,3.45,2276,2.022,2277,1.701,2278,3.45,2279,2.022,2280,3.45,2281,4.512,2282,3.12,2283,2.022,2284,2.022,2285,3.45,2286,1.828,2287,2.022,2288,2.022,2289,2.022]],["t/551",[0,0.918,7,0.936,11,1.44,14,1.572,34,2.705,35,0.843,58,0.846,64,2.974,91,2.063,101,2.505,102,2.134,113,3.587,130,1.377,131,0.571,134,1.518,135,1.175,141,2.172,150,1.967,226,2.254,237,2.874,253,1.69,257,1.349,280,3.088,282,2.063,286,2.03,309,2.633,327,2.254,452,3.373,480,2.785,514,1.609,571,3.582,603,3.088,667,3.381,708,3.221,723,2.932,730,2.874,769,3.088,790,4.218,907,2.298,924,2.976,985,3.747,988,4.088,995,4.088,997,4.365,1012,4.257,1029,2.874,1046,3.188,1062,2.505,1227,3.088,1229,3.088,1314,2.974,1390,3.221,1404,3.088,1492,5.651,1594,4.365,1644,4.728,1678,3.582,1726,3.088,1865,3.221,1894,3.677,1897,3.85,1937,3.582,2121,3.582,2290,4.258,2291,3.85,2292,4.258,2293,4.258,2294,4.258,2295,4.258,2296,4.258]],["t/553",[5,1.516,35,1.226,131,0.831,195,3.344,235,5.213,274,1.867,286,2.954,393,3.646,452,3.344,723,2.907,907,4.881,984,3.485,985,2.556,1011,4.921,1012,5.2,1253,4.494,1637,5.213,1654,4.494,1764,4.921,1894,3.646,1938,4.688,1946,4.688,2013,4.328,2016,6.442,2039,4.688,2119,4.688,2199,4.688,2297,8.112,2298,4.921,2299,5.213,2300,5.213,2301,4.921,2302,4.494,2303,5.603]],["t/555",[11,1.811,31,2.696,39,2.654,55,3.183,131,0.771,134,2.049,216,3.463,233,3.38,251,2.34,286,3.678,289,4.167,328,3.878,464,3.758,526,3.303,606,4.563,702,2.984,907,4.164,956,3.164,1012,5.354,1044,3.164,1046,2.931,1070,3.878,1362,3.878,1787,5.195,1894,3.38,2008,4.563,2013,4.013,2016,4.563,2149,4.563,2187,3.553,2298,4.563,2304,6.977,2305,4.347,2306,5.745,2307,4.563,2308,5.745,2309,5.745,2310,5.745,2311,5.745,2312,5.745]],["t/557",[11,1.634,35,1.06,55,2.209,122,2.513,131,0.718,195,3.97,211,1.424,216,4.434,223,2.553,233,3.151,235,4.505,319,2.684,452,3.97,480,3.503,702,3.821,907,3.97,925,3.741,956,2.95,984,3.012,985,3.466,1012,3.079,1066,4.253,1067,4.052,1070,4.965,1304,3.615,1620,3.741,1781,4.843,1875,4.052,1907,4.843,1963,4.052,2015,3.884,2105,3.884,2124,4.505,2187,4.549,2273,4.843,2299,4.505,2300,4.505,2301,4.253,2302,3.884,2303,4.843,2304,7.598,2313,4.843,2314,5.355,2315,4.505,2316,4.505,2317,5.355,2318,5.355]],["t/559",[5,1.712,11,0.969,19,2.542,35,1.385,45,2.029,55,2.056,58,0.57,64,3.481,92,5.001,101,4.117,131,1.085,134,1.777,135,1.376,148,2.414,196,3.167,242,2.234,276,3.26,282,2.414,326,1.738,342,2.268,393,2.932,452,2.69,464,3.26,545,3.26,705,3.364,891,4.201,899,3.77,907,2.69,944,3.481,984,2.803,985,3.336,989,4.507,1009,2.542,1139,3.481,1314,3.481,1652,3.958,1654,3.614,1707,3.77,1717,3.958,1764,3.958,1807,3.77,1894,2.932,1938,3.77,1946,6.635,2130,4.192,2319,3.958,2320,4.984,2321,4.984,2322,4.984,2323,4.984,2324,4.984,2325,4.984,2326,4.984,2327,4.984,2328,4.984,2329,4.984,2330,4.984]],["t/561",[0,0.718,11,0.951,14,2.549,24,2.495,34,3.108,39,2.26,47,2.26,58,0.915,122,2.295,213,1.966,251,1.992,258,2.878,289,3.547,290,3.7,319,2.451,327,2.589,339,3.301,355,6.074,368,2.751,452,2.64,658,3.292,667,6.357,702,3.587,723,2.295,762,2.26,774,4.114,899,3.7,956,2.694,985,2.849,995,3.2,997,3.416,1012,2.812,1040,4.423,1095,3.416,1142,5.008,1324,3.547,1364,3.547,1390,3.7,1467,3.2,1638,4.114,1689,3.7,1795,4.423,1802,3.884,1854,5.484,2015,5.008,2026,4.423,2300,5.809,2331,3.884,2332,4.891,2333,4.891,2334,4.891,2335,4.891,2336,4.423,2337,6.245,2338,4.891,2339,4.891,2340,4.423,2341,4.891]],["t/563",[11,1.308,19,4.362,131,0.902,150,3.106,324,4.877,367,3.956,463,4.273,907,3.629,913,4.697,925,4.697,985,4.215,992,4.697,998,5.34,1044,3.703,1136,6.081,1253,4.877,1314,4.697,1708,5.34,1797,4.697,1894,3.956,2063,6.081,2199,5.087,2342,6.724,2343,6.081,2344,5.657]],["t/566",[0,0.875,7,1.739,11,1.726,38,3.097,39,2.754,58,0.682,106,3.594,131,1.19,135,2.45,257,1.889,277,4.511,325,3.508,326,2.079,540,3.9,572,5.016,673,3.097,768,4.511,779,3.508,898,3.789,924,2.175,1033,5.984,1049,4.324,1519,5.016,1553,5.016,1886,6.281,2039,5.984,2153,4.511,2337,5.392,2345,6.653,2346,5.962,2347,5.392,2348,4.511,2349,5.962,2350,5.962]],["t/568",[7,1.544,11,1.366,131,0.942,135,2.648,146,3.582,177,4.132,242,3.149,257,3.04,304,2.936,308,2.654,362,5.578,364,5.171,834,3.868,934,4.741,1005,5.314,1254,6.351,2351,7.023,2352,7.023,2353,7.023,2354,6.351]],["t/570",[0,1.228,36,4.514,673,5.074,719,3.593,883,6.642,2355,7.035]],["t/572",[0,1.143,134,2.777,213,3.13,226,4.121,295,5.255,421,5.093,598,5.647,673,4.044,719,3.345,779,4.581,2355,6.55,2356,7.04,2357,7.785,2358,7.785]],["t/574",[0,0.486,7,1.577,11,1.78,23,1.554,24,1.689,31,1.554,38,1.72,42,2.729,58,0.378,130,1.071,131,1.228,148,1.604,177,1.948,179,1.762,216,1.996,246,2.994,252,1.331,257,2.273,269,2.683,274,0.997,284,3.737,304,1.384,318,1.403,324,2.401,325,1.948,326,1.155,368,1.862,387,1.72,398,2.166,414,4.346,420,2.235,470,2.235,512,1.824,527,2.994,595,2.401,599,2.401,685,2.313,723,1.554,762,1.53,924,2.317,925,2.313,956,1.824,970,3.737,984,1.862,1008,2.994,1009,3.66,1031,3.908,1033,5.428,1038,2.994,1046,3.66,1049,2.401,1058,2.785,1062,1.948,1425,2.63,1546,2.401,1604,2.63,1673,2.505,1886,4.102,1894,1.948,1908,4.102,1941,2.63,1948,2.994,1963,2.505,2067,5.343,2080,3.746,2092,2.63,2186,3.908,2194,4.102,2261,2.785,2348,5.428,2354,2.994,2359,3.311,2360,3.311,2361,3.311,2362,3.311,2363,3.311,2364,3.311,2365,3.311,2366,3.311,2367,2.63,2368,4.671,2369,3.311,2370,3.311,2371,2.994,2372,3.311,2373,3.311,2374,3.311,2375,5.166,2376,5.166,2377,3.311,2378,3.311,2379,2.994,2380,2.994,2381,2.994,2382,2.63]],["t/576",[8,1.925,58,0.868,69,2.451,122,2.088,130,1.439,131,1.307,134,1.587,135,1.228,167,5.188,178,2.23,202,1.886,257,2.922,274,1.34,282,4.036,284,2.618,327,2.355,422,3.227,501,2.911,526,2.558,546,2.735,598,3.227,658,3.076,685,3.108,723,2.088,762,2.056,779,3.797,834,2.451,901,3.227,1033,5.745,1062,2.618,1083,3.534,1524,2.558,1604,3.534,1643,3.004,1772,3.004,1951,3.534,2013,4.508,2092,3.534,2261,3.743,2348,4.883,2367,3.534,2371,4.024,2383,4.45,2384,8.33,2385,4.45,2386,4.45,2387,4.45,2388,6.454,2389,6.454,2390,7.594,2391,4.45,2392,4.45,2393,4.45]],["t/578",[0,0.945,7,0.34,11,0.531,19,2.262,23,0.726,36,1.982,38,0.803,55,1.829,58,0.736,60,2.442,69,1.505,97,1.982,106,0.932,122,2.08,128,0.91,130,1.188,131,0.492,134,0.975,135,1.544,136,1.779,150,0.714,167,0.87,171,3.521,177,2.161,179,0.528,191,2.022,200,0.606,202,3.211,211,0.727,216,0.932,223,0.737,231,0.87,257,2.892,268,0.852,274,0.466,284,0.91,286,3.964,304,2.117,309,0.956,328,1.845,344,0.835,348,2.471,349,0.932,365,0.714,366,0.983,367,1.608,368,0.87,376,0.932,395,1.398,408,1.845,422,1.982,447,1.69,470,2.479,490,1.08,499,1.647,500,1.909,501,1.012,509,1.08,518,1.17,540,1.012,542,1.012,544,1.228,546,1.556,598,2.663,599,2.663,645,1.17,647,1.398,653,1.122,658,0.737,685,3.097,691,1.301,697,1.398,698,1.122,706,0.789,719,3.256,722,4.707,723,2.625,762,3.909,777,1.228,779,3.787,822,1.228,891,0.803,897,1.909,909,1.044,924,2.473,934,3.777,956,0.852,1009,4.161,1033,4.87,1046,2.262,1062,2.161,1139,1.08,1142,1.982,1366,1.08,1415,2.299,1594,1.08,1604,4.802,1607,1.301,1643,1.845,1662,3.321,1722,1.982,1726,1.122,1785,1.398,1789,1.398,1793,1.398,1797,1.08,1807,1.17,1817,1.17,1843,1.122,1876,2.471,1886,2.916,1963,1.17,1967,1.398,2013,1.08,2053,1.398,2069,1.398,2132,1.398,2149,1.228,2158,1.301,2186,1.17,2187,0.956,2194,2.171,2307,4.443,2313,1.398,2316,1.301,2345,2.299,2347,1.398,2348,4.87,2367,2.171,2379,1.398,2380,1.398,2394,2.733,2395,1.546,2396,1.546,2397,2.733,2398,2.733,2399,2.471,2400,2.471,2401,2.471,2402,2.471,2403,2.733,2404,6.778,2405,5.595,2406,1.546,2407,1.546,2408,3.672,2409,1.546,2410,3.672,2411,1.546,2412,1.546,2413,1.546,2414,1.546,2415,1.546,2416,1.546,2417,1.546,2418,1.546,2419,1.546,2420,1.546,2421,1.546,2422,1.546,2423,1.546]],["t/580",[0,1.053,11,1.395,38,1.457,47,1.296,55,1.868,58,0.651,69,3.136,97,1.514,116,1.514,117,1.24,122,2.125,130,0.907,131,0.877,134,2.031,135,1.572,141,1.431,178,1.406,185,1.835,256,1.189,257,0.889,274,0.845,282,1.359,298,1.222,304,2.381,325,1.65,340,1.735,342,1.276,349,1.691,366,1.782,367,3.35,383,3.844,422,3.284,430,2.269,461,4.153,470,1.893,493,2.122,497,2.122,540,1.835,585,1.893,641,4.435,673,2.352,690,2.962,719,2.808,779,1.65,834,3.136,838,2.537,891,1.457,907,3.074,911,2.034,912,2.034,943,2.228,969,3.426,1005,4.945,1009,1.431,1031,4.945,1044,3.136,1062,3.35,1229,2.034,1239,2.228,1288,2.537,1314,1.959,1366,1.959,1370,2.228,1395,2.537,1415,2.36,1425,2.228,1483,2.228,1493,2.122,1519,3.81,1607,2.36,1689,2.122,1690,1.959,1722,2.034,1843,2.034,1896,2.228,1960,2.36,1966,2.36,2067,6.789,2149,2.228,2187,1.735,2204,2.36,2250,2.537,2286,2.537,2319,2.228,2345,2.36,2348,6.105,2355,2.36,2356,4.095,2367,2.228,2399,2.537,2400,2.537,2401,2.537,2402,2.537,2424,2.805,2425,2.805,2426,2.805,2427,2.805,2428,2.805,2429,2.805,2430,2.805,2431,2.805,2432,2.805,2433,2.36,2434,2.805,2435,2.805,2436,2.805,2437,2.805,2438,2.805,2439,2.805,2440,6.536,2441,2.805,2442,2.805,2443,2.805,2444,5.695,2445,5.695,2446,2.805,2447,2.805]],["t/582",[0,0.776,11,1.944,35,1.442,54,4.631,58,0.833,69,2.91,121,4.445,130,1.709,131,0.709,135,1.458,150,2.441,160,2.745,233,4.909,326,1.843,339,3.567,364,3.109,501,3.457,759,3.357,767,5.788,891,2.745,985,3.007,1007,2.745,1043,3.998,1070,3.567,1493,3.998,1546,3.832,1555,3.691,1665,6.051,1689,3.998,1817,3.998,1875,5.514,1894,3.109,2077,3.567,2105,3.832,2183,4.778,2187,3.267,2302,6.523,2307,4.196,2448,7.288,2449,4.778,2450,4.778,2451,4.778]],["t/584",[0,0.635,7,1.39,11,1.95,31,2.031,54,2.75,55,3.392,58,0.495,69,2.383,131,1.297,132,2.831,134,1.543,135,1.195,141,2.207,148,2.097,150,1.999,166,3.641,171,3.437,218,1.999,252,1.74,277,4.785,396,3.437,490,3.023,512,4.528,514,2.825,526,2.488,530,2.676,690,2.831,759,2.75,767,5.023,924,2.727,958,3.914,984,2.434,985,1.785,1046,3.812,1063,2.676,1064,4.417,1067,4.785,1227,3.139,1440,5.719,1460,3.139,1594,3.023,1595,3.641,1645,3.641,1665,5.421,1690,3.023,1703,3.274,1772,2.921,1894,2.546,2044,5.321,2077,2.921,2134,5.023,2452,4.328,2453,4.328,2454,3.914,2455,5.719,2456,3.914]],["t/586",[0,0.619,11,1.887,35,0.508,39,1.947,49,1.733,55,3.8,58,0.294,64,1.794,122,1.977,131,1.301,132,1.68,148,1.244,150,2.476,179,0.876,195,1.386,210,1.673,211,1.12,226,2.231,233,2.479,242,1.151,252,1.694,274,1.614,282,2.042,283,0.867,304,2.241,318,1.088,322,3.056,332,1.943,341,2.039,343,1.943,364,1.511,437,1.444,447,1.588,452,2.274,499,1.548,512,1.414,514,0.97,545,1.68,557,1.947,702,2.189,723,2.91,762,1.947,769,3.887,820,1.68,891,2.189,909,1.733,916,1.943,934,1.733,970,1.511,984,1.444,985,1.059,1007,3.222,1043,1.943,1046,3.164,1063,1.588,1067,6.545,1071,3.347,1073,1.794,1140,2.16,1304,4.187,1324,3.887,1362,1.733,1409,1.511,1563,1.794,1585,1.862,1595,2.16,1620,1.794,1665,6.096,1748,2.16,1749,2.16,1769,3.056,1772,1.733,1894,1.511,1945,2.039,2008,3.347,2015,1.862,2044,2.16,2092,3.347,2124,2.16,2134,2.039,2147,2.16,2158,2.16,2187,1.588,2199,1.943,2291,2.322,2301,2.039,2302,1.862,2305,1.943,2315,2.16,2316,2.16,2331,2.039,2382,2.039,2455,5.609,2456,6.193,2457,2.322,2458,5.359,2459,2.568,2460,2.568,2461,2.568,2462,2.568,2463,2.568,2464,2.322,2465,2.16,2466,2.568,2467,2.568,2468,2.568,2469,2.568,2470,2.568,2471,2.568]],["t/588",[0,0.599,11,1.405,14,1.507,35,0.808,43,2.082,45,1.662,47,1.886,55,2.499,58,0.914,97,2.203,130,1.32,131,0.547,135,1.994,146,2.082,191,3.336,211,1.085,241,3.691,242,1.83,252,1.641,274,1.229,283,2.044,286,1.946,398,2.67,421,3.963,429,2.46,437,2.296,558,2.248,673,2.12,702,2.12,703,2.96,826,2.96,878,3.434,891,3.147,899,3.088,907,3.269,908,3.088,1011,3.241,1012,3.483,1044,2.248,1046,2.082,1061,2.755,1062,2.401,1063,3.746,1467,2.67,1545,3.434,1620,2.851,1665,2.96,1772,4.089,1797,2.851,1894,5.262,2017,3.434,2031,3.241,2081,3.434,2119,3.088,2187,2.524,2201,3.691,2203,3.691,2204,3.434,2217,3.691,2277,3.434,2282,3.691,2298,3.241,2299,3.434,2301,3.241,2302,2.96,2343,3.691,2472,5.478,2473,4.082,2474,4.082,2475,6.058,2476,4.082,2477,4.082,2478,4.082,2479,4.082,2480,4.082,2481,4.082,2482,4.082,2483,4.082,2484,4.082,2485,4.082,2486,4.082,2487,4.082,2488,4.082]],["t/590",[0,0.756,11,1.693,13,0.801,17,1.26,31,1.887,35,0.48,47,1.121,48,3.042,54,1.541,55,3.273,58,0.685,108,1.926,112,2.041,121,3.383,122,2.416,131,1.064,134,0.865,150,1.121,167,1.364,191,2.215,196,1.541,203,1.138,210,0.963,216,1.462,227,1.541,233,3.03,242,1.088,251,0.988,252,0.975,274,0.731,277,1.835,283,0.819,286,1.156,298,2.243,304,2.153,324,1.759,327,1.284,328,1.637,339,2.714,342,1.104,346,3.193,372,1.427,399,1.336,422,3.735,431,2.486,437,2.896,464,1.587,501,1.587,506,1.694,531,2.63,545,1.587,577,1.195,696,2.194,702,1.26,703,1.759,706,1.237,729,1.462,730,1.637,738,1.759,762,2.379,766,1.694,870,1.541,891,2.089,907,2.17,925,1.694,985,1.001,1007,2.675,1009,2.051,1012,1.395,1043,1.835,1046,2.051,1067,3.042,1070,3.476,1095,1.694,1174,1.759,1200,1.694,1239,1.926,1259,1.835,1304,2.714,1324,1.759,1362,1.637,1555,1.694,1612,2.194,1620,1.694,1638,2.041,1648,1.694,1665,5.754,1740,2.041,1797,1.694,1817,1.835,1843,1.759,1865,1.835,1875,1.835,1894,3.524,1941,1.926,1945,1.926,2039,1.835,2052,2.041,2097,2.194,2119,3.042,2138,2.194,2144,2.194,2148,2.194,2186,1.835,2187,3.184,2211,2.194,2219,2.041,2277,2.041,2298,1.926,2302,4.345,2307,4.09,2381,2.194,2449,2.194,2450,4.657,2451,3.636,2457,4.657,2464,4.657,2472,3.636,2489,2.426,2490,4.021,2491,4.021,2492,2.426,2493,2.426,2494,2.426,2495,2.426,2496,2.426,2497,2.426,2498,2.426,2499,2.426,2500,2.041,2501,2.426,2502,2.426,2503,2.426,2504,2.426,2505,2.426,2506,2.426,2507,2.426,2508,4.021,2509,2.426,2510,4.021,2511,2.426,2512,2.426,2513,2.426,2514,2.426,2515,2.426,2516,2.426,2517,2.041]],["t/592",[0,1.013,7,1.517,21,4.397,65,4.06,118,3.968,144,4.889,146,3.52,218,3.188,666,6.24,702,3.585,1624,5.805,1699,5.48,1802,5.48,1850,6.24,2319,5.48,2518,6.24,2519,6.901,2520,8.693,2521,6.901,2522,6.901,2523,6.901,2524,6.901,2525,6.24]],["t/594",[0,1.51,6,2.977,13,2.096,31,3.866,76,3.126,146,3.237,178,4.129,285,5.738,318,2.689,453,4.602,528,5.738,599,5.976,659,5.985,713,5.04,724,3.649,897,4.432,1078,4.801,1139,4.432,1185,5.738,1699,6.543,1786,5.338,2268,5.738,2500,5.338,2526,6.346,2527,5.338,2528,5.738]],["t/596",[0,1.15,5,1.916,6,2.756,7,1.291,39,3.618,54,3.732,55,2.423,76,3.858,146,2.996,156,3.377,170,2.161,178,2.944,179,2.004,287,5.679,308,2.22,338,4.444,342,2.673,349,3.54,463,3.732,509,4.102,532,3.109,536,3.842,557,2.713,585,3.965,659,5.122,678,4.665,698,4.26,742,5.311,759,3.732,1114,4.941,1137,4.665,1495,3.732,1615,4.941,1707,5.924,1769,4.26,1854,4.665,2525,5.311,2529,5.311,2530,4.941]],["t/598",[0,1.503,37,4.498,44,5.939,55,2.082,58,0.577,59,2.486,141,3.601,156,2.902,170,1.393,178,4.081,202,2.992,242,3.651,282,2.445,287,3.661,319,2.529,349,3.042,366,3.207,532,2.672,557,2.332,659,5.327,661,5.939,704,4.246,759,3.207,839,4.008,898,3.207,1552,4.564,1614,3.819,1648,3.525,1711,3.661,1767,4.008,2047,3.819,2305,3.819,2500,4.246,2528,4.564,2531,7.06,2532,5.047,2533,5.047,2534,5.047,2535,7.06,2536,5.047,2537,5.047,2538,5.047,2539,5.047,2540,6.384,2541,5.047]],["t/600",[0,1.438,6,2.513,7,1.177,13,1.769,15,2.89,37,4.286,58,0.612,59,2.638,170,2.319,178,4.211,296,6.673,308,2.024,319,2.684,326,1.868,342,2.437,437,3.012,656,4.505,659,6.408,704,7.61,721,2.782,759,3.403,946,3.151,1227,3.884,1500,5.497,1597,4.253,1807,4.052,1811,4.052,2465,4.505,2529,6.652,2530,4.505,2542,5.355,2543,4.843,2544,6.652,2545,4.843,2546,5.355]],["t/602",[0,1.438,14,1.555,42,1.81,49,2.843,58,0.841,59,2.075,99,4.056,106,2.539,122,1.976,140,2.942,141,3.753,144,2.369,146,3.163,156,3.565,168,3.415,170,1.711,178,4.335,221,3.345,234,3.544,242,1.889,292,5.216,295,2.843,296,3.345,299,2.942,305,2.111,316,4.056,437,3.487,463,2.677,486,7.339,493,3.187,496,3.809,653,3.055,659,5.918,757,3.187,817,2.677,818,4.55,839,3.345,877,3.544,1397,5.216,1409,2.478,1643,2.843,1673,3.187,1769,4.497,1811,3.187,1989,3.809,2129,3.809,2344,3.544,2527,3.544,2540,3.809,2544,5.607,2547,6.2,2548,4.212,2549,6.2,2550,6.2,2551,4.212,2552,6.2,2553,4.212,2554,4.212,2555,4.212]],["t/604",[0,1.367,7,1.263,13,1.898,43,2.931,58,0.657,81,3.878,113,4.221,178,4.366,200,2.252,202,2.435,245,2.654,287,4.167,292,4.833,305,2.879,331,4.833,659,5.699,702,2.984,759,3.651,762,2.654,779,3.38,780,5.195,1095,4.013,1114,4.833,1196,5.195,1230,4.833,1646,4.563,1656,5.195,1810,4.563,1828,3.758,1889,4.833,2031,4.563,2147,4.833,2315,4.833,2465,4.833,2527,6.491,2530,4.833,2543,5.195,2556,5.745,2557,5.745,2558,5.745]],["t/606",[50,5.899,58,1.208,84,3.235,200,2.302,245,2.713,327,3.109,488,3.994,513,2.302,526,3.377,580,3.235,660,5.311,721,3.051,724,3.377,781,4.444,1054,5.446,1287,4.665,1471,4.941,1826,5.311,1827,5.311,2559,5.874,2560,5.874,2561,4.941,2562,7.83,2563,5.311]],["t/608",[50,3.856,58,0.731,119,6.415,152,2.955,172,5.536,1054,3.263,1062,3.764,1404,4.64,1579,4.84,1584,4.468,1828,4.185,1829,8.784,1830,8.305,1831,5.785,1832,6.968,1833,4.84,1834,5.785,1835,5.785,1836,5.785,1837,5.785,1838,5.785,1839,5.785,1840,5.785,1841,5.08,1842,5.785,1843,4.64]],["t/610",[13,1.764,19,1.763,21,1.597,58,0.746,74,3.73,89,1.763,170,0.954,178,1.732,196,2.196,213,1.389,245,1.597,326,1.205,327,2.827,342,2.43,365,2.467,368,1.944,381,2.615,389,2.907,420,3.605,445,2.907,447,2.137,463,3.393,488,3.329,513,2.878,577,3.215,578,2.724,599,2.507,653,2.507,664,2.196,721,1.795,759,2.196,834,2.941,870,2.196,938,3.125,970,2.033,997,2.414,1020,2.745,1054,4.73,1078,2.615,1099,2.745,1141,2.615,1200,2.414,1204,3.125,1279,2.745,1429,2.745,1433,2.907,1471,2.907,1475,2.507,1584,3.73,1585,2.507,1589,2.745,1625,2.745,1652,2.745,1658,2.083,1734,2.907,1753,2.745,1806,3.125,1833,4.938,1844,4.493,1849,2.615,1853,3.125,1884,3.125,1968,2.615,1983,2.745,2048,3.125,2305,2.615,2331,4.241,2344,2.907,2433,2.907,2564,5.49,2565,4.829,2566,5.34,2567,5.902,2568,5.34,2569,3.456,2570,3.456,2571,3.456,2572,3.456,2573,3.456,2574,4.829,2575,3.456,2576,3.125,2577,3.456,2578,4.241,2579,2.745,2580,3.456,2581,3.125,2582,6.176,2583,2.907,2584,3.456,2585,3.456,2586,3.456,2587,3.456,2588,5.34,2589,5.34,2590,3.456]],["t/612",[17,2.016,19,1.98,43,3.575,55,1.601,58,0.444,69,2.137,84,2.137,89,2.976,100,5.275,117,3.097,155,1.85,160,2.016,178,3.513,191,2.137,200,1.521,245,3.238,279,2.815,286,1.85,327,3.71,331,3.265,335,1.793,342,1.766,463,2.466,488,2.976,557,1.793,577,3.453,599,2.815,606,3.082,654,3.707,690,2.539,706,2.976,721,2.016,723,1.821,729,2.339,751,5.084,759,2.466,934,2.62,1020,4.633,1054,4.263,1078,4.414,1174,2.815,1362,3.938,1625,4.633,1699,3.082,1753,4.633,1811,4.414,1983,3.082,2047,5.303,2102,5.275,2103,3.509,2131,3.265,2133,3.509,2305,4.414,2382,3.082,2517,3.265,2545,5.275,2564,3.265,2565,3.509,2576,3.509,2582,4.908,2591,8.357,2592,3.881,2593,3.881,2594,3.881,2595,3.881,2596,5.834,2597,3.881,2598,3.881,2599,3.881,2600,3.881,2601,3.881,2602,3.881,2603,3.881,2604,3.881,2605,3.881,2606,3.881]],["t/614",[14,2.305,45,2.543,50,3.764,58,0.714,134,2.227,144,3.513,172,3.764,202,2.646,220,3.306,245,2.885,325,3.674,342,2.842,429,3.764,513,3.196,578,3.186,1054,4.159,1229,4.53,1409,3.674,1429,4.96,1555,4.362,1584,4.362,1666,7.374,1871,5.648,1891,5.254,1892,5.254,1990,4.216,2047,4.725,2607,6.245,2608,8.154,2609,5.648,2610,6.245,2611,8.154,2612,6.245,2613,6.245]],["t/616",[9,2.118,42,2.088,50,2.93,58,0.912,89,3.507,170,1.342,245,2.246,333,4.498,342,4.323,488,3.507,513,2.695,532,2.573,721,2.525,738,3.525,870,4.369,919,6.849,1024,3.006,1054,5.358,1090,4.089,1538,4.089,1625,3.86,1744,4.396,1820,6.638,1849,3.678,1882,4.089,1968,3.678,2331,3.86,2382,3.86,2517,4.089,2561,4.089,2564,4.089,2614,4.861,2615,6.875,2616,4.861,2617,4.396]],["t/618",[13,1.819,50,3.318,58,0.857,68,4.978,274,1.658,282,2.667,314,4.978,326,2.614,340,3.404,342,3.411,445,4.631,447,3.404,463,3.498,513,2.158,620,3.318,970,3.239,997,3.845,1054,4.667,1314,3.845,1409,3.239,1524,3.165,1807,4.165,1833,4.165,1849,4.165,1854,4.372,1887,7.17,1991,4.631,2007,4.372,2134,4.372,2336,4.978,2368,4.978,2578,4.372,2579,4.372,2617,4.978,2618,4.631,2619,5.505,2620,5.505,2621,5.505,2622,5.505,2623,5.505,2624,5.505,2625,6.778,2626,4.631,2627,5.505,2628,5.505,2629,5.505,2630,5.505]],["t/620",[19,3.615,41,5.361,50,4.271,58,1.01,245,4.083,326,2.471,463,4.503,513,2.778,1054,4.914,1647,5.14,1976,6.408,2433,5.962,2579,5.628,2583,5.962,2625,6.408,2626,5.962,2631,7.086,2632,7.086,2633,7.086,2634,7.086]],["t/622",[19,3.647,23,3.355,50,5.358,55,2.95,58,1.016,113,3.464,225,5.186,227,4.544,429,4.31,500,4.994,654,4.544,664,4.544,721,3.714,934,4.827,1054,5.161,1465,5.679,1476,5.679,1655,5.186]],["t/624",[19,3.894,50,4.602,58,0.873,226,4.041,420,5.154,1054,3.894,1484,6.904,1643,5.154,2561,6.423,2578,7.349,2635,6.904,2636,6.904,2637,6.904,2638,6.904,2639,6.904]],["t/626",[6,1.35,13,0.95,24,1.467,41,3.496,50,2.785,55,1.907,58,0.662,65,1.692,69,1.584,89,1.467,134,1.026,144,1.618,151,2.601,172,2.785,205,2.086,216,2.785,217,2.009,225,3.352,226,1.523,245,2.135,251,1.171,252,1.156,269,2.4,282,2.239,288,2.285,313,1.203,318,1.219,326,1.612,329,5.018,338,2.176,340,1.779,342,2.103,344,1.553,399,1.584,437,1.618,453,4.201,463,1.828,499,1.734,513,1.128,526,1.654,532,1.523,656,2.42,661,2.42,670,2.285,700,2.601,834,2.545,934,3.119,939,2.42,975,2.42,1054,3.383,1200,4.046,1402,2.009,1479,2.42,1500,1.882,1544,2.285,1588,2.601,1647,3.352,1651,2.785,1684,4.179,1754,2.285,1762,2.601,1768,2.601,1769,2.086,1770,2.285,1820,1.882,1828,1.882,1832,2.42,1841,2.285,1859,2.601,1862,2.601,1882,2.42,1949,2.285,1951,2.285,2007,2.285,2009,2.176,2077,1.942,2113,4.179,2153,2.176,2259,2.601,2265,2.42,2340,2.601,2454,2.601,2518,2.601,2563,2.601,2578,2.285,2579,5.769,2581,2.601,2582,2.42,2583,2.42,2609,4.179,2618,2.42,2626,2.42,2635,5.238,2636,7.91,2637,4.179,2638,8.703,2640,2.877,2641,2.877,2642,4.621,2643,2.877,2644,5.238,2645,2.877,2646,2.877,2647,2.877,2648,2.877,2649,2.877,2650,2.877,2651,2.877,2652,2.877,2653,2.877,2654,2.877,2655,2.877,2656,2.877,2657,2.877,2658,2.877,2659,2.877,2660,2.877,2661,2.877,2662,2.877,2663,2.877,2664,2.877,2665,2.877,2666,2.877,2667,2.877,2668,2.877,2669,2.877]],["t/628",[26,3.745,50,5.836,58,1.107,144,2.652,156,2.711,172,2.842,225,3.42,226,2.496,227,4.276,284,2.774,326,1.645,376,2.842,429,2.842,484,3.967,497,3.568,526,2.711,557,2.179,672,3.967,939,3.967,946,2.774,1054,5.139,1125,3.745,1200,3.294,1227,3.42,1402,3.294,1409,2.774,1493,3.568,1643,3.183,1651,4.056,1674,3.967,1738,3.967,1875,3.568,1888,4.264,1889,3.967,1890,4.264,1891,3.967,1892,3.967,1893,4.264,1932,3.967,1990,3.183,2014,4.264,2265,3.967,2319,5.344,2567,4.264,2574,4.264,2618,3.967,2639,4.264,2644,4.264,2670,6.729,2671,4.716,2672,4.716,2673,4.716,2674,4.716,2675,4.716,2676,4.716,2677,4.716]]],"invertedIndex":[["",{"_index":211,"t":{"18":{"position":[[212,1]]},"20":{"position":[[710,2],[806,2],[846,1]]},"30":{"position":[[142,1],[160,1],[180,2],[244,1],[293,3]]},"32":{"position":[[154,1],[172,1],[192,2],[240,1],[304,3],[464,2],[524,1],[526,1],[702,2],[705,2],[757,1],[806,3],[867,2],[927,1],[929,1],[1105,2],[1119,1],[1146,2],[1225,2],[1235,1],[1248,1],[1284,1],[1303,1],[1351,1],[1385,1],[1431,4],[1436,2],[1439,3],[1443,2],[1461,1],[1483,2]]},"34":{"position":[[280,1],[298,1],[325,1],[344,1],[374,2],[412,1],[454,2],[506,1],[508,1],[545,2],[548,2],[597,1],[631,1],[648,1],[698,2],[701,2],[704,2],[707,3],[820,1],[830,1],[860,2],[909,1],[943,1],[960,1],[1035,2],[1038,2],[1041,2],[1044,3]]},"36":{"position":[[93,1],[111,1],[138,1],[150,1],[185,1],[213,1],[243,2],[303,1],[305,1],[481,2],[484,2],[536,1],[538,1],[575,2],[578,2],[644,1],[678,1],[718,1],[776,2],[779,2],[782,2],[785,3]]},"38":{"position":[[130,1],[167,1],[198,1],[247,3],[282,2]]},"46":{"position":[[301,1]]},"50":{"position":[[266,1],[305,1],[307,3]]},"54":{"position":[[188,1],[270,1],[272,3]]},"60":{"position":[[154,2],[192,1],[214,1],[216,1],[287,3],[302,1],[304,2],[352,1],[354,2],[562,1],[570,2],[573,2],[576,1],[582,1],[584,2],[636,1],[652,1],[657,1],[659,2],[749,2],[804,1],[806,1],[808,2],[908,1],[915,1],[930,1],[932,1],[934,2],[937,2]]},"66":{"position":[[169,1],[192,1],[227,2],[281,1],[422,1],[438,1],[483,2],[535,1],[581,2],[628,2],[669,3],[673,2],[745,1],[755,3],[889,1],[905,1],[950,2],[1002,1],[1047,2],[1145,2]]},"68":{"position":[[169,1],[204,1],[239,2],[308,1],[332,2],[417,1],[577,1],[593,1],[634,2],[683,1],[729,2],[776,2],[820,3],[824,2],[896,1],[906,3],[1058,1],[1074,1],[1115,2],[1164,1],[1207,2],[1305,2]]},"70":{"position":[[570,1],[605,1],[647,1],[689,1],[741,1],[779,1],[820,2],[880,2],[940,2],[1026,1],[1071,1],[1104,2],[1177,1],[1232,2],[1279,2],[1349,2],[1403,3],[1407,2],[1473,1],[1524,2],[1571,2],[1644,2],[1698,3],[1702,2],[1876,1],[1886,3],[1986,1],[1996,3],[2235,1],[2256,1],[2298,1],[2314,1],[2359,2],[2413,2],[2497,1],[2521,2],[2576,1],[2671,3],[2675,2],[2750,1],[2766,2],[2769,1],[2771,2],[2836,2],[2916,1],[2966,1],[3000,2],[3060,2],[3186,1],[3237,1],[3244,1],[3299,1],[3301,2]]},"72":{"position":[[460,1],[485,1],[513,2],[578,1],[621,1],[645,2],[707,1],[755,1],[781,2],[852,1],[908,1]]},"97":{"position":[[101,1],[119,1],[139,2],[183,1],[232,3]]},"99":{"position":[[94,1],[125,1],[145,2]]},"101":{"position":[[99,1],[115,1],[135,2],[180,1],[214,2],[256,1]]},"105":{"position":[[458,2],[505,1],[521,2],[524,1],[526,2],[602,2],[605,2]]},"107":{"position":[[358,2],[401,1],[441,2],[514,1],[516,2],[563,1],[615,2],[618,1],[630,1],[641,2],[709,2],[712,2],[715,1]]},"110":{"position":[[158,1],[174,1],[194,2],[247,1],[249,1],[290,2],[293,2],[346,1],[348,1],[388,2],[391,2],[518,1]]},"112":{"position":[[187,1],[194,1],[214,2],[261,1],[263,3],[282,1],[298,2],[301,1],[331,2],[373,2],[428,2],[431,2],[470,2],[601,2],[640,1],[686,1],[726,2],[764,2],[890,1],[908,3]]},"114":{"position":[[150,2],[186,1],[216,1],[272,2],[322,1],[324,1],[338,1],[360,2],[363,2],[366,2],[493,1]]},"118":{"position":[[101,1],[119,1],[139,2],[183,1],[232,3],[256,2],[306,2]]},"120":{"position":[[108,1],[128,1],[148,2],[330,1],[361,1],[381,2],[464,1],[505,3]]},"122":{"position":[[93,1],[124,1],[144,2],[189,1],[223,2],[277,1],[308,3],[326,1],[471,1],[517,2],[559,2],[607,3]]},"124":{"position":[[118,2],[181,1]]},"126":{"position":[[137,2],[187,1],[276,3],[280,2],[344,1],[389,2],[461,1],[491,3]]},"128":{"position":[[172,2],[219,1],[235,2],[238,1],[240,2],[320,2],[393,1],[461,2],[464,2],[502,1],[524,1],[526,1],[597,3],[612,1],[614,2],[662,1],[664,2]]},"132":{"position":[[301,1],[442,1],[447,1],[590,1],[644,1]]},"138":{"position":[[66,1],[117,1]]},"148":{"position":[[105,1],[124,1],[138,1],[187,1],[407,1],[503,1]]},"162":{"position":[[1158,1]]},"166":{"position":[[178,1]]},"170":{"position":[[587,5],[684,1]]},"188":{"position":[[244,1],[264,1],[286,2],[335,1],[337,1],[362,2],[426,2],[532,2],[577,1],[688,1],[698,1],[735,1],[737,2],[776,1],[801,1],[803,1],[816,2],[852,2],[915,2],[980,1]]},"190":{"position":[[151,1],[173,1],[196,1],[206,1],[235,1],[266,1],[355,1],[395,1],[441,1],[457,2],[540,1],[546,2],[549,1],[584,2],[587,2],[626,1],[651,1],[653,1],[666,2],[725,1],[775,1],[806,3],[824,1],[855,2],[918,1],[1054,2],[1109,1],[1117,2],[1120,2],[1123,2],[1133,1],[1135,2],[1255,2],[1258,1],[1421,3],[1585,2],[1670,3],[1674,1],[1676,1],[1963,1],[1981,1],[1999,1],[2079,1],[2092,1],[2141,1],[2157,1],[2235,1],[2250,1],[2330,1],[2347,1],[2418,1],[2433,1],[2482,1]]},"192":{"position":[[215,1],[230,1],[267,1],[269,2],[317,1],[324,1],[326,1],[357,3],[361,2],[416,1],[424,2],[427,2],[430,1],[442,2],[465,3],[480,2],[527,1],[560,1],[627,3],[631,2],[694,1],[745,1],[766,1],[768,1],[802,3],[806,2],[844,3],[851,1],[905,1],[912,1],[935,1],[937,2],[940,1]]},"194":{"position":[[201,1],[221,1],[258,1],[260,2],[311,1],[338,1],[340,1],[376,3],[380,2],[424,2],[427,1],[474,2],[477,1],[561,4],[566,2],[588,1]]},"196":{"position":[[230,1],[268,1],[305,1],[307,2],[352,1],[378,1],[380,1],[415,3],[419,2],[470,1],[497,1],[499,1],[535,3],[539,2],[589,2],[592,1],[612,1],[694,2],[697,1],[781,4],[786,2],[823,1]]},"206":{"position":[[1005,1],[1020,1],[1082,1],[1294,1],[1309,1],[1355,1]]},"208":{"position":[[392,1],[618,1],[702,1],[779,1],[792,1],[819,1],[833,1],[850,1]]},"210":{"position":[[579,1],[606,1],[652,1],[686,1],[744,1],[933,1],[960,1],[1142,1],[1176,1],[1218,1],[1263,1]]},"212":{"position":[[749,1],[763,1],[812,1],[855,1],[910,1],[938,1],[1068,1],[1082,1],[1101,1],[1250,1],[1264,1],[1284,1],[1306,1]]},"214":{"position":[[304,1],[343,1],[535,1],[672,1]]},"218":{"position":[[235,1],[263,1]]},"222":{"position":[[192,1],[226,1],[417,1],[513,1]]},"224":{"position":[[540,1],[563,1],[622,1],[949,1],[972,1],[1087,1],[1125,1]]},"226":{"position":[[295,1],[321,1],[378,1],[561,1],[587,1]]},"228":{"position":[[288,1],[311,1],[696,1],[715,1],[733,1]]},"232":{"position":[[357,1],[472,1]]},"236":{"position":[[400,1]]},"238":{"position":[[396,1]]},"256":{"position":[[74,1],[151,1],[406,1],[450,1],[459,2],[528,1],[586,2],[843,1]]},"264":{"position":[[45,1],[142,1]]},"266":{"position":[[382,1],[405,1],[520,1],[546,1],[577,1],[702,1],[714,2],[775,1]]},"280":{"position":[[482,1],[484,3],[488,1],[516,1],[518,3],[522,1],[524,2],[630,1],[665,1],[700,1],[705,1]]},"282":{"position":[[773,1],[849,1],[854,1]]},"288":{"position":[[79,1],[125,1]]},"292":{"position":[[208,1],[246,1],[267,1],[352,2],[560,1]]},"294":{"position":[[172,1]]},"476":{"position":[[138,1],[156,1],[187,1],[214,2],[310,1],[328,1],[359,1],[386,2],[450,2],[453,1],[495,1]]},"478":{"position":[[14,1],[32,1],[63,1],[100,1],[137,1],[139,3],[156,1],[174,1],[205,1],[246,1],[283,1],[285,3]]},"480":{"position":[[14,1],[32,1],[63,1],[100,1],[165,1],[167,3],[184,1],[202,1],[233,1],[274,1],[339,1],[341,3]]},"482":{"position":[[140,1],[158,1],[189,1],[260,3],[298,1],[316,1],[347,1],[388,1],[437,1],[439,3],[472,1],[490,1],[521,1],[562,1],[623,1],[625,3]]},"484":{"position":[[472,1],[490,1],[521,1],[558,1],[610,1],[612,3],[629,1],[647,1],[678,1],[719,1],[778,1],[780,3]]},"486":{"position":[[107,1]]},"488":{"position":[[579,1],[606,1],[641,1],[693,1],[731,1],[772,1],[886,1],[928,2]]},"536":{"position":[[1029,1],[1041,1],[1649,1],[1653,1],[1720,1],[1726,1]]},"538":{"position":[[559,1],[565,1],[722,1],[737,1],[796,1],[800,1]]},"548":{"position":[[2633,1],[2694,1],[2713,1],[2725,1],[2735,1],[2748,1],[2760,1]]},"557":{"position":[[588,1]]},"578":{"position":[[769,1],[1772,1]]},"586":{"position":[[1046,1],[1053,1]]},"588":{"position":[[200,1]]}}}],["0",{"_index":944,"t":{"158":{"position":[[42,1],[410,1]]},"162":{"position":[[1156,1]]},"190":{"position":[[1973,1]]},"192":{"position":[[469,2],[848,2]]},"478":{"position":[[124,3],[270,3]]},"482":{"position":[[412,3]]},"559":{"position":[[674,1]]}}}],["0,1,2,3,4,5,6,7",{"_index":1904,"t":{"476":{"position":[[477,17]]},"488":{"position":[[910,17]]}}}],["0.0.0.0",{"_index":371,"t":{"32":{"position":[[399,8]]},"222":{"position":[[357,8]]},"228":{"position":[[531,9]]}}}],["0.012",{"_index":2299,"t":{"553":{"position":[[97,5]]},"557":{"position":[[102,5]]},"588":{"position":[[1019,5]]}}}],["0.012*5",{"_index":2318,"t":{"557":{"position":[[580,7]]}}}],["0.06",{"_index":2303,"t":{"553":{"position":[[184,4]]},"557":{"position":[[590,4]]}}}],["0.1",{"_index":1822,"t":{"444":{"position":[[274,3]]}}}],["0.15",{"_index":2298,"t":{"553":{"position":[[34,4]]},"555":{"position":[[178,4]]},"588":{"position":[[1060,4]]},"590":{"position":[[1418,4]]}}}],["0.5",{"_index":2139,"t":{"536":{"position":[[1722,3]]}}}],["0.5gb",{"_index":1224,"t":{"198":{"position":[[440,5]]},"244":{"position":[[295,5]]},"260":{"position":[[240,5]]},"284":{"position":[[591,5]]}}}],["0.6",{"_index":1391,"t":{"244":{"position":[[109,5]]}}}],["000",{"_index":1193,"t":{"190":{"position":[[2193,5]]},"538":{"position":[[573,3]]}}}],["007bff",{"_index":1201,"t":{"190":{"position":[[2453,8]]}}}],["01.ac",{"_index":1264,"t":{"206":{"position":[[1770,5]]},"214":{"position":[[561,5]]},"216":{"position":[[489,5]]}}}],["01.he",{"_index":2401,"t":{"578":{"position":[[951,5],[2023,5]]},"580":{"position":[[1081,5]]}}}],["06",{"_index":1367,"t":{"232":{"position":[[93,2]]},"236":{"position":[[102,2]]},"238":{"position":[[105,2]]}}}],["1",{"_index":762,"t":{"112":{"position":[[669,3]]},"124":{"position":[[253,2]]},"176":{"position":[[585,1]]},"190":{"position":[[990,2],[2105,2],[2360,2]]},"222":{"position":[[223,2]]},"226":{"position":[[375,2]]},"274":{"position":[[266,2]]},"280":{"position":[[667,2]]},"364":{"position":[[197,2]]},"476":{"position":[[466,2]]},"478":{"position":[[113,2],[128,2],[259,2],[274,2]]},"480":{"position":[[113,2],[287,2]]},"482":{"position":[[401,2],[416,2],[575,2]]},"484":{"position":[[571,2],[606,3],[732,2]]},"488":{"position":[[899,2]]},"532":{"position":[[330,1]]},"536":{"position":[[272,1],[499,1],[777,1],[2275,1],[2368,1],[2433,1],[2453,1],[2619,1],[2825,1]]},"540":{"position":[[207,1],[391,1]]},"546":{"position":[[33,3],[476,3]]},"561":{"position":[[577,1]]},"574":{"position":[[36,1]]},"576":{"position":[[230,2]]},"578":{"position":[[999,1],[1013,1],[1031,1],[1060,1],[1352,1],[1381,1],[1527,1],[1556,1],[2071,1],[2084,1],[2102,1],[2229,1],[2294,1],[2441,1],[2634,1],[2717,1],[2910,1]]},"586":{"position":[[470,2],[1306,1]]},"590":{"position":[[859,1],[1366,1],[1951,1]]},"604":{"position":[[462,2]]}}}],["1%2fproto&pagesize=50&ascending=tru",{"_index":1432,"t":{"256":{"position":[[805,37]]}}}],["1.0.0.1",{"_index":980,"t":{"160":{"position":[[134,10]]},"174":{"position":[[197,10]]},"224":{"position":[[789,8]]}}}],["1.000",{"_index":2137,"t":{"536":{"position":[[1598,5]]}}}],["1.1.1.1",{"_index":979,"t":{"160":{"position":[[122,11]]},"174":{"position":[[185,11]]},"224":{"position":[[777,7]]}}}],["1.2",{"_index":2172,"t":{"538":{"position":[[802,3]]}}}],["1.4",{"_index":2362,"t":{"574":{"position":[[289,3]]}}}],["1/proto",{"_index":1428,"t":{"256":{"position":[[577,8]]}}}],["10",{"_index":1062,"t":{"176":{"position":[[398,2]]},"182":{"position":[[1269,2]]},"450":{"position":[[305,2]]},"536":{"position":[[288,2],[1090,2],[2463,2]]},"542":{"position":[[286,2]]},"548":{"position":[[2569,2],[2783,2]]},"551":{"position":[[409,2]]},"574":{"position":[[1220,3]]},"576":{"position":[[424,2]]},"578":{"position":[[1332,2],[2421,2],[2568,2]]},"580":{"position":[[1469,2],[1576,2],[1847,2]]},"588":{"position":[[801,2]]},"608":{"position":[[246,2]]}}}],["10,000",{"_index":1515,"t":{"282":{"position":[[747,6],[775,7],[842,6]]}}}],["10.000",{"_index":2121,"t":{"536":{"position":[[720,6],[1009,6],[1666,6]]},"538":{"position":[[412,6],[552,6],[1046,6]]},"551":{"position":[[481,6]]}}}],["100",{"_index":1314,"t":{"212":{"position":[[1227,4]]},"538":{"position":[[878,4]]},"551":{"position":[[324,3]]},"559":{"position":[[362,3]]},"563":{"position":[[21,3]]},"580":{"position":[[1817,3]]},"618":{"position":[[528,3]]}}}],["100/1",{"_index":1098,"t":{"182":{"position":[[1012,6]]}}}],["1000",{"_index":1043,"t":{"166":{"position":[[316,4],[413,4]]},"536":{"position":[[1644,4]]},"582":{"position":[[32,4]]},"586":{"position":[[1079,4]]},"590":{"position":[[1725,4]]}}}],["10000",{"_index":2138,"t":{"536":{"position":[[1714,5]]},"590":{"position":[[1758,5]]}}}],["100k/day",{"_index":2341,"t":{"561":{"position":[[677,9]]}}}],["100kb",{"_index":2490,"t":{"590":{"position":[[188,6],[1609,5]]}}}],["100mbit",{"_index":2504,"t":{"590":{"position":[[833,8]]}}}],["100mpb",{"_index":2503,"t":{"590":{"position":[[819,7]]}}}],["100msg/day",{"_index":2181,"t":{"540":{"position":[[393,12]]}}}],["100vh",{"_index":1180,"t":{"190":{"position":[[2048,6]]}}}],["107",{"_index":2226,"t":{"546":{"position":[[559,3]]}}}],["108",{"_index":2249,"t":{"546":{"position":[[671,3]]}}}],["10k",{"_index":2300,"t":{"553":{"position":[[130,3]]},"557":{"position":[[455,3]]},"561":{"position":[[340,3],[400,3]]}}}],["10kb",{"_index":2307,"t":{"555":{"position":[[139,5]]},"578":{"position":[[1089,4],[1410,4],[1585,4],[2323,4],[2663,4],[2939,4]]},"582":{"position":[[330,4]]},"590":{"position":[[182,5],[1071,4],[1258,4]]}}}],["10mbp",{"_index":2284,"t":{"548":{"position":[[2622,6]]}}}],["10msg/sec",{"_index":2405,"t":{"578":{"position":[[1078,10],[1399,10],[1574,10],[2312,10],[2652,10],[2928,10]]}}}],["10px",{"_index":1189,"t":{"190":{"position":[[2135,5],[2208,5],[2229,5],[2276,5],[2392,5],[2412,5]]}}}],["11",{"_index":2286,"t":{"548":{"position":[[2722,2]]},"580":{"position":[[410,2]]}}}],["1100",{"_index":2421,"t":{"578":{"position":[[3776,4]]}}}],["119",{"_index":2240,"t":{"546":{"position":[[621,3]]}}}],["11m",{"_index":2411,"t":{"578":{"position":[[2392,5]]}}}],["12",{"_index":2219,"t":{"546":{"position":[[369,2],[691,2]]},"548":{"position":[[2745,2]]},"590":{"position":[[2049,3]]}}}],["123.123.123.123",{"_index":494,"t":{"54":{"position":[[223,18]]}}}],["1234",{"_index":492,"t":{"54":{"position":[[211,4]]}}}],["127.0.0.1",{"_index":450,"t":{"48":{"position":[[529,10]]},"170":{"position":[[96,9]]},"172":{"position":[[113,9]]},"212":{"position":[[315,10]]},"254":{"position":[[153,9]]}}}],["127.0.0.1:8080",{"_index":1053,"t":{"170":{"position":[[642,15]]}}}],["13",{"_index":2235,"t":{"546":{"position":[[599,2]]}}}],["130",{"_index":1103,"t":{"182":{"position":[[1190,3]]}}}],["137",{"_index":2227,"t":{"546":{"position":[[563,3]]}}}],["13:18:07.575+00:00",{"_index":2426,"t":{"580":{"position":[[416,18]]}}}],["14",{"_index":2559,"t":{"606":{"position":[[27,2]]}}}],["14400",{"_index":1323,"t":{"214":{"position":[[760,5]]}}}],["1459",{"_index":1617,"t":{"312":{"position":[[33,5]]}}}],["15",{"_index":1368,"t":{"232":{"position":[[96,2]]},"236":{"position":[[105,2]]},"238":{"position":[[108,2]]},"546":{"position":[[648,2],[856,2]]}}}],["150",{"_index":2169,"t":{"538":{"position":[[739,3],[781,3]]}}}],["1500m",{"_index":1104,"t":{"182":{"position":[[1211,6]]}}}],["150kb",{"_index":2309,"t":{"555":{"position":[[151,6]]}}}],["15mbp",{"_index":2279,"t":{"548":{"position":[[2152,7]]}}}],["16",{"_index":1517,"t":{"282":{"position":[[851,2]]}}}],["16:09:54.448+01:00",{"_index":1369,"t":{"232":{"position":[[99,18]]},"236":{"position":[[108,18]]},"238":{"position":[[111,18]]}}}],["17",{"_index":2254,"t":{"546":{"position":[[702,2]]},"548":{"position":[[2364,3],[2457,3]]}}}],["1727795042",{"_index":2288,"t":{"548":{"position":[[2890,10]]}}}],["18",{"_index":2285,"t":{"548":{"position":[[2710,2],[2732,2]]}}}],["1:1",{"_index":788,"t":{"122":{"position":[[789,3]]}}}],["1kb",{"_index":2306,"t":{"555":{"position":[[134,4]]}}}],["1lqrcbccb4np93f9",{"_index":1380,"t":{"236":{"position":[[245,16],[478,16]]}}}],["1msg/10",{"_index":2328,"t":{"559":{"position":[[530,7]]}}}],["1px",{"_index":1182,"t":{"190":{"position":[[2063,3]]}}}],["2",{"_index":97,"t":{"6":{"position":[[830,1],[914,1]]},"124":{"position":[[301,2]]},"176":{"position":[[490,1]]},"190":{"position":[[1039,2]]},"222":{"position":[[257,2]]},"226":{"position":[[432,2]]},"266":{"position":[[723,4]]},"280":{"position":[[702,2]]},"318":{"position":[[400,1]]},"478":{"position":[[131,2],[277,2]]},"482":{"position":[[419,2]]},"538":{"position":[[567,1]]},"540":{"position":[[411,1]]},"546":{"position":[[279,3],[714,3]]},"578":{"position":[[1318,1],[1744,2],[2407,1]]},"580":{"position":[[1894,2]]},"588":{"position":[[614,1]]}}}],["20",{"_index":2159,"t":{"538":{"position":[[116,2]]}}}],["200msg/day",{"_index":2182,"t":{"540":{"position":[[413,12]]}}}],["2023",{"_index":1366,"t":{"232":{"position":[[88,4]]},"236":{"position":[[97,4]]},"238":{"position":[[100,4]]},"506":{"position":[[127,5]]},"546":{"position":[[376,6]]},"578":{"position":[[3834,6]]},"580":{"position":[[405,4]]}}}],["2024",{"_index":1827,"t":{"448":{"position":[[38,4]]},"606":{"position":[[39,4]]}}}],["21",{"_index":2232,"t":{"546":{"position":[[590,2]]}}}],["21600",{"_index":1258,"t":{"206":{"position":[[1251,5]]},"214":{"position":[[492,5]]}}}],["22",{"_index":2255,"t":{"546":{"position":[[705,2]]}}}],["23",{"_index":2243,"t":{"546":{"position":[[639,2]]}}}],["232",{"_index":2374,"t":{"574":{"position":[[1134,3]]}}}],["24*3600/1=86400",{"_index":2152,"t":{"536":{"position":[[2666,15]]}}}],["24*3600/240=360",{"_index":2156,"t":{"536":{"position":[[3070,15]]}}}],["240",{"_index":2155,"t":{"536":{"position":[[3021,3],[3270,3]]}}}],["25",{"_index":2408,"t":{"578":{"position":[[1507,2],[2697,2],[2844,2]]}}}],["250",{"_index":2161,"t":{"538":{"position":[[296,3],[472,3],[561,3],[1082,3]]}}}],["250m",{"_index":2417,"t":{"578":{"position":[[3544,5]]}}}],["256",{"_index":2477,"t":{"588":{"position":[[362,3]]}}}],["25mbp",{"_index":2106,"t":{"534":{"position":[[1500,7]]}}}],["26",{"_index":2253,"t":{"546":{"position":[[694,2]]},"548":{"position":[[2298,3]]}}}],["263",{"_index":2511,"t":{"590":{"position":[[1314,3]]}}}],["27",{"_index":2250,"t":{"546":{"position":[[675,2]]},"580":{"position":[[413,2]]}}}],["286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8",{"_index":1276,"t":{"208":{"position":[[394,64],[852,64],[940,64]]}}}],["2gb",{"_index":825,"t":{"130":{"position":[[257,3]]},"198":{"position":[[368,3]]},"244":{"position":[[223,3]]},"260":{"position":[[168,3]]},"284":{"position":[[519,3]]}}}],["2mbyte",{"_index":2334,"t":{"561":{"position":[[358,7]]}}}],["3",{"_index":408,"t":{"34":{"position":[[517,2],[531,2],[542,2]]},"36":{"position":[[547,2],[561,2],[572,2]]},"124":{"position":[[350,2]]},"478":{"position":[[134,2],[280,2]]},"482":{"position":[[422,2]]},"546":{"position":[[389,3],[781,3],[827,1]]},"548":{"position":[[2114,4]]},"578":{"position":[[1493,1],[2683,1]]}}}],["3.85",{"_index":2462,"t":{"586":{"position":[[1048,4]]}}}],["30",{"_index":1049,"t":{"170":{"position":[[228,2]]},"212":{"position":[[565,3]]},"538":{"position":[[691,2],[711,2]]},"546":{"position":[[625,2]]},"566":{"position":[[95,2]]},"574":{"position":[[755,2]]}}}],["300",{"_index":1038,"t":{"166":{"position":[[174,3]]},"574":{"position":[[775,3]]}}}],["3000",{"_index":2326,"t":{"559":{"position":[[482,4]]}}}],["32",{"_index":1275,"t":{"208":{"position":[[351,2],[389,2],[530,2],[712,2],[802,3],[816,2]]},"224":{"position":[[331,2]]}}}],["33",{"_index":2236,"t":{"546":{"position":[[602,2],[697,2]]}}}],["37",{"_index":2246,"t":{"546":{"position":[[651,2]]}}}],["38",{"_index":2228,"t":{"546":{"position":[[567,2],[772,2]]},"548":{"position":[[2757,2]]}}}],["38.8",{"_index":2373,"t":{"574":{"position":[[1088,7]]}}}],["384",{"_index":2294,"t":{"551":{"position":[[655,3]]}}}],["4",{"_index":1324,"t":{"214":{"position":[[774,2]]},"278":{"position":[[434,1]]},"482":{"position":[[425,2]]},"561":{"position":[[418,3]]},"586":{"position":[[1055,2],[1146,1],[1874,1]]},"590":{"position":[[2044,1]]}}}],["4.0",{"_index":2608,"t":{"614":{"position":[[83,3],[116,5]]}}}],["400",{"_index":2166,"t":{"538":{"position":[[632,3]]}}}],["44",{"_index":2237,"t":{"546":{"position":[[605,2],[665,2]]}}}],["479c95bbf74222417abf76c7f9c480a6790e454374dc4f59bbb15ca183ce1abd",{"_index":2438,"t":{"580":{"position":[[741,65]]}}}],["48",{"_index":1249,"t":{"206":{"position":[[694,3]]}}}],["49",{"_index":2238,"t":{"546":{"position":[[615,2]]}}}],["4k",{"_index":2278,"t":{"548":{"position":[[2127,2],[2613,3]]}}}],["4k/uhd",{"_index":2258,"t":{"546":{"position":[[849,6]]}}}],["4px",{"_index":1199,"t":{"190":{"position":[[2378,4],[2477,4]]}}}],["5",{"_index":1039,"t":{"166":{"position":[[180,1]]},"182":{"position":[[1384,1]]},"482":{"position":[[428,2]]},"536":{"position":[[1476,1],[1621,1],[1651,1],[1655,1],[1728,1]]},"538":{"position":[[500,1],[724,1]]},"546":{"position":[[842,1]]}}}],["50",{"_index":969,"t":{"158":{"position":[[726,2]]},"534":{"position":[[1217,2],[1420,2]]},"536":{"position":[[814,2],[1031,2]]},"546":{"position":[[654,2],[678,2]]},"580":{"position":[[1440,2],[1547,2]]}}}],["500",{"_index":2126,"t":{"536":{"position":[[1043,3],[1690,3]]},"538":{"position":[[211,4],[569,3]]}}}],["5000",{"_index":2338,"t":{"561":{"position":[[505,4]]}}}],["500kb",{"_index":2451,"t":{"582":{"position":[[574,6]]},"590":{"position":[[195,6],[1619,6]]}}}],["508",{"_index":2449,"t":{"582":{"position":[[379,3]]},"590":{"position":[[1109,3]]}}}],["50kb",{"_index":2308,"t":{"555":{"position":[[145,5]]}}}],["520",{"_index":2339,"t":{"561":{"position":[[549,3]]}}}],["53",{"_index":2244,"t":{"546":{"position":[[642,2]]}}}],["54",{"_index":2233,"t":{"546":{"position":[[593,2]]}}}],["56",{"_index":2241,"t":{"546":{"position":[[628,2]]}}}],["58",{"_index":2225,"t":{"546":{"position":[[556,2]]}}}],["6",{"_index":1259,"t":{"206":{"position":[[1265,2]]},"214":{"position":[[506,2]]},"296":{"position":[[403,1]]},"482":{"position":[[431,2]]},"590":{"position":[[2029,1]]}}}],["60",{"_index":2654,"t":{"626":{"position":[[1068,4]]}}}],["60000",{"_index":922,"t":{"150":{"position":[[215,8]]},"158":{"position":[[373,5]]}}}],["60000:60000",{"_index":1441,"t":{"266":{"position":[[325,11]]}}}],["60002",{"_index":374,"t":{"32":{"position":[[424,5]]},"222":{"position":[[382,5]]}}}],["60003",{"_index":375,"t":{"32":{"position":[[434,5]]},"222":{"position":[[392,6]]}}}],["625",{"_index":1518,"t":{"282":{"position":[[856,4]]}}}],["627",{"_index":2509,"t":{"590":{"position":[[1228,4]]}}}],["63",{"_index":2251,"t":{"546":{"position":[[681,2]]}}}],["6300",{"_index":1840,"t":{"450":{"position":[[308,4]]},"608":{"position":[[249,4]]}}}],["64",{"_index":949,"t":{"158":{"position":[[239,2]]},"208":{"position":[[262,3]]},"396":{"position":[[26,3]]}}}],["65000",{"_index":910,"t":{"148":{"position":[[126,5]]}}}],["68",{"_index":2229,"t":{"546":{"position":[[570,2]]}}}],["7",{"_index":777,"t":{"114":{"position":[[268,3]]},"482":{"position":[[434,2]]},"546":{"position":[[700,1]]},"578":{"position":[[3831,2]]}}}],["71",{"_index":2245,"t":{"546":{"position":[[645,2]]}}}],["72",{"_index":2234,"t":{"546":{"position":[[596,2],[631,2]]}}}],["7640",{"_index":2361,"t":{"574":{"position":[[250,5]]}}}],["8",{"_index":1110,"t":{"182":{"position":[[1322,1]]},"208":{"position":[[789,2]]},"440":{"position":[[339,1]]},"538":{"position":[[798,1]]}}}],["8.8.4.4",{"_index":1348,"t":{"224":{"position":[[922,8]]}}}],["8.8.8.8",{"_index":1347,"t":{"224":{"position":[[910,7]]}}}],["80/2",{"_index":1086,"t":{"182":{"position":[[286,5]]}}}],["8000",{"_index":1074,"t":{"180":{"position":[[99,4]]},"210":{"position":[[346,5]]}}}],["8001",{"_index":1294,"t":{"210":{"position":[[909,5]]}}}],["8002",{"_index":1298,"t":{"210":{"position":[[1118,5]]}}}],["8008",{"_index":1055,"t":{"172":{"position":[[183,4]]}}}],["83",{"_index":2256,"t":{"546":{"position":[[769,2]]}}}],["84",{"_index":2248,"t":{"546":{"position":[[668,2]]}}}],["85",{"_index":2230,"t":{"546":{"position":[[573,2]]}}}],["86",{"_index":2165,"t":{"538":{"position":[[629,2]]}}}],["8645",{"_index":1047,"t":{"170":{"position":[[158,4]]},"212":{"position":[[431,5]]},"256":{"position":[[44,4]]}}}],["8997",{"_index":2370,"t":{"574":{"position":[[809,4]]}}}],["9",{"_index":1825,"t":{"448":{"position":[[27,1]]},"548":{"position":[[2692,1]]}}}],["9.6",{"_index":2174,"t":{"538":{"position":[[817,4]]}}}],["9000",{"_index":1058,"t":{"176":{"position":[[117,4]]},"212":{"position":[[1044,5]]},"574":{"position":[[852,5]]}}}],["9000:9000/udp",{"_index":1442,"t":{"266":{"position":[[340,13]]}}}],["93",{"_index":2239,"t":{"546":{"position":[[618,2]]}}}],["95",{"_index":2144,"t":{"536":{"position":[[2141,2]]},"590":{"position":[[1196,3]]}}}],["95%/99",{"_index":2178,"t":{"538":{"position":[[1113,7]]}}}],["99",{"_index":2145,"t":{"536":{"position":[[2147,3]]}}}],["9990",{"_index":2487,"t":{"588":{"position":[[841,4]]}}}],["_nwaku",{"_index":2384,"t":{"576":{"position":[[95,6],[156,6],[258,6],[340,6]]}}}],["abil",{"_index":1622,"t":{"312":{"position":[[544,7]]}}}],["abnorm",{"_index":2497,"t":{"590":{"position":[[437,8]]}}}],["abov",{"_index":1174,"t":{"190":{"position":[[1714,6]]},"270":{"position":[[876,6]]},"446":{"position":[[162,6]]},"548":{"position":[[9,5]]},"590":{"position":[[126,5]]},"612":{"position":[[1073,6]]}}}],["absent",{"_index":2065,"t":{"524":{"position":[[256,6]]}}}],["absolut",{"_index":573,"t":{"70":{"position":[[156,8]]}}}],["abus",{"_index":2057,"t":{"520":{"position":[[1006,7]]}}}],["accept",{"_index":730,"t":{"105":{"position":[[184,7]]},"107":{"position":[[155,7]]},"256":{"position":[[854,8]]},"292":{"position":[[219,8]]},"294":{"position":[[183,8]]},"488":{"position":[[294,7]]},"551":{"position":[[765,6]]},"590":{"position":[[1179,11]]}}}],["access",{"_index":488,"t":{"52":{"position":[[304,11]]},"54":{"position":[[82,11]]},"66":{"position":[[1408,6]]},"130":{"position":[[81,6]]},"170":{"position":[[300,6]]},"212":{"position":[[600,6],[681,6]]},"250":{"position":[[27,6]]},"254":{"position":[[104,6]]},"266":{"position":[[800,10]]},"326":{"position":[[177,9]]},"382":{"position":[[186,9]]},"388":{"position":[[84,6]]},"436":{"position":[[28,7],[111,13]]},"440":{"position":[[64,7],[139,10]]},"444":{"position":[[94,6]]},"546":{"position":[[359,9]]},"606":{"position":[[149,6],[519,6]]},"610":{"position":[[773,11],[845,6],[1007,10]]},"612":{"position":[[451,10],[1163,10]]},"616":{"position":[[563,8],[600,6]]}}}],["accident",{"_index":1401,"t":{"248":{"position":[[399,12]]}}}],["accommod",{"_index":1649,"t":{"322":{"position":[[338,11]]},"418":{"position":[[201,11]]}}}],["accompani",{"_index":1704,"t":{"340":{"position":[[1408,11]]}}}],["accord",{"_index":1684,"t":{"338":{"position":[[303,9]]},"626":{"position":[[1290,10],[1937,10]]}}}],["accordingli",{"_index":1923,"t":{"488":{"position":[[552,12]]}}}],["account",{"_index":703,"t":{"91":{"position":[[58,7]]},"346":{"position":[[429,10],[495,10]]},"516":{"position":[[269,8]]},"548":{"position":[[858,8],[2206,8]]},"588":{"position":[[896,7]]},"590":{"position":[[2246,8]]}}}],["accur",{"_index":2517,"t":{"590":{"position":[[2378,9]]},"612":{"position":[[872,9]]},"616":{"position":[[399,9]]}}}],["accuraci",{"_index":2576,"t":{"610":{"position":[[421,9]]},"612":{"position":[[941,9]]}}}],["achiev",{"_index":1542,"t":{"296":{"position":[[120,7]]},"360":{"position":[[82,7]]},"362":{"position":[[197,8]]},"364":{"position":[[97,8]]},"540":{"position":[[295,9]]}}}],["ack/nack",{"_index":2506,"t":{"590":{"position":[[961,8]]}}}],["acknowledg",{"_index":1661,"t":{"330":{"position":[[138,15],[341,12]]},"390":{"position":[[96,16]]}}}],["acquir",{"_index":2537,"t":{"598":{"position":[[395,7]]}}}],["act",{"_index":2013,"t":{"510":{"position":[[557,4]]},"516":{"position":[[95,4]]},"548":{"position":[[608,6]]},"553":{"position":[[260,4]]},"555":{"position":[[371,4]]},"576":{"position":[[292,6],[374,6]]},"578":{"position":[[122,4]]}}}],["action",{"_index":1754,"t":{"358":{"position":[[216,7]]},"360":{"position":[[62,7]]},"504":{"position":[[799,7]]},"626":{"position":[[2234,6]]}}}],["activ",{"_index":333,"t":{"26":{"position":[[2266,6]]},"58":{"position":[[212,6]]},"60":{"position":[[95,6]]},"296":{"position":[[294,8]]},"360":{"position":[[118,10]]},"460":{"position":[[646,10],[687,10],[780,10]]},"462":{"position":[[209,10]]},"506":{"position":[[278,10]]},"616":{"position":[[524,10],[717,10]]}}}],["actor",{"_index":1757,"t":{"358":{"position":[[340,6]]},"360":{"position":[[47,5],[134,6]]}}}],["actual",{"_index":606,"t":{"70":{"position":[[3026,8]]},"358":{"position":[[333,6]]},"555":{"position":[[362,8]]},"612":{"position":[[695,6]]}}}],["ad",{"_index":689,"t":{"85":{"position":[[119,5]]},"116":{"position":[[246,6]]},"124":{"position":[[421,6]]},"282":{"position":[[274,6]]},"488":{"position":[[47,6],[204,5],[407,5]]}}}],["adapt",{"_index":166,"t":{"12":{"position":[[283,8]]},"184":{"position":[[198,8]]},"584":{"position":[[51,10]]}}}],["add",{"_index":195,"t":{"16":{"position":[[103,3]]},"18":{"position":[[104,3]]},"20":{"position":[[458,4],[607,3]]},"26":{"position":[[62,3]]},"34":{"position":[[125,3]]},"46":{"position":[[75,3]]},"64":{"position":[[172,3]]},"87":{"position":[[150,3]]},"158":{"position":[[412,3]]},"184":{"position":[[103,3]]},"186":{"position":[[445,3]]},"282":{"position":[[455,3]]},"506":{"position":[[216,4]]},"518":{"position":[[0,3],[184,3]]},"553":{"position":[[159,3]]},"557":{"position":[[28,4],[555,3]]},"586":{"position":[[648,4]]}}}],["add(new",{"_index":793,"t":{"124":{"position":[[216,8],[267,8],[315,8]]},"190":{"position":[[953,8],[1004,8]]}}}],["addit",{"_index":383,"t":{"32":{"position":[[1189,10]]},"296":{"position":[[312,10]]},"316":{"position":[[525,10]]},"332":{"position":[[267,10]]},"346":{"position":[[381,8]]},"454":{"position":[[3,8]]},"490":{"position":[[474,8]]},"580":{"position":[[1405,10],[1512,10],[1782,10]]}}}],["addition",{"_index":1598,"t":{"306":{"position":[[256,13]]},"346":{"position":[[576,13]]},"350":{"position":[[91,13]]},"430":{"position":[[201,13]]},"504":{"position":[[221,13]]}}}],["addr",{"_index":974,"t":{"160":{"position":[[35,5],[104,5]]}}}],["address",{"_index":152,"t":{"12":{"position":[[92,7]]},"32":{"position":[[1593,7],[1733,7],[1779,8]]},"158":{"position":[[265,7],[306,7],[497,8]]},"160":{"position":[[299,7]]},"162":{"position":[[626,7],[665,7],[753,7],[761,7]]},"170":{"position":[[88,7],[116,7]]},"172":{"position":[[105,7],[133,7]]},"176":{"position":[[368,7]]},"198":{"position":[[1613,9],[1670,9],[1759,9],[1815,10]]},"204":{"position":[[72,7],[781,7]]},"212":{"position":[[209,7],[239,7],[803,8]]},"230":{"position":[[87,9],[137,9]]},"232":{"position":[[383,7],[494,7]]},"234":{"position":[[28,10]]},"236":{"position":[[415,9]]},"238":{"position":[[411,9],[695,9]]},"284":{"position":[[455,10]]},"292":{"position":[[621,10]]},"314":{"position":[[516,7]]},"334":{"position":[[63,9]]},"396":{"position":[[96,10],[121,9]]},"450":{"position":[[227,7]]},"452":{"position":[[552,8],[623,7],[730,9],[836,7]]},"510":{"position":[[819,8]]},"512":{"position":[[87,7]]},"608":{"position":[[167,7]]}}}],["address=127.0.0.1",{"_index":1313,"t":{"212":{"position":[[1110,17]]}}}],["address=[rest",{"_index":1307,"t":{"212":{"position":[[772,13]]}}}],["adequ",{"_index":1858,"t":{"458":{"position":[[288,8]]}}}],["admin",{"_index":1050,"t":{"170":{"position":[[281,5],[320,5]]},"212":{"position":[[574,5],[615,5],[1172,5]]}}}],["admin=[true|fals",{"_index":1310,"t":{"212":{"position":[[919,18]]}}}],["admin=tru",{"_index":1315,"t":{"212":{"position":[[1273,10]]}}}],["administ",{"_index":2656,"t":{"626":{"position":[[1227,12]]}}}],["administr",{"_index":2664,"t":{"626":{"position":[[1891,14]]}}}],["adopt",{"_index":2349,"t":{"566":{"position":[[423,8]]}}}],["advanc",{"_index":1388,"t":{"240":{"position":[[280,8]]},"256":{"position":[[1166,8]]},"344":{"position":[[122,8]]}}}],["adversari",{"_index":1501,"t":{"278":{"position":[[659,12]]},"346":{"position":[[46,11]]},"360":{"position":[[19,9]]},"362":{"position":[[53,9]]}}}],["advertis",{"_index":966,"t":{"158":{"position":[[596,9]]},"510":{"position":[[107,13],[462,13]]},"514":{"position":[[144,13]]}}}],["advic",{"_index":2586,"t":{"610":{"position":[[1586,6]]}}}],["advis",{"_index":2627,"t":{"618":{"position":[[412,7]]}}}],["affect",{"_index":1875,"t":{"460":{"position":[[668,7],[741,6]]},"557":{"position":[[373,6]]},"582":{"position":[[235,8],[456,8]]},"590":{"position":[[1431,7]]},"628":{"position":[[412,6]]}}}],["affili",{"_index":2519,"t":{"592":{"position":[[87,11]]}}}],["africa",{"_index":2252,"t":{"546":{"position":[[684,6]]},"548":{"position":[[2291,6],[2357,6],[2750,6]]}}}],["again",{"_index":2046,"t":{"520":{"position":[[387,6]]}}}],["against",{"_index":1647,"t":{"322":{"position":[[283,7]]},"346":{"position":[[555,7]]},"520":{"position":[[934,7]]},"526":{"position":[[27,7]]},"620":{"position":[[53,7]]},"626":{"position":[[102,7],[2276,7]]}}}],["agent",{"_index":945,"t":{"158":{"position":[[131,5],[155,5]]}}}],["aggreg",{"_index":68,"t":{"6":{"position":[[200,10],[898,9]]},"618":{"position":[[474,9]]}}}],["agnost",{"_index":1683,"t":{"338":{"position":[[220,8]]}}}],["agnostic",{"_index":1739,"t":{"352":{"position":[[122,12]]}}}],["agre",{"_index":2562,"t":{"606":{"position":[[390,6],[467,5]]}}}],["agreement",{"_index":2670,"t":{"628":{"position":[[44,9],[155,11]]}}}],["aim",{"_index":690,"t":{"87":{"position":[[10,4]]},"344":{"position":[[3,3]]},"356":{"position":[[177,6]]},"452":{"position":[[3,3]]},"534":{"position":[[338,3]]},"542":{"position":[[17,4]]},"580":{"position":[[11,4],[879,5]]},"584":{"position":[[830,4]]},"612":{"position":[[1205,3]]}}}],["aka",{"_index":2091,"t":{"534":{"position":[[614,3]]}}}],["alert",{"_index":465,"t":{"48":{"position":[[931,7]]}}}],["alic",{"_index":581,"t":{"70":{"position":[[541,5],[998,5],[2883,5],[3054,5],[3228,8],[3290,8]]},"126":{"position":[[241,8]]},"300":{"position":[[36,5],[102,5],[233,6],[240,5],[337,5],[472,6],[479,5],[571,5],[616,5]]},"318":{"position":[[36,5],[95,5],[135,5],[219,6],[226,5],[300,5],[329,5],[390,5]]},"336":{"position":[[0,5]]}}}],["alice'",{"_index":607,"t":{"70":{"position":[[3063,7]]},"336":{"position":[[114,7]]}}}],["aliceprivatekey",{"_index":586,"t":{"70":{"position":[[1010,15],[1332,16],[1627,16]]}}}],["alicepublickey",{"_index":587,"t":{"70":{"position":[[1056,14]]}}}],["align",{"_index":1195,"t":{"190":{"position":[[2309,5]]}}}],["aliv",{"_index":1014,"t":{"162":{"position":[[1353,5],[1377,5]]}}}],["allmessag",{"_index":1216,"t":{"196":{"position":[[600,11]]}}}],["alloc",{"_index":2096,"t":{"534":{"position":[[995,9],[1062,8]]},"548":{"position":[[997,8]]}}}],["allow",{"_index":14,"t":{"2":{"position":[[148,8]]},"6":{"position":[[581,5]]},"12":{"position":[[38,8]]},"20":{"position":[[304,6]]},"48":{"position":[[433,8]]},"70":{"position":[[427,6]]},"120":{"position":[[244,6]]},"122":{"position":[[381,6],[562,6]]},"150":{"position":[[381,8]]},"158":{"position":[[737,7],[798,7]]},"170":{"position":[[347,5],[360,5],[661,5]]},"182":{"position":[[450,8],[769,8],[1316,5]]},"204":{"position":[[130,6]]},"206":{"position":[[1478,6]]},"214":{"position":[[217,6]]},"216":{"position":[[218,6]]},"228":{"position":[[916,8]]},"250":{"position":[[94,8]]},"274":{"position":[[577,6]]},"278":{"position":[[77,8]]},"280":{"position":[[182,8]]},"296":{"position":[[828,6]]},"304":{"position":[[198,5]]},"312":{"position":[[77,6],[294,6]]},"326":{"position":[[16,6]]},"330":{"position":[[108,6]]},"338":{"position":[[244,6]]},"340":{"position":[[1525,8],[1662,7]]},"352":{"position":[[135,8]]},"378":{"position":[[49,6]]},"386":{"position":[[58,6]]},"406":{"position":[[131,8]]},"412":{"position":[[165,8]]},"426":{"position":[[81,8]]},"474":{"position":[[107,6]]},"536":{"position":[[680,6],[2427,5],[2636,5],[2741,6],[3040,5],[3151,5],[3373,5]]},"538":{"position":[[455,5]]},"540":{"position":[[371,5]]},"551":{"position":[[914,7]]},"561":{"position":[[265,7],[671,5]]},"588":{"position":[[54,6]]},"602":{"position":[[587,5]]},"614":{"position":[[146,6]]}}}],["along",{"_index":926,"t":{"152":{"position":[[51,5]]},"190":{"position":[[1824,5]]},"346":{"position":[[590,5]]}}}],["alongsid",{"_index":281,"t":{"22":{"position":[[1432,9]]},"28":{"position":[[331,9]]},"196":{"position":[[176,9]]},"510":{"position":[[874,9]]}}}],["alreadi",{"_index":2204,"t":{"544":{"position":[[1253,7]]},"580":{"position":[[835,7]]},"588":{"position":[[219,7]]}}}],["altern",{"_index":379,"t":{"32":{"position":[[810,14]]},"326":{"position":[[161,11]]},"382":{"position":[[170,11]]},"536":{"position":[[1865,12]]},"548":{"position":[[1724,12]]}}}],["although",{"_index":1696,"t":{"340":{"position":[[1088,8]]},"494":{"position":[[798,8]]}}}],["altruist",{"_index":2000,"t":{"506":{"position":[[891,15]]}}}],["alway",{"_index":645,"t":{"76":{"position":[[338,6]]},"105":{"position":[[738,6]]},"107":{"position":[[752,6]]},"458":{"position":[[662,6]]},"578":{"position":[[1281,6]]}}}],["amazon",{"_index":1527,"t":{"286":{"position":[[927,6]]}}}],["ambient",{"_index":1554,"t":{"296":{"position":[[1037,7]]}}}],["amend",{"_index":2605,"t":{"612":{"position":[[1347,7]]}}}],["america",{"_index":2224,"t":{"546":{"position":[[548,7],[582,7]]},"548":{"position":[[2684,7],[2702,7]]}}}],["amic",{"_index":2650,"t":{"626":{"position":[[755,8]]}}}],["amongst",{"_index":2447,"t":{"580":{"position":[[1687,7]]}}}],["amount",{"_index":1063,"t":{"176":{"position":[[409,6],[500,6]]},"452":{"position":[[403,6]]},"510":{"position":[[796,6],[1011,7]]},"516":{"position":[[246,6]]},"520":{"position":[[927,6]]},"536":{"position":[[655,6],[1542,6],[2920,6]]},"542":{"position":[[117,6]]},"544":{"position":[[557,7]]},"584":{"position":[[651,6]]},"586":{"position":[[899,6]]},"588":{"position":[[331,6],[710,6]]}}}],["analysi",{"_index":1896,"t":{"468":{"position":[[59,8]]},"538":{"position":[[1101,8]]},"544":{"position":[[1219,8]]},"580":{"position":[[193,9]]}}}],["analyz",{"_index":2069,"t":{"530":{"position":[[13,7],[89,7],[245,7]]},"578":{"position":[[53,9]]}}}],["and/or",{"_index":1019,"t":{"162":{"position":[[1522,6]]}}}],["announc",{"_index":967,"t":{"158":{"position":[[677,8]]},"204":{"position":[[157,9]]},"218":{"position":[[75,8]]}}}],["anonym",{"_index":1426,"t":{"256":{"position":[[512,9]]},"278":{"position":[[187,10],[524,9],[582,9]]},"280":{"position":[[19,9]]},"282":{"position":[[597,9]]},"316":{"position":[[506,10]]},"320":{"position":[[129,9],[251,10]]},"358":{"position":[[205,10]]},"360":{"position":[[0,9],[90,10],[227,9]]},"366":{"position":[[102,9]]},"416":{"position":[[145,10]]}}}],["anoth",{"_index":490,"t":{"54":{"position":[[14,7]]},"68":{"position":[[1556,7]]},"346":{"position":[[72,7]]},"460":{"position":[[509,7]]},"548":{"position":[[1516,7]]},"578":{"position":[[171,7]]},"584":{"position":[[796,7]]}}}],["anyon",{"_index":129,"t":{"10":{"position":[[53,6]]},"312":{"position":[[301,6]]},"544":{"position":[[803,6],[864,6]]}}}],["anyth",{"_index":143,"t":{"10":{"position":[[316,9]]},"256":{"position":[[954,9]]},"266":{"position":[[952,9]]},"294":{"position":[[293,9]]}}}],["api",{"_index":168,"t":{"14":{"position":[[31,3],[40,3],[133,3]]},"26":{"position":[[1869,3]]},"83":{"position":[[61,4],[124,3],[197,4]]},"91":{"position":[[188,4]]},"170":{"position":[[258,3],[326,4],[435,3]]},"198":{"position":[[573,3],[1726,4]]},"212":{"position":[[22,3],[89,4],[158,3],[259,3],[375,3],[502,3],[621,3],[704,3],[1025,3],[1190,3]]},"230":{"position":[[235,4]]},"256":{"position":[[32,3]]},"266":{"position":[[865,3]]},"270":{"position":[[778,3]]},"292":{"position":[[60,4]]},"294":{"position":[[103,4]]},"472":{"position":[[160,4]]},"484":{"position":[[14,4]]},"602":{"position":[[98,3],[204,5]]}}}],["app",{"_index":60,"t":{"6":{"position":[[71,4]]},"14":{"position":[[160,3],[282,3],[311,4]]},"20":{"position":[[356,3]]},"22":{"position":[[723,3],[761,3]]},"74":{"position":[[130,3]]},"76":{"position":[[98,3],[207,3],[267,3]]},"78":{"position":[[78,3]]},"188":{"position":[[66,4],[527,4],[729,5]]},"190":{"position":[[349,5],[1693,3]]},"192":{"position":[[261,5]]},"194":{"position":[[252,5]]},"196":{"position":[[299,5]]},"282":{"position":[[252,3]]},"484":{"position":[[591,5]]},"534":{"position":[[1692,4]]},"578":{"position":[[187,3],[369,4],[406,3],[504,3]]}}}],["app%2f2%2fchatroom",{"_index":1431,"t":{"256":{"position":[[786,18]]}}}],["app.css",{"_index":1145,"t":{"190":{"position":[[328,11],[1901,7]]}}}],["app.jsx",{"_index":1133,"t":{"188":{"position":[[655,7]]},"190":{"position":[[88,7]]}}}],["app/0/a/proto",{"_index":1511,"t":{"282":{"position":[[327,14]]}}}],["app/1/default/proto",{"_index":1909,"t":{"482":{"position":[[601,21]]},"484":{"position":[[756,21]]}}}],["app/1/notifications/proto",{"_index":1906,"t":{"480":{"position":[[137,27],[311,27]]}}}],["app/2/chatroom",{"_index":1427,"t":{"256":{"position":[[562,14]]}}}],["appear",{"_index":479,"t":{"50":{"position":[[445,8]]}}}],["appli",{"_index":447,"t":{"48":{"position":[[468,5]]},"62":{"position":[[280,7]]},"182":{"position":[[841,7],[906,7],[1184,5]]},"340":{"position":[[393,7]]},"448":{"position":[[227,7]]},"454":{"position":[[309,6]]},"548":{"position":[[147,5]]},"578":{"position":[[1874,8],[3426,8]]},"586":{"position":[[1717,7]]},"610":{"position":[[656,5]]},"618":{"position":[[587,5]]}}}],["applic",{"_index":13,"t":{"2":{"position":[[134,13]]},"4":{"position":[[166,13],[219,12]]},"16":{"position":[[346,13]]},"20":{"position":[[51,11],[276,12]]},"22":{"position":[[87,12],[677,11],[997,11],[1086,11],[1345,11]]},"26":{"position":[[966,12],[1189,12],[1257,13],[1698,12],[1885,12]]},"56":{"position":[[105,12]]},"58":{"position":[[129,12]]},"60":{"position":[[1283,12]]},"70":{"position":[[243,11]]},"72":{"position":[[108,12],[403,12]]},"80":{"position":[[103,12]]},"89":{"position":[[176,11],[474,13]]},"93":{"position":[[126,13]]},"105":{"position":[[564,11]]},"107":{"position":[[679,11]]},"122":{"position":[[32,11],[706,12]]},"128":{"position":[[364,11]]},"184":{"position":[[241,12]]},"186":{"position":[[88,12]]},"188":{"position":[[144,11]]},"190":{"position":[[1839,11]]},"192":{"position":[[24,12]]},"194":{"position":[[27,12]]},"196":{"position":[[131,11],[1001,11]]},"270":{"position":[[612,12],[1012,11]]},"274":{"position":[[51,13],[113,11],[177,11]]},"280":{"position":[[99,11],[319,12]]},"282":{"position":[[8,11],[730,11]]},"320":{"position":[[74,12],[175,12]]},"332":{"position":[[311,11]]},"334":{"position":[[5,12]]},"340":{"position":[[28,11]]},"374":{"position":[[96,12]]},"386":{"position":[[113,12]]},"400":{"position":[[49,11],[144,12]]},"424":{"position":[[134,13]]},"430":{"position":[[184,11]]},"432":{"position":[[123,11]]},"442":{"position":[[0,12]]},"452":{"position":[[226,10]]},"458":{"position":[[694,10]]},"470":{"position":[[52,11]]},"484":{"position":[[75,11],[405,11],[574,12]]},"534":{"position":[[895,12]]},"548":{"position":[[2542,13]]},"590":{"position":[[1138,12]]},"594":{"position":[[209,13]]},"600":{"position":[[435,12]]},"604":{"position":[[17,11]]},"610":{"position":[[697,10],[959,10]]},"618":{"position":[[628,10]]},"626":{"position":[[2017,10]]}}}],["application'",{"_index":300,"t":{"26":{"position":[[218,13],[368,13]]},"124":{"position":[[12,13]]}}}],["application/json",{"_index":1423,"t":{"256":{"position":[[432,17],[863,17]]},"292":{"position":[[228,17]]}}}],["applicationinfo",{"_index":1910,"t":{"484":{"position":[[38,15],[312,15]]}}}],["appoint",{"_index":2534,"t":{"598":{"position":[[293,7]]}}}],["appreci",{"_index":647,"t":{"78":{"position":[[15,10]]},"578":{"position":[[2347,11]]}}}],["approach",{"_index":268,"t":{"22":{"position":[[1029,8]]},"182":{"position":[[806,9]]},"282":{"position":[[347,8]]},"312":{"position":[[166,8]]},"320":{"position":[[21,9]]},"448":{"position":[[98,8]]},"456":{"position":[[13,9]]},"490":{"position":[[277,8]]},"494":{"position":[[821,10]]},"498":{"position":[[56,10]]},"532":{"position":[[314,8]]},"536":{"position":[[1882,8],[2249,8]]},"540":{"position":[[181,8],[243,8]]},"544":{"position":[[514,9],[672,10]]},"548":{"position":[[789,9]]},"578":{"position":[[293,9]]}}}],["appropri",{"_index":1433,"t":{"260":{"position":[[52,11]]},"510":{"position":[[784,11]]},"610":{"position":[[806,11]]}}}],["approv",{"_index":665,"t":{"78":{"position":[[516,9]]}}}],["apt",{"_index":846,"t":{"132":{"position":[[197,3]]}}}],["arbitr",{"_index":2638,"t":{"624":{"position":[[102,12]]},"626":{"position":[[260,11],[427,11],[549,11],[1215,11],[1263,11],[1339,11],[1447,8],[1499,11],[1656,11],[1781,11],[1860,12],[1910,10],[1986,12],[2264,11]]}}}],["arch",{"_index":843,"t":{"132":{"position":[[164,4]]}}}],["architectur",{"_index":1645,"t":{"322":{"position":[[33,12]]},"544":{"position":[[733,14],[784,12]]},"584":{"position":[[128,13]]}}}],["archiv",{"_index":2345,"t":{"566":{"position":[[48,9],[229,7]]},"578":{"position":[[754,7],[1757,7]]},"580":{"position":[[473,8]]}}}],["area",{"_index":2533,"t":{"598":{"position":[[240,4]]}}}],["arg",{"_index":1438,"t":{"266":{"position":[[66,8],[189,6]]}}}],["arguabl",{"_index":2033,"t":{"516":{"position":[[1120,8]]}}}],["argument",{"_index":930,"t":{"154":{"position":[[235,8]]},"158":{"position":[[622,8]]},"160":{"position":[[205,8]]},"162":{"position":[[1323,8],[1467,8],[1580,8],[1658,8]]},"174":{"position":[[238,8]]},"176":{"position":[[259,8]]},"266":{"position":[[211,9]]}}}],["aris",{"_index":2626,"t":{"618":{"position":[[251,7]]},"620":{"position":[[130,7]]},"626":{"position":[[690,7]]}}}],["aros",{"_index":2666,"t":{"626":{"position":[[2110,5]]}}}],["around",{"_index":2147,"t":{"536":{"position":[[2186,6]]},"586":{"position":[[871,6]]},"604":{"position":[[117,6]]}}}],["array",{"_index":238,"t":{"20":{"position":[[432,7]]},"38":{"position":[[21,5],[294,5]]}}}],["arriv",{"_index":1612,"t":{"310":{"position":[[898,7]]},"590":{"position":[[1216,8]]}}}],["articl",{"_index":1812,"t":{"440":{"position":[[609,7]]}}}],["ascend",{"_index":1459,"t":{"268":{"position":[[202,9]]}}}],["asia",{"_index":2242,"t":{"546":{"position":[[634,4]]},"548":{"position":[[2727,4]]}}}],["ask",{"_index":1869,"t":{"460":{"position":[[305,3],[381,3],[435,3],[623,5]]}}}],["assign",{"_index":1766,"t":{"362":{"position":[[261,6]]},"494":{"position":[[650,7]]},"500":{"position":[[118,8]]},"520":{"position":[[494,9]]}}}],["assist",{"_index":142,"t":{"10":{"position":[[300,10]]},"24":{"position":[[39,11]]},"256":{"position":[[938,10]]},"266":{"position":[[936,10]]},"294":{"position":[[277,10]]}}}],["associ",{"_index":1830,"t":{"450":{"position":[[152,12],[255,11],[434,12]]},"608":{"position":[[92,12],[196,11],[385,12]]}}}],["assum",{"_index":2015,"t":{"512":{"position":[[12,6],[113,7]]},"536":{"position":[[304,6],[1938,6]]},"538":{"position":[[509,8],[763,8]]},"557":{"position":[[422,8]]},"561":{"position":[[446,9],[618,9]]},"586":{"position":[[1840,8]]}}}],["assumpt",{"_index":2131,"t":{"536":{"position":[[1168,10]]},"548":{"position":[[1790,12]]},"612":{"position":[[118,11]]}}}],["async",{"_index":518,"t":{"60":{"position":[[564,5]]},"107":{"position":[[134,5]]},"190":{"position":[[1111,5]]},"192":{"position":[[418,5]]},"578":{"position":[[3299,5]]}}}],["asynchron",{"_index":1793,"t":{"412":{"position":[[34,12]]},"578":{"position":[[3092,12]]}}}],["atom",{"_index":1997,"t":{"506":{"position":[[340,10],[521,9]]},"516":{"position":[[601,10],[638,9],[660,6],[1064,9]]}}}],["attach",{"_index":571,"t":{"70":{"position":[[75,9]]},"372":{"position":[[28,8]]},"551":{"position":[[705,8]]}}}],["attack",{"_index":1717,"t":{"346":{"position":[[212,6],[455,7],[567,8]]},"520":{"position":[[560,8],[1045,6],[1171,8]]},"536":{"position":[[435,9]]},"559":{"position":[[709,7]]}}}],["attempt",{"_index":468,"t":{"50":{"position":[[0,7]]},"224":{"position":[[739,7]]},"226":{"position":[[873,7]]}}}],["attorney",{"_index":2634,"t":{"620":{"position":[[113,10]]}}}],["attribut",{"_index":1666,"t":{"332":{"position":[[107,11],[133,9],[180,9],[243,9],[354,9],[444,9]]},"614":{"position":[[71,11],[299,11]]}}}],["aur",{"_index":861,"t":{"132":{"position":[[469,3],[485,4]]}}}],["authent",{"_index":570,"t":{"70":{"position":[[37,12]]},"364":{"position":[[80,12]]},"434":{"position":[[228,13]]},"438":{"position":[[178,13]]}}}],["author",{"_index":456,"t":{"48":{"position":[[708,9]]}}}],["auto",{"_index":1059,"t":{"176":{"position":[[295,4]]},"190":{"position":[[1975,5],[2120,5]]},"472":{"position":[[111,4]]},"474":{"position":[[137,4]]},"482":{"position":[[84,4],[450,4]]},"484":{"position":[[271,4],[372,5]]}}}],["automat",{"_index":1060,"t":{"176":{"position":[[327,13]]},"240":{"position":[[83,14]]},"440":{"position":[[356,9]]},"500":{"position":[[104,13]]},"506":{"position":[[496,14]]}}}],["autoshard",{"_index":1914,"t":{"486":{"position":[[109,13],[179,12]]}}}],["avail",{"_index":578,"t":{"70":{"position":[[378,9]]},"130":{"position":[[305,9]]},"138":{"position":[[123,9]]},"150":{"position":[[588,9]]},"152":{"position":[[13,9]]},"196":{"position":[[845,9]]},"198":{"position":[[788,9],[1124,9],[1329,9]]},"262":{"position":[[28,9]]},"284":{"position":[[263,9]]},"296":{"position":[[566,9]]},"328":{"position":[[343,13]]},"340":{"position":[[760,12]]},"364":{"position":[[162,9]]},"420":{"position":[[63,9]]},"498":{"position":[[196,9]]},"534":{"position":[[717,10]]},"544":{"position":[[1527,9]]},"546":{"position":[[98,9],[145,9]]},"610":{"position":[[478,12],[1062,9]]},"614":{"position":[[38,9]]}}}],["averag",{"_index":2187,"t":{"544":{"position":[[80,7]]},"546":{"position":[[54,7],[514,7],[530,7]]},"548":{"position":[[2247,7],[2315,7],[2638,7]]},"555":{"position":[[161,7]]},"557":{"position":[[85,7],[394,7]]},"578":{"position":[[2367,7]]},"580":{"position":[[1753,8]]},"582":{"position":[[339,7]]},"586":{"position":[[2141,7]]},"588":{"position":[[445,7]]},"590":{"position":[[296,7],[1080,7],[2017,8]]}}}],["avoid",{"_index":94,"t":{"6":{"position":[[787,8]]},"83":{"position":[[45,8]]},"360":{"position":[[101,8]]},"512":{"position":[[192,8]]}}}],["await",{"_index":358,"t":{"30":{"position":[[246,5]]},"32":{"position":[[242,5],[759,5],[1121,5],[1353,5],[1509,5]]},"34":{"position":[[599,5],[911,5]]},"36":{"position":[[646,5]]},"38":{"position":[[200,5],[251,5]]},"60":{"position":[[218,5],[410,5],[609,5],[857,5],[975,5]]},"66":{"position":[[710,5],[1094,5],[1183,5]]},"68":{"position":[[861,5],[1254,5],[1343,5]]},"70":{"position":[[1772,5],[1832,5],[1890,5],[1946,5],[3304,5]]},"97":{"position":[[185,5],[236,5]]},"99":{"position":[[186,5]]},"105":{"position":[[629,5]]},"107":{"position":[[469,5],[565,5],[632,5]]},"110":{"position":[[428,5]]},"112":{"position":[[537,5],[688,5],[827,5]]},"114":{"position":[[403,5]]},"118":{"position":[[185,5],[236,5],[309,5]]},"120":{"position":[[189,5],[434,5]]},"126":{"position":[[426,5]]},"128":{"position":[[528,5],[720,5],[872,5]]},"192":{"position":[[770,5]]},"476":{"position":[[189,5],[361,5]]},"478":{"position":[[65,5],[207,5]]},"480":{"position":[[65,5],[235,5]]},"482":{"position":[[191,5],[349,5],[523,5]]},"484":{"position":[[523,5],[680,5]]},"520":{"position":[[1101,8]]}}}],["award",{"_index":2647,"t":{"626":{"position":[[561,5]]}}}],["away",{"_index":1945,"t":{"494":{"position":[[253,4]]},"520":{"position":[[626,4]]},"586":{"position":[[536,5]]},"590":{"position":[[1957,4]]}}}],["awesom",{"_index":126,"t":{"6":{"position":[[1324,7]]},"14":{"position":[[433,7]]}}}],["awk",{"_index":1451,"t":{"266":{"position":[[704,3]]}}}],["azur",{"_index":1526,"t":{"286":{"position":[[920,6]]}}}],["b",{"_index":1069,"t":{"176":{"position":[[598,1]]},"310":{"position":[[697,1]]},"524":{"position":[[193,2]]}}}],["b452ed8",{"_index":2409,"t":{"578":{"position":[[1804,8]]}}}],["b6dd6899",{"_index":2396,"t":{"578":{"position":[[801,9]]}}}],["baarerstrass",{"_index":1839,"t":{"450":{"position":[[291,13]]},"608":{"position":[[232,13]]}}}],["back",{"_index":2005,"t":{"508":{"position":[[459,4]]},"530":{"position":[[157,4]]}}}],["backbon",{"_index":1988,"t":{"504":{"position":[[138,8]]}}}],["background",{"_index":1190,"t":{"190":{"position":[[2159,10],[2282,10],[2435,10]]}}}],["backup",{"_index":1548,"t":{"296":{"position":[[515,7],[608,7]]}}}],["backward",{"_index":301,"t":{"26":{"position":[[336,8]]},"110":{"position":[[79,8]]},"162":{"position":[[1172,9]]},"270":{"position":[[1276,8]]}}}],["badli",{"_index":1950,"t":{"494":{"position":[[426,6]]}}}],["balanc",{"_index":693,"t":{"87":{"position":[[70,7]]},"320":{"position":[[235,7]]}}}],["ban",{"_index":2056,"t":{"520":{"position":[[971,3],[1126,3]]}}}],["band",{"_index":555,"t":{"66":{"position":[[1321,4]]},"68":{"position":[[1475,4]]},"70":{"position":[[3124,4]]},"398":{"position":[[7,4]]}}}],["bandwidth",{"_index":1007,"t":{"162":{"position":[[1136,9]]},"308":{"position":[[103,9],[278,10],[355,9]]},"326":{"position":[[253,10],[300,9]]},"330":{"position":[[65,9]]},"420":{"position":[[94,10]]},"446":{"position":[[500,9]]},"498":{"position":[[186,9]]},"532":{"position":[[62,9]]},"534":{"position":[[94,10],[141,10],[465,9],[642,9],[982,9],[1041,9],[1126,9],[1652,9],[1765,10],[1817,10]]},"536":{"position":[[852,9],[1463,9],[2089,10],[2166,9]]},"538":{"position":[[895,10],[1144,9]]},"540":{"position":[[31,9],[310,9]]},"542":{"position":[[41,9]]},"544":{"position":[[592,10],[935,9],[1054,9],[1414,9],[1537,9],[1597,9]]},"546":{"position":[[62,9],[301,9],[402,9],[814,9]]},"548":{"position":[[77,9],[282,9],[359,10],[550,10],[888,9],[957,9],[1012,9],[1162,9],[1258,9],[1331,9],[1400,9],[1620,9],[1850,10],[1963,10],[2010,9],[2392,9],[2503,10],[2646,9]]},"582":{"position":[[115,9]]},"586":{"position":[[294,9],[1541,10],[1566,9],[1598,10]]},"590":{"position":[[605,11],[2079,9],[2156,9]]}}}],["bandwidth/hardwar",{"_index":2191,"t":{"544":{"position":[[420,18]]}}}],["barrier",{"_index":2418,"t":{"578":{"position":[[3550,8]]}}}],["base",{"_index":706,"t":{"93":{"position":[[44,5]]},"132":{"position":[[501,4]]},"278":{"position":[[415,5]]},"282":{"position":[[541,5]]},"284":{"position":[[224,5]]},"296":{"position":[[888,5]]},"332":{"position":[[155,5]]},"362":{"position":[[296,5]]},"372":{"position":[[131,5]]},"416":{"position":[[44,5]]},"440":{"position":[[382,5]]},"446":{"position":[[254,5]]},"460":{"position":[[707,5]]},"494":{"position":[[538,5]]},"498":{"position":[[50,5]]},"506":{"position":[[169,5],[698,5]]},"510":{"position":[[409,5],[719,5]]},"578":{"position":[[511,5]]},"590":{"position":[[952,5]]},"612":{"position":[[65,5],[590,5]]}}}],["base32",{"_index":1341,"t":{"224":{"position":[[297,6]]}}}],["base64",{"_index":1419,"t":{"256":{"position":[[335,7],[530,10]]}}}],["bash",{"_index":835,"t":{"132":{"position":[[89,5]]}}}],["basi",{"_index":1844,"t":{"452":{"position":[[205,5]]},"520":{"position":[[899,6]]},"610":{"position":[[44,5],[1177,5]]}}}],["batteri",{"_index":1799,"t":{"420":{"position":[[128,7]]}}}],["be",{"_index":499,"t":{"58":{"position":[[106,5]]},"188":{"position":[[966,5]]},"274":{"position":[[492,5]]},"312":{"position":[[773,5]]},"354":{"position":[[80,5]]},"362":{"position":[[375,5]]},"366":{"position":[[453,5]]},"534":{"position":[[908,5],[1259,5]]},"536":{"position":[[2893,5]]},"578":{"position":[[47,5],[3607,5]]},"586":{"position":[[115,5]]},"626":{"position":[[1364,5]]}}}],["bear",{"_index":2601,"t":{"612":{"position":[[910,4]]}}}],["becom",{"_index":1550,"t":{"296":{"position":[[639,6]]},"534":{"position":[[1550,8]]}}}],["befor",{"_index":580,"t":{"70":{"position":[[495,6],[1385,6],[1680,6]]},"91":{"position":[[0,6]]},"198":{"position":[[1057,6]]},"202":{"position":[[66,6]]},"290":{"position":[[66,6]]},"460":{"position":[[791,6]]},"476":{"position":[[124,6]]},"478":{"position":[[0,6]]},"480":{"position":[[0,6]]},"482":{"position":[[126,6]]},"484":{"position":[[328,7],[458,6]]},"488":{"position":[[565,6]]},"498":{"position":[[292,6]]},"516":{"position":[[364,6]]},"520":{"position":[[270,6]]},"606":{"position":[[316,6]]}}}],["begin",{"_index":506,"t":{"60":{"position":[[117,6]]},"112":{"position":[[1001,9]]},"232":{"position":[[28,6]]},"236":{"position":[[28,6]]},"238":{"position":[[28,6]]},"534":{"position":[[19,5]]},"590":{"position":[[891,10]]}}}],["behav",{"_index":1948,"t":{"494":{"position":[[343,7],[418,7]]},"574":{"position":[[553,7]]}}}],["behaviour",{"_index":1767,"t":{"362":{"position":[[311,9]]},"490":{"position":[[204,10]]},"506":{"position":[[374,10],[446,9]]},"598":{"position":[[421,10]]}}}],["behind",{"_index":32,"t":{"2":{"position":[[355,6]]},"266":{"position":[[594,6]]}}}],["believ",{"_index":1882,"t":{"460":{"position":[[978,7]]},"616":{"position":[[338,8]]},"626":{"position":[[294,7]]}}}],["below",{"_index":897,"t":{"142":{"position":[[290,5]]},"268":{"position":[[106,5]]},"510":{"position":[[623,7]]},"520":{"position":[[340,5]]},"546":{"position":[[222,5]]},"578":{"position":[[3534,5],[3770,5]]},"594":{"position":[[235,5]]}}}],["benchmark",{"_index":1897,"t":{"468":{"position":[[164,11],[227,10]]},"551":{"position":[[216,10]]}}}],["beneficiary'",{"_index":1775,"t":{"366":{"position":[[300,13]]}}}],["benefit",{"_index":698,"t":{"89":{"position":[[192,7]]},"328":{"position":[[147,8]]},"494":{"position":[[490,9]]},"506":{"position":[[387,7]]},"578":{"position":[[3046,7]]},"596":{"position":[[431,8]]}}}],["besid",{"_index":1781,"t":{"380":{"position":[[145,7]]},"557":{"position":[[261,7]]}}}],["best",{"_index":2510,"t":{"590":{"position":[[1283,4],[1809,4]]}}}],["best/worst",{"_index":2492,"t":{"590":{"position":[[238,10]]}}}],["better",{"_index":685,"t":{"83":{"position":[[234,6]]},"534":{"position":[[111,6]]},"538":{"position":[[943,6]]},"540":{"position":[[236,6]]},"574":{"position":[[561,6]]},"576":{"position":[[737,7]]},"578":{"position":[[1156,6],[1476,7],[3014,6],[3170,6]]}}}],["between",{"_index":226,"t":{"20":{"position":[[244,7],[332,7]]},"66":{"position":[[1278,7]]},"87":{"position":[[78,7]]},"310":{"position":[[47,7]]},"320":{"position":[[243,7]]},"338":{"position":[[79,7]]},"340":{"position":[[1116,7]]},"348":{"position":[[85,7],[134,7]]},"400":{"position":[[117,7]]},"428":{"position":[[64,7]]},"536":{"position":[[2834,7]]},"548":{"position":[[2587,7]]},"551":{"position":[[173,7]]},"572":{"position":[[81,7]]},"586":{"position":[[1384,7],[2044,7]]},"624":{"position":[[62,7]]},"626":{"position":[[1714,7]]},"628":{"position":[[54,7]]}}}],["beyond",{"_index":112,"t":{"6":{"position":[[1021,6]]},"506":{"position":[[845,6]]},"590":{"position":[[1767,7]]}}}],["bid",{"_index":73,"t":{"6":{"position":[[289,4]]}}}],["big",{"_index":2464,"t":{"586":{"position":[[1635,3]]},"590":{"position":[[779,3],[1595,3],[1679,3]]}}}],["bigger",{"_index":2158,"t":{"538":{"position":[[30,6]]},"578":{"position":[[1678,6]]},"586":{"position":[[1479,6]]}}}],["biggest",{"_index":2516,"t":{"590":{"position":[[2309,7]]}}}],["binari",{"_index":823,"t":{"130":{"position":[[223,6]]},"136":{"position":[[16,7]]},"138":{"position":[[32,6]]},"140":{"position":[[89,6]]},"144":{"position":[[168,6]]},"146":{"position":[[215,6]]},"198":{"position":[[232,8]]},"286":{"position":[[39,7],[459,7],[505,6],[535,6],[575,6],[649,8],[693,7],[837,8]]},"288":{"position":[[31,7],[146,6]]}}}],["binaries.yml",{"_index":2397,"t":{"578":{"position":[[879,12],[1951,12]]}}}],["bind",{"_index":1204,"t":{"192":{"position":[[272,4]]},"610":{"position":[[1214,7]]}}}],["bit",{"_index":1066,"t":{"176":{"position":[[572,4]]},"182":{"position":[[792,3]]},"536":{"position":[[2945,3]]},"557":{"position":[[222,4]]}}}],["bitcoin",{"_index":1969,"t":{"500":{"position":[[0,7]]},"502":{"position":[[5,7]]}}}],["bittorr",{"_index":1961,"t":{"498":{"position":[[106,10]]}}}],["block",{"_index":1142,"t":{"190":{"position":[[125,6],[1938,6]]},"312":{"position":[[697,7]]},"334":{"position":[[270,7]]},"500":{"position":[[160,7],[220,6],[234,5],[510,6]]},"561":{"position":[[490,5],[510,6]]},"578":{"position":[[1243,8],[3355,5]]}}}],["blockchain",{"_index":34,"t":{"4":{"position":[[14,10]]},"6":{"position":[[226,11],[509,10]]},"374":{"position":[[113,10]]},"384":{"position":[[120,10]]},"496":{"position":[[74,12]]},"502":{"position":[[158,10]]},"506":{"position":[[398,11],[783,12]]},"512":{"position":[[76,10]]},"551":{"position":[[845,11]]},"561":{"position":[[54,10]]}}}],["blog",{"_index":29,"t":{"2":{"position":[[322,4]]},"324":{"position":[[350,4]]},"344":{"position":[[320,4]]}}}],["bob",{"_index":601,"t":{"70":{"position":[[2206,3],[2473,3]]},"300":{"position":[[142,3],[185,3]]},"318":{"position":[[107,3],[175,4],[180,3],[368,3]]},"336":{"position":[[35,3]]}}}],["bob'",{"_index":1567,"t":{"300":{"position":[[52,5]]},"318":{"position":[[52,5]]}}}],["bobprivatekey",{"_index":602,"t":{"70":{"position":[[2483,13],[2656,14]]}}}],["bodi",{"_index":1158,"t":{"190":{"position":[[1217,6],[2087,4]]}}}],["boilerpl",{"_index":1118,"t":{"186":{"position":[[134,11]]}}}],["boot",{"_index":1268,"t":{"208":{"position":[[44,5]]}}}],["bootstrap",{"_index":176,"t":{"14":{"position":[[179,9]]},"22":{"position":[[776,9],[845,9],[893,9]]},"26":{"position":[[1381,9],[1482,9],[1573,9]]},"28":{"position":[[38,9],[170,9]]},"30":{"position":[[42,13],[183,9],[216,9]]},"32":{"position":[[44,9],[195,9],[502,9],[708,9],[905,9]]},"34":{"position":[[3,9],[551,9],[863,9]]},"36":{"position":[[13,9],[140,9],[281,9],[581,9]]},"74":{"position":[[38,9]]},"118":{"position":[[403,12],[434,9],[471,9],[537,9]]},"176":{"position":[[170,9],[206,9]]},"202":{"position":[[37,9]]},"226":{"position":[[150,9],[195,9],[258,9],[332,9],[359,9],[389,9],[416,9],[494,10],[598,9],[884,9]]},"228":{"position":[[214,9],[645,13]]},"290":{"position":[[37,9],[201,9],[323,9]]},"296":{"position":[[231,14]]},"298":{"position":[[295,9]]},"312":{"position":[[273,13],[452,9]]},"318":{"position":[[372,10]]},"334":{"position":[[48,9]]},"370":{"position":[[0,13]]},"406":{"position":[[148,9]]}}}],["bootstrapp",{"_index":363,"t":{"32":{"position":[[87,14],[266,15],[783,15]]},"36":{"position":[[680,15]]}}}],["border",{"_index":1181,"t":{"190":{"position":[[2055,7],[2363,6],[2462,6]]}}}],["both",{"_index":284,"t":{"22":{"position":[[1584,4]]},"28":{"position":[[483,4]]},"44":{"position":[[176,4]]},"70":{"position":[[920,4]]},"182":{"position":[[604,4],[1152,4]]},"196":{"position":[[549,4]]},"270":{"position":[[1144,4]]},"528":{"position":[[118,4]]},"536":{"position":[[1742,4]]},"574":{"position":[[486,4],[861,4],[1420,4]]},"576":{"position":[[197,4]]},"578":{"position":[[2979,4]]},"628":{"position":[[199,4]]}}}],["bottleneck",{"_index":2381,"t":{"574":{"position":[[1319,10]]},"590":{"position":[[2317,11]]}}}],["bottom",{"_index":1194,"t":{"190":{"position":[[2221,7]]}}}],["bound",{"_index":2563,"t":{"606":{"position":[[403,5]]},"626":{"position":[[404,5]]}}}],["boundari",{"_index":2109,"t":{"534":{"position":[[1629,8]]}}}],["bounti",{"_index":666,"t":{"78":{"position":[[545,8],[654,6]]},"592":{"position":[[218,6]]}}}],["box",{"_index":1740,"t":{"352":{"position":[[211,3]]},"442":{"position":[[165,3]]},"590":{"position":[[264,3]]}}}],["branch",{"_index":878,"t":{"134":{"position":[[60,6]]},"314":{"position":[[252,6],[418,7]]},"588":{"position":[[136,7]]}}}],["break",{"_index":1485,"t":{"274":{"position":[[292,8]]},"344":{"position":[[260,5]]}}}],["brew",{"_index":865,"t":{"132":{"position":[[595,4]]}}}],["briefli",{"_index":1847,"t":{"452":{"position":[[599,7]]}}}],["bring",{"_index":1951,"t":{"494":{"position":[[474,6]]},"506":{"position":[[49,6]]},"576":{"position":[[635,6]]},"626":{"position":[[2061,5]]}}}],["broadcast",{"_index":104,"t":{"6":{"position":[[884,9]]},"68":{"position":[[1452,12]]},"70":{"position":[[3101,12]]},"122":{"position":[[734,12]]},"162":{"position":[[857,12]]}}}],["broadest",{"_index":2640,"t":{"626":{"position":[[34,8]]}}}],["browser",{"_index":159,"t":{"12":{"position":[[206,7]]},"16":{"position":[[258,7]]},"26":{"position":[[1434,7]]},"40":{"position":[[119,7]]},"46":{"position":[[129,9]]},"48":{"position":[[166,9],[204,8],[802,8]]},"80":{"position":[[54,7]]},"83":{"position":[[22,7],[116,7],[189,7]]},"87":{"position":[[50,8],[86,7]]},"89":{"position":[[47,8],[150,8],[435,7]]},"170":{"position":[[444,8]]},"204":{"position":[[390,7]]},"210":{"position":[[39,7],[116,7]]},"290":{"position":[[695,7]]},"298":{"position":[[688,9]]},"304":{"position":[[338,9]]},"338":{"position":[[552,7],[692,8]]},"392":{"position":[[179,8]]}}}],["browser'",{"_index":427,"t":{"46":{"position":[[27,9]]},"48":{"position":[[974,9]]},"89":{"position":[[287,9]]}}}],["bucket",{"_index":1065,"t":{"176":{"position":[[474,6],[557,7]]},"278":{"position":[[400,7]]},"282":{"position":[[175,7]]}}}],["buffer",{"_index":215,"t":{"20":{"position":[[78,7]]},"26":{"position":[[203,7],[276,7]]},"274":{"position":[[476,7],[870,7]]},"280":{"position":[[275,6]]}}}],["bug",{"_index":292,"t":{"24":{"position":[[178,4]]},"602":{"position":[[109,4],[214,4]]},"604":{"position":[[137,4]]}}}],["build",{"_index":59,"t":{"6":{"position":[[37,5],[1181,5]]},"12":{"position":[[341,5]]},"22":{"position":[[81,5],[556,5]]},"26":{"position":[[1242,8],[1285,5]]},"130":{"position":[[38,5],[283,5]]},"132":{"position":[[3,5],[213,5]]},"136":{"position":[[0,5]]},"138":{"position":[[46,8]]},"190":{"position":[[6,5]]},"196":{"position":[[1107,8]]},"198":{"position":[[245,8]]},"258":{"position":[[38,5]]},"264":{"position":[[13,5],[144,5]]},"284":{"position":[[332,6]]},"286":{"position":[[683,5],[727,5],[745,5],[787,5]]},"340":{"position":[[16,8]]},"386":{"position":[[79,5]]},"438":{"position":[[69,5]]},"442":{"position":[[29,5]]},"598":{"position":[[82,8]]},"600":{"position":[[69,5]]},"602":{"position":[[23,8]]}}}],["build/wakunode2",{"_index":890,"t":{"138":{"position":[[99,17],[154,17]]},"144":{"position":[[181,17]]},"146":{"position":[[280,17]]},"148":{"position":[[278,17],[485,17]]},"150":{"position":[[544,17]]},"204":{"position":[[203,17],[339,17]]},"206":{"position":[[987,17],[1276,17],[1567,17],[1729,17]]},"208":{"position":[[173,17],[1030,17]]},"210":{"position":[[561,17],[915,17],[1124,17]]},"212":{"position":[[731,17],[1050,17],[1232,17]]},"214":{"position":[[88,17],[286,17],[517,17]]},"216":{"position":[[99,17],[289,17],[444,17]]},"218":{"position":[[217,17]]},"222":{"position":[[174,17],[399,17]]},"224":{"position":[[522,17],[931,17]]},"226":{"position":[[277,17],[543,17]]},"228":{"position":[[270,17],[587,17],[678,17]]},"288":{"position":[[153,17]]}}}],["built",{"_index":183,"t":{"14":{"position":[[316,5]]},"30":{"position":[[33,5]]},"140":{"position":[[73,5]]},"266":{"position":[[175,5],[1053,5]]},"312":{"position":[[0,5]]},"348":{"position":[[14,5]]},"446":{"position":[[447,5]]}}}],["bunch",{"_index":2415,"t":{"578":{"position":[[3290,5]]}}}],["bundl",{"_index":681,"t":{"83":{"position":[[78,9]]}}}],["burst",{"_index":2128,"t":{"536":{"position":[[1078,5]]},"538":{"position":[[77,7]]}}}],["busi",{"_index":1789,"t":{"400":{"position":[[82,8]]},"578":{"position":[[3703,4]]}}}],["button",{"_index":1171,"t":{"190":{"position":[[1588,7],[1612,7],[2426,6]]}}}],["buy",{"_index":2588,"t":{"610":{"position":[[1694,3],[1734,3]]}}}],["byte",{"_index":237,"t":{"20":{"position":[[427,4]]},"26":{"position":[[2560,5]]},"208":{"position":[[354,4],[533,4],[715,4]]},"224":{"position":[[334,4]]},"278":{"position":[[436,5]]},"282":{"position":[[291,4],[470,5]]},"536":{"position":[[1694,5]]},"551":{"position":[[665,6]]}}}],["bytes/sec",{"_index":1010,"t":{"162":{"position":[[1212,9]]}}}],["bytestohex",{"_index":622,"t":{"72":{"position":[[462,11]]}}}],["bytestohex(privatekey",{"_index":628,"t":{"72":{"position":[[757,23]]}}}],["bytestohex(symmetrickey",{"_index":626,"t":{"72":{"position":[[709,25]]}}}],["c",{"_index":832,"t":{"132":{"position":[[67,1]]},"208":{"position":[[787,1],[800,1],[814,1]]},"310":{"position":[[837,2]]}}}],["c.waku.sandbox.status.im/tcp/30303/p2p/16uiu2hamsjvsjphxrdbniguv5bjrrzfbhttwftsyikaqbycjwmpv",{"_index":1267,"t":{"206":{"position":[[1788,92]]},"214":{"position":[[579,92]]},"216":{"position":[[507,92]]}}}],["c/o",{"_index":1835,"t":{"450":{"position":[[267,3]]},"608":{"position":[[208,3]]}}}],["c078075",{"_index":2398,"t":{"578":{"position":[[913,7],[1985,7]]}}}],["ca",{"_index":457,"t":{"48":{"position":[[718,5]]}}}],["cach",{"_index":1048,"t":{"170":{"position":[[213,5],[270,5]]},"206":{"position":[[18,7]]},"212":{"position":[[448,5],[514,6],[870,5],[894,5],[1209,5],[1321,5]]}}}],["calcul",{"_index":2008,"t":{"510":{"position":[[89,11],[394,11],[698,10]]},"514":{"position":[[73,11]]},"555":{"position":[[194,9]]},"586":{"position":[[966,10],[1932,9]]}}}],["calendar",{"_index":2655,"t":{"626":{"position":[[1073,8]]}}}],["call",{"_index":585,"t":{"70":{"position":[[967,4],[2440,4]]},"146":{"position":[[232,6]]},"230":{"position":[[188,7]]},"274":{"position":[[551,6]]},"294":{"position":[[47,7]]},"536":{"position":[[2391,7]]},"580":{"position":[[564,7]]},"596":{"position":[[59,5]]}}}],["callback",{"_index":516,"t":{"60":{"position":[[450,10],[897,10]]},"66":{"position":[[1134,10],[1236,10]]},"68":{"position":[[1294,10],[1396,10]]},"70":{"position":[[1821,10],[1935,10],[2689,8],[2741,8],[3344,10]]},"105":{"position":[[162,8],[319,9],[333,8],[472,8],[496,8],[682,10]]},"110":{"position":[[481,9]]},"112":{"position":[[228,8],[273,8],[590,10],[880,9]]},"114":{"position":[[456,9]]},"128":{"position":[[56,8],[186,8],[210,8],[760,10]]}}}],["can't",{"_index":2095,"t":{"534":{"position":[[961,5]]},"536":{"position":[[420,5]]},"548":{"position":[[981,5],[1202,5],[1831,5]]}}}],["candid",{"_index":880,"t":{"134":{"position":[[90,9]]}}}],["cap",{"_index":2076,"t":{"532":{"position":[[55,6]]},"534":{"position":[[132,8],[244,7],[269,6],[618,7]]},"536":{"position":[[578,3],[607,3],[647,3],[1447,3],[1756,3],[2082,6]]},"540":{"position":[[24,6]]}}}],["capabl",{"_index":1553,"t":{"296":{"position":[[718,13],[771,13],[909,13]]},"338":{"position":[[897,12]]},"566":{"position":[[34,10]]}}}],["capac",{"_index":971,"t":{"158":{"position":[[839,8]]},"164":{"position":[[241,8]]},"170":{"position":[[219,8],[231,8]]},"206":{"position":[[428,8]]},"212":{"position":[[454,8],[475,8],[900,9],[1215,8]]},"346":{"position":[[95,8]]}}}],["capacity:25000",{"_index":1244,"t":{"206":{"position":[[487,15]]}}}],["capacity:@waku",{"_index":1156,"t":{"190":{"position":[[1171,8]]}}}],["hackathon",{"_index":189,"t":{"14":{"position":[[419,10]]}}}],["hackenproof",{"_index":2524,"t":{"592":{"position":[[238,11]]}}}],["hammer",{"_index":2440,"t":{"580":{"position":[[869,6],[1455,6],[1562,6],[1833,6]]}}}],["hand",{"_index":2313,"t":{"557":{"position":[[13,5]]},"578":{"position":[[157,5]]}}}],["handl",{"_index":72,"t":{"6":{"position":[[268,6]]},"22":{"position":[[1310,6]]},"42":{"position":[[124,6]]},"52":{"position":[[74,6]]},"56":{"position":[[70,6]]},"60":{"position":[[307,6],[1248,6]]},"72":{"position":[[196,8]]},"128":{"position":[[617,6]]}}}],["handleinputchang",{"_index":1150,"t":{"190":{"position":[[522,17]]}}}],["happen",{"_index":509,"t":{"60":{"position":[[324,7]]},"66":{"position":[[1296,6]]},"128":{"position":[[634,7]]},"162":{"position":[[1264,6]]},"536":{"position":[[1322,7]]},"578":{"position":[[3400,7]]},"596":{"position":[[39,6]]}}}],["hard",{"_index":1680,"t":{"336":{"position":[[96,5]]}}}],["hardcod",{"_index":575,"t":{"70":{"position":[[325,9]]}}}],["harm",{"_index":2616,"t":{"616":{"position":[[423,8]]}}}],["harmless",{"_index":2633,"t":{"620":{"position":[[35,8]]}}}],["harry'",{"_index":1575,"t":{"300":{"position":[[456,7],[531,7]]}}}],["hash",{"_index":1497,"t":{"278":{"position":[[460,6]]},"282":{"position":[[186,7],[669,4],[802,4]]},"298":{"position":[[109,4]]},"314":{"position":[[139,4],[291,6]]},"376":{"position":[[57,4]]},"408":{"position":[[95,4]]},"516":{"position":[[83,4]]}}}],["have",{"_index":1966,"t":{"498":{"position":[[299,6]]},"536":{"position":[[824,6],[2868,6]]},"580":{"position":[[49,6]]}}}],["haven't",{"_index":2206,"t":{"544":{"position":[[1442,7]]}}}],["hd",{"_index":2257,"t":{"546":{"position":[[824,2],[839,2]]},"548":{"position":[[2600,2]]}}}],["head",{"_index":672,"t":{"78":{"position":[[670,4]]},"208":{"position":[[794,4]]},"628":{"position":[[268,8]]}}}],["header",{"_index":1421,"t":{"256":{"position":[[410,6],[847,6]]},"292":{"position":[[212,6]]},"294":{"position":[[176,6]]}}}],["health",{"_index":1537,"t":{"294":{"position":[[18,6],[68,6]]}}}],["healthi",{"_index":1541,"t":{"294":{"position":[[212,7]]}}}],["heard",{"_index":2645,"t":{"626":{"position":[[495,5]]}}}],["heavi",{"_index":1509,"t":{"282":{"position":[[138,5]]}}}],["height",{"_index":1179,"t":{"190":{"position":[[2040,7]]}}}],["hel1.wakudev.misc",{"_index":2441,"t":{"580":{"position":[[1090,18]]}}}],["hel1.wakudev.misc.status.im",{"_index":2403,"t":{"578":{"position":[[960,29],[2032,29]]}}}],["held",{"_index":2618,"t":{"618":{"position":[[15,4]]},"626":{"position":[[1519,4]]},"628":{"position":[[532,4]]}}}],["hello",{"_index":805,"t":{"126":{"position":[[259,7]]},"256":{"position":[[485,6]]}}}],["help",{"_index":146,"t":{"10":{"position":[[349,4]]},"24":{"position":[[335,4]]},"42":{"position":[[59,8],[150,4]]},"70":{"position":[[16,5]]},"138":{"position":[[174,4]]},"150":{"position":[[538,5],[564,4]]},"256":{"position":[[987,4]]},"266":{"position":[[985,4]]},"274":{"position":[[280,5]]},"294":{"position":[[326,4]]},"326":{"position":[[285,5]]},"338":{"position":[[11,4]]},"524":{"position":[[131,5]]},"540":{"position":[[289,5]]},"568":{"position":[[276,4]]},"588":{"position":[[268,5]]},"592":{"position":[[253,4]]},"594":{"position":[[145,4]]},"596":{"position":[[407,4]]},"602":{"position":[[369,4],[788,4]]}}}],["helper",{"_index":862,"t":{"132":{"position":[[473,6],[490,7]]}}}],["henc",{"_index":2268,"t":{"548":{"position":[[1314,5]]},"594":{"position":[[83,6]]}}}],["here",{"_index":431,"t":{"46":{"position":[[94,4]]},"93":{"position":[[179,5]]},"112":{"position":[[376,5]]},"152":{"position":[[0,4]]},"274":{"position":[[0,4]]},"276":{"position":[[85,4]]},"310":{"position":[[0,4]]},"320":{"position":[[288,4]]},"346":{"position":[[247,5],[724,5],[869,5]]},"546":{"position":[[155,4]]},"590":{"position":[[340,5],[1031,5]]}}}],["herein",{"_index":2582,"t":{"610":{"position":[[994,6],[1257,6],[1493,7],[1527,6]]},"612":{"position":[[825,6],[1004,7]]},"626":{"position":[[1422,6]]}}}],["hesit",{"_index":294,"t":{"24":{"position":[[223,8]]}}}],["hex",{"_index":951,"t":{"158":{"position":[[247,3]]},"162":{"position":[[516,3],[594,3]]},"208":{"position":[[271,3],[359,3],[385,3],[553,3]]},"396":{"position":[[35,3]]}}}],["hexadecim",{"_index":621,"t":{"72":{"position":[[372,11],[666,11],[806,11]]}}}],["hextobyt",{"_index":623,"t":{"72":{"position":[[474,10]]}}}],["hextobytes(privatekeyhex",{"_index":633,"t":{"72":{"position":[[910,26]]}}}],["hextobytes(symmetrickeyhex",{"_index":631,"t":{"72":{"position":[[854,28]]}}}],["hide",{"_index":1499,"t":{"278":{"position":[[624,4]]},"438":{"position":[[240,6]]}}}],["high",{"_index":1362,"t":{"228":{"position":[[1071,4]]},"280":{"position":[[345,4]]},"494":{"position":[[458,4]]},"536":{"position":[[3001,4]]},"555":{"position":[[461,4]]},"586":{"position":[[59,4]]},"590":{"position":[[711,4]]},"612":{"position":[[500,4],[1027,4]]}}}],["higher",{"_index":2092,"t":{"534":{"position":[[687,6]]},"574":{"position":[[967,6]]},"576":{"position":[[644,6]]},"586":{"position":[[227,6],[272,6]]}}}],["highli",{"_index":297,"t":{"24":{"position":[[312,6]]},"274":{"position":[[838,6]]},"284":{"position":[[139,6]]}}}],["highlight",{"_index":2530,"t":{"596":{"position":[[456,11]]},"600":{"position":[[233,9]]},"604":{"position":[[252,9]]}}}],["hinder",{"_index":2154,"t":{"536":{"position":[[2978,7]]}}}],["histor",{"_index":258,"t":{"22":{"position":[[357,10]]},"26":{"position":[[537,10],[661,10]]},"95":{"position":[[87,10]]},"103":{"position":[[121,10]]},"114":{"position":[[791,10]]},"150":{"position":[[412,10]]},"206":{"position":[[1513,10],[1708,10]]},"272":{"position":[[192,10]]},"308":{"position":[[195,10]]},"440":{"position":[[456,10]]},"490":{"position":[[423,10]]},"508":{"position":[[44,8]]},"561":{"position":[[587,10]]}}}],["histori",{"_index":768,"t":{"112":{"position":[[1025,8]]},"510":{"position":[[755,8]]},"512":{"position":[[48,8]]},"524":{"position":[[229,8]]},"566":{"position":[[154,7]]}}}],["historyqueri",{"_index":2001,"t":{"508":{"position":[[104,12]]},"510":{"position":[[847,12]]}}}],["historyrespons",{"_index":2002,"t":{"508":{"position":[[151,15]]},"510":{"position":[[1038,15]]}}}],["hold",{"_index":2632,"t":{"620":{"position":[[27,4]]}}}],["home/.cargo/env",{"_index":856,"t":{"132":{"position":[[313,18]]}}}],["homebrew",{"_index":844,"t":{"132":{"position":[[181,10]]}}}],["hongkong",{"_index":1266,"t":{"206":{"position":[[1779,8]]},"214":{"position":[[570,8]]},"216":{"position":[[498,8]]}}}],["honour",{"_index":2043,"t":{"520":{"position":[[199,7]]}}}],["hood",{"_index":1410,"t":{"252":{"position":[[172,5]]},"440":{"position":[[653,5]]}}}],["hop",{"_index":1067,"t":{"176":{"position":[[581,3],[628,4]]},"557":{"position":[[518,5]]},"584":{"position":[[614,4],[661,4]]},"586":{"position":[[175,4],[242,5],[473,4],[608,4],[644,3],[909,4],[1148,4],[1308,4],[1352,4],[1876,4]]},"590":{"position":[[1368,3],[1953,3]]}}}],["hopr",{"_index":2029,"t":{"516":{"position":[[688,6]]}}}],["host",{"_index":369,"t":{"32":{"position":[[389,4]]},"170":{"position":[[472,4]]},"222":{"position":[[347,4]]},"228":{"position":[[521,4]]},"266":{"position":[[828,4]]},"374":{"position":[[56,7]]}}}],["host]:[websocket",{"_index":474,"t":{"50":{"position":[[142,16]]}}}],["hour",{"_index":1108,"t":{"182":{"position":[[1290,5]]},"206":{"position":[[698,7],[1268,7]]},"214":{"position":[[509,7],[777,7]]},"510":{"position":[[747,4]]},"512":{"position":[[40,4]]}}}],["http",{"_index":443,"t":{"48":{"position":[[350,8],[612,5]]},"132":{"position":[[256,8],[397,8],[545,8]]},"170":{"position":[[59,4],[136,4],[190,4],[315,4],[520,4]]},"172":{"position":[[198,4]]},"244":{"position":[[65,5]]},"444":{"position":[[17,5]]}}}],["http://127.0.0.1:8645/debug/v1/info",{"_index":1418,"t":{"256":{"position":[[184,37]]},"292":{"position":[[170,37]]}}}],["http://127.0.0.1:8645/debug/v1/vers",{"_index":1417,"t":{"256":{"position":[[110,40]]}}}],["http://127.0.0.1:8645/health",{"_index":1539,"t":{"294":{"position":[[141,30]]}}}],["http://127.0.0.1:8645/relay/v1/auto/messag",{"_index":1420,"t":{"256":{"position":[[359,46]]}}}],["http://127.0.0.1:8645/store/v1/messages?contenttopics=%2fmi",{"_index":1430,"t":{"256":{"position":[[725,60]]}}}],["http://localhost:3000/d/yns_4vfvk/nwaku",{"_index":1413,"t":{"254":{"position":[[6,39]]}}}],["https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.j",{"_index":244,"t":{"20":{"position":[[735,70]]}}}],["https://creativecommons.org/licenses/by/4.0",{"_index":2613,"t":{"614":{"position":[[390,45]]}}}],["https://examples.waku.org",{"_index":184,"t":{"14":{"position":[[336,26]]}}}],["https://examples.waku.org/rln",{"_index":1712,"t":{"344":{"position":[[391,29]]}}}],["https://github.com/spacejam/sl",{"_index":1006,"t":{"162":{"position":[[1091,34]]}}}],["https://github.com/vacp2p/research/issues/148",{"_index":1719,"t":{"346":{"position":[[253,46]]},"362":{"position":[[476,46]]}}}],["https://github.com/waku",{"_index":673,"t":{"78":{"position":[[678,23]]},"93":{"position":[[185,23]]},"134":{"position":[[129,23]]},"246":{"position":[[10,23]]},"264":{"position":[[99,23]]},"346":{"position":[[875,23]]},"514":{"position":[[21,23],[91,23],[164,23],[235,23]]},"518":{"position":[[31,23],[137,23],[225,23],[321,23]]},"522":{"position":[[70,23],[141,23]]},"526":{"position":[[52,23],[145,23]]},"530":{"position":[[42,23],[198,23],[362,23],[504,23]]},"542":{"position":[[172,23]]},"544":{"position":[[1080,23],[1169,23],[1321,23]]},"548":{"position":[[181,23],[2830,23]]},"566":{"position":[[459,23]]},"570":{"position":[[0,23],[42,23]]},"572":{"position":[[122,23]]},"580":{"position":[[1141,23],[1264,23]]},"588":{"position":[[962,23]]}}}],["https://ideas.waku.org",{"_index":125,"t":{"6":{"position":[[1296,23]]}}}],["https://sh.rustup.r",{"_index":854,"t":{"132":{"position":[[280,20],[421,20],[569,20]]}}}],["https://unpkg.com/@waku/sdk@latest/bundle/index.j",{"_index":212,"t":{"18":{"position":[[227,53]]}}}],["https://vac.dev/build",{"_index":1728,"t":{"346":{"position":[[730,24]]}}}],["hub",{"_index":1434,"t":{"262":{"position":[[52,3]]}}}],["huge",{"_index":2515,"t":{"590":{"position":[[2060,4]]}}}],["hundr",{"_index":2629,"t":{"618":{"position":[[537,7]]}}}],["h|m|s|m",{"_index":1092,"t":{"182":{"position":[[526,8]]}}}],["i.",{"_index":2053,"t":{"520":{"position":[[805,5]]},"578":{"position":[[63,4]]}}}],["i13n",{"_index":1928,"t":{"490":{"position":[[176,5],[293,5],[502,5]]},"498":{"position":[[346,4]]},"502":{"position":[[93,4]]},"510":{"position":[[280,4],[1165,4]]}}}],["id",{"_index":943,"t":{"158":{"position":[[39,2],[52,2],[112,2]]},"162":{"position":[[474,2],[537,2]]},"282":{"position":[[233,3],[628,3]]},"580":{"position":[[702,3]]}}}],["id'",{"_index":1516,"t":{"282":{"position":[[807,4]]}}}],["id=\"messag",{"_index":1167,"t":{"190":{"position":[[1481,11]]}}}],["idea",{"_index":121,"t":{"6":{"position":[[1230,5]]},"582":{"position":[[537,4]]},"590":{"position":[[593,4],[1653,4]]}}}],["ideal",{"_index":1996,"t":{"506":{"position":[[329,7]]}}}],["ident",{"_index":992,"t":{"162":{"position":[[491,8],[565,8]]},"358":{"position":[[116,11]]},"438":{"position":[[231,8]]},"516":{"position":[[838,11]]},"520":{"position":[[594,10]]},"536":{"position":[[151,8]]},"563":{"position":[[99,9]]}}}],["identif",{"_index":1756,"t":{"358":{"position":[[311,14]]}}}],["identifi",{"_index":946,"t":{"158":{"position":[[185,10]]},"278":{"position":[[311,12]]},"282":{"position":[[203,10]]},"340":{"position":[[931,12]]},"358":{"position":[[77,11]]},"360":{"position":[[161,12]]},"366":{"position":[[190,8],[344,12]]},"380":{"position":[[68,8]]},"408":{"position":[[21,10]]},"414":{"position":[[46,10]]},"452":{"position":[[653,11]]},"600":{"position":[[172,8]]},"628":{"position":[[277,11]]}}}],["idl",{"_index":1015,"t":{"162":{"position":[[1387,4]]}}}],["ii",{"_index":2077,"t":{"532":{"position":[[86,3]]},"534":{"position":[[583,3]]},"536":{"position":[[1572,3],[2013,3]]},"538":{"position":[[335,3]]},"544":{"position":[[1130,3],[1574,3]]},"582":{"position":[[258,3]]},"584":{"position":[[926,3]]},"626":{"position":[[965,4]]}}}],["illustr",{"_index":1608,"t":{"310":{"position":[[18,12]]}}}],["imag",{"_index":337,"t":{"26":{"position":[[2465,6],[2550,6]]},"144":{"position":[[295,5]]},"262":{"position":[[17,6],[156,6]]},"264":{"position":[[30,5],[157,5],[175,5]]},"266":{"position":[[58,7],[116,5],[129,5]]},"286":{"position":[[857,6]]}}}],["immedi",{"_index":1476,"t":{"270":{"position":[[1075,12]]},"344":{"position":[[203,9]]},"464":{"position":[[185,11]]},"622":{"position":[[217,11]]}}}],["impact",{"_index":2039,"t":{"518":{"position":[[285,6]]},"544":{"position":[[1235,6]]},"553":{"position":[[356,6]]},"566":{"position":[[262,6],[343,7]]},"590":{"position":[[2065,6]]}}}],["implement",{"_index":92,"t":{"6":{"position":[[707,9]]},"12":{"position":[[8,11]]},"16":{"position":[[205,14]]},"85":{"position":[[137,9]]},"342":{"position":[[81,15]]},"344":{"position":[[354,14]]},"394":{"position":[[34,10]]},"434":{"position":[[56,12]]},"456":{"position":[[67,11]]},"468":{"position":[[187,15]]},"559":{"position":[[50,11],[105,11],[165,11]]}}}],["impli",{"_index":2331,"t":{"561":{"position":[[10,7]]},"586":{"position":[[281,7]]},"610":{"position":[[163,8],[1385,7]]},"616":{"position":[[246,5]]}}}],["implic",{"_index":1492,"t":{"276":{"position":[[71,13]]},"551":{"position":[[106,12],[961,12]]}}}],["implicit",{"_index":1978,"t":{"500":{"position":[[287,9]]}}}],["import",{"_index":210,"t":{"18":{"position":[[205,6]]},"20":{"position":[[713,6],[728,6]]},"30":{"position":[[135,6]]},"32":{"position":[[147,6],[1228,6],[1277,6]]},"34":{"position":[[273,6],[318,6],[813,6]]},"36":{"position":[[86,6],[131,6],[178,6]]},"38":{"position":[[123,6]]},"48":{"position":[[181,9]]},"66":{"position":[[162,6],[415,6],[882,6]]},"68":{"position":[[162,6],[570,6],[1051,6]]},"70":{"position":[[563,6],[640,6],[734,6],[2228,6],[2291,6]]},"72":{"position":[[453,6]]},"97":{"position":[[94,6]]},"99":{"position":[[87,6]]},"101":{"position":[[92,6]]},"110":{"position":[[151,6]]},"112":{"position":[[180,6]]},"118":{"position":[[94,6]]},"120":{"position":[[101,6],[323,6]]},"122":{"position":[[86,6]]},"124":{"position":[[83,6]]},"188":{"position":[[182,6],[237,6],[681,6]]},"190":{"position":[[144,6],[189,6],[228,6],[286,6],[321,6]]},"192":{"position":[[208,6]]},"194":{"position":[[194,6]]},"196":{"position":[[223,6]]},"358":{"position":[[143,9]]},"476":{"position":[[131,6],[303,6]]},"478":{"position":[[7,6],[149,6]]},"480":{"position":[[7,6],[177,6]]},"482":{"position":[[133,6],[291,6],[465,6]]},"484":{"position":[[465,6],[622,6]]},"488":{"position":[[572,6],[686,6]]},"516":{"position":[[861,9]]},"534":{"position":[[445,10]]},"586":{"position":[[139,9],[1614,9]]},"590":{"position":[[346,9]]}}}],["impos",{"_index":438,"t":{"48":{"position":[[213,6]]},"316":{"position":[[517,7]]},"324":{"position":[[245,7]]},"340":{"position":[[902,7]]},"422":{"position":[[164,8]]}}}],["imposs",{"_index":2143,"t":{"536":{"position":[[2054,10]]}}}],["improv",{"_index":299,"t":{"24":{"position":[[340,7]]},"282":{"position":[[510,7]]},"298":{"position":[[544,9]]},"338":{"position":[[874,8]]},"536":{"position":[[114,12]]},"544":{"position":[[690,11]]},"602":{"position":[[196,7]]}}}],["in/out",{"_index":2110,"t":{"534":{"position":[[1645,6]]}}}],["incent",{"_index":1727,"t":{"346":{"position":[[679,9]]},"506":{"position":[[704,10],[734,10]]}}}],["incentiv",{"_index":1957,"t":{"496":{"position":[[13,12]]}}}],["incentivis",{"_index":278,"t":{"22":{"position":[[1372,15]]},"28":{"position":[[271,15]]},"344":{"position":[[20,12]]},"346":{"position":[[393,13]]},"350":{"position":[[16,11]]},"442":{"position":[[383,15]]},"490":{"position":[[146,15]]},"494":{"position":[[16,15]]},"506":{"position":[[80,12]]},"510":{"position":[[16,12]]},"528":{"position":[[67,12]]},"530":{"position":[[420,15]]}}}],["incid",{"_index":2521,"t":{"592":{"position":[[126,9]]}}}],["incident",{"_index":2623,"t":{"618":{"position":[[202,11]]}}}],["includ",{"_index":245,"t":{"20":{"position":[[814,7]]},"60":{"position":[[689,8]]},"132":{"position":[[55,9]]},"248":{"position":[[341,7]]},"284":{"position":[[404,8]]},"304":{"position":[[305,9]]},"312":{"position":[[233,9],[591,9]]},"332":{"position":[[84,8]]},"352":{"position":[[5,8]]},"356":{"position":[[364,7]]},"362":{"position":[[392,9]]},"374":{"position":[[131,9]]},"380":{"position":[[182,8]]},"392":{"position":[[171,7]]},"420":{"position":[[84,9]]},"432":{"position":[[68,9]]},"440":{"position":[[223,8],[446,9]]},"502":{"position":[[44,7]]},"604":{"position":[[98,7]]},"606":{"position":[[181,9]]},"610":{"position":[[172,9]]},"612":{"position":[[243,7],[727,9],[1259,9]]},"614":{"position":[[233,9]]},"616":{"position":[[104,9]]},"620":{"position":[[103,9],[210,9]]},"626":{"position":[[74,8],[1873,9]]}}}],["incom",{"_index":921,"t":{"150":{"position":[[163,8]]},"194":{"position":[[129,8]]},"272":{"position":[[141,8]]},"338":{"position":[[666,8]]}}}],["incorpor",{"_index":1588,"t":{"304":{"position":[[104,12]]},"626":{"position":[[1409,12]]}}}],["increas",{"_index":1070,"t":{"176":{"position":[[610,8]]},"280":{"position":[[8,8]]},"312":{"position":[[373,9]]},"494":{"position":[[327,9]]},"555":{"position":[[118,9]]},"557":{"position":[[159,8],[211,8]]},"582":{"position":[[470,10]]},"590":{"position":[[926,10],[1580,9],[2170,8]]}}}],["incur",{"_index":2546,"t":{"600":{"position":[[554,5]]}}}],["inde",{"_index":2118,"t":{"536":{"position":[[525,6]]}}}],["indemnifi",{"_index":2631,"t":{"620":{"position":[[10,9]]}}}],["independ",{"_index":1885,"t":{"462":{"position":[[110,11]]},"490":{"position":[[94,11]]}}}],["index",{"_index":756,"t":{"112":{"position":[[41,5],[793,5]]},"162":{"position":[[318,5],[328,5]]},"190":{"position":[[1248,6]]}}}],["indic",{"_index":501,"t":{"58":{"position":[[277,9]]},"188":{"position":[[930,9]]},"310":{"position":[[216,9]]},"330":{"position":[[177,10]]},"452":{"position":[[433,9]]},"576":{"position":[[687,9]]},"578":{"position":[[3664,9]]},"582":{"position":[[505,9]]},"590":{"position":[[225,8]]}}}],["individu",{"_index":2458,"t":{"586":{"position":[[542,10],[714,10],[2016,10]]}}}],["industri",{"_index":2594,"t":{"612":{"position":[[168,8]]}}}],["inf",{"_index":1365,"t":{"232":{"position":[[84,3]]},"236":{"position":[[93,3]]},"238":{"position":[[96,3]]}}}],["info",{"_index":350,"t":{"28":{"position":[[142,4]]},"50":{"position":[[311,5],[387,5]]},"60":{"position":[[1014,4]]},"62":{"position":[[170,4]]},"70":{"position":[[176,4]]},"105":{"position":[[693,4]]},"107":{"position":[[717,4]]},"112":{"position":[[935,4]]},"114":{"position":[[542,4]]},"118":{"position":[[328,4]]},"122":{"position":[[611,4]]},"124":{"position":[[365,4]]},"130":{"position":[[239,4]]},"142":{"position":[[206,4]]},"146":{"position":[[439,4]]},"148":{"position":[[629,4]]},"156":{"position":[[127,5]]},"190":{"position":[[1697,4]]},"196":{"position":[[825,4]]},"204":{"position":[[695,4]]},"214":{"position":[[697,4]]},"218":{"position":[[304,4]]},"220":{"position":[[117,4]]},"224":{"position":[[673,4]]},"226":{"position":[[796,4]]},"228":{"position":[[837,4]]},"230":{"position":[[0,4],[104,4],[209,4]]},"244":{"position":[[170,4]]},"256":{"position":[[163,4]]},"260":{"position":[[115,4]]},"266":{"position":[[728,4]]},"278":{"position":[[467,4]]},"282":{"position":[[575,4]]},"284":{"position":[[466,4]]},"292":{"position":[[122,4],[562,4]]},"316":{"position":[[231,4]]},"326":{"position":[[264,4]]},"328":{"position":[[234,4]]},"330":{"position":[[306,4]]},"338":{"position":[[838,4]]},"446":{"position":[[169,4]]}}}],["inform",{"_index":577,"t":{"70":{"position":[[366,11]]},"72":{"position":[[273,11]]},"234":{"position":[[39,11]]},"278":{"position":[[257,12],[324,11]]},"292":{"position":[[91,11]]},"310":{"position":[[875,9]]},"316":{"position":[[325,11]]},"320":{"position":[[196,8]]},"340":{"position":[[1573,11]]},"360":{"position":[[174,11]]},"366":{"position":[[357,11]]},"380":{"position":[[210,11]]},"384":{"position":[[51,11]]},"398":{"position":[[33,11]]},"404":{"position":[[47,11]]},"448":{"position":[[78,6]]},"456":{"position":[[191,11]]},"460":{"position":[[937,11]]},"548":{"position":[[34,8]]},"590":{"position":[[986,11]]},"610":{"position":[[1076,13],[1245,11],[1505,11]]},"612":{"position":[[803,11],[982,11],[1246,12]]}}}],["infrastructur",{"_index":96,"t":{"6":{"position":[[808,15]]},"346":{"position":[[774,14]]},"350":{"position":[[153,14]]},"442":{"position":[[134,15],[301,14]]}}}],["infring",{"_index":2571,"t":{"610":{"position":[[278,12]]}}}],["infura",{"_index":1821,"t":{"444":{"position":[[122,6],[146,6]]}}}],["init",{"_index":868,"t":{"132":{"position":[[639,4]]}}}],["initi",{"_index":1707,"t":{"342":{"position":[[73,7]]},"370":{"position":[[21,7]]},"506":{"position":[[856,7]]},"559":{"position":[[8,7]]},"596":{"position":[[17,7],[144,7]]}}}],["initialis",{"_index":637,"t":{"76":{"position":[[0,10],[191,10]]},"196":{"position":[[143,11]]},"296":{"position":[[5,12]]}}}],["inject",{"_index":2063,"t":{"524":{"position":[[200,9]]},"563":{"position":[[211,9]]}}}],["innov",{"_index":1618,"t":{"312":{"position":[[155,10]]}}}],["input",{"_index":1149,"t":{"190":{"position":[[502,5],[1462,6],[1493,6],[2341,5]]},"192":{"position":[[100,5]]}}}],["inputmessag",{"_index":1146,"t":{"190":{"position":[[363,14],[471,12]]},"192":{"position":[[614,12]]}}}],["inputmessage.length",{"_index":1205,"t":{"192":{"position":[[445,19]]}}}],["insecur",{"_index":440,"t":{"48":{"position":[[288,8]]},"52":{"position":[[57,8]]}}}],["insert",{"_index":2067,"t":{"526":{"position":[[129,9]]},"574":{"position":[[8,6],[473,7],[1469,6]]},"580":{"position":[[106,6],[445,6],[1416,9],[1523,9],[1617,6],[1658,6],[1793,9]]}}}],["inspir",{"_index":123,"t":{"6":{"position":[[1254,12]]},"502":{"position":[[169,8]]}}}],["instal",{"_index":204,"t":{"18":{"position":[[0,7],[81,7],[175,10]]},"20":{"position":[[501,7],[583,7],[680,10]]},"26":{"position":[[9,7],[142,12],[445,12],[1347,12]]},"34":{"position":[[47,7],[92,7]]},"64":{"position":[[0,7],[122,7]]},"76":{"position":[[244,9]]},"116":{"position":[[214,12]]},"124":{"position":[[398,12]]},"132":{"position":[[205,7],[341,7],[600,7]]},"186":{"position":[[292,7],[399,7]]},"260":{"position":[[17,9]]}}}],["instanc",{"_index":1960,"t":{"498":{"position":[[92,9]]},"520":{"position":[[1018,9]]},"580":{"position":[[342,9]]}}}],["instanceof",{"_index":521,"t":{"60":{"position":[[732,10]]}}}],["instead",{"_index":393,"t":{"32":{"position":[[1601,7]]},"130":{"position":[[230,8]]},"162":{"position":[[1543,7]]},"218":{"position":[[453,8]]},"270":{"position":[[116,7]]},"278":{"position":[[283,7]]},"358":{"position":[[89,7]]},"484":{"position":[[116,8],[180,8],[285,8]]},"486":{"position":[[51,8]]},"488":{"position":[[137,8],[325,7]]},"532":{"position":[[150,8]]},"553":{"position":[[283,8]]},"559":{"position":[[240,8]]}}}],["institut",{"_index":2518,"t":{"592":{"position":[[50,9]]},"626":{"position":[[1275,11]]}}}],["instruct",{"_index":315,"t":{"26":{"position":[[1331,12],[2436,13]]},"206":{"position":[[856,8]]},"260":{"position":[[64,12]]},"268":{"position":[[122,12],[323,12]]},"340":{"position":[[1776,12]]},"446":{"position":[[59,12]]}}}],["instrument",{"_index":2474,"t":{"588":{"position":[[154,10]]}}}],["integ",{"_index":1089,"t":{"182":{"position":[[379,7],[490,7]]},"546":{"position":[[264,8]]}}}],["integr",{"_index":15,"t":{"2":{"position":[[164,9]]},"6":{"position":[[329,9]]},"12":{"position":[[53,9],[314,11]]},"16":{"position":[[306,9]]},"22":{"position":[[644,9]]},"26":{"position":[[1161,9],[1669,9]]},"64":{"position":[[34,11]]},"70":{"position":[[141,9]]},"184":{"position":[[210,9]]},"186":{"position":[[326,11]]},"196":{"position":[[967,10]]},"338":{"position":[[825,12]]},"364":{"position":[[66,9]]},"424":{"position":[[44,9]]},"434":{"position":[[242,10]]},"438":{"position":[[192,10]]},"600":{"position":[[418,10]]}}}],["intellectu",{"_index":2572,"t":{"610":{"position":[[294,12]]}}}],["intend",{"_index":1734,"t":{"350":{"position":[[5,7]]},"448":{"position":[[66,8]]},"610":{"position":[[1042,8]]}}}],["intention",{"_index":1761,"t":{"362":{"position":[[104,13]]}}}],["inter",{"_index":2512,"t":{"590":{"position":[[1471,5]]}}}],["interact",{"_index":76,"t":{"6":{"position":[[346,12],[520,12]]},"14":{"position":[[87,8]]},"50":{"position":[[56,13]]},"97":{"position":[[62,8]]},"118":{"position":[[62,8]]},"198":{"position":[[478,8],[523,8]]},"212":{"position":[[29,8]]},"240":{"position":[[180,8]]},"242":{"position":[[89,8]]},"256":{"position":[[53,11]]},"270":{"position":[[747,12]]},"284":{"position":[[413,11]]},"292":{"position":[[8,8]]},"296":{"position":[[848,12]]},"302":{"position":[[95,11]]},"310":{"position":[[35,11]]},"402":{"position":[[94,11]]},"444":{"position":[[182,8]]},"454":{"position":[[218,8]]},"512":{"position":[[179,12]]},"594":{"position":[[348,11]]},"596":{"position":[[152,12],[291,12]]}}}],["interconnect",{"_index":2324,"t":{"559":{"position":[[372,14]]}}}],["interest",{"_index":1460,"t":{"268":{"position":[[243,10]]},"278":{"position":[[120,10]]},"412":{"position":[[155,9]]},"414":{"position":[[74,8],[112,10]]},"452":{"position":[[699,8]]},"584":{"position":[[531,10]]}}}],["interfac",{"_index":169,"t":{"14":{"position":[[44,9]]},"190":{"position":[[19,9],[1159,11],[1989,9]]},"194":{"position":[[171,10]]},"198":{"position":[[577,9]]}}}],["intern",{"_index":2609,"t":{"614":{"position":[[87,13]]},"626":{"position":[[1325,13],[1972,13]]}}}],["internal/priv",{"_index":1901,"t":{"472":{"position":[[178,16]]}}}],["internet",{"_index":1788,"t":{"392":{"position":[[97,8],[135,8]]},"534":{"position":[[542,8]]},"544":{"position":[[114,8]]}}}],["interoper",{"_index":224,"t":{"20":{"position":[[190,17]]},"26":{"position":[[314,17]]}}}],["interpret",{"_index":2675,"t":{"628":{"position":[[423,14]]}}}],["interv",{"_index":2179,"t":{"538":{"position":[[1121,8]]}}}],["introduc",{"_index":1599,"t":{"306":{"position":[[275,10]]},"490":{"position":[[447,9]]},"500":{"position":[[12,10],[391,10]]}}}],["invalid",{"_index":484,"t":{"52":{"position":[[81,7],[188,10]]},"500":{"position":[[243,8]]},"628":{"position":[[537,7]]}}}],["invest",{"_index":2412,"t":{"578":{"position":[[3177,8]]}}}],["investig",{"_index":486,"t":{"52":{"position":[[230,11]]},"602":{"position":[[462,14],[610,14],[696,11],[802,14]]}}}],["invoc",{"_index":888,"t":{"136":{"position":[[54,10]]}}}],["involv",{"_index":1563,"t":{"298":{"position":[[593,8]]},"320":{"position":[[113,8]]},"334":{"position":[[478,8]]},"340":{"position":[[236,8]]},"494":{"position":[[766,8]]},"516":{"position":[[1045,9]]},"586":{"position":[[786,8]]}}}],["io4qdxtotg86ppck2kvmevcxc2advzwrxxsvnzeaoa0jhshbm5qed69rqz1s1mweeqj3aoklo_7eu9iibcpmveklcqbgmlkgny0ixnly3ayntzrmaeddbhk1gx6y_zv5dvw5qb3dtsommvhtzo1wsorrf2lol2ddwrwgimohxdha3uyaw",{"_index":1354,"t":{"226":{"position":[[618,177]]},"238":{"position":[[218,177],[441,177]]}}}],["ip",{"_index":370,"t":{"32":{"position":[[394,4]]},"160":{"position":[[161,3]]},"174":{"position":[[224,3]]},"176":{"position":[[365,2],[389,2],[439,2],[481,2],[530,2]]},"204":{"position":[[778,2]]},"218":{"position":[[103,2]]},"222":{"position":[[352,4]]},"224":{"position":[[443,3],[669,3],[906,3]]},"228":{"position":[[526,4]]},"266":{"position":[[573,3],[638,3]]},"278":{"position":[[99,2]]},"312":{"position":[[243,3]]},"314":{"position":[[513,2]]},"334":{"position":[[259,3]]},"452":{"position":[[549,2],[620,2],[727,2],[833,2]]}}}],["ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamqcsh9v81xoqtwgut3qwkzwbwy1tttqwpr3djhu2tswmn",{"_index":1374,"t":{"232":{"position":[[391,80]]}}}],["ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamubpqufqqje3jiqob5yoiubbya59nb4qqezeitnghea6w",{"_index":1532,"t":{"292":{"position":[[269,82]]}}}],["ip4/0.0.0.0/tcp/60002/ws/p2p/16uiu2hakzjwwgeaxfegnmkfpspc6vgbrqcdtlg5q3gmk2v4pqw7h",{"_index":377,"t":{"32":{"position":[[528,86],[931,86]]},"36":{"position":[[307,86]]}}}],["ip4/0.0.0.0/tcp/60003/ws/p2p/16uiu2hamfba7lgtwy5wvvikdmxvo3cklqkmvvtudu63fe8safeqj",{"_index":378,"t":{"32":{"position":[[615,86],[1018,86]]},"36":{"position":[[394,86]]}}}],["ip4/0.0.0.0/tcp/8000/ws/p2p/16uiu2hamqcsh9v81xoqtwgut3qwkzwbwy1tttqwpr3djhu2tswmn",{"_index":1375,"t":{"232":{"position":[[502,82]]}}}],["ipf",{"_index":345,"t":{"26":{"position":[[2640,4]]},"340":{"position":[[970,5],[1041,4]]},"502":{"position":[[81,5]]}}}],["ipt",{"_index":2470,"t":{"586":{"position":[[2005,3]]}}}],["ipv4",{"_index":982,"t":{"160":{"position":[[294,4]]},"204":{"position":[[18,4],[67,4]]}}}],["ish",{"_index":2297,"t":{"553":{"position":[[29,4],[92,4]]}}}],["isload",{"_index":1135,"t":{"188":{"position":[[791,9],[918,11]]},"190":{"position":[[641,9]]}}}],["isn't",{"_index":321,"t":{"26":{"position":[[1737,5]]}}}],["issu",{"_index":141,"t":{"10":{"position":[[264,6]]},"24":{"position":[[243,5]]},"26":{"position":[[2103,6]]},"42":{"position":[[15,6]]},"48":{"position":[[673,6],[909,6]]},"54":{"position":[[322,5],[397,6]]},"60":{"position":[[1097,7]]},"256":{"position":[[902,6]]},"266":{"position":[[900,6]]},"294":{"position":[[241,6]]},"520":{"position":[[549,7]]},"530":{"position":[[29,6]]},"532":{"position":[[5,5]]},"542":{"position":[[11,5]]},"544":{"position":[[1034,5],[1307,6],[1495,5]]},"551":{"position":[[137,5]]},"580":{"position":[[37,6]]},"584":{"position":[[824,5]]},"598":{"position":[[485,6],[621,7]]},"602":{"position":[[480,7],[880,6],[912,5]]}}}],["it'",{"_index":339,"t":{"26":{"position":[[2510,4]]},"48":{"position":[[176,4]]},"286":{"position":[[190,4]]},"506":{"position":[[875,4]]},"548":{"position":[[802,4]]},"561":{"position":[[462,4]]},"582":{"position":[[230,4]]},"590":{"position":[[740,4],[2255,4]]}}}],["item",{"_index":1196,"t":{"190":{"position":[[2315,6]]},"604":{"position":[[262,5]]}}}],["itself",{"_index":925,"t":{"150":{"position":[[458,7]]},"206":{"position":[[1559,7]]},"510":{"position":[[156,6]]},"557":{"position":[[273,6]]},"563":{"position":[[255,7]]},"574":{"position":[[1359,6]]},"590":{"position":[[1526,7]]}}}],["iu4qbkyj8ovxwz4fialxz_1a8docu2wc",{"_index":1379,"t":{"236":{"position":[[212,32],[445,32]]}}}],["iu4qcqzxzdb_jsymloyor0f5e_95hbiywgo_wgx2riddbmcjzktzmlcr0wmmzv47lgik_tvwww5ming90ris83tismbgmlkgny0gmlwhaaaaacjc2vjcdi1nmsxoqpszztg",{"_index":1534,"t":{"292":{"position":[[371,131]]}}}],["javascript",{"_index":161,"t":{"12":{"position":[[227,10]]},"16":{"position":[[23,10],[151,10]]},"26":{"position":[[70,10],[1453,10],[1722,10]]},"46":{"position":[[161,10]]},"184":{"position":[[23,10]]},"198":{"position":[[594,10]]}}}],["javascript/typescript",{"_index":158,"t":{"12":{"position":[[167,21]]}}}],["jmeter",{"_index":2390,"t":{"576":{"position":[[416,7],[584,6],[787,6]]}}}],["join",{"_index":1231,"t":{"202":{"position":[[3,4]]},"290":{"position":[[3,4]]}}}],["jq",{"_index":849,"t":{"132":{"position":[[240,2]]}}}],["js",{"_index":291,"t":{"24":{"position":[[112,3],[256,2]]},"78":{"position":[[266,2],[425,2]]},"114":{"position":[[878,2]]},"128":{"position":[[1076,2]]},"270":{"position":[[796,2]]},"344":{"position":[[387,3],[421,3]]}}}],["json",{"_index":240,"t":{"20":{"position":[[447,4]]},"26":{"position":[[425,5]]},"156":{"position":[[278,4]]}}}],["judg",{"_index":2646,"t":{"626":{"position":[[506,6]]}}}],["jump",{"_index":2463,"t":{"586":{"position":[[1342,4]]}}}],["juri",{"_index":2648,"t":{"626":{"position":[[615,4]]}}}],["jurisdict",{"_index":2581,"t":{"610":{"position":[[826,13]]},"626":{"position":[[650,14]]}}}],["k",{"_index":482,"t":{"52":{"position":[[50,1],[128,1]]},"280":{"position":[[17,1]]},"282":{"position":[[584,1],[595,1],[771,1],[829,1]]},"520":{"position":[[346,1],[404,1]]}}}],["kademlia'",{"_index":1068,"t":{"176":{"position":[[587,10]]}}}],["kb",{"_index":2363,"t":{"574":{"position":[[293,3]]}}}],["kbyte",{"_index":2123,"t":{"536":{"position":[[817,6],[1034,6],[1623,6]]},"538":{"position":[[502,6]]}}}],["kbytes/msg",{"_index":2168,"t":{"538":{"position":[[726,10]]}}}],["kbytes/sec",{"_index":2170,"t":{"538":{"position":[[743,10],[785,10]]}}}],["keen",{"_index":2527,"t":{"594":{"position":[[107,4]]},"602":{"position":[[361,4]]},"604":{"position":[[55,4],[180,4]]}}}],["keep",{"_index":309,"t":{"26":{"position":[[866,7]]},"68":{"position":[[279,4]]},"80":{"position":[[177,4]]},"136":{"position":[[136,4]]},"162":{"position":[[1348,4],[1372,4]]},"270":{"position":[[1088,4],[1271,4]]},"276":{"position":[[113,4]]},"520":{"position":[[98,5]]},"544":{"position":[[411,4]]},"551":{"position":[[888,4]]},"578":{"position":[[1708,5]]}}}],["kept",{"_index":2662,"t":{"626":{"position":[[1742,4]]}}}],["key",{"_index":430,"t":{"46":{"position":[[89,4],[172,3]]},"66":{"position":[[43,3],[157,4],[258,3],[641,3],[1265,3],[1357,3]]},"68":{"position":[[31,3],[64,3],[157,4],[274,4],[353,3],[374,4],[521,3],[792,3],[996,3],[1440,3]]},"70":{"position":[[313,3],[536,4],[855,3],[935,4],[1292,3],[1360,3],[1587,3],[1655,3],[2045,3],[2134,3],[2388,3],[2815,3],[2896,3],[3078,3]]},"72":{"position":[[27,4],[140,4],[187,3],[269,3],[364,4],[554,4],[658,4],[796,4]]},"150":{"position":[[136,3]]},"154":{"position":[[182,3]]},"158":{"position":[[232,3]]},"162":{"position":[[477,3],[507,3],[551,3],[585,3],[837,3],[849,3]]},"180":{"position":[[213,3],[239,3]]},"208":{"position":[[26,3],[144,3],[215,4],[258,3],[495,3],[546,3],[629,3],[728,3],[829,3],[846,3],[1015,3]]},"210":{"position":[[461,3],[488,3],[707,3],[734,3],[1058,3],[1197,3]]},"224":{"position":[[284,5],[346,3]]},"250":{"position":[[34,3]]},"278":{"position":[[379,5],[456,3]]},"282":{"position":[[244,4]]},"348":{"position":[[118,3]]},"396":{"position":[[7,3],[55,3]]},"408":{"position":[[121,4]]},"438":{"position":[[104,3]]},"580":{"position":[[624,3],[687,3]]}}}],["key={index",{"_index":1160,"t":{"190":{"position":[[1265,11]]}}}],["key]@[domain",{"_index":405,"t":{"34":{"position":[[433,12]]},"224":{"position":[[603,12]]}}}],["keystore/keystore.json",{"_index":1405,"t":{"250":{"position":[[314,22]]}}}],["kind",{"_index":938,"t":{"156":{"position":[[211,4]]},"610":{"position":[[146,5]]}}}],["kit",{"_index":175,"t":{"14":{"position":[[172,3]]}}}],["knowledg",{"_index":1701,"t":{"340":{"position":[[1285,9]]},"416":{"position":[[58,9]]},"510":{"position":[[427,9]]},"512":{"position":[[134,10]]}}}],["known",{"_index":1544,"t":{"296":{"position":[[222,5]]},"510":{"position":[[732,5]]},"548":{"position":[[2080,5]]},"626":{"position":[[2160,5]]}}}],["l",{"_index":886,"t":{"134":{"position":[[197,1]]}}}],["laid",{"_index":1868,"t":{"460":{"position":[[240,4]]}}}],["languag",{"_index":151,"t":{"12":{"position":[[78,9]]},"626":{"position":[[1765,8]]}}}],["laptop",{"_index":2188,"t":{"544":{"position":[[88,6]]},"548":{"position":[[600,7]]}}}],["larg",{"_index":1695,"t":{"340":{"position":[[1057,6],[1178,5]]},"346":{"position":[[123,5]]}}}],["larger",{"_index":1623,"t":{"312":{"position":[[567,6]]}}}],["last",{"_index":781,"t":{"114":{"position":[[710,4]]},"182":{"position":[[688,4]]},"206":{"position":[[1246,4]]},"448":{"position":[[13,4]]},"606":{"position":[[13,4]]}}}],["lastmessag",{"_index":760,"t":{"112":{"position":[[628,11]]}}}],["late",{"_index":1995,"t":{"506":{"position":[[122,4]]}}}],["latenc",{"_index":1620,"t":{"312":{"position":[[411,8]]},"320":{"position":[[279,8]]},"334":{"position":[[186,8]]},"557":{"position":[[569,7]]},"586":{"position":[[1376,7]]},"588":{"position":[[453,7]]},"590":{"position":[[1482,7]]}}}],["latency=100m",{"_index":2479,"t":{"588":{"position":[[430,14]]}}}],["later",{"_index":1613,"t":{"310":{"position":[[929,5]]},"328":{"position":[[121,6]]},"524":{"position":[[292,6]]}}}],["latest",{"_index":290,"t":{"24":{"position":[[76,6]]},"76":{"position":[[354,6]]},"130":{"position":[[92,6]]},"286":{"position":[[606,6]]},"561":{"position":[[140,6]]}}}],["latitud",{"_index":2360,"t":{"574":{"position":[[241,8]]}}}],["launch",{"_index":1408,"t":{"252":{"position":[[0,6]]}}}],["law",{"_index":2578,"t":{"610":{"position":[[708,4],[976,5]]},"618":{"position":[[639,4]]},"624":{"position":[[6,3],[145,4]]},"626":{"position":[[66,3]]}}}],["lawsuit",{"_index":2668,"t":{"626":{"position":[[2241,7]]}}}],["layer",{"_index":93,"t":{"6":{"position":[[741,5],[824,5],[908,5]]},"356":{"position":[[16,6]]},"358":{"position":[[46,7]]},"446":{"position":[[248,5]]}}}],["lead",{"_index":1269,"t":{"208":{"position":[[50,7]]},"358":{"position":[[283,7]]},"520":{"position":[[722,5]]}}}],["leaf",{"_index":1631,"t":{"314":{"position":[[402,4]]}}}],["leak",{"_index":1705,"t":{"340":{"position":[[1556,4]]}}}],["learn",{"_index":25,"t":{"2":{"position":[[286,5]]},"22":{"position":[[68,5],[189,5],[324,5],[458,5],[592,5],[727,5],[880,5],[1009,5],[1133,5],[1265,5]]},"26":{"position":[[494,5],[628,5]]},"118":{"position":[[515,5]]},"138":{"position":[[182,5]]},"140":{"position":[[174,5]]},"196":{"position":[[1157,5]]},"198":{"position":[[80,5]]},"238":{"position":[[815,5]]},"242":{"position":[[51,5]]},"256":{"position":[[1199,5]]},"266":{"position":[[1163,5]]},"272":{"position":[[308,5]]},"288":{"position":[[178,5]]},"294":{"position":[[519,5]]},"298":{"position":[[443,5]]},"314":{"position":[[537,8]]},"340":{"position":[[121,5]]},"440":{"position":[[533,5]]}}}],["leav",{"_index":2130,"t":{"536":{"position":[[1116,5]]},"548":{"position":[[2514,7]]},"559":{"position":[[658,7]]}}}],["led",{"_index":2486,"t":{"588":{"position":[[834,3]]}}}],["legal",{"_index":1833,"t":{"450":{"position":[[212,5]]},"452":{"position":[[199,5]]},"608":{"position":[[152,5]]},"610":{"position":[[431,9],[785,7],[1565,6]]},"618":{"position":[[93,5]]}}}],["legal@free.technolog",{"_index":1890,"t":{"466":{"position":[[89,22]]},"628":{"position":[[902,22]]}}}],["legisl",{"_index":1845,"t":{"452":{"position":[[245,12]]},"458":{"position":[[713,12]]},"460":{"position":[[269,12]]}}}],["legitim",{"_index":1848,"t":{"452":{"position":[[688,10]]}}}],["leobago",{"_index":2213,"t":{"546":{"position":[[175,8]]}}}],["less",{"_index":1071,"t":{"176":{"position":[[623,4]]},"444":{"position":[[263,5]]},"548":{"position":[[437,5],[1085,4],[1803,4]]},"586":{"position":[[237,4],[248,4]]}}}],["let",{"_index":915,"t":{"148":{"position":[[232,4]]},"534":{"position":[[14,4]]},"536":{"position":[[687,4]]},"538":{"position":[[202,4]]}}}],["let'",{"_index":1140,"t":{"190":{"position":[[0,5]]},"210":{"position":[[1303,5]]},"586":{"position":[[0,5]]}}}],["level",{"_index":909,"t":{"148":{"position":[[99,5]]},"156":{"position":[[35,5],[76,5],[105,7]]},"230":{"position":[[113,6]]},"272":{"position":[[98,5]]},"372":{"position":[[68,5]]},"458":{"position":[[297,5]]},"578":{"position":[[1723,5]]},"586":{"position":[[64,6]]}}}],["leverag",{"_index":1786,"t":{"388":{"position":[[57,9]]},"394":{"position":[[64,9]]},"594":{"position":[[150,8]]}}}],["liabil",{"_index":1887,"t":{"462":{"position":[[179,9]]},"536":{"position":[[2954,9]]},"618":{"position":[[73,10],[484,9],[572,9]]}}}],["liabl",{"_index":2617,"t":{"616":{"position":[[498,6]]},"618":{"position":[[20,6]]}}}],["lib",{"_index":864,"t":{"132":{"position":[[527,4]]}}}],["libp2p",{"_index":387,"t":{"32":{"position":[[1377,7]]},"34":{"position":[[623,7],[935,7]]},"36":{"position":[[670,7]]},"42":{"position":[[86,6]]},"44":{"position":[[195,7]]},"46":{"position":[[277,6]]},"62":{"position":[[185,6]]},"150":{"position":[[172,6]]},"158":{"position":[[318,6],[755,6]]},"228":{"position":[[890,6]]},"300":{"position":[[655,6]]},"318":{"position":[[117,6]]},"322":{"position":[[126,6]]},"340":{"position":[[298,6]]},"348":{"position":[[30,7]]},"354":{"position":[[0,6]]},"358":{"position":[[60,6]]},"386":{"position":[[0,6]]},"574":{"position":[[723,8]]}}}],["libp2p'",{"_index":1735,"t":{"350":{"position":[[75,8]]}}}],["libp2p.getp",{"_index":416,"t":{"38":{"position":[[66,17]]}}}],["libp2p/bootstrap",{"_index":415,"t":{"36":{"position":[[157,20]]}}}],["libp2p/websocket",{"_index":384,"t":{"32":{"position":[[1255,21]]}}}],["libp2p/websockets/filt",{"_index":386,"t":{"32":{"position":[[1310,29]]}}}],["libpq",{"_index":858,"t":{"132":{"position":[[372,5]]}}}],["libpq.5.dylib",{"_index":871,"t":{"132":{"position":[[672,13]]}}}],["libpq5",{"_index":848,"t":{"132":{"position":[[233,6]]}}}],["libpqisbusi",{"_index":2419,"t":{"578":{"position":[[3641,13]]}}}],["librari",{"_index":839,"t":{"132":{"position":[[130,8]]},"424":{"position":[[16,10]]},"598":{"position":[[47,9]]},"602":{"position":[[392,8]]}}}],["licenc",{"_index":2611,"t":{"614":{"position":[[138,7],[342,8]]}}}],["licens",{"_index":1891,"t":{"466":{"position":[[129,8]]},"614":{"position":[[101,7]]},"628":{"position":[[942,8]]}}}],["light",{"_index":253,"t":{"22":{"position":[[167,5],[231,5],[253,5],[380,5]]},"56":{"position":[[169,5],[211,5]]},"66":{"position":[[699,5]]},"68":{"position":[[850,5]]},"70":{"position":[[1750,5]]},"95":{"position":[[47,5]]},"97":{"position":[[47,5],[161,5]]},"114":{"position":[[816,5]]},"116":{"position":[[88,5],[126,5]]},"118":{"position":[[47,5],[161,5]]},"122":{"position":[[191,7]]},"126":{"position":[[49,5],[415,5]]},"128":{"position":[[1018,5],[1070,5],[1083,5]]},"188":{"position":[[297,5],[437,5],[604,5],[759,5],[841,5]]},"190":{"position":[[609,5],[1080,5]]},"192":{"position":[[387,5]]},"214":{"position":[[25,5]]},"216":{"position":[[25,5],[51,5],[163,5]]},"278":{"position":[[23,5]]},"290":{"position":[[527,5]]},"296":{"position":[[800,5]]},"308":{"position":[[289,5]]},"316":{"position":[[165,5]]},"326":{"position":[[23,5]]},"330":{"position":[[0,5],[321,5]]},"366":{"position":[[522,5]]},"382":{"position":[[34,5]]},"388":{"position":[[2,5]]},"390":{"position":[[0,5],[34,5]]},"406":{"position":[[57,5]]},"476":{"position":[[56,5]]},"504":{"position":[[245,5],[292,5],[455,5],[526,5],[615,5],[677,5],[717,5]]},"508":{"position":[[16,5]]},"516":{"position":[[934,5]]},"530":{"position":[[459,5]]},"548":{"position":[[723,5],[1573,5],[1689,5]]},"551":{"position":[[549,5]]}}}],["lightn",{"_index":2028,"t":{"516":{"position":[[674,10]]}}}],["lightnodeprovid",{"_index":1123,"t":{"188":{"position":[[90,17],[246,17],[484,18],[535,20]]}}}],["lightpush",{"_index":409,"t":{"34":{"position":[[520,10]]},"36":{"position":[[550,10]]},"168":{"position":[[31,9],[54,9],[125,9]]},"182":{"position":[[1087,9]]},"216":{"position":[[81,9],[245,9],[400,9]]},"504":{"position":[[281,10],[990,10]]},"530":{"position":[[475,10]]}}}],["lightpush.send",{"_index":800,"t":{"126":{"position":[[110,16]]}}}],["lightpush:0/0",{"_index":1100,"t":{"182":{"position":[[1070,14]]}}}],["lightpush=tru",{"_index":1325,"t":{"216":{"position":[[119,14]]}}}],["lightpushnod",{"_index":1045,"t":{"168":{"position":[[85,13]]},"216":{"position":[[191,13]]}}}],["lightpushnode=/dns4/nod",{"_index":1327,"t":{"216":{"position":[[464,24]]}}}],["lightpushnode=[light",{"_index":1326,"t":{"216":{"position":[[309,20]]}}}],["lightpush|filter|px|store|storev2|storev3",{"_index":1087,"t":{"182":{"position":[[318,41]]}}}],["lightweight",{"_index":1491,"t":{"274":{"position":[[924,11]]},"284":{"position":[[11,11]]},"326":{"position":[[149,11]]},"382":{"position":[[158,11]]}}}],["like",{"_index":77,"t":{"6":{"position":[[364,5]]}}}],["limit",{"_index":326,"t":{"26":{"position":[[1784,12]]},"48":{"position":[[228,11]]},"80":{"position":[[143,11]]},"91":{"position":[[72,12]]},"176":{"position":[[392,5],[484,5]]},"182":{"position":[[36,5],[113,5],[681,6],[873,5],[1123,8]]},"250":{"position":[[186,7],[248,6]]},"308":{"position":[[73,7],[347,7]]},"312":{"position":[[720,7]]},"316":{"position":[[87,7]]},"324":{"position":[[60,5],[153,5]]},"326":{"position":[[245,7]]},"330":{"position":[[57,7]]},"334":{"position":[[293,7]]},"340":{"position":[[1224,8],[1256,8]]},"344":{"position":[[90,5],[149,7]]},"352":{"position":[[259,7]]},"356":{"position":[[314,12]]},"362":{"position":[[418,5]]},"388":{"position":[[27,7]]},"416":{"position":[[5,5],[93,8]]},"420":{"position":[[9,7]]},"422":{"position":[[63,5],[135,5]]},"430":{"position":[[130,7]]},"436":{"position":[[137,7]]},"440":{"position":[[281,8]]},"452":{"position":[[10,5]]},"454":{"position":[[19,7]]},"460":{"position":[[40,5]]},"526":{"position":[[110,5]]},"532":{"position":[[114,8],[301,8],[323,6]]},"534":{"position":[[587,7]]},"536":{"position":[[202,5],[227,5],[450,8],[711,5],[761,7],[2266,8],[2340,11],[3129,6]]},"538":{"position":[[917,5]]},"540":{"position":[[162,6],[201,5],[320,6]]},"542":{"position":[[277,5]]},"544":{"position":[[917,8],[994,7],[1396,5]]},"548":{"position":[[2435,7],[2774,5]]},"559":{"position":[[519,7]]},"566":{"position":[[83,5]]},"574":{"position":[[676,11]]},"582":{"position":[[125,11]]},"600":{"position":[[533,11]]},"610":{"position":[[190,10]]},"618":{"position":[[513,7],[558,10]]},"620":{"position":[[228,10]]},"626":{"position":[[570,8],[2039,12]]},"628":{"position":[[402,6]]}}}],["line",{"_index":892,"t":{"138":{"position":[[141,4]]},"142":{"position":[[83,4],[314,4]]},"144":{"position":[[51,4],[272,4]]},"146":{"position":[[516,4]]},"148":{"position":[[705,4]]},"154":{"position":[[85,4]]},"198":{"position":[[859,4]]},"548":{"position":[[832,5]]}}}],["link",{"_index":870,"t":{"132":{"position":[[664,4]]},"278":{"position":[[94,4]]},"358":{"position":[[275,7]]},"360":{"position":[[110,7],[364,6],[502,6]]},"366":{"position":[[407,4],[501,4]]},"462":{"position":[[37,5]]},"506":{"position":[[351,6]]},"590":{"position":[[827,5]]},"610":{"position":[[613,6]]},"616":{"position":[[39,5],[182,7]]}}}],["linkabl",{"_index":1774,"t":{"366":{"position":[[284,8]]}}}],["linux",{"_index":827,"t":{"130":{"position":[[319,5]]},"132":{"position":[[169,5]]},"208":{"position":[[287,6],[462,6]]}}}],["list",{"_index":186,"t":{"14":{"position":[[374,4]]},"32":{"position":[[23,4],[478,4],[881,4]]},"34":{"position":[[204,4],[230,4],[393,4]]},"36":{"position":[[257,4]]},"105":{"position":[[220,4]]},"107":{"position":[[191,4]]},"174":{"position":[[119,4]]},"194":{"position":[[394,4]]},"224":{"position":[[190,4],[366,4],[884,5]]},"266":{"position":[[203,4]]},"312":{"position":[[462,4],[574,4],[745,6],[880,8]]},"334":{"position":[[416,4]]},"490":{"position":[[512,4]]},"510":{"position":[[1096,4]]}}}],["listen",{"_index":787,"t":{"122":{"position":[[769,6]]},"150":{"position":[[152,6]]},"158":{"position":[[258,6],[296,9],[383,9]]},"170":{"position":[[106,9],[163,9]]},"172":{"position":[[123,9],[188,9]]},"176":{"position":[[122,9]]},"180":{"position":[[114,9]]},"198":{"position":[[1652,9]]},"210":{"position":[[286,9],[636,9]]},"212":{"position":[[229,9],[348,9],[793,9],[839,9]]},"230":{"position":[[63,9]]},"232":{"position":[[40,9],[118,9],[359,9],[474,9]]},"238":{"position":[[668,9]]},"266":{"position":[[833,10]]},"292":{"position":[[611,9]]},"338":{"position":[[485,9]]},"396":{"position":[[86,9]]}}}],["listenaddress",{"_index":1531,"t":{"292":{"position":[[248,18],[571,15]]}}}],["litig",{"_index":2642,"t":{"626":{"position":[[277,10],[474,10]]}}}],["live",{"_index":2031,"t":{"516":{"position":[[832,5]]},"528":{"position":[[162,4]]},"588":{"position":[[541,4]]},"604":{"position":[[32,5]]}}}],["ln",{"_index":874,"t":{"132":{"position":[[740,2]]}}}],["load",{"_index":109,"t":{"6":{"position":[[991,5]]},"154":{"position":[[43,5]]},"252":{"position":[[144,6]]},"298":{"position":[[268,4]]},"316":{"position":[[536,4]]},"376":{"position":[[129,4]]}}}],["local",{"_index":368,"t":{"32":{"position":[[383,5],[1546,5],[1693,8],[1749,7]]},"46":{"position":[[57,5]]},"48":{"position":[[499,8]]},"72":{"position":[[290,5]]},"210":{"position":[[887,5]]},"222":{"position":[[341,5]]},"228":{"position":[[515,5]]},"264":{"position":[[36,8]]},"266":{"position":[[181,7]]},"494":{"position":[[636,5]]},"522":{"position":[[47,5]]},"561":{"position":[[214,7]]},"574":{"position":[[223,7]]},"578":{"position":[[735,8]]},"610":{"position":[[970,5]]}}}],["localhost",{"_index":449,"t":{"48":{"position":[[516,9]]},"170":{"position":[[629,12]]}}}],["locat",{"_index":352,"t":{"30":{"position":[[90,6]]},"198":{"position":[[1798,6]]},"224":{"position":[[379,9]]},"256":{"position":[[101,8],[175,8],[350,8],[716,8]]},"292":{"position":[[161,8]]},"294":{"position":[[132,8]]},"296":{"position":[[171,6]]},"304":{"position":[[35,8]]},"370":{"position":[[136,6]]},"404":{"position":[[30,7]]},"544":{"position":[[1560,9]]}}}],["lock",{"_index":1982,"t":{"500":{"position":[[448,4]]}}}],["log",{"_index":273,"t":{"22":{"position":[[1186,4]]},"26":{"position":[[2044,4]]},"40":{"position":[[59,4]]},"42":{"position":[[47,4],[140,4]]},"44":{"position":[[16,4],[112,4],[167,4],[246,4]]},"46":{"position":[[14,4],[230,4],[290,4],[321,4]]},"50":{"position":[[435,3]]},"148":{"position":[[95,3],[179,7]]},"156":{"position":[[31,3],[72,3],[162,3],[219,4]]},"172":{"position":[[238,7],[266,8]]},"198":{"position":[[634,4],[693,4],[742,4],[1712,4]]},"230":{"position":[[109,3],[177,4]]},"232":{"position":[[13,3],[73,3]]},"236":{"position":[[13,3],[82,3]]},"238":{"position":[[13,3],[85,3]]},"252":{"position":[[208,4],[281,4]]}}}],["log(1000)/log(6",{"_index":2461,"t":{"586":{"position":[[1029,16]]}}}],["log(total_nodes)/log(d)=5",{"_index":2317,"t":{"557":{"position":[[492,25]]}}}],["logging.logformat.text",{"_index":937,"t":{"156":{"position":[[173,22]]}}}],["logging.loglevel.info",{"_index":932,"t":{"156":{"position":[[41,21]]}}}],["logic",{"_index":1790,"t":{"400":{"position":[[91,5]]}}}],["logo",{"_index":1829,"t":{"450":{"position":[[135,5],[238,5],[350,8],[417,5]]},"608":{"position":[[75,5],[179,5],[291,8],[368,5]]}}}],["long",{"_index":49,"t":{"4":{"position":[[297,4]]},"206":{"position":[[278,4]]},"340":{"position":[[804,4],[1064,4]]},"516":{"position":[[827,4]]},"534":{"position":[[232,4]]},"538":{"position":[[146,4]]},"586":{"position":[[1321,4]]},"602":{"position":[[721,4]]}}}],["longer",{"_index":1907,"t":{"482":{"position":[[27,6]]},"557":{"position":[[321,8]]}}}],["look",{"_index":117,"t":{"6":{"position":[[1161,7]]},"22":{"position":[[7,4]]},"56":{"position":[[125,4]]},"72":{"position":[[175,4],[1076,4]]},"114":{"position":[[860,4]]},"116":{"position":[[202,4]]},"118":{"position":[[459,4]]},"124":{"position":[[377,4]]},"128":{"position":[[1058,4]]},"138":{"position":[[221,4]]},"140":{"position":[[125,4]]},"150":{"position":[[633,4]]},"182":{"position":[[1467,4]]},"196":{"position":[[883,4],[1051,4]]},"232":{"position":[[0,4]]},"236":{"position":[[0,4]]},"238":{"position":[[0,4],[733,4]]},"256":{"position":[[1122,4]]},"266":{"position":[[1114,4]]},"272":{"position":[[266,4]]},"288":{"position":[[243,4]]},"294":{"position":[[470,4]]},"298":{"position":[[407,4]]},"440":{"position":[[638,4]]},"444":{"position":[[82,4],[299,4]]},"446":{"position":[[7,4]]},"538":{"position":[[962,7]]},"580":{"position":[[19,4]]},"612":{"position":[[37,7],[213,7],[549,7]]}}}],["lookup",{"_index":1072,"t":{"176":{"position":[[637,6]]},"314":{"position":[[4,6],[169,6],[320,6]]}}}],["lose",{"_index":2093,"t":{"534":{"position":[[747,6],[1533,6]]}}}],["loss",{"_index":2369,"t":{"574":{"position":[[661,4]]}}}],["lost",{"_index":2368,"t":{"574":{"position":[[612,4],[930,4]]},"618":{"position":[[127,4]]}}}],["lot",{"_index":1562,"t":{"298":{"position":[[569,4]]},"348":{"position":[[51,3]]}}}],["low",{"_index":1601,"t":{"308":{"position":[[99,3]]},"312":{"position":[[407,3],[420,3]]},"316":{"position":[[386,3]]},"334":{"position":[[182,3],[195,3]]},"362":{"position":[[343,3]]},"494":{"position":[[559,3]]},"544":{"position":[[475,4]]},"548":{"position":[[355,3],[546,3]]}}}],["lower",{"_index":2457,"t":{"586":{"position":[[487,5]]},"590":{"position":[[678,5],[1836,6],[2129,5]]}}}],["lowest",{"_index":2281,"t":{"548":{"position":[[2240,6],[2308,6],[2450,6]]}}}],["luckili",{"_index":2321,"t":{"559":{"position":[[132,8]]}}}],["m",{"_index":2044,"t":{"520":{"position":[[297,1],[397,2]]},"584":{"position":[[210,1],[284,2]]},"586":{"position":[[1859,1]]}}}],["machin",{"_index":1415,"t":{"254":{"position":[[137,8]]},"578":{"position":[[936,7],[2008,7]]},"580":{"position":[[1066,7]]}}}],["maco",{"_index":828,"t":{"130":{"position":[[329,6]]},"132":{"position":[[175,5]]}}}],["made",{"_index":1429,"t":{"256":{"position":[[666,4]]},"544":{"position":[[1261,5]]},"610":{"position":[[1057,4]]},"614":{"position":[[33,4]]}}}],["magnitud",{"_index":2280,"t":{"548":{"position":[[2183,9],[3022,9]]}}}],["main",{"_index":1644,"t":{"320":{"position":[[301,4]]},"398":{"position":[[98,4]]},"534":{"position":[[936,4]]},"544":{"position":[[912,4]]},"551":{"position":[[156,4],[579,4]]}}}],["main.jsx",{"_index":1122,"t":{"188":{"position":[[7,8]]}}}],["mainli",{"_index":2201,"t":{"544":{"position":[[986,7]]},"588":{"position":[[144,6]]}}}],["maintain",{"_index":81,"t":{"6":{"position":[[414,8]]},"162":{"position":[[1163,8]]},"208":{"position":[[86,8]]},"284":{"position":[[105,8]]},"414":{"position":[[155,8]]},"456":{"position":[[128,8]]},"506":{"position":[[880,10]]},"604":{"position":[[63,8]]}}}],["mainten",{"_index":1675,"t":{"334":{"position":[[374,11]]}}}],["major",{"_index":881,"t":{"134":{"position":[[104,5]]},"536":{"position":[[1130,8]]}}}],["make",{"_index":834,"t":{"132":{"position":[[83,5]]},"136":{"position":[[24,4],[49,4],[121,4],[179,4]]},"140":{"position":[[24,4]]},"248":{"position":[[242,4]]},"264":{"position":[[163,4]]},"270":{"position":[[638,4]]},"320":{"position":[[191,4]]},"328":{"position":[[75,6]]},"346":{"position":[[114,6],[153,5],[445,5]]},"366":{"position":[[237,6]]},"454":{"position":[[138,6]]},"568":{"position":[[178,5]]},"576":{"position":[[433,4]]},"580":{"position":[[1462,6],[1569,6],[1840,6]]},"610":{"position":[[367,4],[716,4]]},"626":{"position":[[97,4],[953,7]]}}}],["malici",{"_index":1724,"t":{"346":{"position":[[474,9]]}}}],["manag",{"_index":206,"t":{"18":{"position":[[59,8]]},"20":{"position":[[561,8]]},"22":{"position":[[1232,6],[1278,6]]},"26":{"position":[[2143,6],[2353,6]]},"56":{"position":[[38,6]]},"58":{"position":[[145,6]]},"60":{"position":[[1211,7]]},"64":{"position":[[100,8]]},"89":{"position":[[262,10]]},"162":{"position":[[441,11]]},"186":{"position":[[377,8]]},"374":{"position":[[68,10]]}}}],["mani",{"_index":684,"t":{"83":{"position":[[184,4]]},"322":{"position":[[350,4]]},"362":{"position":[[89,4]]},"412":{"position":[[191,4]]},"418":{"position":[[213,4]]},"500":{"position":[[362,4]]}}}],["manner",{"_index":2454,"t":{"584":{"position":[[429,7]]},"626":{"position":[[388,7]]}}}],["manual",{"_index":348,"t":{"26":{"position":[[2731,8]]},"578":{"position":[[872,6],[1944,6]]}}}],["map",{"_index":1454,"t":{"266":{"position":[[766,8]]}}}],["margin",{"_index":1176,"t":{"190":{"position":[[1965,7],[2214,6],[2398,6]]}}}],["market",{"_index":100,"t":{"6":{"position":[[851,7]]},"612":{"position":[[181,7],[620,6]]}}}],["marketplac",{"_index":71,"t":{"6":{"position":[[242,13]]}}}],["massiv",{"_index":2140,"t":{"536":{"position":[[1834,9]]}}}],["master",{"_index":879,"t":{"134":{"position":[[70,7]]}}}],["match",{"_index":458,"t":{"48":{"position":[[728,5]]},"310":{"position":[[588,5],[983,8],[1095,5]]},"504":{"position":[[885,5]]},"508":{"position":[[329,7]]}}}],["math",{"_index":2164,"t":{"538":{"position":[[384,4]]}}}],["matrix",{"_index":1936,"t":{"494":{"position":[[54,7]]}}}],["matter",{"_index":2305,"t":{"555":{"position":[[51,6]]},"586":{"position":[[1102,6]]},"598":{"position":[[330,6]]},"610":{"position":[[1475,7]]},"612":{"position":[[437,7],[1123,7]]}}}],["max",{"_index":968,"t":{"158":{"position":[[710,3],[774,3]]},"166":{"position":[[297,3],[400,3]]},"538":{"position":[[614,4],[706,4],[758,4]]}}}],["maximum",{"_index":970,"t":{"158":{"position":[[729,7],[790,7],[848,7]]},"166":{"position":[[321,7],[418,7]]},"176":{"position":[[401,7],[492,7]]},"534":{"position":[[1033,7]]},"536":{"position":[[973,7],[1455,7],[1531,7],[1576,7],[2215,7]]},"538":{"position":[[887,7]]},"542":{"position":[[33,7],[109,7],[239,7]]},"544":{"position":[[1406,7],[1589,7]]},"548":{"position":[[69,7]]},"574":{"position":[[0,7],[444,7],[1461,7]]},"586":{"position":[[891,7]]},"610":{"position":[[669,7]]},"618":{"position":[[600,7]]}}}],["mb/gb",{"_index":1246,"t":{"206":{"position":[[543,6]]}}}],["mbits/sec",{"_index":2175,"t":{"538":{"position":[[822,10]]}}}],["mbp",{"_index":2098,"t":{"534":{"position":[[1220,4],[1423,5],[1662,6]]},"542":{"position":[[56,4],[289,4]]},"544":{"position":[[960,4],[1484,5],[1610,4]]},"546":{"position":[[93,4],[332,5],[428,4],[489,6],[503,6],[734,6],[755,6],[829,4],[844,4],[859,4]]},"548":{"position":[[1993,4],[2302,5],[2368,5],[2572,5],[2786,4]]}}}],["mbytes/",{"_index":2136,"t":{"536":{"position":[[1478,8],[1657,8],[1730,8]]}}}],["mbytes/sec",{"_index":2173,"t":{"538":{"position":[[806,10]]}}}],["mbytes/second",{"_index":2127,"t":{"536":{"position":[[1047,14]]}}}],["mean",{"_index":526,"t":{"60":{"position":[[1119,4]]},"182":{"position":[[740,5]]},"270":{"position":[[447,5]]},"310":{"position":[[140,5]]},"360":{"position":[[10,5]]},"458":{"position":[[197,5]]},"536":{"position":[[3215,7]]},"548":{"position":[[1367,7],[1484,7]]},"555":{"position":[[228,5]]},"576":{"position":[[52,5]]},"584":{"position":[[573,5]]},"606":{"position":[[375,5]]},"626":{"position":[[43,7]]},"628":{"position":[[760,4]]}}}],["meant",{"_index":2271,"t":{"548":{"position":[[1869,5]]}}}],["measur",{"_index":1772,"t":{"364":{"position":[[149,8]]},"452":{"position":[[803,8]]},"456":{"position":[[101,8]]},"528":{"position":[[105,7]]},"576":{"position":[[769,8]]},"584":{"position":[[716,8]]},"586":{"position":[[1406,8]]},"588":{"position":[[182,7],[514,13]]}}}],["mechan",{"_index":91,"t":{"6":{"position":[[682,9]]},"28":{"position":[[198,10]]},"89":{"position":[[416,10]]},"198":{"position":[[1314,10]]},"202":{"position":[[136,11]]},"220":{"position":[[184,10]]},"290":{"position":[[136,11],[363,9],[452,9]]},"296":{"position":[[146,9],[961,11]]},"298":{"position":[[55,9]]},"304":{"position":[[135,11],[187,10]]},"306":{"position":[[313,9]]},"350":{"position":[[28,10]]},"362":{"position":[[226,9]]},"376":{"position":[[27,9]]},"378":{"position":[[34,9]]},"406":{"position":[[34,9]]},"428":{"position":[[25,9]]},"438":{"position":[[117,10]]},"502":{"position":[[185,11]]},"510":{"position":[[1170,10]]},"516":{"position":[[1084,10]]},"520":{"position":[[975,9]]},"551":{"position":[[53,9]]}}}],["media",{"_index":110,"t":{"6":{"position":[[1004,5],[1101,5]]},"26":{"position":[[2536,5],[2603,5]]}}}],["median",{"_index":2217,"t":{"546":{"position":[[287,6],[718,6],[741,6]]},"588":{"position":[[637,6]]}}}],["meet",{"_index":1479,"t":{"272":{"position":[[225,4]]},"548":{"position":[[1208,4],[1544,7],[1608,7]]},"626":{"position":[[305,5]]}}}],["member",{"_index":667,"t":{"78":{"position":[[577,7]]},"340":{"position":[[1636,7]]},"551":{"position":[[906,7]]},"561":{"position":[[257,7],[344,7],[404,7]]}}}],["membership",{"_index":988,"t":{"162":{"position":[[307,10],[772,10]]},"244":{"position":[[159,10]]},"250":{"position":[[8,10],[283,10],[520,11]]},"252":{"position":[[130,10]]},"444":{"position":[[213,10],[495,11]]},"536":{"position":[[165,11],[344,10],[665,11],[731,11],[917,11],[1556,11],[1608,12],[1677,12],[2644,10],[2882,10],[3048,10]]},"538":{"position":[[273,10],[423,11],[444,10]]},"540":{"position":[[354,12]]},"551":{"position":[[367,10],[488,11]]}}}],["memori",{"_index":1253,"t":{"206":{"position":[[897,6]]},"420":{"position":[[110,7]]},"534":{"position":[[1726,7]]},"544":{"position":[[584,7]]},"553":{"position":[[366,6]]},"563":{"position":[[70,6]]}}}],["mempool",{"_index":103,"t":{"6":{"position":[[874,9]]}}}],["menduist",{"_index":2476,"t":{"588":{"position":[[250,9]]}}}],["mention",{"_index":2094,"t":{"534":{"position":[[836,7]]}}}],["merchant",{"_index":2569,"t":{"610":{"position":[[219,16]]}}}],["merg",{"_index":662,"t":{"78":{"position":[[489,5]]},"524":{"position":[[93,5]]}}}],["merkl",{"_index":1003,"t":{"162":{"position":[[1071,6]]}}}],["mesh",{"_index":1545,"t":{"296":{"position":[[368,5],[418,5]]},"298":{"position":[[384,4]]},"588":{"position":[[237,5]]}}}],["messag",{"_index":11,"t":{"2":{"position":[[115,9]]},"4":{"position":[[156,9],[371,10]]},"6":{"position":[[471,7]]},"20":{"position":[[24,7],[142,7]]},"22":{"position":[[152,8],[219,8],[294,8],[368,8],[449,8],[547,8]]},"26":{"position":[[232,7],[382,9],[548,8],[589,8],[672,8],[753,9],[782,7],[879,8],[946,8],[1012,8],[1121,8]]},"56":{"position":[[154,8]]},"58":{"position":[[93,8],[241,7]]},"60":{"position":[[401,8],[681,7]]},"62":{"position":[[114,8],[134,7],[444,7]]},"66":{"position":[[51,7],[325,9],[354,7],[383,7],[505,7],[584,7],[660,8],[685,7],[774,8],[815,7],[847,8],[972,7],[1058,8],[1157,8]]},"68":{"position":[[463,9],[489,7],[538,7],[653,7],[732,7],[811,8],[836,7],[925,8],[963,7],[1016,8],[1134,7],[1218,8],[1317,8],[1545,7]]},"70":{"position":[[0,7],[62,9],[102,8],[189,8],[458,7],[487,7],[871,8],[904,7],[990,7],[1145,8],[1235,7],[1311,8],[1376,8],[1445,8],[1527,7],[1606,8],[1671,8],[1727,8],[2190,7],[2404,8],[2465,7],[2553,8],[2717,7],[2786,7],[3014,7],[3206,7],[3264,7]]},"72":{"position":[[51,7],[1014,8]]},"78":{"position":[[338,7]]},"95":{"position":[[98,8]]},"101":{"position":[[41,8],[75,7],[226,7]]},"103":{"position":[[142,9]]},"105":{"position":[[120,8],[291,7],[380,9],[448,9],[769,8]]},"107":{"position":[[90,8],[262,7],[348,9],[456,8],[530,8],[554,8],[778,8]]},"110":{"position":[[213,8],[312,8]]},"112":{"position":[[62,9],[132,8],[252,8],[461,8],[496,8],[755,8],[771,7]]},"114":{"position":[[57,8],[117,8],[294,8],[591,7],[656,7],[720,8],[802,8]]},"116":{"position":[[107,8],[159,8]]},"122":{"position":[[57,7],[235,7],[411,8],[520,7],[569,8],[656,8],[747,8]]},"124":{"position":[[26,7],[67,7],[130,7]]},"126":{"position":[[8,8],[83,7],[153,7],[250,8],[297,7],[401,7]]},"128":{"position":[[11,8],[78,7],[278,7],[711,8],[841,8],[977,8]]},"150":{"position":[[332,9],[423,8],[450,7]]},"154":{"position":[[201,7]]},"162":{"position":[[1196,7]]},"164":{"position":[[133,7],[170,7],[354,7],[449,7],[556,7]]},"166":{"position":[[137,8]]},"168":{"position":[[148,8]]},"170":{"position":[[262,7]]},"190":{"position":[[41,8],[67,9],[417,10],[678,7],[867,7],[1066,7],[1293,9],[1573,11],[1739,7],[1851,7],[2143,8],[2332,8]]},"192":{"position":[[8,8],[373,7],[496,7],[605,8],[648,7]]},"194":{"position":[[11,8],[138,9],[271,8],[313,9],[402,8]]},"196":{"position":[[11,8],[201,9],[337,8],[354,9],[430,8],[472,9],[567,8],[904,8]]},"206":{"position":[[10,7],[151,8],[212,7],[283,8],[712,7],[764,8],[904,7],[1030,7],[1092,7],[1221,8],[1319,7],[1365,7],[1524,8],[1551,7],[1675,8],[1719,9]]},"212":{"position":[[506,7],[1201,7]]},"214":{"position":[[265,8],[454,8]]},"216":{"position":[[268,8],[423,8]]},"240":{"position":[[240,9]]},"250":{"position":[[127,8],[218,8],[460,8]]},"252":{"position":[[59,9]]},"256":{"position":[[229,7],[598,8]]},"270":{"position":[[678,8]]},"272":{"position":[[66,8],[150,8],[203,8]]},"274":{"position":[[317,9],[420,7],[632,9]]},"280":{"position":[[172,9],[290,7],[454,7],[490,7],[614,7]]},"282":{"position":[[124,9],[407,8],[550,8]]},"296":{"position":[[74,7],[460,8]]},"306":{"position":[[98,8],[150,7],[227,8]]},"308":{"position":[[206,9],[257,8],[312,7]]},"310":{"position":[[157,8],[251,8],[343,9],[444,8],[574,8],[661,7],[769,7],[915,8],[974,8],[1081,8]]},"322":{"position":[[89,8],[193,9]]},"324":{"position":[[162,8]]},"326":{"position":[[72,8],[416,9]]},"328":{"position":[[42,8],[206,8],[403,8]]},"330":{"position":[[167,9],[275,8]]},"332":{"position":[[5,7],[51,8],[205,7],[397,7],[506,8]]},"340":{"position":[[156,9],[219,8],[550,7],[619,9],[684,8],[866,10],[1025,9],[1392,7],[1502,8],[1591,7],[1701,8]]},"344":{"position":[[170,9]]},"360":{"position":[[270,7],[323,8],[390,9]]},"362":{"position":[[94,9]]},"364":{"position":[[180,7]]},"372":{"position":[[40,8],[98,7]]},"382":{"position":[[83,8]]},"390":{"position":[[54,8]]},"400":{"position":[[28,7],[97,7],[228,7]]},"410":{"position":[[115,7]]},"412":{"position":[[47,9],[87,8],[131,8]]},"414":{"position":[[189,8]]},"418":{"position":[[98,7]]},"422":{"position":[[144,8]]},"426":{"position":[[56,8],[123,8]]},"432":{"position":[[5,7],[38,8]]},"434":{"position":[[5,7],[181,7]]},"436":{"position":[[58,9]]},"440":{"position":[[33,9],[95,10],[467,7]]},"490":{"position":[[434,9]]},"504":{"position":[[863,8],[947,8],[1035,7]]},"508":{"position":[[53,8],[303,7],[316,7],[508,9]]},"512":{"position":[[377,8]]},"524":{"position":[[35,9],[183,9],[215,8]]},"526":{"position":[[121,7]]},"530":{"position":[[265,7],[347,8]]},"532":{"position":[[332,7]]},"534":{"position":[[754,8],[815,9],[1250,8],[1540,9]]},"536":{"position":[[260,7],[274,7],[501,7],[798,7],[937,8],[1247,8],[1584,7],[1630,7],[1700,7],[2017,7],[2277,7],[2370,7],[2682,8],[2766,8],[2842,9],[2930,9],[3086,8],[3179,8],[3245,8],[3388,8]]},"538":{"position":[[119,8],[484,7],[577,8]]},"540":{"position":[[209,7],[263,8]]},"544":{"position":[[289,9]]},"551":{"position":[[395,7],[722,8],[786,8]]},"555":{"position":[[74,8],[208,7],[267,8],[476,8]]},"557":{"position":[[172,7],[302,7],[413,8]]},"559":{"position":[[473,8]]},"561":{"position":[[304,9]]},"563":{"position":[[180,8]]},"566":{"position":[[58,8],[146,7],[237,8]]},"568":{"position":[[48,7]]},"574":{"position":[[161,8],[271,7],[381,9],[599,8],[653,7],[779,8],[916,8],[950,7],[1031,8]]},"578":{"position":[[219,8],[428,8]]},"580":{"position":[[310,8],[452,7],[1426,8],[1533,8],[1803,8]]},"582":{"position":[[77,7],[182,7],[262,7],[318,8],[416,7],[485,7],[558,8]]},"584":{"position":[[86,8],[166,8],[202,7],[339,8],[480,8],[586,7],[681,7],[779,7],[886,7],[1009,7]]},"586":{"position":[[17,7],[187,7],[391,7],[580,7],[683,7],[921,7],[1134,8],[1290,7],[1465,9],[1490,8],[1639,7],[1654,7],[1705,8],[1758,7],[1851,7],[1946,7],[2094,7]]},"588":{"position":[[73,7],[804,8],[855,9]]},"590":{"position":[[31,7],[167,7],[372,8],[783,7],[1062,8],[1207,8],[1518,7],[1554,7],[1599,9],[1683,9],[2179,7]]}}}],["message'",{"_index":1693,"t":{"340":{"position":[[750,9]]}}}],["message/10",{"_index":2122,"t":{"536":{"position":[[779,10]]}}}],["message/payload",{"_index":733,"t":{"105":{"position":[[540,15]]},"107":{"position":[[655,15]]}}}],["message/proto",{"_index":1490,"t":{"274":{"position":[[752,13]]}}}],["messageindex\\\"\\ndetail",{"_index":2435,"t":{"580":{"position":[[661,25]]}}}],["messageobj",{"_index":811,"t":{"128":{"position":[[334,10],[382,10]]}}}],["messages.map((messag",{"_index":1159,"t":{"190":{"position":[[1224,23]]}}}],["messages.push(wakumessag",{"_index":758,"t":{"112":{"position":[[303,27]]}}}],["messages/minut",{"_index":2327,"t":{"559":{"position":[[487,16]]}}}],["messages/sec",{"_index":2125,"t":{"536":{"position":[[1016,12]]}}}],["messages[messages.length",{"_index":761,"t":{"112":{"position":[[642,24]]}}}],["messagespromis",{"_index":741,"t":{"107":{"position":[[482,16]]}}}],["messagespromises.map(async",{"_index":744,"t":{"107":{"position":[[584,26]]}}}],["messeng",{"_index":57,"t":{"6":{"position":[[5,11],[1033,11]]}}}],["meta",{"_index":1668,"t":{"332":{"position":[[238,4]]}}}],["metadata",{"_index":1477,"t":{"272":{"position":[[19,8]]},"432":{"position":[[110,8]]}}}],["metal",{"_index":2400,"t":{"578":{"position":[[944,6],[2016,6]]},"580":{"position":[[1074,6]]}}}],["method",{"_index":313,"t":{"26":{"position":[[1066,8],[1492,6]]},"30":{"position":[[56,6],[226,6]]},"62":{"position":[[161,8],[270,6],[471,8]]},"66":{"position":[[1326,7]]},"68":{"position":[[1480,8]]},"70":{"position":[[352,7],[3129,7]]},"72":{"position":[[1060,8]]},"76":{"position":[[63,8]]},"89":{"position":[[221,7]]},"105":{"position":[[73,6],[310,8]]},"107":{"position":[[281,8]]},"118":{"position":[[444,7],[526,7]]},"138":{"position":[[341,7]]},"142":{"position":[[66,8],[265,6]]},"144":{"position":[[86,8]]},"146":{"position":[[477,6]]},"148":{"position":[[666,6]]},"158":{"position":[[460,6]]},"182":{"position":[[1498,7]]},"192":{"position":[[282,6]]},"198":{"position":[[776,7],[969,7]]},"210":{"position":[[32,6]]},"288":{"position":[[274,7]]},"312":{"position":[[287,6]]},"340":{"position":[[383,6],[577,7]]},"344":{"position":[[131,7],[377,6]]},"370":{"position":[[109,7]]},"398":{"position":[[117,6]]},"400":{"position":[[202,7]]},"434":{"position":[[169,7]]},"502":{"position":[[98,7]]},"518":{"position":[[17,7]]},"626":{"position":[[1602,7]]}}}],["metric",{"_index":913,"t":{"148":{"position":[[171,7]]},"172":{"position":[[31,7],[63,7],[90,7],[148,7],[163,7],[215,7],[230,7],[258,7]]},"240":{"position":[[258,7]]},"252":{"position":[[85,7]]},"254":{"position":[[75,7]]},"528":{"position":[[52,7]]},"563":{"position":[[151,7]]}}}],["microsoft",{"_index":1525,"t":{"286":{"position":[[910,9]]}}}],["migrat",{"_index":1035,"t":{"164":{"position":[[567,9],[598,9]]},"268":{"position":[[112,9]]},"270":{"position":[[590,7],[1305,9]]},"446":{"position":[[407,7]]},"470":{"position":[[15,9]]},"472":{"position":[[0,9]]}}}],["million",{"_index":2386,"t":{"576":{"position":[[233,7]]}}}],["min",{"_index":1112,"t":{"182":{"position":[[1386,4]]}}}],["mind",{"_index":677,"t":{"80":{"position":[[185,5]]},"276":{"position":[[121,5]]}}}],["mine",{"_index":1972,"t":{"500":{"position":[[133,5]]}}}],["miner",{"_index":1971,"t":{"500":{"position":[[93,6],[168,6]]},"506":{"position":[[459,6]]}}}],["mini",{"_index":2310,"t":{"555":{"position":[[381,4]]}}}],["minim",{"_index":234,"t":{"20":{"position":[[384,9]]},"490":{"position":[[459,7]]},"602":{"position":[[545,7]]}}}],["minimum",{"_index":824,"t":{"130":{"position":[[246,7]]}}}],["minor",{"_index":2343,"t":{"563":{"position":[[159,5]]},"588":{"position":[[771,5]]}}}],["minut",{"_index":1040,"t":{"166":{"position":[[182,7]]},"561":{"position":[[422,7]]}}}],["misbehav",{"_index":1947,"t":{"494":{"position":[[274,11]]}}}],["misbehaviour",{"_index":1984,"t":{"500":{"position":[[532,13]]}}}],["miss",{"_index":720,"t":{"103":{"position":[[135,6]]},"328":{"position":[[199,6]]},"426":{"position":[[116,6]]},"494":{"position":[[580,4]]}}}],["mitig",{"_index":1718,"t":{"346":{"position":[[219,10]]}}}],["mkdir",{"_index":873,"t":{"132":{"position":[[710,5]]}}}],["mobil",{"_index":1591,"t":{"304":{"position":[[315,6]]},"392":{"position":[[192,6]]},"548":{"position":[[1751,7]]}}}],["model",{"_index":1725,"t":{"346":{"position":[[506,5]]},"356":{"position":[[140,6]]},"518":{"position":[[100,5]]}}}],["modern",{"_index":432,"t":{"46":{"position":[[122,6]]}}}],["modif",{"_index":2081,"t":{"532":{"position":[[216,13]]},"548":{"position":[[2957,14]]},"588":{"position":[[777,12]]}}}],["modifi",{"_index":429,"t":{"46":{"position":[[46,6]]},"70":{"position":[[2678,6]]},"190":{"position":[[77,6],[1890,6]]},"192":{"position":[[48,6]]},"312":{"position":[[478,9]]},"334":{"position":[[430,9]]},"464":{"position":[[7,6]]},"536":{"position":[[2482,9]]},"588":{"position":[[127,8]]},"614":{"position":[[168,6]]},"622":{"position":[[7,6]]},"628":{"position":[[386,7]]}}}],["modular",{"_index":1587,"t":{"304":{"position":[[81,7]]},"320":{"position":[[13,7]]},"386":{"position":[[12,7]]},"504":{"position":[[49,7]]}}}],["monetari",{"_index":1939,"t":{"494":{"position":[[85,8],[151,8],[192,8]]},"498":{"position":[[337,8]]},"500":{"position":[[54,8],[297,8],[411,8]]},"506":{"position":[[221,8],[289,8],[674,8],[725,8]]}}}],["money",{"_index":2050,"t":{"520":{"position":[[645,6]]}}}],["monitor",{"_index":1389,"t":{"240":{"position":[[317,7]]},"242":{"position":[[76,8]]},"254":{"position":[[46,10]]},"258":{"position":[[132,10]]},"284":{"position":[[93,7]]}}}],["more",{"_index":304,"t":{"26":{"position":[[500,5]]},"91":{"position":[[91,4]]},"107":{"position":[[45,4]]},"118":{"position":[[521,4]]},"138":{"position":[[188,4]]},"196":{"position":[[1163,5]]},"202":{"position":[[85,4]]},"272":{"position":[[314,5]]},"282":{"position":[[459,4]]},"290":{"position":[[85,4]]},"298":{"position":[[449,5]]},"304":{"position":[[361,5]]},"324":{"position":[[320,4]]},"340":{"position":[[1497,4]]},"344":{"position":[[290,4]]},"346":{"position":[[719,4],[807,4]]},"410":{"position":[[178,5]]},"440":{"position":[[539,4]]},"442":{"position":[[420,4]]},"506":{"position":[[561,4]]},"516":{"position":[[773,4],[807,4],[856,4],[1129,4]]},"518":{"position":[[4,4]]},"520":{"position":[[837,4]]},"522":{"position":[[9,4]]},"536":{"position":[[3113,4]]},"538":{"position":[[191,4]]},"548":{"position":[[370,4]]},"568":{"position":[[295,4]]},"574":{"position":[[1162,4]]},"578":{"position":[[278,4],[1438,4],[2196,4],[2535,4],[2811,4]]},"580":{"position":[[1634,4],[1700,4],[1911,4]]},"586":{"position":[[289,4],[1503,4],[1609,4]]},"590":{"position":[[745,4],[981,4],[2373,4]]}}}],["moreov",{"_index":1964,"t":{"498":{"position":[[253,9]]},"516":{"position":[[1095,9]]}}}],["mostli",{"_index":1602,"t":{"308":{"position":[[116,6]]},"352":{"position":[[235,6]]},"392":{"position":[[0,6]]},"548":{"position":[[935,6]]}}}],["motiv",{"_index":1521,"t":{"284":{"position":[[246,12]]}}}],["mount",{"_index":2354,"t":{"568":{"position":[[226,7]]},"574":{"position":[[96,8]]}}}],["move",{"_index":1681,"t":{"338":{"position":[[16,4]]}}}],["mpb",{"_index":2275,"t":{"548":{"position":[[2025,5],[2461,5]]}}}],["mpt=ipt_1+ipt_2+ipt_3+ipt_4",{"_index":2469,"t":{"586":{"position":[[1971,27]]}}}],["ms",{"_index":2450,"t":{"582":{"position":[[383,3]]},"590":{"position":[[1113,3],[1233,3],[1318,3]]}}}],["msg",{"_index":746,"t":{"107":{"position":[[626,3]]},"536":{"position":[[2435,3],[2455,3]]}}}],["msg/day",{"_index":2162,"t":{"538":{"position":[[300,8],[476,7],[1086,8]]}}}],["msg/sec",{"_index":2167,"t":{"538":{"position":[[694,7],[714,7]]}}}],["msg1",{"_index":1610,"t":{"310":{"position":[[382,4],[638,4],[752,5],[859,4],[1054,4]]}}}],["msgs/sec",{"_index":2375,"t":{"574":{"position":[[1138,9],[1224,8]]}}}],["mu",{"_index":2495,"t":{"590":{"position":[[304,2]]}}}],["much",{"_index":1963,"t":{"498":{"position":[[231,4]]},"536":{"position":[[2717,5]]},"557":{"position":[[385,4]]},"574":{"position":[[1157,4]]},"578":{"position":[[3009,4]]}}}],["multi",{"_index":86,"t":{"6":{"position":[[556,5],[587,5]]},"32":{"position":[[1727,5]]}}}],["multiaddr",{"_index":361,"t":{"32":{"position":[[31,9],[290,13]]},"50":{"position":[[209,9]]},"54":{"position":[[114,9]]},"158":{"position":[[559,9],[651,9]]},"160":{"position":[[89,10],[182,10]]},"162":{"position":[[1287,9]]},"166":{"position":[[95,9]]},"168":{"position":[[104,9]]},"178":{"position":[[139,9]]},"204":{"position":[[167,10],[550,9]]},"206":{"position":[[1609,10]]},"208":{"position":[[71,11]]},"214":{"position":[[332,10]]},"216":{"position":[[340,10]]},"218":{"position":[[140,9],[163,9],[206,10],[243,9],[317,9],[436,9]]},"222":{"position":[[213,9],[247,9]]},"228":{"position":[[200,9],[340,9]]},"312":{"position":[[257,10]]},"318":{"position":[[68,9],[288,11]]}}}],["multiaddr=[multiaddr",{"_index":1333,"t":{"218":{"position":[[271,20]]}}}],["multiaddress",{"_index":965,"t":{"158":{"position":[[578,14],[695,14]]},"164":{"position":[[93,12]]}}}],["multimedia",{"_index":115,"t":{"6":{"position":[[1137,10]]}}}],["multipl",{"_index":148,"t":{"12":{"position":[[23,8]]},"182":{"position":[[647,8]]},"202":{"position":[[112,8]]},"220":{"position":[[160,8]]},"222":{"position":[[117,8]]},"224":{"position":[[495,8]]},"226":{"position":[[249,8]]},"280":{"position":[[191,8]]},"282":{"position":[[377,8]]},"286":{"position":[[62,8]]},"290":{"position":[[112,8]]},"296":{"position":[[937,8]]},"308":{"position":[[145,8]]},"338":{"position":[[284,8]]},"508":{"position":[[213,8]]},"512":{"position":[[317,8]]},"524":{"position":[[72,8]]},"536":{"position":[[3379,8]]},"544":{"position":[[380,8]]},"559":{"position":[[454,8]]},"574":{"position":[[355,8]]},"584":{"position":[[605,8]]},"586":{"position":[[599,8]]}}}],["multipli",{"_index":2100,"t":{"534":{"position":[[1270,10]]}}}],["mvp",{"_index":2547,"t":{"602":{"position":[[38,3],[334,4]]}}}],["my_private_key.pem",{"_index":1281,"t":{"208":{"position":[[683,18],[747,18]]}}}],["n",{"_index":1425,"t":{"256":{"position":[[483,1]]},"520":{"position":[[228,2],[394,2]]},"574":{"position":[[105,3]]},"580":{"position":[[951,1]]}}}],["n1",{"_index":2467,"t":{"586":{"position":[[1891,2]]}}}],["n5",{"_index":2468,"t":{"586":{"position":[[1909,2]]}}}],["n_1...n_i",{"_index":2453,"t":{"584":{"position":[[249,9]]}}}],["naiv",{"_index":2135,"t":{"536":{"position":[[1332,5]]}}}],["name",{"_index":406,"t":{"34":{"position":[[446,7]]},"48":{"position":[[745,5]]},"144":{"position":[[175,5],[301,4]]},"146":{"position":[[78,4]]},"154":{"position":[[0,4]]},"156":{"position":[[0,4]]},"158":{"position":[[0,4]]},"160":{"position":[[0,4],[110,4],[149,4],[242,4],[258,4]]},"162":{"position":[[0,4]]},"164":{"position":[[0,4]]},"166":{"position":[[0,4]]},"168":{"position":[[0,4]]},"170":{"position":[[0,4]]},"172":{"position":[[0,4]]},"174":{"position":[[0,4],[173,4],[212,4]]},"176":{"position":[[0,4]]},"178":{"position":[[0,4]]},"180":{"position":[[0,4]]},"182":{"position":[[0,4]]},"204":{"position":[[34,4],[112,4],[248,5],[287,4],[444,4],[584,5],[744,4],[851,4],[912,4]]},"208":{"position":[[663,4]]},"218":{"position":[[385,4]]},"224":{"position":[[275,4],[403,4],[431,4],[508,4],[616,5],[640,4],[657,4],[708,4],[1105,4],[1143,4]]},"270":{"position":[[395,5]]},"274":{"position":[[125,5],[150,4],[341,5],[360,4]]},"306":{"position":[[22,4]]},"312":{"position":[[144,5],[341,4],[499,5],[614,5],[684,5]]},"378":{"position":[[116,5]]},"482":{"position":[[0,5]]},"534":{"position":[[118,4]]}}}],["name=[domain",{"_index":1234,"t":{"204":{"position":[[235,12]]}}}],["name=nwakunode.com",{"_index":1235,"t":{"204":{"position":[[371,18]]}}}],["name}/{encod",{"_index":1482,"t":{"274":{"position":[[96,16]]}}}],["name}/{version}/{cont",{"_index":1481,"t":{"274":{"position":[[65,24]]}}}],["napkin",{"_index":2163,"t":{"538":{"position":[[377,6]]}}}],["nascent",{"_index":2526,"t":{"594":{"position":[[23,7]]}}}],["nat",{"_index":957,"t":{"158":{"position":[[444,3]]},"218":{"position":[[365,3]]},"266":{"position":[[603,4]]}}}],["nat=ani",{"_index":1445,"t":{"266":{"position":[[610,7]]}}}],["nat=extip:[your",{"_index":1444,"t":{"266":{"position":[[550,15]]}}}],["nativ",{"_index":193,"t":{"16":{"position":[[84,7],[125,6]]},"48":{"position":[[15,6]]},"184":{"position":[[84,7],[125,6]]},"500":{"position":[[47,6],[464,6]]},"506":{"position":[[29,6]]}}}],["natur",{"_index":700,"t":{"89":{"position":[[307,7]]},"626":{"position":[[908,6]]}}}],["nearest",{"_index":2216,"t":{"546":{"position":[[256,7]]}}}],["necessari",{"_index":1397,"t":{"248":{"position":[[251,9]]},"506":{"position":[[814,9]]},"602":{"position":[[436,9],[574,9]]}}}],["need",{"_index":39,"t":{"4":{"position":[[116,4]]},"32":{"position":[[1217,7]]},"48":{"position":[[956,4]]},"72":{"position":[[332,4]]},"83":{"position":[[229,4]]},"132":{"position":[[20,4]]},"192":{"position":[[40,4]]},"194":{"position":[[43,4]]},"196":{"position":[[38,4]]},"250":{"position":[[495,4]]},"270":{"position":[[169,4],[310,4],[629,4]]},"282":{"position":[[568,6]]},"284":{"position":[[239,6]]},"312":{"position":[[521,4]]},"452":{"position":[[321,4],[418,6]]},"488":{"position":[[527,4]]},"490":{"position":[[140,5]]},"534":{"position":[[1614,5]]},"536":{"position":[[639,4]]},"538":{"position":[[25,4]]},"544":{"position":[[243,4]]},"555":{"position":[[284,4]]},"561":{"position":[[544,4]]},"566":{"position":[[435,6]]},"586":{"position":[[2136,4],[2199,4]]},"596":{"position":[[219,5],[424,6]]}}}],["neglig",{"_index":2336,"t":{"561":{"position":[[376,11]]},"618":{"position":[[54,11]]}}}],["negoti",{"_index":1773,"t":{"364":{"position":[[325,11]]},"510":{"position":[[127,11],[489,12]]},"512":{"position":[[211,11],[287,10]]},"514":{"position":[[217,11]]}}}],["neighbor",{"_index":1954,"t":{"494":{"position":[[528,9],[672,10]]}}}],["neighbour",{"_index":1361,"t":{"228":{"position":[[948,12]]}}}],["neighbourhood",{"_index":1635,"t":{"316":{"position":[[365,14]]}}}],["netflix",{"_index":2221,"t":{"546":{"position":[[437,7]]},"548":{"position":[[2119,7]]}}}],["network",{"_index":35,"t":{"4":{"position":[[31,7],[320,8]]},"6":{"position":[[983,7]]},"10":{"position":[[84,8]]},"14":{"position":[[110,7]]},"22":{"position":[[1472,8],[1598,7]]},"26":{"position":[[900,8],[1422,7],[2495,8]]},"28":{"position":[[113,7],[371,8],[497,7]]},"48":{"position":[[154,7]]},"54":{"position":[[22,10]]},"58":{"position":[[71,8]]},"60":{"position":[[1060,7]]},"62":{"position":[[314,8]]},"78":{"position":[[606,7]]},"93":{"position":[[99,7]]},"97":{"position":[[85,8]]},"118":{"position":[[85,8]]},"120":{"position":[[92,8]]},"122":{"position":[[599,7]]},"126":{"position":[[31,7]]},"128":{"position":[[1000,7]]},"158":{"position":[[199,7],[613,8]]},"176":{"position":[[250,8]]},"192":{"position":[[153,7],[672,7]]},"202":{"position":[[17,8]]},"206":{"position":[[44,7]]},"212":{"position":[[61,8]]},"220":{"position":[[108,8]]},"228":{"position":[[925,7],[1018,7]]},"238":{"position":[[867,8]]},"240":{"position":[[212,7]]},"250":{"position":[[50,8],[476,8]]},"256":{"position":[[497,7],[700,8]]},"280":{"position":[[40,7]]},"284":{"position":[[387,8]]},"290":{"position":[[17,8]]},"294":{"position":[[454,8]]},"296":{"position":[[197,8],[446,7]]},"298":{"position":[[78,8],[336,8]]},"302":{"position":[[87,7]]},"304":{"position":[[67,8]]},"306":{"position":[[60,8],[167,8],[247,8]]},"310":{"position":[[91,8],[171,7]]},"312":{"position":[[354,8]]},"316":{"position":[[222,8],[293,7]]},"318":{"position":[[426,8]]},"322":{"position":[[327,7]]},"324":{"position":[[202,8],[277,7]]},"326":{"position":[[197,8]]},"328":{"position":[[66,8],[435,8]]},"330":{"position":[[297,8],[408,7]]},"332":{"position":[[72,8],[477,7]]},"338":{"position":[[43,7],[150,7]]},"340":{"position":[[427,8],[704,8],[1353,7]]},"346":{"position":[[668,7]]},"350":{"position":[[215,8],[298,8]]},"364":{"position":[[353,8]]},"370":{"position":[[63,8],[162,8]]},"376":{"position":[[161,7]]},"380":{"position":[[136,8]]},"382":{"position":[[206,8]]},"384":{"position":[[94,8]]},"386":{"position":[[20,7],[141,7]]},"388":{"position":[[101,8]]},"390":{"position":[[76,7]]},"392":{"position":[[153,8]]},"394":{"position":[[83,7]]},"402":{"position":[[58,7]]},"404":{"position":[[89,8]]},"406":{"position":[[122,8]]},"408":{"position":[[54,7]]},"410":{"position":[[64,7]]},"418":{"position":[[190,7]]},"422":{"position":[[201,7]]},"426":{"position":[[72,8],[157,8]]},"428":{"position":[[17,7]]},"430":{"position":[[258,8]]},"432":{"position":[[59,8]]},"434":{"position":[[114,8]]},"436":{"position":[[9,7],[68,7]]},"440":{"position":[[9,7],[43,7],[559,8],[581,8]]},"442":{"position":[[82,8],[200,7],[351,8],[467,8]]},"444":{"position":[[548,8]]},"446":{"position":[[108,8],[190,7],[434,7]]},"472":{"position":[[43,7],[73,7]]},"474":{"position":[[21,7]]},"476":{"position":[[6,7],[77,7],[416,7]]},"488":{"position":[[243,7],[871,7]]},"490":{"position":[[68,7]]},"496":{"position":[[40,8]]},"498":{"position":[[23,8]]},"500":{"position":[[80,8]]},"502":{"position":[[35,8]]},"504":{"position":[[125,8],[1056,8]]},"506":{"position":[[106,9],[550,7],[837,7]]},"518":{"position":[[295,7]]},"528":{"position":[[167,8]]},"532":{"position":[[36,7]]},"534":{"position":[[1171,8],[1583,7]]},"536":{"position":[[1401,7],[1804,7],[1984,7]]},"548":{"position":[[415,7],[443,7],[738,7],[1139,7]]},"551":{"position":[[280,7]]},"553":{"position":[[117,7]]},"557":{"position":[[561,7]]},"559":{"position":[[441,7],[600,7]]},"582":{"position":[[102,7],[141,7]]},"586":{"position":[[1066,7]]},"588":{"position":[[481,8]]},"590":{"position":[[109,7]]}}}],["networkconfig",{"_index":1902,"t":{"474":{"position":[[83,13]]},"478":{"position":[[231,14]]},"480":{"position":[[259,14]]},"482":{"position":[[373,14],[547,14]]},"484":{"position":[[102,13],[166,13],[233,13],[704,14]]},"486":{"position":[[37,13],[60,13]]},"488":{"position":[[844,13]]}}}],["never",{"_index":2045,"t":{"520":{"position":[[372,5]]}}}],["new",{"_index":113,"t":{"6":{"position":[[1122,4]]},"24":{"position":[[83,5],[202,3]]},"60":{"position":[[397,3]]},"76":{"position":[[13,3]]},"114":{"position":[[188,3],[218,3]]},"124":{"position":[[183,3]]},"126":{"position":[[79,3],[149,3]]},"128":{"position":[[707,3]]},"150":{"position":[[127,3]]},"190":{"position":[[920,3]]},"192":{"position":[[492,3]]},"196":{"position":[[563,3]]},"208":{"position":[[15,3]]},"266":{"position":[[15,3]]},"270":{"position":[[79,3],[1182,3]]},"310":{"position":[[911,3]]},"464":{"position":[[148,3]]},"474":{"position":[[79,3]]},"488":{"position":[[146,3],[361,3]]},"520":{"position":[[583,3],[764,3]]},"551":{"position":[[613,3],[731,3],[825,3]]},"604":{"position":[[206,3],[340,3],[400,3]]},"622":{"position":[[174,3]]}}}],["newer",{"_index":230,"t":{"20":{"position":[[350,5]]},"268":{"position":[[159,5]]}}}],["newli",{"_index":1214,"t":{"196":{"position":[[186,5]]},"500":{"position":[[127,5]]}}}],["newseq[protectedtopic](0",{"_index":928,"t":{"154":{"position":[[134,25]]}}}],["next",{"_index":177,"t":{"14":{"position":[[194,4]]},"22":{"position":[[791,4]]},"60":{"position":[[461,5]]},"74":{"position":[[53,4]]},"76":{"position":[[164,5]]},"112":{"position":[[169,4],[742,4]]},"186":{"position":[[286,5]]},"188":{"position":[[579,5]]},"190":{"position":[[1884,5]]},"536":{"position":[[3297,4]]},"568":{"position":[[16,4]]},"574":{"position":[[323,4]]},"578":{"position":[[364,4],[815,4],[1887,4]]}}}],["nft",{"_index":70,"t":{"6":{"position":[[238,3],[285,3]]}}}],["nightli",{"_index":1523,"t":{"286":{"position":[[582,7],[667,7]]}}}],["nim",{"_index":1519,"t":{"284":{"position":[[34,3]]},"566":{"position":[[4,3]]},"580":{"position":[[219,3],[1121,3]]}}}],["node",{"_index":131,"t":{"10":{"position":[[70,5],[196,4],[237,5],[284,4],[343,5]]},"14":{"position":[[123,4]]},"22":{"position":[[237,5],[386,5],[855,5],[908,4],[1317,4],[1367,4],[1426,5],[1496,5],[1615,5]]},"26":{"position":[[1442,6],[1583,5],[1653,5],[2722,5],[2753,4]]},"28":{"position":[[58,4],[180,4],[214,4],[266,4],[325,5],[395,5],[514,5]]},"30":{"position":[[193,4],[239,4]]},"32":{"position":[[58,4],[205,4],[235,4],[332,4],[718,4],[752,4],[851,4],[1114,4],[1157,5],[1346,4],[1578,5],[1761,4],[1774,4]]},"34":{"position":[[15,4],[225,4],[388,4],[464,4],[561,4],[592,4],[735,4],[873,4],[904,4]]},"36":{"position":[[28,4],[494,4],[591,4],[639,4]]},"38":{"position":[[51,4],[193,4],[326,4]]},"48":{"position":[[1069,4]]},"50":{"position":[[195,4]]},"56":{"position":[[77,4]]},"60":{"position":[[1255,4]]},"62":{"position":[[213,4],[221,4]]},"95":{"position":[[53,4]]},"97":{"position":[[53,4],[167,4],[178,4]]},"99":{"position":[[53,4]]},"103":{"position":[[100,5],[177,5]]},"105":{"position":[[99,5]]},"107":{"position":[[120,5]]},"114":{"position":[[822,4]]},"116":{"position":[[94,4]]},"118":{"position":[[53,4],[167,4],[178,4],[301,4],[390,4],[481,5],[547,6]]},"120":{"position":[[53,4]]},"130":{"position":[[52,4]]},"138":{"position":[[255,4],[322,4]]},"140":{"position":[[137,4]]},"142":{"position":[[5,5]]},"144":{"position":[[0,4],[234,4]]},"146":{"position":[[0,5],[316,4],[344,4]]},"148":{"position":[[0,5]]},"150":{"position":[[91,4],[131,4],[598,4],[645,4]]},"152":{"position":[[23,4]]},"158":{"position":[[64,4],[84,4],[150,4],[219,4]]},"170":{"position":[[510,4]]},"174":{"position":[[70,5],[114,4]]},"176":{"position":[[73,5],[83,4],[145,4],[180,4],[216,5],[419,5],[510,5]]},"178":{"position":[[129,4]]},"182":{"position":[[1413,4],[1479,4]]},"188":{"position":[[303,4],[443,4],[610,4],[765,4],[778,5],[819,6],[847,4],[901,4],[952,4]]},"190":{"position":[[615,4],[628,5]]},"192":{"position":[[294,4],[343,5]]},"194":{"position":[[362,5]]},"196":{"position":[[401,5],[521,5]]},"198":{"position":[[21,5],[124,5],[179,4],[314,5],[349,4],[434,5],[509,5],[553,4],[650,4],[688,4],[808,6],[839,5],[950,4],[1052,4],[1087,4],[1134,4],[1259,4],[1349,6],[1429,5],[1577,5],[1647,4],[1754,4],[1810,4]]},"200":{"position":[[56,4]]},"202":{"position":[[26,5]]},"204":{"position":[[85,4],[333,5],[398,5],[424,5],[494,5],[926,5]]},"206":{"position":[[268,4],[869,4],[1163,4],[1489,4],[1650,4]]},"208":{"position":[[0,5],[1010,4]]},"210":{"position":[[47,5],[221,4],[416,4],[841,4],[1001,4],[1375,5]]},"212":{"position":[[47,4],[176,4],[998,4],[1145,4]]},"214":{"position":[[228,4],[414,4]]},"216":{"position":[[229,4],[381,4]]},"220":{"position":[[56,4],[148,4]]},"222":{"position":[[40,4],[290,4]]},"224":{"position":[[35,5],[126,4],[185,4],[828,4],[879,4]]},"226":{"position":[[28,5],[115,4],[160,5],[205,5],[465,4],[863,4]]},"228":{"position":[[35,5],[126,4],[183,4],[224,4],[405,5],[459,5],[476,5],[555,4],[640,4],[961,6]]},"230":{"position":[[23,5],[160,4],[204,4]]},"232":{"position":[[144,5]]},"234":{"position":[[8,4],[66,4]]},"236":{"position":[[162,5],[410,4]]},"238":{"position":[[168,5],[406,4],[720,5]]},"240":{"position":[[104,4],[198,4],[299,4],[329,5]]},"242":{"position":[[23,4],[105,5]]},"244":{"position":[[204,4],[289,5]]},"250":{"position":[[114,4]]},"252":{"position":[[32,5],[220,4]]},"254":{"position":[[70,4]]},"256":{"position":[[11,4],[684,4],[922,4],[981,5],[1071,4],[1134,4]]},"258":{"position":[[60,4]]},"260":{"position":[[149,4],[234,5]]},"266":{"position":[[230,4],[920,4],[979,5],[1079,4],[1126,4]]},"268":{"position":[[82,5]]},"270":{"position":[[241,4],[898,4],[1034,5],[1098,4]]},"284":{"position":[[64,5],[124,5],[370,4],[434,4],[500,4],[585,5]]},"286":{"position":[[9,5],[93,5],[177,4],[303,4],[387,4],[555,4],[755,4]]},"288":{"position":[[230,5],[255,4],[286,4]]},"290":{"position":[[26,5],[211,5],[333,5],[533,5],[572,4],[657,4]]},"292":{"position":[[38,4],[86,4],[117,4]]},"294":{"position":[[39,4],[63,4],[204,4],[261,4],[320,5],[437,4],[482,4]]},"296":{"position":[[25,5],[284,4],[736,4]]},"298":{"position":[[232,6],[305,5],[374,5]]},"300":{"position":[[72,4]]},"304":{"position":[[50,5]]},"308":{"position":[[336,5]]},"310":{"position":[[287,4],[353,4],[421,4],[522,4],[621,4],[682,4],[692,4],[721,4],[729,4],[807,5],[832,4],[840,4],[867,4],[941,4],[1025,4],[1033,4]]},"312":{"position":[[39,4],[208,4],[582,5],[752,5]]},"314":{"position":[[151,4],[301,4]]},"316":{"position":[[171,5],[205,5],[301,5],[451,5],[554,6]]},"318":{"position":[[383,6]]},"322":{"position":[[355,5]]},"326":{"position":[[29,5]]},"328":{"position":[[294,4]]},"330":{"position":[[46,5]]},"334":{"position":[[58,4],[170,5],[254,4],[328,5],[411,4]]},"336":{"position":[[61,4],[122,5]]},"338":{"position":[[345,6],[416,5],[457,5],[524,6],[608,5]]},"340":{"position":[[145,5],[326,4],[334,4],[1447,5],[1752,5]]},"346":{"position":[[617,4]]},"350":{"position":[[46,6],[261,4]]},"366":{"position":[[164,5],[398,4],[492,4],[528,4]]},"370":{"position":[[46,4]]},"374":{"position":[[124,6]]},"378":{"position":[[146,4]]},"380":{"position":[[9,4],[77,6],[191,4]]},"382":{"position":[[40,5]]},"388":{"position":[[8,4],[75,5]]},"390":{"position":[[40,5]]},"394":{"position":[[2,4]]},"396":{"position":[[2,4],[141,5]]},"402":{"position":[[23,5]]},"404":{"position":[[25,4]]},"406":{"position":[[63,5],[109,5]]},"408":{"position":[[37,4]]},"410":{"position":[[42,5]]},"418":{"position":[[218,5]]},"430":{"position":[[168,4]]},"440":{"position":[[439,6]]},"442":{"position":[[330,5],[425,4]]},"444":{"position":[[111,4],[166,4]]},"446":{"position":[[91,4],[133,4]]},"474":{"position":[[49,4]]},"476":{"position":[[62,5]]},"490":{"position":[[106,5],[199,4]]},"494":{"position":[[172,4],[217,5],[516,5],[574,5],[645,4],[699,4]]},"504":{"position":[[402,4],[485,4],[591,5],[621,5],[667,4],[683,4]]},"534":{"position":[[323,5],[383,4],[708,4],[1154,5],[1329,4],[1854,4]]},"536":{"position":[[1146,6]]},"540":{"position":[[68,5]]},"542":{"position":[[154,5]]},"544":{"position":[[69,4],[312,4],[536,5],[834,5],[881,4]]},"548":{"position":[[400,6],[591,5],[642,5],[1197,4],[1501,4],[1534,5],[1598,5]]},"551":{"position":[[334,6]]},"553":{"position":[[134,5]]},"555":{"position":[[246,4]]},"557":{"position":[[459,5]]},"559":{"position":[[387,6],[588,4],[651,6]]},"563":{"position":[[25,5]]},"566":{"position":[[13,5],[118,5],[276,5]]},"568":{"position":[[264,4]]},"574":{"position":[[38,4],[109,5],[140,5],[209,5],[364,5],[758,5],[1115,4],[1190,4],[1488,4]]},"576":{"position":[[102,4],[163,4],[265,4],[329,6],[347,4],[493,5],[530,5],[706,4]]},"578":{"position":[[102,4],[684,5],[1234,4]]},"580":{"position":[[100,5],[228,5],[1130,5],[1705,6]]},"582":{"position":[[43,5]]},"584":{"position":[[148,5],[243,5],[325,4],[441,5],[542,5],[640,6],[760,4],[804,4]]},"586":{"position":[[220,6],[321,5],[337,5],[429,4],[522,5],[780,5],[865,5],[953,5],[1084,5],[1115,4],[1175,6],[1217,5],[1392,6],[1535,5],[1689,4],[1886,4],[2057,4]]},"588":{"position":[[720,5]]},"590":{"position":[[581,4],[633,5],[911,4],[1346,5],[1477,4],[1730,6],[1933,4],[2096,4]]}}}],["node'",{"_index":981,"t":{"160":{"position":[[280,6]]},"198":{"position":[[1606,6],[1705,6]]},"204":{"position":[[141,6],[771,6]]},"292":{"position":[[604,6]]},"346":{"position":[[80,6]]},"366":{"position":[[425,6]]},"408":{"position":[[107,6]]},"494":{"position":[[309,6],[384,6]]},"506":{"position":[[367,6]]}}}],["node.dial(multiaddr",{"_index":391,"t":{"32":{"position":[[1486,22]]}}}],["node.filter.createsubscript",{"_index":507,"t":{"60":{"position":[[224,32]]},"128":{"position":[[534,32]]}}}],["node.lightpush.send(eciesencod",{"_index":594,"t":{"70":{"position":[[1952,33]]}}}],["node.lightpush.send(encod",{"_index":550,"t":{"66":{"position":[[716,28]]},"68":{"position":[[867,28]]},"126":{"position":[[432,28]]}}}],["node.lightpush.send(symmetricencod",{"_index":592,"t":{"70":{"position":[[1838,37]]}}}],["node.start",{"_index":711,"t":{"97":{"position":[[242,13]]},"118":{"position":[[242,13]]}}}],["node.stop",{"_index":784,"t":{"118":{"position":[[315,12]]}}}],["node.store.querygenerator([decod",{"_index":740,"t":{"107":{"position":[[403,37]]},"110":{"position":[[520,35]]},"114":{"position":[[495,35]]}}}],["node.store.querywithorderedcallback([decod",{"_index":554,"t":{"66":{"position":[[1189,46]]},"68":{"position":[[1349,46]]},"105":{"position":[[635,46]]},"110":{"position":[[434,46]]},"112":{"position":[[543,46],[833,46]]},"114":{"position":[[409,46]]}}}],["node=/ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamlce6zvqcs6kmqqrbbhyojjfyzgr1q3thtsbykzibqkfr",{"_index":1359,"t":{"228":{"position":[[751,85]]}}}],["node=[discv5",{"_index":1352,"t":{"226":{"position":[[342,12],[399,12]]}}}],["node=[p",{"_index":1356,"t":{"228":{"position":[[329,10]]}}}],["node=enr",{"_index":1353,"t":{"226":{"position":[[608,9]]}}}],["node_a",{"_index":2388,"t":{"576":{"position":[[321,7],[671,6]]}}}],["node_b",{"_index":2389,"t":{"576":{"position":[[403,7],[628,6]]}}}],["node_c",{"_index":2391,"t":{"576":{"position":[[499,7]]}}}],["node_d",{"_index":2392,"t":{"576":{"position":[[511,8]]}}}],["node_opt",{"_index":1128,"t":{"188":{"position":[[322,12]]}}}],["node_requir",{"_index":407,"t":{"34":{"position":[[488,17],[679,18],[1016,18]]},"36":{"position":[[518,17],[757,18]]}}}],["nodea",{"_index":2383,"t":{"576":{"position":[[84,6]]}}}],["nodeb",{"_index":2385,"t":{"576":{"position":[[145,6]]}}}],["nodec",{"_index":2387,"t":{"576":{"position":[[247,6]]}}}],["nodej",{"_index":266,"t":{"22":{"position":[[990,6],[1079,6]]},"26":{"position":[[1691,6],[1762,6],[1878,6]]},"40":{"position":[[109,6]]},"44":{"position":[[38,7]]},"80":{"position":[[96,6],[258,7]]},"83":{"position":[[54,6],[157,6],[210,7]]},"87":{"position":[[98,6]]},"89":{"position":[[94,7],[169,6],[338,7],[455,6]]},"91":{"position":[[28,6]]},"93":{"position":[[29,6],[119,6]]}}}],["nodekey",{"_index":947,"t":{"158":{"position":[[207,7]]},"208":{"position":[[157,7]]}}}],["nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8",{"_index":1290,"t":{"208":{"position":[[1050,72]]}}}],["nodekey=[nod",{"_index":1270,"t":{"208":{"position":[[193,13]]}}}],["nodes=1000",{"_index":2485,"t":{"588":{"position":[[698,11]]}}}],["nois",{"_index":312,"t":{"26":{"position":[[1049,5]]},"62":{"position":[[192,5]]},"340":{"position":[[305,5]]},"364":{"position":[[204,5],[278,5]]},"438":{"position":[[5,5],[41,5]]}}}],["non",{"_index":1968,"t":{"498":{"position":[[333,3]]},"506":{"position":[[585,3]]},"530":{"position":[[333,3]]},"610":{"position":[[274,3]]},"616":{"position":[[419,3]]}}}],["none",{"_index":959,"t":{"158":{"position":[[527,5]]},"164":{"position":[[332,4]]},"206":{"position":[[600,4]]}}}],["nonetheless",{"_index":1867,"t":{"460":{"position":[[117,12]]}}}],["normal",{"_index":2376,"t":{"574":{"position":[[1176,6],[1513,6]]}}}],["north",{"_index":2223,"t":{"546":{"position":[[542,5]]},"548":{"position":[[2678,5]]}}}],["note",{"_index":437,"t":{"48":{"position":[[194,4]]},"142":{"position":[[216,4]]},"256":{"position":[[299,4],[638,4]]},"348":{"position":[[162,7]]},"358":{"position":[[156,4]]},"488":{"position":[[826,5]]},"544":{"position":[[1156,4]]},"546":{"position":[[212,5]]},"548":{"position":[[1588,4],[2901,5]]},"586":{"position":[[260,4]]},"588":{"position":[[274,4]]},"590":{"position":[[202,4],[356,5],[1693,4]]},"600":{"position":[[317,4]]},"602":{"position":[[339,4],[408,4]]},"626":{"position":[[520,4]]}}}],["noth",{"_index":2344,"t":{"563":{"position":[[232,7]]},"602":{"position":[[831,7]]},"610":{"position":[[1628,7]]}}}],["notic",{"_index":934,"t":{"156":{"position":[[133,7]]},"464":{"position":[[81,7]]},"568":{"position":[[156,6]]},"578":{"position":[[658,6],[2119,6],[2458,6],[2734,6],[3474,7],[3735,6]]},"586":{"position":[[1182,6]]},"612":{"position":[[1392,6]]},"622":{"position":[[87,7]]},"626":{"position":[[870,6],[1108,6]]}}}],["notif",{"_index":1487,"t":{"274":{"position":[[601,13]]},"280":{"position":[[147,13],[652,12]]}}}],["notificationpayload",{"_index":1506,"t":{"280":{"position":[[462,19],[632,19]]}}}],["novemb",{"_index":2423,"t":{"578":{"position":[[3822,8]]}}}],["now",{"_index":1467,"t":{"270":{"position":[[165,3]]},"318":{"position":[[339,3]]},"476":{"position":[[399,3]]},"484":{"position":[[347,3]]},"486":{"position":[[77,3]]},"488":{"position":[[290,3],[882,3]]},"536":{"position":[[133,3]]},"561":{"position":[[35,3]]},"588":{"position":[[918,5]]}}}],["npm",{"_index":207,"t":{"18":{"position":[[68,3],[77,3]]},"20":{"position":[[570,3],[579,3]]},"26":{"position":[[107,4]]},"34":{"position":[[88,3]]},"64":{"position":[[109,3],[118,3]]},"76":{"position":[[72,3]]},"186":{"position":[[160,3],[169,3],[386,3],[395,3]]}}}],["npx",{"_index":638,"t":{"76":{"position":[[81,3],[334,3]]}}}],["ns1.google.com",{"_index":1450,"t":{"266":{"position":[[686,15]]}}}],["nullifi",{"_index":1650,"t":{"324":{"position":[[66,10]]},"340":{"position":[[1233,10],[1265,9]]},"344":{"position":[[96,10]]},"362":{"position":[[424,10]]},"416":{"position":[[11,10]]},"422":{"position":[[69,10]]},"440":{"position":[[290,11]]}}}],["number",{"_index":956,"t":{"158":{"position":[[436,7],[745,6],[806,6]]},"166":{"position":[[329,6],[426,6]]},"182":{"position":[[407,6]]},"282":{"position":[[618,6]]},"334":{"position":[[318,6]]},"340":{"position":[[1691,6]]},"346":{"position":[[129,6]]},"538":{"position":[[979,8]]},"544":{"position":[[1474,6]]},"546":{"position":[[228,7]]},"548":{"position":[[131,7],[310,7],[2232,7],[2912,6]]},"555":{"position":[[466,6]]},"557":{"position":[[335,6]]},"561":{"position":[[319,8]]},"574":{"position":[[452,6]]},"578":{"position":[[452,7]]}}}],["numer",{"_index":1691,"t":{"340":{"position":[[103,8]]}}}],["nutshel",{"_index":1720,"t":{"346":{"position":[[305,9]]}}}],["nwaku",{"_index":135,"t":{"10":{"position":[[155,5]]},"14":{"position":[[66,5]]},"22":{"position":[[1226,5]]},"26":{"position":[[1818,5],[2115,5]]},"32":{"position":[[1572,5]]},"40":{"position":[[179,6]]},"48":{"position":[[0,5]]},"50":{"position":[[189,5]]},"54":{"position":[[333,6]]},"85":{"position":[[128,5]]},"91":{"position":[[137,5]]},"93":{"position":[[53,5]]},"130":{"position":[[46,5],[154,6],[289,6],[296,5]]},"132":{"position":[[9,6]]},"134":{"position":[[166,5]]},"136":{"position":[[10,5]]},"138":{"position":[[0,5],[207,6],[249,5],[264,5],[296,5]]},"140":{"position":[[83,5],[197,5]]},"150":{"position":[[85,5]]},"158":{"position":[[144,5]]},"198":{"position":[[45,5],[173,5],[343,5],[503,5],[547,5],[644,5],[750,6],[802,5],[833,5],[1046,5],[1343,5],[1423,5],[1600,5]]},"200":{"position":[[50,5]]},"202":{"position":[[97,5]]},"204":{"position":[[327,5]]},"206":{"position":[[1157,5],[1421,5],[1644,5]]},"208":{"position":[[1023,6]]},"210":{"position":[[101,5],[835,5],[995,5],[1369,5]]},"212":{"position":[[0,5],[992,5],[1139,5]]},"214":{"position":[[10,5],[138,5],[408,5]]},"216":{"position":[[10,5],[152,5],[375,5]]},"218":{"position":[[117,5]]},"220":{"position":[[50,5],[142,5]]},"222":{"position":[[34,5],[284,5]]},"224":{"position":[[29,5],[728,5],[822,5]]},"226":{"position":[[22,5],[459,5],[857,5]]},"228":{"position":[[29,5],[399,5],[549,5],[634,5],[842,5]]},"230":{"position":[[29,5]]},"232":{"position":[[67,5]]},"234":{"position":[[2,5]]},"236":{"position":[[76,5]]},"238":{"position":[[79,5],[714,5]]},"240":{"position":[[0,5],[98,5]]},"244":{"position":[[198,5]]},"246":{"position":[[55,5]]},"250":{"position":[[108,5]]},"252":{"position":[[26,5],[156,5],[289,5]]},"256":{"position":[[5,5],[80,5],[157,5],[1065,5],[1222,5]]},"258":{"position":[[54,5],[166,5]]},"260":{"position":[[143,5]]},"262":{"position":[[4,5]]},"264":{"position":[[136,5]]},"266":{"position":[[4,5],[261,5],[1073,5],[1186,5]]},"268":{"position":[[27,6]]},"284":{"position":[[0,5],[130,5],[364,5],[494,5]]},"286":{"position":[[33,5],[47,5],[103,5],[297,5],[332,5],[381,5],[418,5],[549,5],[569,5],[613,5],[769,5],[793,5],[831,5]]},"288":{"position":[[25,5],[224,5]]},"290":{"position":[[97,5],[222,5],[314,5],[411,5],[566,5]]},"292":{"position":[[32,5]]},"294":{"position":[[431,5],[542,5]]},"340":{"position":[[1792,5]]},"446":{"position":[[23,5],[85,5]]},"551":{"position":[[328,5]]},"559":{"position":[[366,5]]},"566":{"position":[[19,6],[197,5],[282,5]]},"568":{"position":[[34,5],[197,5],[258,5]]},"576":{"position":[[524,5]]},"578":{"position":[[678,5],[795,5],[1798,5],[1818,5],[3222,5],[3371,5]]},"580":{"position":[[1390,5],[1497,5],[1767,5]]},"582":{"position":[[37,5]]},"584":{"position":[[941,5]]},"588":{"position":[[103,5],[677,5],[749,5]]}}}],["nwaku'",{"_index":1474,"t":{"270":{"position":[[765,7]]}}}],["nwaku+postgr",{"_index":2357,"t":{"572":{"position":[[89,14]]}}}],["nwaku+sqlit",{"_index":2358,"t":{"572":{"position":[[108,13]]}}}],["nwakunode.com",{"_index":491,"t":{"54":{"position":[[197,13],[255,14]]},"204":{"position":[[292,14]]}}}],["o",{"_index":1448,"t":{"266":{"position":[[662,1]]}}}],["o.myaddr.l.google.com",{"_index":1449,"t":{"266":{"position":[[664,21]]}}}],["object",{"_index":799,"t":{"126":{"position":[[91,6],[161,6]]},"192":{"position":[[504,6]]},"316":{"position":[[12,9]]},"460":{"position":[[831,6]]},"488":{"position":[[453,7]]}}}],["oblig",{"_index":1853,"t":{"458":{"position":[[7,7]]},"610":{"position":[[1222,10]]}}}],["observ",{"_index":2448,"t":{"582":{"position":[[301,7],[399,7]]}}}],["obtain",{"_index":1722,"t":{"346":{"position":[[354,6]]},"366":{"position":[[256,8]]},"444":{"position":[[348,6]]},"446":{"position":[[153,8]]},"578":{"position":[[833,8],[1905,8]]},"580":{"position":[[1036,8]]}}}],["occasion",{"_index":498,"t":{"58":{"position":[[0,13]]},"392":{"position":[[115,12]]}}}],["occur",{"_index":1001,"t":{"162":{"position":[[965,5]]},"188":{"position":[[887,6]]},"458":{"position":[[669,5]]}}}],["oceania",{"_index":2247,"t":{"546":{"position":[[657,7]]},"548":{"position":[[2737,7]]}}}],["oct",{"_index":2220,"t":{"546":{"position":[[372,3]]}}}],["off",{"_index":1640,"t":{"320":{"position":[[108,4]]}}}],["offer",{"_index":74,"t":{"6":{"position":[[298,6]]},"298":{"position":[[194,6]]},"302":{"position":[[43,6]]},"356":{"position":[[23,5]]},"364":{"position":[[227,5]]},"536":{"position":[[104,6]]},"610":{"position":[[1685,5],[1725,5]]}}}],["offic",{"_index":1831,"t":{"450":{"position":[[190,6]]},"608":{"position":[[130,6]]}}}],["offlin",{"_index":1603,"t":{"308":{"position":[[123,7]]},"328":{"position":[[156,7]]},"392":{"position":[[7,7],[64,7]]},"426":{"position":[[90,7]]}}}],["offline/resourc",{"_index":1741,"t":{"352":{"position":[[242,16]]}}}],["old",{"_index":1456,"t":{"268":{"position":[[45,3]]}}}],["older",{"_index":229,"t":{"20":{"position":[[340,5]]},"270":{"position":[[1109,5]]}}}],["oldest",{"_index":748,"t":{"107":{"position":[[771,6]]},"110":{"position":[[132,6],[305,6]]}}}],["omit",{"_index":766,"t":{"112":{"position":[[947,4]]},"206":{"position":[[645,4],[926,4]]},"210":{"position":[[309,4]]},"212":{"position":[[278,4],[394,4],[528,4]]},"214":{"position":[[709,4]]},"224":{"position":[[685,4]]},"590":{"position":[[409,8]]}}}],["on",{"_index":282,"t":{"22":{"position":[[1446,4]]},"28":{"position":[[345,4]]},"142":{"position":[[286,3]]},"158":{"position":[[514,3]]},"182":{"position":[[76,3],[519,3],[693,3]]},"268":{"position":[[361,4]]},"286":{"position":[[245,4]]},"330":{"position":[[202,3]]},"412":{"position":[[184,3]]},"504":{"position":[[451,3]]},"534":{"position":[[297,3],[957,3],[1015,3]]},"536":{"position":[[748,4],[3188,3],[3302,4]]},"538":{"position":[[131,3]]},"544":{"position":[[147,3]]},"548":{"position":[[1497,3]]},"551":{"position":[[346,3]]},"559":{"position":[[400,3]]},"576":{"position":[[91,3],[152,3],[254,3],[336,3]]},"580":{"position":[[61,3]]},"586":{"position":[[123,3],[846,3]]},"598":{"position":[[301,3]]},"618":{"position":[[532,4]]},"626":{"position":[[1652,3],[2085,3]]}}}],["onboard",{"_index":2557,"t":{"604":{"position":[[328,7]]}}}],["onc",{"_index":1095,"t":{"182":{"position":[[628,5]]},"288":{"position":[[0,4]]},"296":{"position":[[246,4]]},"370":{"position":[[72,4]]},"561":{"position":[[477,5]]},"590":{"position":[[2329,4]]},"604":{"position":[[0,4]]}}}],["onchain",{"_index":989,"t":{"162":{"position":[[341,7]]},"559":{"position":[[264,7]]}}}],["onchange={handleinputchang",{"_index":1169,"t":{"190":{"position":[[1521,28]]}}}],["onclick={sendmessage}>send:volume/period\\.example.com",{"_index":1629,"t":{"314":{"position":[[218,17]]}}}],["round",{"_index":2215,"t":{"546":{"position":[[241,7]]}}}],["rout",{"_index":1064,"t":{"176":{"position":[[452,7],[543,7]]},"226":{"position":[[181,7],[509,7],[905,7]]},"310":{"position":[[149,7]]},"338":{"position":[[172,8]]},"428":{"position":[[114,8]]},"446":{"position":[[240,7]]},"584":{"position":[[21,7],[79,6]]}}}],["row",{"_index":2371,"t":{"574":{"position":[[814,4]]},"576":{"position":[[241,5]]}}}],["rule",{"_index":453,"t":{"48":{"position":[[587,5]]},"338":{"position":[[110,5]]},"340":{"position":[[922,5]]},"410":{"position":[[23,5]]},"594":{"position":[[290,5]]},"626":{"position":[[1316,5],[1386,5],[1963,5]]}}}],["run",{"_index":130,"t":{"10":{"position":[[64,3],[151,3],[231,3],[271,7]]},"22":{"position":[[971,3],[1486,7]]},"26":{"position":[[1810,7]]},"28":{"position":[[385,7]]},"32":{"position":[[1685,7],[1757,3]]},"91":{"position":[[129,7]]},"118":{"position":[[293,7]]},"136":{"position":[[117,3]]},"138":{"position":[[68,3],[199,7],[243,3],[260,3],[292,3]]},"140":{"position":[[0,3]]},"144":{"position":[[221,7],[329,3]]},"146":{"position":[[303,7],[385,3]]},"148":{"position":[[552,3]]},"150":{"position":[[522,3]]},"158":{"position":[[72,7]]},"162":{"position":[[897,4],[956,3]]},"198":{"position":[[10,3],[41,3],[118,3],[167,3],[304,7],[333,7],[413,7],[495,7],[539,7],[655,7],[1064,8]]},"230":{"position":[[152,7]]},"240":{"position":[[109,7]]},"242":{"position":[[71,4]]},"244":{"position":[[188,7],[268,7]]},"250":{"position":[[366,7]]},"252":{"position":[[247,7]]},"256":{"position":[[909,7]]},"258":{"position":[[48,3],[162,3]]},"260":{"position":[[133,7],[213,7]]},"266":{"position":[[0,3],[44,3],[257,3],[312,3],[907,7]]},"268":{"position":[[34,7],[183,7],[295,7]]},"270":{"position":[[232,3],[888,7]]},"284":{"position":[[49,7],[116,7],[484,7],[564,7]]},"286":{"position":[[3,3],[83,7],[99,3],[171,3],[241,3],[291,3],[328,3],[375,3],[414,3],[823,3]]},"288":{"position":[[39,3],[81,3],[127,3]]},"292":{"position":[[24,7]]},"294":{"position":[[248,7]]},"334":{"position":[[164,3]]},"340":{"position":[[134,3]]},"350":{"position":[[42,3],[255,3]]},"352":{"position":[[150,3]]},"442":{"position":[[320,3]]},"446":{"position":[[19,3],[75,7]]},"490":{"position":[[112,7]]},"504":{"position":[[407,7],[490,7]]},"520":{"position":[[618,7]]},"534":{"position":[[317,3],[367,3],[519,3],[1848,3]]},"540":{"position":[[62,3]]},"542":{"position":[[138,3]]},"544":{"position":[[58,3],[327,7],[603,3],[828,3],[875,3]]},"548":{"position":[[386,3],[577,3],[652,3]]},"551":{"position":[[233,7]]},"574":{"position":[[215,7]]},"576":{"position":[[536,7]]},"578":{"position":[[690,3],[845,7],[1917,7]]},"580":{"position":[[1113,7]]},"582":{"position":[[49,7]]},"588":{"position":[[284,7]]}}}],["runstmt",{"_index":2430,"t":{"580":{"position":[[526,8]]}}}],["rustup",{"_index":837,"t":{"132":{"position":[[100,7],[632,6]]}}}],["s",{"_index":863,"t":{"132":{"position":[[499,1],[744,1]]}}}],["sa",{"_index":1893,"t":{"466":{"position":[[150,3]]},"628":{"position":[[963,3]]}}}],["sacrific",{"_index":682,"t":{"83":{"position":[[146,10]]}}}],["safeti",{"_index":1852,"t":{"456":{"position":[[141,6]]}}}],["same",{"_index":367,"t":{"32":{"position":[[378,4]]},"176":{"position":[[434,4],[525,4]]},"182":{"position":[[667,4]]},"222":{"position":[[336,4]]},"228":{"position":[[510,4]]},"358":{"position":[[244,4]]},"414":{"position":[[130,4]]},"458":{"position":[[512,4]]},"536":{"position":[[953,4],[1263,4],[1999,4]]},"548":{"position":[[1276,5],[1417,5],[3008,4]]},"563":{"position":[[0,4]]},"578":{"position":[[703,4],[1718,4]]},"580":{"position":[[260,4],[326,4],[1745,4]]}}}],["sampl",{"_index":120,"t":{"6":{"position":[[1223,6]]},"298":{"position":[[255,8],[487,8]]},"316":{"position":[[439,8]]}}}],["sandbox",{"_index":2399,"t":{"578":{"position":[[928,7],[2000,7]]},"580":{"position":[[1058,7]]}}}],["save",{"_index":66,"t":{"6":{"position":[[173,4],[313,8]]},"250":{"position":[[298,5]]}}}],["scaffold",{"_index":181,"t":{"14":{"position":[[248,8]]},"22":{"position":[[689,8]]}}}],["scalabl",{"_index":107,"t":{"6":{"position":[[961,12]]},"312":{"position":[[728,12]]},"320":{"position":[[262,12]]},"334":{"position":[[301,12]]},"384":{"position":[[42,8]]},"436":{"position":[[36,8]]},"440":{"position":[[126,8],[302,11]]},"446":{"position":[[472,12]]},"536":{"position":[[2986,12]]},"544":{"position":[[1289,12]]}}}],["scale",{"_index":1648,"t":{"322":{"position":[[311,6]]},"418":{"position":[[174,6]]},"506":{"position":[[827,5]]},"538":{"position":[[405,6]]},"548":{"position":[[761,5]]},"590":{"position":[[1746,5]]},"598":{"position":[[268,9]]}}}],["scenario",{"_index":1604,"t":{"308":{"position":[[131,9]]},"574":{"position":[[27,8]]},"576":{"position":[[75,8]]},"578":{"position":[[990,8],[1309,8],[1484,8],[1735,8],[2062,8],[2398,8],[2674,8]]}}}],["scene",{"_index":33,"t":{"2":{"position":[[366,7]]}}}],["sceneri",{"_index":2424,"t":{"580":{"position":[[171,7]]}}}],["scheme",{"_index":1233,"t":{"204":{"position":[[195,7]]}}}],["scope",{"_index":1736,"t":{"350":{"position":[[84,6]]}}}],["score",{"_index":1764,"t":{"362":{"position":[[218,7],[268,6],[347,7]]},"494":{"position":[[622,6],[658,6],[719,7]]},"553":{"position":[[208,7]]},"559":{"position":[[313,8]]}}}],["screaming_snake_cas",{"_index":904,"t":{"146":{"position":[[137,20]]}}}],["script",{"_index":246,"t":{"20":{"position":[[837,6],[848,7]]},"574":{"position":[[328,6]]}}}],["sdk",{"_index":149,"t":{"12":{"position":[[32,5],[189,3],[243,3]]},"16":{"position":[[39,3],[167,3]]},"26":{"position":[[81,3],[1225,3],[1464,3],[1733,3]]},"184":{"position":[[39,3]]},"198":{"position":[[610,4]]},"340":{"position":[[112,4]]},"424":{"position":[[0,4]]}}}],["se",{"_index":2120,"t":{"536":{"position":[[575,2]]}}}],["seamless",{"_index":83,"t":{"6":{"position":[[462,8]]},"12":{"position":[[305,8]]}}}],["seamlessli",{"_index":199,"t":{"16":{"position":[[295,10]]},"22":{"position":[[633,10]]},"89":{"position":[[80,10]]}}}],["second",{"_index":907,"t":{"146":{"position":[[456,6]]},"166":{"position":[[253,8]]},"206":{"position":[[400,8],[1257,7]]},"214":{"position":[[498,7],[766,7]]},"532":{"position":[[170,9],[348,8]]},"536":{"position":[[291,9],[517,7],[790,7],[1093,8],[2293,7],[2443,6],[2466,7],[2621,8],[2827,6],[3025,8],[3274,7]]},"538":{"position":[[135,7],[636,8]]},"540":{"position":[[225,8]]},"551":{"position":[[412,7]]},"553":{"position":[[39,6],[103,8],[189,8]]},"555":{"position":[[183,7],[489,7]]},"557":{"position":[[108,7],[595,7]]},"559":{"position":[[538,8]]},"563":{"position":[[193,7]]},"580":{"position":[[1484,7],[1591,7],[1862,7]]},"588":{"position":[[1025,7],[1065,7]]},"590":{"position":[[861,7],[1423,7]]}}}],["secp256k1",{"_index":1271,"t":{"208":{"position":[[240,9],[668,9]]},"396":{"position":[[16,9]]}}}],["secreci",{"_index":1805,"t":{"438":{"position":[[218,8]]}}}],["secret",{"_index":993,"t":{"162":{"position":[[500,6]]},"248":{"position":[[353,7]]}}}],["section",{"_index":26,"t":{"2":{"position":[[292,8]]},"198":{"position":[[1769,7]]},"538":{"position":[[357,8]]},"628":{"position":[[289,8]]}}}],["secur",{"_index":21,"t":{"2":{"position":[[247,8]]},"4":{"position":[[245,6]]},"6":{"position":[[654,8]]},"48":{"position":[[63,6],[260,6],[327,6]]},"68":{"position":[[284,6]]},"72":{"position":[[237,6]]},"180":{"position":[[139,6],[167,6],[206,6],[222,6],[278,6],[295,6]]},"204":{"position":[[453,6],[676,6]]},"210":{"position":[[362,6],[386,6],[454,6],[471,6],[508,6],[526,6],[666,6],[700,6],[758,6],[1019,6],[1156,6],[1190,6],[1232,6]]},"228":{"position":[[1005,8]]},"254":{"position":[[235,9]]},"322":{"position":[[225,6]]},"338":{"position":[[531,6],[574,6],[716,9]]},"356":{"position":[[52,8],[97,8],[131,8],[290,8],[346,8]]},"364":{"position":[[140,8],[310,6]]},"394":{"position":[[101,6]]},"398":{"position":[[65,6],[135,9]]},"418":{"position":[[66,6]]},"424":{"position":[[70,7]]},"430":{"position":[[29,7]]},"434":{"position":[[69,6]]},"438":{"position":[[97,6]]},"452":{"position":[[794,8]]},"456":{"position":[[36,8],[92,8]]},"592":{"position":[[8,8],[117,8],[299,7]]},"610":{"position":[[1764,9]]}}}],["security@free.technolog",{"_index":2522,"t":{"592":{"position":[[140,25]]}}}],["see",{"_index":891,"t":{"138":{"position":[[119,3]]},"150":{"position":[[469,3]]},"258":{"position":[[154,3]]},"504":{"position":[[696,4]]},"510":{"position":[[618,4]]},"514":{"position":[[17,3],[87,3],[160,3],[231,3]]},"518":{"position":[[27,3],[133,3],[221,3],[317,3]]},"522":{"position":[[66,3],[137,3]]},"526":{"position":[[48,3],[141,3]]},"530":{"position":[[38,3],[194,3],[358,3],[500,3]]},"536":{"position":[[692,3]]},"548":{"position":[[2826,3]]},"559":{"position":[[358,3],[554,3],[642,4]]},"578":{"position":[[1121,3]]},"580":{"position":[[384,3]]},"582":{"position":[[581,3]]},"586":{"position":[[348,3],[483,3]]},"588":{"position":[[416,4],[528,3]]},"590":{"position":[[1270,3],[1541,3]]}}}],["seek",{"_index":288,"t":{"24":{"position":[[34,4]]},"54":{"position":[[349,7]]},"296":{"position":[[303,4],[741,5]]},"626":{"position":[[989,8]]}}}],["seem",{"_index":2304,"t":{"555":{"position":[[0,5],[333,5]]},"557":{"position":[[140,5],[202,5],[342,5]]}}}],["seen",{"_index":782,"t":{"114":{"position":[[715,4]]}}}],["select",{"_index":641,"t":{"76":{"position":[[170,6]]},"266":{"position":[[92,8]]},"272":{"position":[[118,11]]},"284":{"position":[[182,6]]},"300":{"position":[[577,7]]},"326":{"position":[[38,11]]},"372":{"position":[[88,9]]},"382":{"position":[[49,11]]},"440":{"position":[[372,9]]},"520":{"position":[[864,7]]},"580":{"position":[[917,6],[964,6],[1472,7],[1579,7],[1850,7]]}}}],["sell",{"_index":2589,"t":{"610":{"position":[[1701,5],[1741,4]]}}}],["semi",{"_index":2025,"t":{"516":{"position":[[556,4]]}}}],["send",{"_index":251,"t":{"22":{"position":[[135,4],[202,4]]},"26":{"position":[[2460,4]]},"56":{"position":[[137,4]]},"66":{"position":[[310,4],[374,4],[676,4]]},"68":{"position":[[448,4],[529,4],[827,4],[1522,7]]},"70":{"position":[[1705,4]]},"116":{"position":[[102,4]]},"122":{"position":[[639,4]]},"126":{"position":[[3,4],[392,4]]},"178":{"position":[[152,4]]},"190":{"position":[[33,7],[1057,4],[2420,5]]},"192":{"position":[[3,4],[364,4]]},"240":{"position":[[223,4]]},"250":{"position":[[122,4],[452,7]]},"256":{"position":[[222,4]]},"270":{"position":[[670,7]]},"274":{"position":[[619,4]]},"296":{"position":[[82,8]]},"322":{"position":[[64,7]]},"330":{"position":[[159,7]]},"340":{"position":[[197,7],[1492,4]]},"390":{"position":[[49,4]]},"410":{"position":[[123,8]]},"412":{"position":[[82,4]]},"418":{"position":[[106,7]]},"504":{"position":[[743,5]]},"508":{"position":[[96,5],[143,5],[454,4]]},"510":{"position":[[839,5],[1030,5]]},"520":{"position":[[791,5]]},"530":{"position":[[325,7]]},"536":{"position":[[253,4],[493,5],[772,4],[1242,4]]},"555":{"position":[[260,4]]},"561":{"position":[[299,4]]},"590":{"position":[[656,7]]},"626":{"position":[[852,4]]}}}],["send/rec",{"_index":2189,"t":{"544":{"position":[[276,12]]}}}],["sender",{"_index":545,"t":{"66":{"position":[[401,6]]},"68":{"position":[[394,6],[556,6]]},"70":{"position":[[547,8],[976,6]]},"126":{"position":[[233,7]]},"332":{"position":[[426,7]]},"530":{"position":[[273,8]]},"559":{"position":[[223,6]]},"586":{"position":[[1552,6]]},"590":{"position":[[574,6]]}}}],["sendmessag",{"_index":1153,"t":{"190":{"position":[[1097,11]]},"192":{"position":[[59,13],[404,11]]}}}],["sens",{"_index":2353,"t":{"568":{"position":[[184,5]]}}}],["sent",{"_index":531,"t":{"62":{"position":[[300,4]]},"70":{"position":[[3046,4]]},"128":{"position":[[959,4]]},"256":{"position":[[607,4]]},"310":{"position":[[672,4]]},"332":{"position":[[232,5]]},"340":{"position":[[413,4]]},"534":{"position":[[1265,4]]},"590":{"position":[[381,4],[851,4]]}}}],["separ",{"_index":1105,"t":{"182":{"position":[[1218,11]]},"398":{"position":[[55,9]]},"462":{"position":[[97,8]]},"510":{"position":[[530,8]]},"516":{"position":[[45,8]]}}}],["sepolia",{"_index":1390,"t":{"244":{"position":[[57,7],[92,7],[115,7]]},"444":{"position":[[9,7],[103,7],[246,7],[278,7],[320,7],[355,7],[400,7],[437,7]]},"446":{"position":[[125,7]]},"551":{"position":[[473,7]]},"561":{"position":[[95,8]]}}}],["sequenti",{"_index":725,"t":{"103":{"position":[[234,13]]}}}],["serial",{"_index":1202,"t":{"192":{"position":[[85,9]]}}}],["serialis",{"_index":806,"t":{"126":{"position":[[283,9]]},"192":{"position":[[634,9]]},"274":{"position":[[440,13]]}}}],["serialisedmessag",{"_index":807,"t":{"126":{"position":[[326,17],[472,18]]}}}],["serious",{"_index":1850,"t":{"456":{"position":[[45,9]]},"592":{"position":[[17,9]]}}}],["serv",{"_index":448,"t":{"48":{"position":[[492,6]]},"166":{"position":[[310,5],[348,5]]},"182":{"position":[[1258,5]]},"188":{"position":[[28,6]]},"206":{"position":[[30,5],[163,5]]},"210":{"position":[[110,5]]},"214":{"position":[[19,5]]},"216":{"position":[[19,5]]},"290":{"position":[[684,7]]},"302":{"position":[[130,5]]},"310":{"position":[[128,6],[294,6]]},"338":{"position":[[705,5]]},"400":{"position":[[67,7]]},"414":{"position":[[33,6]]},"538":{"position":[[1040,5]]}}}],["server",{"_index":397,"t":{"32":{"position":[[1675,6]]},"160":{"position":[[115,6],[154,6]]},"170":{"position":[[64,7],[141,6],[195,6],[525,7]]},"172":{"position":[[39,6],[71,7],[98,6],[156,6],[171,6],[223,6]]},"174":{"position":[[178,6],[217,6]]},"212":{"position":[[162,6],[263,7],[379,7],[786,6],[832,6],[1029,6]]},"218":{"position":[[27,6]]},"224":{"position":[[408,6],[436,6],[513,8],[662,6],[713,6],[769,7]]},"228":{"position":[[427,6],[541,7]]},"266":{"position":[[869,9]]},"300":{"position":[[94,7]]},"304":{"position":[[348,8]]},"318":{"position":[[87,7]]},"490":{"position":[[394,6]]},"504":{"position":[[339,6],[390,6],[427,6],[545,6],[764,7],[778,6],[842,6],[922,6],[1005,6]]},"508":{"position":[[124,7],[136,6],[432,6]]},"510":{"position":[[867,6],[917,6],[1023,6]]},"512":{"position":[[102,6],[172,6]]},"516":{"position":[[127,6],[761,7],[1189,7]]},"520":{"position":[[36,6],[142,7],[192,6],[246,6],[475,6],[587,6],[699,7],[768,7],[874,6],[1063,6],[1135,7]]},"524":{"position":[[81,7],[149,7]]},"530":{"position":[[184,7]]},"544":{"position":[[726,6]]}}}],["server'",{"_index":1331,"t":{"218":{"position":[[94,8]]},"510":{"position":[[810,8]]},"516":{"position":[[260,8],[913,8]]},"520":{"position":[[117,8],[314,8],[946,8]]}}}],["server=8.8.4.4",{"_index":1351,"t":{"224":{"position":[[1148,14]]}}}],["server=8.8.8.8",{"_index":1350,"t":{"224":{"position":[[1110,14]]}}}],["server=[dn",{"_index":1345,"t":{"224":{"position":[[645,11]]}}}],["servic",{"_index":1524,"t":{"286":{"position":[[873,7],[938,9]]},"338":{"position":[[449,7],[600,7]]},"346":{"position":[[10,7],[87,7],[341,7],[411,7],[653,7],[705,8]]},"350":{"position":[[207,7]]},"356":{"position":[[39,8]]},"366":{"position":[[93,8],[248,7]]},"388":{"position":[[67,7]]},"440":{"position":[[406,8]]},"442":{"position":[[451,8]]},"518":{"position":[[111,7],[199,7]]},"534":{"position":[[882,8]]},"548":{"position":[[1912,9],[2086,9]]},"576":{"position":[[66,8]]},"618":{"position":[[176,9]]}}}],["set",{"_index":318,"t":{"26":{"position":[[1618,7],[2740,3]]},"28":{"position":[[161,3]]},"32":{"position":[[3,3]]},"44":{"position":[[55,3]]},"116":{"position":[[75,7]]},"118":{"position":[[372,3]]},"146":{"position":[[169,3]]},"156":{"position":[[63,4]]},"164":{"position":[[325,3]]},"182":{"position":[[226,8],[267,3],[600,3],[656,3],[733,3],[833,7],[879,7],[991,8],[1054,3]]},"186":{"position":[[7,3]]},"188":{"position":[[79,3],[289,3]]},"198":{"position":[[1561,7]]},"204":{"position":[[8,3]]},"206":{"position":[[581,3],[812,7]]},"254":{"position":[[191,7]]},"272":{"position":[[36,3]]},"298":{"position":[[366,4]]},"308":{"position":[[16,3]]},"338":{"position":[[632,3]]},"340":{"position":[[1649,3]]},"410":{"position":[[16,3]]},"474":{"position":[[29,8]]},"504":{"position":[[893,3]]},"528":{"position":[[136,9]]},"534":{"position":[[1025,3],[1143,3],[1591,4],[1744,3]]},"542":{"position":[[25,3]]},"548":{"position":[[1147,4],[2565,3],[2926,3]]},"574":{"position":[[751,3]]},"586":{"position":[[166,4]]},"594":{"position":[[313,3]]},"626":{"position":[[888,7]]}}}],["setinputmessag",{"_index":1147,"t":{"190":{"position":[[378,16]]},"192":{"position":[[853,20]]}}}],["setinputmessage(e.target.valu",{"_index":1151,"t":{"190":{"position":[[551,32]]}}}],["setmessag",{"_index":1148,"t":{"190":{"position":[[428,12]]}}}],["setmessages(allmessages.map((wakumessag",{"_index":1218,"t":{"196":{"position":[[652,41]]}}}],["setmessages(filtermessages.map((wakumessag",{"_index":1212,"t":{"194":{"position":[[429,44]]}}}],["setup",{"_index":396,"t":{"32":{"position":[[1636,5]]},"240":{"position":[[47,5]]},"258":{"position":[[119,5]]},"584":{"position":[[983,5]]}}}],["sever",{"_index":1493,"t":{"276":{"position":[[94,7]]},"488":{"position":[[0,7]]},"580":{"position":[[87,7]]},"582":{"position":[[447,8]]},"628":{"position":[[581,9]]}}}],["sh",{"_index":855,"t":{"132":{"position":[[303,2],[444,2],[592,2]]}}}],["shadow",{"_index":2472,"t":{"588":{"position":[[6,6],[871,6]]},"590":{"position":[[2212,6],[2334,6]]}}}],["shall",{"_index":2583,"t":{"610":{"position":[[1264,5]]},"620":{"position":[[4,5]]},"626":{"position":[[841,5]]}}}],["shape",{"_index":1747,"t":{"356":{"position":[[77,7]]}}}],["shard",{"_index":1018,"t":{"162":{"position":[[1516,5],[1551,5],[1557,5]]},"270":{"position":[[95,5],[401,8],[526,8],[852,8],[987,8],[1232,8]]},"380":{"position":[[248,7]]},"440":{"position":[[317,8],[366,5]]},"472":{"position":[[102,8],[116,8]]},"474":{"position":[[125,8],[142,9]]},"476":{"position":[[469,7]]},"478":{"position":[[116,7],[262,7]]},"482":{"position":[[72,8],[89,8],[281,9],[404,7],[455,9]]},"484":{"position":[[259,8],[276,8],[378,9]]},"488":{"position":[[902,7]]},"532":{"position":[[76,5]]},"534":{"position":[[421,6]]},"538":{"position":[[1009,6]]},"542":{"position":[[76,5],[304,6]]},"544":{"position":[[151,6],[389,7],[462,5],[1428,6]]},"548":{"position":[[114,6],[2801,6]]}}}],["shard:public_key",{"_index":1468,"t":{"270":{"position":[[187,16]]}}}],["shard=\"4:your_public_key",{"_index":1470,"t":{"270":{"position":[[361,25]]}}}],["shardinfo",{"_index":1905,"t":{"478":{"position":[[89,10]]},"480":{"position":[[89,10]]},"484":{"position":[[125,9],[547,10]]},"486":{"position":[[168,10]]},"488":{"position":[[443,9]]}}}],["shardinfotopubsubtop",{"_index":1918,"t":{"488":{"position":[[266,23]]}}}],["shardingparam",{"_index":1912,"t":{"486":{"position":[[0,14]]}}}],["share",{"_index":116,"t":{"6":{"position":[[1148,8]]},"26":{"position":[[2654,7]]},"66":{"position":[[36,6],[1388,6]]},"68":{"position":[[1421,5]]},"122":{"position":[[670,6]]},"248":{"position":[[415,6]]},"278":{"position":[[44,5]]},"280":{"position":[[209,5]]},"348":{"position":[[43,5]]},"440":{"position":[[22,6]]},"442":{"position":[[127,6]]},"446":{"position":[[233,6],[365,6]]},"496":{"position":[[65,8]]},"498":{"position":[[15,7],[269,5]]},"502":{"position":[[145,7]]},"506":{"position":[[98,7]]},"580":{"position":[[1680,6]]}}}],["shift",{"_index":955,"t":{"158":{"position":[[404,5],[418,5]]}}}],["shift=1",{"_index":1358,"t":{"228":{"position":[[725,7]]}}}],["short",{"_index":52,"t":{"4":{"position":[[343,6]]},"266":{"position":[[655,6]]},"308":{"position":[[369,5]]},"330":{"position":[[79,5]]},"340":{"position":[[992,6]]}}}],["shorten",{"_index":1927,"t":{"490":{"position":[[162,10]]}}}],["shouldn't",{"_index":2273,"t":{"548":{"position":[[1928,9]]},"557":{"position":[[363,9]]}}}],["show",{"_index":422,"t":{"42":{"position":[[135,4]]},"546":{"position":[[21,5]]},"576":{"position":[[759,5]]},"578":{"position":[[325,5],[1213,5]]},"580":{"position":[[161,5],[1368,5]]},"590":{"position":[[21,5],[79,7],[429,4]]}}}],["shown",{"_index":2277,"t":{"548":{"position":[[2099,5]]},"588":{"position":[[599,5]]},"590":{"position":[[324,6]]}}}],["sia",{"_index":1986,"t":{"502":{"position":[[66,4]]}}}],["sibyl",{"_index":2117,"t":{"536":{"position":[[429,5]]}}}],["side",{"_index":686,"t":{"85":{"position":[[32,4]]},"178":{"position":[[97,6],[226,5]]},"504":{"position":[[434,4],[507,4]]}}}],["sign",{"_index":261,"t":{"22":{"position":[[439,4],[537,4]]},"26":{"position":[[941,4],[1111,4]]},"62":{"position":[[104,4]]},"70":{"position":[[8,7],[181,7],[478,4],[863,7],[912,7],[1139,5],[1368,7],[1439,5],[1663,7],[2396,7],[2547,5],[3035,6],[3218,6],[3280,6]]},"72":{"position":[[59,7],[1002,6]]},"224":{"position":[[355,6]]},"434":{"position":[[161,7]]}}}],["signatur",{"_index":85,"t":{"6":{"position":[[533,9],[562,9],[593,9],[629,10]]},"70":{"position":[[87,9],[2020,9],[2725,9],[2794,9],[2826,9],[2906,9]]},"364":{"position":[[122,11],[266,11]]}}}],["signaturepublickey",{"_index":596,"t":{"70":{"position":[[2049,20],[2859,18],[2947,18]]}}}],["signifi",{"_index":1670,"t":{"332":{"position":[[364,10]]},"346":{"position":[[18,9]]}}}],["signific",{"_index":241,"t":{"20":{"position":[[463,11]]},"588":{"position":[[319,11]]}}}],["significantli",{"_index":778,"t":{"114":{"position":[[569,13]]}}}],["sigprivkey",{"_index":579,"t":{"70":{"position":[[406,10],[1320,11],[1615,11],[2644,11]]}}}],["similar",{"_index":1843,"t":{"450":{"position":[[373,7]]},"516":{"position":[[648,8]]},"578":{"position":[[1629,7]]},"580":{"position":[[1883,7]]},"590":{"position":[[1873,7]]},"608":{"position":[[324,7]]}}}],["similarli",{"_index":1776,"t":{"366":{"position":[[468,10]]}}}],["simpl",{"_index":619,"t":{"72":{"position":[[339,6]]},"240":{"position":[[161,6]]},"516":{"position":[[753,7]]}}}],["simpler",{"_index":680,"t":{"83":{"position":[[70,7]]},"516":{"position":[[1006,7]]}}}],["simplest",{"_index":1222,"t":{"198":{"position":[[90,8]]},"286":{"position":[[199,8]]},"494":{"position":[[752,8]]},"510":{"position":[[248,8]]}}}],["simpli",{"_index":2351,"t":{"568":{"position":[[0,6]]}}}],["simplic",{"_index":694,"t":{"87":{"position":[[134,10]]}}}],["simplifi",{"_index":1779,"t":{"374":{"position":[[41,10]]},"474":{"position":[[63,11]]},"510":{"position":[[355,10],[607,10]]},"512":{"position":[[150,10]]}}}],["simul",{"_index":1894,"t":{"468":{"position":[[31,11]]},"528":{"position":[[126,9]]},"551":{"position":[[241,11],[264,10]]},"553":{"position":[[323,11]]},"555":{"position":[[100,10]]},"559":{"position":[[339,11]]},"563":{"position":[[5,10]]},"574":{"position":[[346,8]]},"582":{"position":[[585,10]]},"584":{"position":[[947,10]]},"586":{"position":[[2204,12]]},"588":{"position":[[13,10],[64,8],[297,10],[402,10],[738,10],[927,8]]},"590":{"position":[[66,12],[393,11],[1709,11],[2270,9]]}}}],["simultan",{"_index":414,"t":{"36":{"position":[[70,15]]},"220":{"position":[[195,15]]},"574":{"position":[[170,14],[788,15]]}}}],["singl",{"_index":540,"t":{"66":{"position":[[28,7]]},"280":{"position":[[394,6]]},"282":{"position":[[27,6],[703,6]]},"534":{"position":[[414,6]]},"538":{"position":[[1002,6]]},"544":{"position":[[455,6]]},"566":{"position":[[291,6]]},"578":{"position":[[3231,6]]},"580":{"position":[[65,6]]}}}],["site",{"_index":1884,"t":{"462":{"position":[[86,5]]},"610":{"position":[[607,5]]}}}],["site.thes",{"_index":2577,"t":{"610":{"position":[[628,10]]}}}],["sixti",{"_index":2653,"t":{"626":{"position":[[1062,5]]}}}],["size",{"_index":233,"t":{"20":{"position":[[378,5]]},"26":{"position":[[415,4]]},"164":{"position":[[286,4]]},"206":{"position":[[503,4]]},"512":{"position":[[356,4]]},"534":{"position":[[1288,5]]},"536":{"position":[[806,4],[981,5],[1281,4],[1592,5],[1638,5],[1708,5],[2025,4],[2502,5],[2610,4],[3012,4],[3363,5]]},"538":{"position":[[45,6],[492,4]]},"555":{"position":[[62,4]]},"557":{"position":[[180,5]]},"582":{"position":[[85,6],[270,4],[493,5]]},"586":{"position":[[1453,4],[1647,6]]},"590":{"position":[[175,6],[791,6],[1250,4]]}}}],["size:10gb",{"_index":1248,"t":{"206":{"position":[[570,10]]}}}],["size:512mb",{"_index":1247,"t":{"206":{"position":[[556,10]]}}}],["size:{new",{"_index":1161,"t":{"190":{"position":[[1303,10]]}}}],["spawn",{"_index":2395,"t":{"578":{"position":[[564,5]]}}}],["special",{"_index":314,"t":{"26":{"position":[[1213,11]]},"618":{"position":[[193,8]]}}}],["specialis",{"_index":1583,"t":{"302":{"position":[[136,11]]}}}],["specif",{"_index":557,"t":{"66":{"position":[[1417,8]]},"120":{"position":[[415,8]]},"130":{"position":[[124,8]]},"134":{"position":[[208,8]]},"262":{"position":[[166,8]]},"272":{"position":[[230,8],[291,13]]},"274":{"position":[[351,8]]},"280":{"position":[[124,8]]},"296":{"position":[[709,8],[762,8]]},"298":{"position":[[426,13]]},"304":{"position":[[263,8]]},"326":{"position":[[63,8]]},"332":{"position":[[323,8]]},"340":{"position":[[913,8]]},"372":{"position":[[140,8]]},"380":{"position":[[32,13]]},"382":{"position":[[74,8]]},"432":{"position":[[135,8]]},"452":{"position":[[159,8]]},"458":{"position":[[429,8]]},"544":{"position":[[1465,8]]},"586":{"position":[[2085,8],[2161,8]]},"596":{"position":[[364,8]]},"598":{"position":[[204,8]]},"612":{"position":[[1290,9]]},"628":{"position":[[828,8]]}}}],["specifi",{"_index":731,"t":{"105":{"position":[[242,7]]},"107":{"position":[[213,7]]},"110":{"position":[[25,9]]},"112":{"position":[[18,9]]},"114":{"position":[[22,9]]},"120":{"position":[[258,7]]},"122":{"position":[[395,7]]},"144":{"position":[[95,7]]},"148":{"position":[[241,7],[349,7]]},"150":{"position":[[60,10]]},"156":{"position":[[196,9]]},"158":{"position":[[452,7]]},"170":{"position":[[397,9],[453,7]]},"218":{"position":[[185,10]]},"332":{"position":[[13,9],[454,10]]},"400":{"position":[[210,9]]},"438":{"position":[[16,9]]},"484":{"position":[[392,7]]},"508":{"position":[[232,9]]},"542":{"position":[[222,7]]}}}],["speed",{"_index":2282,"t":{"548":{"position":[[2264,5],[2330,5]]},"588":{"position":[[644,6]]}}}],["speedtest",{"_index":2218,"t":{"546":{"position":[[349,9]]}}}],["spefic",{"_index":1079,"t":{"182":{"position":[[101,6]]}}}],["spend",{"_index":1787,"t":{"392":{"position":[[39,5]]},"555":{"position":[[292,5]]}}}],["split",{"_index":1956,"t":{"496":{"position":[[7,5]]},"508":{"position":[[202,5]]},"516":{"position":[[1019,9]]}}}],["spread",{"_index":2446,"t":{"580":{"position":[[1639,6]]}}}],["sqlalchemi",{"_index":1250,"t":{"206":{"position":[[780,10]]}}}],["sqlite",{"_index":1033,"t":{"164":{"position":[[527,6]]},"566":{"position":[[219,6],[326,6]]},"574":{"position":[[491,6],[573,6],[866,6],[1425,6]]},"576":{"position":[[189,7],[215,6],[721,6]]},"578":{"position":[[762,6],[1134,6],[1227,6],[1460,6],[1688,6],[1765,6],[2993,6],[3413,6]]}}}],["sqlite://store.sqlite3",{"_index":1030,"t":{"164":{"position":[[369,22]]},"206":{"position":[[963,23]]}}}],["src/app.css",{"_index":1175,"t":{"190":{"position":[[1945,11]]}}}],["src/app.jsx",{"_index":1134,"t":{"188":{"position":[[669,11]]},"190":{"position":[[132,11]]},"192":{"position":[[196,11]]},"194":{"position":[[182,11]]},"196":{"position":[[211,11]]}}}],["src/main.jsx",{"_index":1127,"t":{"188":{"position":[[224,12]]}}}],["src=\"https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js\">{message.message}/ Security | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
- - + + \ No newline at end of file diff --git a/terms/index.html b/terms/index.html index 7d70eed..6871c06 100644 --- a/terms/index.html +++ b/terms/index.html @@ -5,8 +5,8 @@ Terms of Use | Waku Documentation - - + +
@@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Terms of Use

Last updated: 14 February 2024

These website terms of use ('Website Terms of Use') are entered into by you and us, and they govern your access and use of this Website, including any content and functionality contained in the Website.

It is your responsibility to read the Website Terms of Use carefully before your use of the Website and your use of the Website means you have agreed to be bound and comply with these Website Terms of Use.

If you do not agree with these Website Terms of Use, you must not access or use the Website.

1) Who we are

For the purposes of these Website Terms of Use, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at:

Logos Collective Association
c/o PST Consulting GmbH
Baarerstrasse 10
6300 Zug
Switzerland

Whenever we refer to “Logos”, “we”, “us” or any other similar references, we are referring to the Logos Collective Association.

2) Disclaimers

The Website is provided by us on an ‘as is’ basis and you use the Website at your own sole discretion and risk.

We disclaim all warranties of any kind, express or implied, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement of intellectual property or other violation of rights. We do not warrant or make any representations concerning the completeness, accuracy, legality, utility, reliability, suitability or availability of the use of the Website, the content on this Website or otherwise relating to the Website, such content or on any sites linked to this site.These disclaimers will apply to the maximum extent permitted by applicable law.

We make no claims that the Website or any of its content is accessible, legally compliant or appropriate in your jurisdiction. Your access or use of the Website is at your own sole discretion and you are solely responsible for complying with any applicable local laws.

The content herein or as accessible through this website is intended to be made available for informational purposes only and should not be considered as creating any expectations or forming the basis of any contract, commitment or binding obligation with us. No information herein shall be considered to contain or be relied upon as a promise, representation, warranty or guarantee, whether express or implied and whether as to the past, present or the future in relation to the projects and matters described herein.

The information contained herein does not constitute financial, legal, tax, or other advice and should not be treated as such.

Nothing in this Website should be construed by you as an offer to buy or sell, or soliciting any offer to buy or sell any tokens or any security.

3) Forward looking statements

The Website may also contain forward-looking statements that are based on current expectations, estimates, forecasts, assumptions and projections about the technology, industry and markets in general.

The forward looking statements, which may include statements about the roadmap, project descriptions, technical details, functionalities, features, the development and use of tokens by projects, and any other statements related to such matters or as accessible through this website are subject to a high degree of risk and uncertainty. The forward looking statements are subject to change based on, among other things, market conditions, technical developments, and regulatory environment. The actual development and results, including the order and the timeline, might vary from what’s presented. The information contained herein is a summary and does not purport to be accurate, reliable or complete and we bear no responsibility for the accuracy, reliability or completeness of information contained herein. Because of the high degree of risk and uncertainty described above, you should not place undue reliance on any matters described in this website or as accessible through this website.

While we aim to update our website regularly, all information, including the timeline and the specifics of each stage, is subject to change and may be amended or supplemented at any time, without notice and at our sole discretion.

4) Intellectual property rights

The Website and its contents are made available under Creative Commons Attribution 4.0 International license (CC-BY 4.0). In essence this licence allows users to copy, modify and distribute the content in any format for any purpose, including commercial use, subject to certain requirements such as attributing us. For the full terms of this licence, please refer to the following website: https://creativecommons.org/licenses/by/4.0/.

To the extent the Website provides any links to a third party website, then their terms and conditions, including privacy policies, govern your use of those third party websites. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. We have no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through the Website. If you access such third party websites through the Website, it is at your own risk and you are solely responsible for your activities on such third party websites.

6) Limitation of liability

We will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these Website Terms of Use, the Website, the content on the Website, or your use of the Website, even if we have been advised of the possibility of such damages. In any event, our aggregate liability for such claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the maximum extent permitted by applicable law.

7) Indemnity

You shall indemnify us and hold us harmless from and against any and all claims, damages and expenses, including attorneys’ fees, arising from or related to your use of the Website, the content on the Website, including without limitation your violation of these Website Terms of Use.

8) Modifications

We may modify or replace any part of this Website Terms of Use at any time and without notice. You are responsible for checking the Website periodically for any changes. The new Website Terms of Use will be effective immediately upon its posting on the Website.

9) Governing law

Swiss law governs these Website Terms of Use and any disputes between you and us, whether in court or arbitration, without regard to conflict of laws provisions.

10) Disputes

In these terms, “dispute” has the broadest meaning enforceable by law and includes any claim you make against or controversy you may have in relation to these Website Terms of Use, the Website, the content on the Website, or your use of the Website.

We prefer arbitration over litigation as we believe it meets our principle of resolving disputes in the most effective and cost effective manner. You are bound by the following arbitration clause, which waives your right to litigation and to be heard by a judge. Please note that court review of an arbitration award is limited. You also waive all your rights to a jury trial (if any) in any and all jurisdictions.

If a (potential) dispute arises, you must first use your reasonable efforts to resolve it amicably with us. If these efforts do not result in a resolution of such dispute, you shall then send us a written notice of dispute setting out (i) the nature of the dispute, and the claim you are making; and (ii) the remedy you are seeking.

If we and you are unable to further resolve this dispute within sixty (60) calendar days of us receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and us through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration.

Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against us.

11) About these Website Terms of Use

These Website Terms of Use cover the entire agreement between you and us regarding the Website and supersede all prior and contemporaneous understandings, agreements, representations and warranties, both written and oral, with respect to the Website.

The captions and headings identifying sections and subsections of these Website Terms of Use are for reference only and do not define, modify, expand, limit, or affect the interpretation of any provisions of these Website Terms of Use.

If any part of these Website Terms of Use is held invalid or unenforceable, that part will be severable from these Website Terms of Use, and the remaining portions will remain in full force and effect. If we fail to enforce any of these Website Terms of Use, that does not mean that we have waived our right to enforce them.

If you have any specific questions about these Website Terms of Use, please contact us at legal@free.technology.

This document is licensed under CC-BY-SA.

- - + + \ No newline at end of file