diff --git a/404.html b/404.html index ac3df3dd783..75d7b092190 100644 --- a/404.html +++ b/404.html @@ -21,8 +21,8 @@ - - + +
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.

diff --git a/assets/js/1646726c.afec1146.js b/assets/js/1646726c.afec1146.js deleted file mode 100644 index 9d82205ddce..00000000000 --- a/assets/js/1646726c.afec1146.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3266],{7244:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>h});const a=JSON.parse('{"id":"learn/learn-staking","title":"Introduction to Staking","description":"Overview of Staking and NPoS on Polkadot.","source":"@site/../docs/learn/learn-staking.md","sourceDirName":"learn","slug":"/learn-staking","permalink":"/docs/learn-staking","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-staking.md","tags":[],"version":"current","lastUpdatedBy":"Kari Hirvi","lastUpdatedAt":1733401897000,"frontMatter":{"id":"learn-staking","title":"Introduction to Staking","sidebar_label":"Introduction to Staking","description":"Overview of Staking and NPoS on Polkadot.","keywords":["staking","stake","nominate","nominating","NPoS","faq"],"slug":"../learn-staking"},"sidebar":"docs","previous":{"title":"Staking","permalink":"/docs/learn-staking-index"},"next":{"title":"Nomination Pools","permalink":"/docs/learn-nomination-pools"}}');var o=t(74848),i=t(28453),s=t(67141);const r={id:"learn-staking",title:"Introduction to Staking",sidebar_label:"Introduction to Staking",description:"Overview of Staking and NPoS on Polkadot.",keywords:["staking","stake","nominate","nominating","NPoS","faq"],slug:"../learn-staking"},l=void 0,d={},h=[{value:"Proof-of-Stake (PoS)",id:"proof-of-stake-pos",level:2},{value:"Nominated Proof-of-Stake (NPoS)",id:"nominated-proof-of-stake-npos",level:2},{value:"Nominating Validators",id:"nominating-validators",level:3},{value:"Eras and Sessions",id:"eras-and-sessions",level:3},{value:"Staking Rewards",id:"staking-rewards",level:3},{value:"Skin in the game when Staking",id:"skin-in-the-game-when-staking",level:3},{value:"Being a Nominator",id:"being-a-nominator",level:2},{value:"Tasks and Responsibilities of a Nominator",id:"tasks-and-responsibilities-of-a-nominator",level:3},{value:"Selection of Validators",id:"selection-of-validators",level:3},{value:"Validator Selection Criteria",id:"validator-selection-criteria",level:4},{value:"Network Providers",id:"network-providers",level:4},{value:"Keeping Track of Nominated Validators",id:"keeping-track-of-nominated-validators",level:4},{value:"Stash Account and Staking Proxy",id:"stash-account-and-staking-proxy",level:3},{value:"Claiming Staking Rewards",id:"claiming-staking-rewards",level:3},{value:"Chilling",id:"chilling",level:3},{value:"Fast Unstake",id:"fast-unstake",level:3},{value:"Why and Why not to Stake?",id:"why-and-why-not-to-stake",level:2},{value:"Pros of Staking",id:"pros-of-staking",level:3},{value:"Cons of Staking",id:"cons-of-staking",level:3},{value:"Unbonding Period Length",id:"unbonding-period-length",level:4},{value:"How many Validators?",id:"how-many-validators",level:2},{value:"Why am I not receiving rewards?",id:"why-am-i-not-receiving-rewards",level:2},{value:"Staking FAQ",id:"staking-faq",level:2},{value:"Resources",id:"resources",level:2}];function c(e){const n={a:"a",admonition:"admonition",em:"em",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.A,{message:"Nomination Pools are evolving!\nSoon you'll be able to participate in a pool and in OpenGov with your pooled funds!\nYou do not need to do anything, unless you are participating in a pool and also staking solo from the same account. In this case, please check [this article](https://support.polkadot.network/support/solutions/articles/65000188140-changes-for-nomination-pool-members-and-opengov-participation) on the actions you need to take as soon as possible."}),"\n",(0,o.jsx)(n.admonition,{title:"New to Staking?",type:"tip",children:(0,o.jsxs)(n.p,{children:["Explore Polkadot with a secure and user-friendly wallets listed on the\n",(0,o.jsx)(n.a,{href:"https://www.polkadot.network/ecosystem/wallets/",children:"Polkadot website"})," and start your staking journey\nor explore more information about staking on\n",(0,o.jsx)(n.a,{href:"https://polkadot.network/staking/",children:"Polkadot's Staking Page"}),". Discover the new\n",(0,o.jsx)(n.a,{href:"https://staking.polkadot.cloud/#/overview",children:"Staking Dashboard"})," that makes staking much easier and\ncheck this\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182104",children:"extensive article list"})," to\nhelp you get started. The dashboard supports ",(0,o.jsx)(n.a,{href:"/docs/ledger",children:"Ledger"})," devices natively and\ndoes not require an extension or wallet as an interface."]})}),"\n",(0,o.jsx)(n.admonition,{title:"Stake through Nomination Pools",type:"info",children:(0,o.jsxs)(n.p,{children:["The minimum amount required to become an active nominator (i.e.\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#minimum-active-bond",children:"the minimum active bond"}),") and earn rewards\nmay change from era to era. If you have less tokens than the minimum active nomination and still\nwant to participate in staking, you can join the nomination pools with a\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#minimum-bond-to-join-a-nomination-pool",children:"minimal bond"})," and earn\nstaking rewards. For additional information, check out\n",(0,o.jsx)(n.a,{href:"https://polkadot.network/blog/nomination-pools-are-live-stake-natively-with-just-1-dot/",children:"this blog post"}),".\nCheck the wiki doc on ",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pools"})," for more information."]})}),"\n",(0,o.jsx)(n.p,{children:"Here you will learn about what staking is, why it is important, and how it works."}),"\n",(0,o.jsx)(n.h2,{id:"proof-of-stake-pos",children:"Proof-of-Stake (PoS)"}),"\n",(0,o.jsxs)(n.p,{children:["Blockchain networks use ",(0,o.jsx)(n.a,{href:"/docs/faq#why-do-we-need-consensus",children:"consensus"})," mechanisms to\nfinalize blocks on the chain. Consensus is the process of agreeing on something, in this case, the\nprogression of the blockchain or how blocks are added to the chain. Consensus consists of two\nactions:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Block production"}),", i.e. the way multiple blocks candidates are produced, and"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Block finality"}),", i.e. the way only one block out of many candidates is selected and added to\nthe canonical chain (see ",(0,o.jsx)(n.a,{href:"learn-consensus.md/#probabilistic-vs-provable-finality",children:"this"})," article\nfor more information about finality)."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Proof-of-Work (PoW) and Proof-of-Stake (PoS) are well-known mechanisms used to reach consensus in a\nsecure and trustless way on public blockchains, where there are many participants who do not know\neach other (and probably never will). In PoW, network security relies on the fact that the miners\nwho are responsible for adding blocks to the chain must compete to solve difficult mathematic\npuzzles to add blocks - a solution that has been criticized for the wastage of energy. For doing\nthis work, miners are typically rewarded with tokens."}),"\n",(0,o.jsxs)(n.p,{children:["In PoS networks like Polkadot, the security of the network depends on the amount of capital locked\non the chain: the more the capital locked, the lower the chance of an attack on the network, as the\nattacker needs to incur a heavy loss to orchestrate a successful attack (more on this later on). The\nprocess of locking tokens on the chain is called ",(0,o.jsx)(n.strong,{children:"staking"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Similar to the miners in PoW networks, PoS networks have ",(0,o.jsx)(n.strong,{children:"validators"}),", but they do not have to\ncompete with each other to solve mathematical puzzles. They are instead pre-selected to produce the\nblocks based on the stake backing them. Token holders can lock funds on the chain and for doing so,\nthey are getting ",(0,o.jsx)(n.strong,{children:"staking rewards"}),". There is thus an economic incentive for token holders to\nbecome active participants who contribute to the economic security and stability of the network. PoS\nnetworks in general are therefore more inclusive than PoW networks, as participants do not need to\nhave either technical knowledge about blockchain technology or experience in running mining\nequipment."]}),"\n",(0,o.jsxs)(n.p,{children:['PoS ensures that everybody participating in the staking process has "skin in the game" and thus can\nbe held accountable. In case of misbehavior, participants in the staking process can be punished or\n',(0,o.jsx)(n.a,{href:"/docs/learn-offenses",children:(0,o.jsx)(n.strong,{children:"slashed"})}),", and depending on the gravity of the situation, their stake can\nbe partly or fully confiscated by the network. It is not in a staker's economic interest to\norchestrate an attack and risk losing tokens. Any rational actor staking on the network would want\nto get rewarded, and the PoS network rewards good behavior and punishes bad behavior."]}),"\n",(0,o.jsx)(n.h2,{id:"nominated-proof-of-stake-npos",children:"Nominated Proof-of-Stake (NPoS)"}),"\n",(0,o.jsxs)(n.p,{children:["Polkadot implements ",(0,o.jsx)(n.a,{href:"learn-consensus.md/#nominated-proof-of-stake",children:"Nominated Proof-of-Stake (NPoS)"}),",\na relatively novel and sophisticated mechanism to select the validators who are allowed to\nparticipate in its ",(0,o.jsx)(n.a,{href:"/docs/learn-consensus",children:"consensus"})," protocol. NPoS encourages token holders to\nparticipate as ",(0,o.jsx)(n.strong,{children:"nominators"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Any potential validators can indicate their intention to be a validator candidate. Their candidacies\nare made public to all nominators, and a nominator, in turn, submits a\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#maximum-votes-per-nominator",children:"capped list of candidates"})," that it\nsupports, and the network will automatically distribute the stake among validators in an even manner\nso that the economic security is maximized. In the next era, a certain number of validators having\nthe highest backing get elected and become active. For more information about the election algorithm\ngo to ",(0,o.jsx)(n.a,{href:"/docs/learn-phragmen",children:"this"})," page on the wiki or\n",(0,o.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/protocols/NPoS/Paper",children:"this"})," research article. As a\nnominator, a ",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#minimum-bond-to-participate-in-staking",children:"minimum bond"}),"\nis required to submit an intention to nominate, which can be thought of as registering to be a\nnominator. Note that in NPoS the stake of both nominators and validators can be\n",(0,o.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashed"}),". For an in-depth review of NPoS see\n",(0,o.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/protocols/NPoS/Overview",children:"this"})," research article."]}),"\n",(0,o.jsx)(n.admonition,{title:"Minimum Nomination to Receive Staking Rewards",type:"caution",children:(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/chain-state-values#minimum-bond-to-participate-in-staking",children:"The minimum nomination intent"}),"\ndoes not guarantee staking rewards. The nominated amount has to be greater than\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#minimum-active-bond",children:"minimum active nomination"}),", which is a\ndynamic value that can be much higher than the minimum nomination intent. This dynamic value depends\non the amount of tokens being staked, in addition to the selected nominations."]})}),"\n",(0,o.jsx)(n.h3,{id:"nominating-validators",children:"Nominating Validators"}),"\n",(0,o.jsx)(n.p,{children:"Nominating requires 2 actions:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Locking tokens on-chain."}),"\n",(0,o.jsx)(n.li,{children:"Selecting a set of validators, to whom these locked tokens will automatically be allocated to."}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["How many tokens you lock up is completely up to you - as are the validators you wish to select. The\naction of locking tokens is also known as ",(0,o.jsx)(n.strong,{children:"bonding"}),". You can also refer to your locked tokens as\nyour bonded tokens, or staked tokens. Likewise, selecting validators is also known as backing or\nnominating validators. These terms are used interchangeably by the community. From now on locked\ntokens will be referred to as bonded tokens."]}),"\n",(0,o.jsx)(n.p,{children:"Once the previous 2 steps are completed and you are nominating, your bonded tokens could be\nallocated to one or more of your selected validators, and this happens every time the active\nvalidator set changes. This validator set is updated every era."}),"\n",(0,o.jsx)(n.p,{children:"Unlike other staking systems, Polkadot automatically chooses which of your selected validators will\nbe backed by your bonded tokens. Selecting a group of validators increases your chances of\nconsistently backing at least one who is active. This results in your bonded tokens being allocated\nto validators more often, which means more network security and more rewards. This is in strong\ncontrast to other staking systems that only allow you to back one validator; if that validator is\nnot active, you as a staker will also not be."}),"\n",(0,o.jsxs)(n.p,{children:["Polkadot's nomination model solves this. It uses tools ranging from election theory to game theory\nto discrete optimization, to develop an efficient validator selection process that offers fair\nrepresentation and security, thus avoiding uneven power and influence among validators. The election\nalgorithms are based on the Proportional Justified Representation (PJR) methods like\n",(0,o.jsx)(n.a,{href:"/docs/learn-phragmen",children:"Phragmen"}),". For more information about PJR methods visit\n",(0,o.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/protocols/NPoS/Overview",children:"this"})," research article."]}),"\n",(0,o.jsx)(n.h3,{id:"eras-and-sessions",children:"Eras and Sessions"}),"\n",(0,o.jsxs)(n.p,{children:["The stake from nominators is used to increase the number of tokens held by such candidates,\nincreasing their chance of being selected by the election algorithm for block production during a\nspecific ",(0,o.jsx)(n.strong,{children:"era"}),". An era is a period of 24 hours (6 hours on Kusama) during which an ",(0,o.jsx)(n.strong,{children:"active set"}),"\nof validators is producing blocks and performing other actions on the chain. This means that not all\nvalidators are in the active set and such set changes between eras. Each era is divided into 6\nepochs or ",(0,o.jsx)(n.strong,{children:"sessions"})," during which validators are assigned as block producers to specific time\nframes or ",(0,o.jsx)(n.strong,{children:"slots"}),". This means that validators know the slots when they will be required to produce\na block within a specific session, but they do not know all the slots within a specific era. Having\nsessions adds a layer of security because it decreases the chance of having multiple validators\nassigned to a slot colluding to harm the network."]}),"\n",(0,o.jsx)(n.h3,{id:"staking-rewards",children:"Staking Rewards"}),"\n",(0,o.jsxs)(n.p,{children:["Validators who produce a block are rewarded with tokens, and they can share rewards with their\nnominators. Both validators and nominators can stake their tokens on chain and receive staking\nrewards at the end of each era. The staking system pays out rewards equally to all validators\nregardless of stake. Thus, having more stake in a validator does not influence the amount of block\nrewards it receives. This avoids the centralization of power to a few validators. There is a\nprobabilistic component in the calculation of rewards, so they may not be exactly equal for all\nvalidators. In fact, during each era validators can earn ",(0,o.jsx)(n.strong,{children:"era points"})," by doing different tasks on\nchain. The more the points, the higher the reward for a specific era. This promotes validators'\nactivity on chain. To know more about era points, and how and on which basis they are distributed\nvisit the ",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-validator-payout",children:"dedicated page"}),". Distribution of the\nrewards is pro-rata to all stakers after the validator's commission is deducted."]}),"\n",(0,o.jsx)(n.h3,{id:"skin-in-the-game-when-staking",children:"Skin in the game when Staking"}),"\n",(0,o.jsx)(n.p,{children:"The security of PoS networks depends on the amount of staked tokens. To successfully attack the\nnetwork, a malicious actor would need to accrue a large number of tokens or would need different\nparticipants to collude and act maliciously. If there is an attack in the case of NPoS, both the\nvalidator(s) and nominators will be slashed resulting in their stake being partially or fully\nconfiscated by the network and then deposited to the treasury. There is little interest for a\nrational network participant to act in a harmful way because NPoS ensures that all participants can\nbe held accountable for their bad actions. In NPoS, validators are paid equal rewards regardless of\nthe amount of stake backing them, thus avoiding large payouts to few large validators which might\nlead to centralization."}),"\n",(0,o.jsx)(n.h2,{id:"being-a-nominator",children:"Being a Nominator"}),"\n",(0,o.jsx)(n.h3,{id:"tasks-and-responsibilities-of-a-nominator",children:"Tasks and Responsibilities of a Nominator"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Validators."})," Since validator slots are limited, most of those who wish to stake their tokens and\ncontribute to the economic security of the network will be nominators, thus here we focus on the\nrole of nominators. However, it is worth mentioning that validators do most of the heavy lifting:\nthey run the validator nodes and manage\n",(0,o.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/security/keys/session",children:"session keys"}),", produce new block\ncandidates in ",(0,o.jsx)(n.a,{href:"learn-consensus.md/#block-production-babe",children:"BABE"}),", vote and come to consensus in\n",(0,o.jsx)(n.a,{href:"learn-consensus.md/#finality-gadget-grandpa",children:"GRANDPA"}),", validate the state transition function of\nparachains, and possibly some other responsibilities regarding data availability and\n",(0,o.jsx)(n.a,{href:"/docs/learn-xcm",children:"XCM"}),". For more information, you can take a look at the\n",(0,o.jsx)(n.a,{href:"/docs/learn-validator",children:"validator docs"})," to understand what you need to do as a validator. If you want\nto become a validator you can consult\n",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"this"})," guide."]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Nominators."})," Nominators have far fewer responsibilities than validators. These include selecting\nvalidators and monitoring their performance, keeping an eye on changing commission rates (a\nvalidator can change commission at any time), and general health monitoring of their validators'\naccounts. Thus, while not being completely set-it-and-forget-it, a nominator's experience is\nrelatively hands-off compared to that of a validator, and even more with\n",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pools"}),". For more information, you can take a look at the\nnominator ",(0,o.jsx)(n.a,{href:"/docs/learn-nominator",children:"guide"})," to understanding your responsibilities as a nominator."]}),"\n",(0,o.jsxs)(n.p,{children:["If you want to become a nominator, see ",(0,o.jsx)(n.a,{href:"/docs/learn-nominator",children:"this"})," guide. If you are a\nbeginner and would like to securely stake your tokens using the Polkadot-JS UI, refer to\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000168057-how-do-i-stake-nominate-on-polkadot-",children:"this"}),"\nsupport article. The tutorial presented in the support article is demonstrated on Polkadot, but the\nprocedure is the same for Kusama."]}),"\n",(0,o.jsx)(n.admonition,{title:"Polkadot Staking Dashboard",type:"info",children:(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"https://staking.polkadot.cloud/dashboard/#/overview",children:"Staking Dashboard"})," provides a more\nuser-friendly alternative to staking. See the instructions in\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182133-how-to-use-the-staking-dashboard-staking-your-dot",children:"this"}),"\nsupport article to learn how to stake with the dashboard."]})}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Pools."}),' Pools are "built" on top of NPoS to provide a very low barrier to entry to staking,\nwithout sacrificing Polkadot\'s strict security model.']}),"\n",(0,o.jsx)(n.h3,{id:"selection-of-validators",children:"Selection of Validators"}),"\n",(0,o.jsx)(n.p,{children:"The task of choosing validators is not simple, as it should take into account nominator reward and\nrisk preferences. Ideally one aims to maximize the reward-to-risk ratio by maximizing rewards and\nminimizing risks, with sometimes having to compromise between the two, as minimizing risks might\ndecrease rewards as well. Nominators should pay attention, especially to six criteria when\nnominating validators (not in order of importance):"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"recent history of the era points earned across eras"}),"\n",(0,o.jsx)(n.li,{children:"validator's self stake (shows skin in the game)"}),"\n",(0,o.jsx)(n.li,{children:"total stake backing the validator (which is the sum of self stake and the stake coming from\nnominators)"}),"\n",(0,o.jsx)(n.li,{children:"commission fees (i.e. how much validators charge nominators)"}),"\n",(0,o.jsx)(n.li,{children:"verified identity"}),"\n",(0,o.jsx)(n.li,{children:"previous slashes"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"The diagram below shows how the selection of those criteria affects the reward-to-risk ratio."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"rewards and risks diagram",src:t(90997).A+"",width:"1920",height:"800"})}),"\n",(0,o.jsx)(n.h4,{id:"validator-selection-criteria",children:"Validator Selection Criteria"}),"\n",(0,o.jsx)(n.p,{children:"To maximize rewards and minimize risk, one could select those validators that:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"have era points above average (because they will get more rewards for being active),"}),"\n",(0,o.jsx)(n.li,{children:"have the total stake backing the validator below the average active validator stake (because they\nwill pay out more rewards per staked token),"}),"\n",(0,o.jsx)(n.li,{children:"have high own stake (because if slashed they have something to lose),"}),"\n",(0,o.jsx)(n.li,{children:"have low commission fees but not 0% (because it makes sense that for doing the heavy lifting,\nvalidators ask for a small commission),"}),"\n",(0,o.jsx)(n.li,{children:"have on-chain registered identity (because it adds a layer of trust and possibly provides access\nto their website and contact details),"}),"\n",(0,o.jsx)(n.li,{children:"and have not been slashed (meaning that their on-chain behavior is genuine)."}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"network-providers",children:"Network Providers"}),"\n",(0,o.jsxs)(n.p,{children:["For successful operation, a Validator node should always be ensured to meet the required\n",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-how-to-validate-polkadot#reference-hardware",children:"software, hardware, and network bandwidth specifications"}),".\nUnderstandably, most of the validator nodes run on cloud service providers that guarantee high\nhardware specifications and high levels of availability and connectivity. Keep in mind that a\nvalidator in the active set is supposed to be fully online and available for producing blocks. If\nthe active validator node goes offline due to network interruptions or a power outage, that\nvalidator will get fewer rewards."]}),"\n",(0,o.jsx)(n.admonition,{title:"Checking Validators using Network Providers",type:"tip",children:(0,o.jsxs)(n.p,{children:["You can connect your stash account to the ",(0,o.jsx)(n.a,{href:"https://polkawatch.app/",children:"Polkawatch app"}),". The app will\nshow your rewards earned in the past 60 eras divided by network provider and country. You will be\nable to see networks used by each validator and verify if your validators are using providers who\nsupport PoS. This is also a great tool to explore how decentralized your nominations are and act\naccordingly."]})}),"\n",(0,o.jsx)(n.h4,{id:"keeping-track-of-nominated-validators",children:"Keeping Track of Nominated Validators"}),"\n",(0,o.jsx)(n.admonition,{title:"Nominators must periodically check their validators",type:"caution",children:(0,o.jsxs)(n.p,{children:["Nominating is ",(0,o.jsx)(n.em,{children:"not"}),' a "set and forget" operation. The whole NPoS system is dynamic and nominators\nshould periodically monitor the performance and reputation of their validators. Failing to do so\ncould result in applied slashes and/or rewards not being paid out, possibly for a prolonged period.']})}),"\n",(0,o.jsxs)(n.p,{children:["Although the theory can be used as a general guideline, in practice it is more complicated and\nfollowing the theory might not necessarily lead to the desired result. Validators might have the\ntotal stake backing them below average, low commission and above average era points in one era and\nthen have a different profile in the next one. Selection based on the criteria like on-chain\nidentity, slash history and low commission make the staking rewards deterministic. But some criteria\nvary more than others, with era points being the most variable and thus one of the key probabilistic\ncomponents of staking rewards. Part of this probability is directly related to the fact that a\nvalidator can produce blocks for a parachain (i.e. para-validators) or the relay chain, with\npara-validators earning more era points per unit time (see\n",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-validator-payout#era-points",children:"this"})," page for more information). The\nrole can switch between sessions, and you can look at\n",(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking",children:"the staking tab on the Polkadot-JS UI"})," to know which\nvalidator is producing blocks for the relay chain or parachains."]}),"\n",(0,o.jsxs)(n.p,{children:["It is not recommended to change nominations because of the low era points of a validator in a single\nera. Variability in rewards due to the era points should level out over time. If a validator\nconsistently gets era points below average, it makes sense to nominate a better-performing validator\nfor the health of the network and increased staking rewards. See\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000150130-how-do-i-know-which-validators-to-choose-",children:"this"}),"\nsupport article to understand in detail how to select the set of validators to nominate."]}),"\n",(0,o.jsx)(n.h3,{id:"stash-account-and-staking-proxy",children:"Stash Account and Staking Proxy"}),"\n",(0,o.jsx)(n.p,{children:"Two different accounts can be used to securely manage your funds while staking."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Stash:"})," This account holds funds bonded for staking, but delegates all staking functions to a\nstaking proxy account. You may actively participate in staking with a stash private key kept in a\ncold wallet like Ledger, meaning it stays offline all the time. Having a staking proxy will allow\nyou to sign all staking-related transactions with the proxy instead of using your Ledger device.\nThis will allow you:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"to avoid carrying around your Ledger device just to sign staking-related transactions, and"}),"\n",(0,o.jsx)(n.li,{children:"to keep the transaction history of your stash clean"}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Staking Proxy:"})," This account acts on behalf of the stash account, signalling decisions about\nnominating and validating. It can set preferences like commission (for validators) and the staking\nrewards payout account. The earned rewards can be bonded (locked) immediately for bonding on your\nstash account, which would effectively compound the rewards you receive over time. You could also\nchoose to have them deposited to a different account as a free (transferable) balance. If you are\na validator, it can also be used to set your ",(0,o.jsx)(n.a,{href:"/docs/learn-cryptography",children:"session keys"}),". Staking\nproxies only need sufficient funds to pay for the transaction fees."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:'Never leave a high balance on a proxy account which are usually "hot" as their private key is stored\non the device (PC, phone) and it is always exposed to the internet for potential hacks and scams. It\nis good practice to deposit rewards on the stash account or to send them to another account on a\ncold wallet.'})}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"staking",src:t(5942).A+"",width:"1920",height:"800"})}),"\n",(0,o.jsxs)(n.p,{children:["This hierarchy of separate keys for stash and staking accounts was designed to add a layer of\nprotection to nominators and validator operators. The more often one exposes and uses a private key,\nthe higher its vulnerability for hacks or scams. So, if one uses a key for multiple roles on a\nblockchain network, it is likely that the account can get compromised. Note that the damage linked\nto stolen private keys is different depending on the type of account derivation. In the case of soft\nderivation, all derived accounts are compromised. More information about account derivation can be\nfound ",(0,o.jsx)(n.a,{href:"../learn/learn-accounts.md/#derivation-paths",children:"here"}),"."]}),"\n",(0,o.jsxs)(n.admonition,{type:"info",children:[(0,o.jsx)(n.p,{children:"For Ledger users staking directly on Ledger Live, currently, there is no option to use separate\nstash and staking proxy accounts."}),(0,o.jsxs)(n.p,{children:["Ledger devices are now supported in ",(0,o.jsx)(n.a,{href:"https://www.subwallet.app/download.html",children:"SubWallet"}),",\n",(0,o.jsx)(n.a,{href:"https://talisman.xyz/",children:"Talisman"}),", and ",(0,o.jsx)(n.a,{href:"https://polkagate.xyz/",children:"PolkaGate"})," extension. Users can\nimport their Ledger accounts in the extension and use them as a stash in staking. You can find more\ninformation about, SubWallet, Talisman, PolkaGate and other wallets that officially secured funding\nfrom the treasury ",(0,o.jsx)(n.a,{href:"/docs/wallets-and-extensions",children:"here"}),"."]})]}),"\n",(0,o.jsx)(n.h3,{id:"claiming-staking-rewards",children:"Claiming Staking Rewards"}),"\n",(0,o.jsx)(n.p,{children:"Note that Kusama runs approximately 4x as fast as Polkadot, except for block production times.\nPolkadot will also produce blocks at approximately six-second intervals."}),"\n",(0,o.jsxs)(n.p,{children:["Rewards are calculated per era (approximately six hours on Kusama and twenty-four hours on\nPolkadot). These rewards are calculated based on era points, which have a probabilistic component.\nIn other words, there may be slight differences in your rewards from era to era, and even amongst\nvalidators in the active set at the same time. These variations should cancel out over a long enough\ntimeline. See the page on ",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-validator-payout",children:"Validator Payout Guide"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The distribution of staking rewards to the nominators is not automatic and needs to be triggered by\nsomeone. Typically the validators take care of this, but anyone can permissionlessly trigger rewards\npayout for all the nominators whose stake has backed a specific validator in the active set of that\nera. Staking rewards are kept available for\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#staking-reward-retention",children:"a limited amount of time"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["For more information on why this is so, see the page on ",(0,o.jsx)(n.a,{href:"/docs/learn-staking-advanced",children:"simple payouts"}),"."]}),"\n",(0,o.jsxs)(n.admonition,{title:"Payouts",type:"info",children:[(0,o.jsxs)(n.p,{children:["Payouts are unclaimed rewards waiting to be paid out to both validators and nominators. If you go to\nthe Staking payouts page on ",(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking",children:"Polkadot-JS"}),", you will see a\nlist of all validators that you have nominated in the past 84 eras and for which you have not yet\nreceived a payout. The payout page is visible only to stakers."]}),(0,o.jsx)(n.p,{children:"Each validator as well as their nominators have the option to trigger the payout for all unclaimed\neras. Note that this will pay everyone who was nominating that validator during those eras.\nTherefore, you may not see anything in this tab, yet still have received a payout if somebody\n(generally, but not necessarily, another nominator or the validator operator) has triggered the\npayout for that validator for that era."})]}),"\n",(0,o.jsx)(n.admonition,{title:"Time limit to claim staking rewards",type:"warning",children:(0,o.jsx)(n.p,{children:"If nobody claims your staking rewards within 84 eras, then you will not be able to claim them and\nthey will be lost. Additionally, if the validator unbonds all their own stake, any pending payouts\nwill also be lost."})}),"\n",(0,o.jsx)(n.p,{children:"Rewards can be directed to the same account used to sign the payout or to a completely unrelated\naccount. It is also possible to top-up / withdraw some bonded tokens without having to un-stake all\nstaked tokens."}),"\n",(0,o.jsxs)(n.p,{children:["If you wish to know if you received a payout, you will have to check via a block explorer. See\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000168954-how-can-i-see-my-staking-rewards-",children:"the relevant Support page"}),"\nfor details. For specific details about validator payouts, please see\n",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-validator-payout",children:"this guide"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"chilling",children:"Chilling"}),"\n",(0,o.jsx)(n.p,{children:"Chilling is the act of stepping back from any nominating or validating. It can be done by a\nvalidator or nominator at any time, taking effect in the next era."}),"\n",(0,o.jsx)(n.p,{children:"Chilling can be validator-initiated, e.g. if there is a planned outage in the validator's\nsurroundings or hosting provider, and the validator wants to exit to protect themselves against\nslashing. Chilling will keep the validator active in the current era, but will move them to the\ninactive set in the next. The validator will not lose their nominators."}),"\n",(0,o.jsxs)(n.p,{children:['For more on chilling, see the "',(0,o.jsx)(n.a,{href:"/docs/maintain-guides-how-to-chill",children:"How to Chill"}),'" page on\nthis wiki.']}),"\n",(0,o.jsx)(n.h3,{id:"fast-unstake",children:"Fast Unstake"}),"\n",(0,o.jsx)(n.admonition,{title:"Fast Unstaking feature is live!",type:"info",children:(0,o.jsx)(n.p,{children:"If you accidentally bonded your tokens or your bonded tokens never backed any active validator, you\ncan now unbond them immediately."})}),"\n",(0,o.jsxs)(n.p,{children:["If your bonded balance did not back any validators for a\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#bounty-duration",children:"pre-determined period"}),", you are eligible to\nperform fast unstaking. The ",(0,o.jsx)(n.a,{href:"https://staking.polkadot.cloud/#/overview",children:"staking dashboard"})," will\nautomatically check if you qualify. For more information, visit the\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000169433-can-i-transfer-dot-without-unbonding-and-waiting-28-days-",children:'"Fast Unstake" section in this support article'}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"why-and-why-not-to-stake",children:"Why and Why not to Stake?"}),"\n",(0,o.jsx)(n.h3,{id:"pros-of-staking",children:"Pros of Staking"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Earn rewards for contributing to the network's security through staking."}),"\n",(0,o.jsxs)(n.li,{children:["Low barrier of entry through ",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"Nomination Pools"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Can choose ",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#maximum-votes-per-nominator",children:"multiple validators"}),"\nwhich can help to decentralize the network through the sophisticated\n",(0,o.jsx)(n.a,{href:"learn-consensus.md/#nominated-proof-of-stake",children:"NPoS system"})]}),"\n",(0,o.jsxs)(n.li,{children:["85% of inflation/year of the tokens is primarily intended for staking rewards. Check the\n",(0,o.jsx)(n.a,{href:"/docs/learn-staking-advanced#inflation",children:"inflation"})," section on the Wiki for more information."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"cons-of-staking",children:"Cons of Staking"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Tokens will be locked during the\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#unbonding-duration",children:"unbonding period"})," and no rewards will be\nearned if you unbond."]}),"\n",(0,o.jsxs)(n.li,{children:["Possible punishment in case of the active validator found to be misbehaving (see\n",(0,o.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashing"}),")."]}),"\n",(0,o.jsx)(n.li,{children:"Lack of liquidity i.e. You would not be able to use the tokens for participating in crowdloans or\ntransfer them to different account etc."}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"unbonding-period-length",children:"Unbonding Period Length"}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#unbonding-duration",children:"unbonding period"})," provides a safety net\nfor slashing offenses identified in\n",(0,o.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/security/slashing/npos#slashing-in-past-eras",children:"past eras"}),",\nwhich can hold the respective validators and their nominators accountable. The unbonding period is\ncrucial in mitigating ex post facto slashing, particularly in guarding against long-range attacks.\nWhen a client encounters a chain finalized by\n",(0,o.jsx)(n.a,{href:"/docs/learn-consensus#finality-gadget-grandpa",children:"GRANDPA"})," that originates more than one\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#unbonding-duration",children:"unbonding period"})," in the past, it lacks the\nsecurity of slashing protection."]}),"\n",(0,o.jsxs)(n.p,{children:["Essentially, this period establishes a cadence for synchronizing with the chain or acquiring a\ncheckpoint within a timeframe that engenders trust. It's worth noting that while the choice of\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#unbonding-duration",children:"unbonding period length"})," is somewhat\narbitrary, it unquestionably provides a higher level of security compared to a shorter period."]}),"\n",(0,o.jsx)(n.h2,{id:"how-many-validators",children:"How many Validators?"}),"\n",(0,o.jsxs)(n.p,{children:["The top bound on the ",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#active-validator-count",children:"number of validators"}),"\nhas not been determined yet, but should only be limited by the bandwidth strain of the network due\nto peer-to-peer message passing."]}),"\n",(0,o.jsx)(n.p,{children:"The estimate of the number of validators that Polkadot will have at maturity is around 1000, while\nKusama is already operating at this threshold."}),"\n",(0,o.jsx)(n.h2,{id:"why-am-i-not-receiving-rewards",children:"Why am I not receiving rewards?"}),"\n",(0,o.jsx)(n.p,{children:"Nominating is not a set-and-forget action. Nominators need to monitor their nominations and ensure\nthey are eligible to receive staking rewards. Otherwise, they would be risking their funds to secure\nthe chain with no reward. If you are bonding significantly more than the Minimum Active Bond and yet\nnot receiving rewards, your nominations are all waiting, or your active validator has 100%\ncommission. However, if you bond funds close to the Minimum Active Bond, there could be several\npossibilities for not receiving staking rewards. The table below can be used to troubleshoot why you\nmight not be receiving staking rewards using Polkadot-JS UI."}),"\n",(0,o.jsxs)(n.table,{children:[(0,o.jsx)(n.thead,{children:(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.th,{style:{textAlign:"center"},children:"Nomination Status"}),(0,o.jsx)(n.th,{style:{textAlign:"center"},children:"What's happening?"}),(0,o.jsx)(n.th,{style:{textAlign:"center"},children:"Causes"}),(0,o.jsx)(n.th,{style:{textAlign:"center"},children:"What to do?"})]})}),(0,o.jsxs)(n.tbody,{children:[(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{style:{textAlign:"center"},children:"Nominated validators are all in waiting status."}),(0,o.jsx)(n.td,{style:{textAlign:"center"},children:"Your stake has not been assigned to any of the nominated validators. You cannot earn rewards, nor be slashed in that era."}),(0,o.jsx)(n.td,{style:{textAlign:"center"},children:'Waiting validators are not in the active set in the current era and the stake backing them is not used to secure the network. In simple words, NPoS "does not see them".'}),(0,o.jsx)(n.td,{style:{textAlign:"center"},children:"Change your nominations. Try to select validators (with reasonable commission) that have high chances to end up in the active set."})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{style:{textAlign:"center"},children:"You have some inactive, and some waiting nominations."}),(0,o.jsx)(n.td,{style:{textAlign:"center"},children:'Validators shown as "Inactive" in your staking dashboard are still in the active set and are producing blocks in the current era, but your stake has not been assigned to any of them. You will not earn rewards if your stake is not backing an active validator. In this case, you cannot be slashed either.'}),(0,o.jsxs)(n.td,{style:{textAlign:"center"},children:[(0,o.jsx)(n.strong,{children:"Scenario 1:"})," You have bonded less than the Minimum Active Bond. ",(0,o.jsx)(n.strong,{children:"Scenario 2:"})," You have more than the Minimum Active Bond, but your account is at the tail end of the ",(0,o.jsx)(n.a,{href:"/docs/learn-staking-advanced#bags-list",children:"bags list"})," and within your bag there are accounts with less stake than you, in front of you."]}),(0,o.jsxs)(n.td,{style:{textAlign:"center"},children:[(0,o.jsx)(n.strong,{children:"Scenario 1:"})," Try bonding more funds. ",(0,o.jsx)(n.strong,{children:"Scenario 2:"})," Try to put your account in front of the accounts with less stake than you. Instructions available ",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181018-i-have-more-than-the-minimum-bonded-but-i-m-not-getting-rewards",children:"here"})]})]})]})]}),"\n",(0,o.jsx)(n.admonition,{title:"Join a Nomination Pool",type:"tip",children:(0,o.jsxs)(n.p,{children:["By joining a ",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pool"})," that is active and earning rewards, you\ncan start earning staking rewards with as low as 1 DOT. The nomination pools typically have a\ndedicated pool operator who ensures that the pool's stake is always backing an active validator and\nis receiving rewards."]})}),"\n",(0,o.jsx)(n.admonition,{title:"Bags List & Minimum Active Bond",type:"info",children:(0,o.jsxs)(n.p,{children:["You can find information about why you might not receive staking rewards on\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000170805-why-am-i-not-getting-staking-rewards-",children:"this support page"}),"\nand ",(0,o.jsx)(n.a,{href:"https://youtu.be/hIIZRJLrBZA",children:"this video tutorial"}),"."]})}),"\n",(0,o.jsx)(n.h2,{id:"staking-faq",children:"Staking FAQ"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["See\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181959-staking-faq-s",children:"this support page"}),"\nfor the FAQs about staking."]})}),"\n",(0,o.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://medium.com/web3foundation/how-nominated-proof-of-stake-will-work-in-polkadot-377d70c6bd43",children:"How Nominated Proof of Stake will work in Polkadot"})," -\nBlog post by Web3 Foundation researcher Alfonso Cevallos covering NPoS in Polkadot."]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"/docs/maintain-guides-secure-validator",children:"Validator setup"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://decentradot.com/polkadot-validator-selector/",children:"Polkadot validator selector tool"})," - A tool\nthat helps nominators find reliable validators that meet quality-control criteria, including\ncommission rates, verified identity, etc."]}),"\n"]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.admonition,{title:"Polkadot-JS Guides",type:"info",children:(0,o.jsxs)(n.p,{children:["If you are an advanced user, see the ",(0,o.jsx)(n.a,{href:"./learn-guides-staking",children:"Polkadot-JS guides about staking"}),"."]})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},67141:(e,n,t)=>{t.d(n,{A:()=>i});var a=t(96540),o=t(74848);const i=function(e){var n,t=e.message,i=(0,a.useState)(!0),s=i[0],r=i[1];return(0,o.jsx)(o.Fragment,{children:s&&(0,o.jsxs)("div",{className:"message-box",children:[(0,o.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,o.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(n=t,n.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},90997:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/reward-risk-fee9f991186d4097ca3d3f0a713f4ad4.png"},5942:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/stash-and-staking-proxy-ea4d09387a4b56d1349ee896427d9f1d.png"},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>r});var a=t(96540);const o={},i=a.createContext(o);function s(e){const n=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),a.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1646726c.ce3b43d8.js b/assets/js/1646726c.ce3b43d8.js new file mode 100644 index 00000000000..5fdb0444b25 --- /dev/null +++ b/assets/js/1646726c.ce3b43d8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3266],{7244:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>h});const a=JSON.parse('{"id":"learn/learn-staking","title":"Introduction to Staking","description":"Overview of Staking and NPoS on Polkadot.","source":"@site/../docs/learn/learn-staking.md","sourceDirName":"learn","slug":"/learn-staking","permalink":"/docs/learn-staking","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-staking.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1734535671000,"frontMatter":{"id":"learn-staking","title":"Introduction to Staking","sidebar_label":"Introduction to Staking","description":"Overview of Staking and NPoS on Polkadot.","keywords":["staking","stake","nominate","nominating","NPoS","faq"],"slug":"../learn-staking"},"sidebar":"docs","previous":{"title":"Staking","permalink":"/docs/learn-staking-index"},"next":{"title":"Nomination Pools","permalink":"/docs/learn-nomination-pools"}}');var o=t(74848),i=t(28453),s=t(67141);const r={id:"learn-staking",title:"Introduction to Staking",sidebar_label:"Introduction to Staking",description:"Overview of Staking and NPoS on Polkadot.",keywords:["staking","stake","nominate","nominating","NPoS","faq"],slug:"../learn-staking"},l=void 0,d={},h=[{value:"Proof-of-Stake (PoS)",id:"proof-of-stake-pos",level:2},{value:"Nominated Proof-of-Stake (NPoS)",id:"nominated-proof-of-stake-npos",level:2},{value:"Nominating Validators",id:"nominating-validators",level:3},{value:"Eras and Sessions",id:"eras-and-sessions",level:3},{value:"Staking Rewards",id:"staking-rewards",level:3},{value:"Skin in the game when Staking",id:"skin-in-the-game-when-staking",level:3},{value:"Being a Nominator",id:"being-a-nominator",level:2},{value:"Tasks and Responsibilities of a Nominator",id:"tasks-and-responsibilities-of-a-nominator",level:3},{value:"Selection of Validators",id:"selection-of-validators",level:3},{value:"Validator Selection Criteria",id:"validator-selection-criteria",level:4},{value:"Network Providers",id:"network-providers",level:4},{value:"Keeping Track of Nominated Validators",id:"keeping-track-of-nominated-validators",level:4},{value:"Stash Account and Staking Proxy",id:"stash-account-and-staking-proxy",level:3},{value:"Claiming Staking Rewards",id:"claiming-staking-rewards",level:3},{value:"Chilling",id:"chilling",level:3},{value:"Fast Unstake",id:"fast-unstake",level:3},{value:"Why and Why not to Stake?",id:"why-and-why-not-to-stake",level:2},{value:"Pros of Staking",id:"pros-of-staking",level:3},{value:"Cons of Staking",id:"cons-of-staking",level:3},{value:"Unbonding Period Length",id:"unbonding-period-length",level:4},{value:"How many Validators?",id:"how-many-validators",level:2},{value:"Why am I not receiving rewards?",id:"why-am-i-not-receiving-rewards",level:2},{value:"Staking FAQ",id:"staking-faq",level:2},{value:"Resources",id:"resources",level:2}];function c(e){const n={a:"a",admonition:"admonition",em:"em",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.A,{message:"Nomination Pools are evolving!\nSoon you'll be able to participate in a pool and in OpenGov with your pooled funds!\nYou do not need to do anything, unless you are participating in a pool and also staking solo from the same account. In this case, please check [this article](https://support.polkadot.network/support/solutions/articles/65000188140-changes-for-nomination-pool-members-and-opengov-participation) on the actions you need to take as soon as possible."}),"\n",(0,o.jsx)(n.admonition,{title:"New to Staking?",type:"tip",children:(0,o.jsxs)(n.p,{children:["Explore Polkadot with a secure and user-friendly wallets listed on the\n",(0,o.jsx)(n.a,{href:"https://www.polkadot.network/ecosystem/wallets/",children:"Polkadot website"})," and start your staking journey\nor explore more information about staking on\n",(0,o.jsx)(n.a,{href:"https://polkadot.network/staking/",children:"Polkadot's Staking Page"}),". Discover the new\n",(0,o.jsx)(n.a,{href:"https://staking.polkadot.cloud/#/overview",children:"Staking Dashboard"})," that makes staking much easier and\ncheck this\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182104",children:"extensive article list"})," to\nhelp you get started. The dashboard supports ",(0,o.jsx)(n.a,{href:"/docs/ledger",children:"Ledger"})," devices natively and\ndoes not require an extension or wallet as an interface."]})}),"\n",(0,o.jsx)(n.admonition,{title:"Stake through Nomination Pools",type:"info",children:(0,o.jsxs)(n.p,{children:["The minimum amount required to become an active nominator (i.e.\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#minimum-active-bond",children:"the minimum active bond"}),") and earn rewards\nmay change from era to era. If you have less tokens than the minimum active nomination and still\nwant to participate in staking, you can join the nomination pools with a\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#minimum-bond-to-join-a-nomination-pool",children:"minimal bond"})," and earn\nstaking rewards. For additional information, check out\n",(0,o.jsx)(n.a,{href:"https://polkadot.network/blog/nomination-pools-are-live-stake-natively-with-just-1-dot/",children:"this blog post"}),".\nCheck the wiki doc on ",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pools"})," for more information."]})}),"\n",(0,o.jsx)(n.p,{children:"Here you will learn about what staking is, why it is important, and how it works."}),"\n",(0,o.jsx)(n.h2,{id:"proof-of-stake-pos",children:"Proof-of-Stake (PoS)"}),"\n",(0,o.jsxs)(n.p,{children:["Blockchain networks use ",(0,o.jsx)(n.a,{href:"/docs/faq#why-do-we-need-consensus",children:"consensus"})," mechanisms to\nfinalize blocks on the chain. Consensus is the process of agreeing on something, in this case, the\nprogression of the blockchain or how blocks are added to the chain. Consensus consists of two\nactions:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Block production"}),", i.e. the way multiple blocks candidates are produced, and"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Block finality"}),", i.e. the way only one block out of many candidates is selected and added to\nthe canonical chain (see ",(0,o.jsx)(n.a,{href:"/docs/learn-consensus#probabilistic-vs-provable-finality",children:"this"})," article\nfor more information about finality)."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Proof-of-Work (PoW) and Proof-of-Stake (PoS) are well-known mechanisms used to reach consensus in a\nsecure and trustless way on public blockchains, where there are many participants who do not know\neach other (and probably never will). In PoW, network security relies on the fact that the miners\nwho are responsible for adding blocks to the chain must compete to solve difficult mathematic\npuzzles to add blocks - a solution that has been criticized for the wastage of energy. For doing\nthis work, miners are typically rewarded with tokens."}),"\n",(0,o.jsxs)(n.p,{children:["In PoS networks like Polkadot, the security of the network depends on the amount of capital locked\non the chain: the more the capital locked, the lower the chance of an attack on the network, as the\nattacker needs to incur a heavy loss to orchestrate a successful attack (more on this later on). The\nprocess of locking tokens on the chain is called ",(0,o.jsx)(n.strong,{children:"staking"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Similar to the miners in PoW networks, PoS networks have ",(0,o.jsx)(n.strong,{children:"validators"}),", but they do not have to\ncompete with each other to solve mathematical puzzles. They are instead pre-selected to produce the\nblocks based on the stake backing them. Token holders can lock funds on the chain and for doing so,\nthey are getting ",(0,o.jsx)(n.strong,{children:"staking rewards"}),". There is thus an economic incentive for token holders to\nbecome active participants who contribute to the economic security and stability of the network. PoS\nnetworks in general are therefore more inclusive than PoW networks, as participants do not need to\nhave either technical knowledge about blockchain technology or experience in running mining\nequipment."]}),"\n",(0,o.jsxs)(n.p,{children:['PoS ensures that everybody participating in the staking process has "skin in the game" and thus can\nbe held accountable. In case of misbehavior, participants in the staking process can be punished or\n',(0,o.jsx)(n.a,{href:"/docs/learn-offenses",children:(0,o.jsx)(n.strong,{children:"slashed"})}),", and depending on the gravity of the situation, their stake can\nbe partly or fully confiscated by the network. It is not in a staker's economic interest to\norchestrate an attack and risk losing tokens. Any rational actor staking on the network would want\nto get rewarded, and the PoS network rewards good behavior and punishes bad behavior."]}),"\n",(0,o.jsx)(n.h2,{id:"nominated-proof-of-stake-npos",children:"Nominated Proof-of-Stake (NPoS)"}),"\n",(0,o.jsxs)(n.p,{children:["Polkadot implements\n",(0,o.jsx)(n.a,{href:"/docs/learn-consensus#nominated-proof-of-stake",children:"Nominated Proof-of-Stake (NPoS)"}),", a relatively novel\nand sophisticated mechanism to select the validators who are allowed to participate in its\n",(0,o.jsx)(n.a,{href:"/docs/learn-consensus",children:"consensus"})," protocol. NPoS encourages token holders to participate as\n",(0,o.jsx)(n.strong,{children:"nominators"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Any potential validators can indicate their intention to be a validator candidate. Their candidacies\nare made public to all nominators, and a nominator, in turn, submits a\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#maximum-votes-per-nominator",children:"capped list of candidates"})," that it\nsupports, and the network will automatically distribute the stake among validators in an even manner\nso that the economic security is maximized. In the next era, a certain number of validators having\nthe highest backing get elected and become active. For more information about the election algorithm\ngo to ",(0,o.jsx)(n.a,{href:"/docs/learn-phragmen",children:"this"})," page on the wiki or\n",(0,o.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/protocols/NPoS/Paper",children:"this"})," research article. As a\nnominator, a ",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#minimum-bond-to-participate-in-staking",children:"minimum bond"}),"\nis required to submit an intention to nominate, which can be thought of as registering to be a\nnominator. Note that in NPoS the stake of both nominators and validators can be\n",(0,o.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashed"}),". For an in-depth review of NPoS see\n",(0,o.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/protocols/NPoS/Overview",children:"this"})," research article."]}),"\n",(0,o.jsx)(n.admonition,{title:"Minimum Nomination to Receive Staking Rewards",type:"caution",children:(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/chain-state-values#minimum-bond-to-participate-in-staking",children:"The minimum nomination intent"}),"\ndoes not guarantee staking rewards. The nominated amount has to be greater than\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#minimum-active-bond",children:"minimum active nomination"}),", which is a\ndynamic value that can be much higher than the minimum nomination intent. This dynamic value depends\non the amount of tokens being staked, in addition to the selected nominations."]})}),"\n",(0,o.jsx)(n.h3,{id:"nominating-validators",children:"Nominating Validators"}),"\n",(0,o.jsx)(n.p,{children:"Nominating requires 2 actions:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Locking tokens on-chain."}),"\n",(0,o.jsx)(n.li,{children:"Selecting a set of validators, to whom these locked tokens will automatically be allocated to."}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["How many tokens you lock up is completely up to you - as are the validators you wish to select. The\naction of locking tokens is also known as ",(0,o.jsx)(n.strong,{children:"bonding"}),". You can also refer to your locked tokens as\nyour bonded tokens, or staked tokens. Likewise, selecting validators is also known as backing or\nnominating validators. These terms are used interchangeably by the community. From now on locked\ntokens will be referred to as bonded tokens."]}),"\n",(0,o.jsx)(n.p,{children:"Once the previous 2 steps are completed and you are nominating, your bonded tokens could be\nallocated to one or more of your selected validators, and this happens every time the active\nvalidator set changes. This validator set is updated every era."}),"\n",(0,o.jsx)(n.p,{children:"Unlike other staking systems, Polkadot automatically chooses which of your selected validators will\nbe backed by your bonded tokens. Selecting a group of validators increases your chances of\nconsistently backing at least one who is active. This results in your bonded tokens being allocated\nto validators more often, which means more network security and more rewards. This is in strong\ncontrast to other staking systems that only allow you to back one validator; if that validator is\nnot active, you as a staker will also not be."}),"\n",(0,o.jsxs)(n.p,{children:["Polkadot's nomination model solves this. It uses tools ranging from election theory to game theory\nto discrete optimization, to develop an efficient validator selection process that offers fair\nrepresentation and security, thus avoiding uneven power and influence among validators. The election\nalgorithms are based on the Proportional Justified Representation (PJR) methods like\n",(0,o.jsx)(n.a,{href:"/docs/learn-phragmen",children:"Phragmen"}),". For more information about PJR methods visit\n",(0,o.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/protocols/NPoS/Overview",children:"this"})," research article."]}),"\n",(0,o.jsx)(n.h3,{id:"eras-and-sessions",children:"Eras and Sessions"}),"\n",(0,o.jsxs)(n.p,{children:["The stake from nominators is used to increase the number of tokens held by such candidates,\nincreasing their chance of being selected by the election algorithm for block production during a\nspecific ",(0,o.jsx)(n.strong,{children:"era"}),". An era is a period of 24 hours (6 hours on Kusama) during which an ",(0,o.jsx)(n.strong,{children:"active set"}),"\nof validators is producing blocks and performing other actions on the chain. This means that not all\nvalidators are in the active set and such set changes between eras. Each era is divided into 6\nepochs or ",(0,o.jsx)(n.strong,{children:"sessions"})," during which validators are assigned as block producers to specific time\nframes or ",(0,o.jsx)(n.strong,{children:"slots"}),". This means that validators know the slots when they will be required to produce\na block within a specific session, but they do not know all the slots within a specific era. Having\nsessions adds a layer of security because it decreases the chance of having multiple validators\nassigned to a slot colluding to harm the network."]}),"\n",(0,o.jsx)(n.h3,{id:"staking-rewards",children:"Staking Rewards"}),"\n",(0,o.jsxs)(n.p,{children:["Validators who produce a block are rewarded with tokens, and they can share rewards with their\nnominators. Both validators and nominators can stake their tokens on chain and receive staking\nrewards at the end of each era. The staking system pays out rewards equally to all validators\nregardless of stake. Thus, having more stake in a validator does not influence the amount of block\nrewards it receives. This avoids the centralization of power to a few validators. There is a\nprobabilistic component in the calculation of rewards, so they may not be exactly equal for all\nvalidators. In fact, during each era validators can earn ",(0,o.jsx)(n.strong,{children:"era points"})," by doing different tasks on\nchain. The more the points, the higher the reward for a specific era. This promotes validators'\nactivity on chain. To know more about era points, and how and on which basis they are distributed\nvisit the ",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-validator-payout",children:"dedicated page"}),". Distribution of the\nrewards is pro-rata to all stakers after the validator's commission is deducted."]}),"\n",(0,o.jsx)(n.h3,{id:"skin-in-the-game-when-staking",children:"Skin in the game when Staking"}),"\n",(0,o.jsx)(n.p,{children:"The security of PoS networks depends on the amount of staked tokens. To successfully attack the\nnetwork, a malicious actor would need to accrue a large number of tokens or would need different\nparticipants to collude and act maliciously. If there is an attack in the case of NPoS, both the\nvalidator(s) and nominators will be slashed resulting in their stake being partially or fully\nconfiscated by the network and then deposited to the treasury. There is little interest for a\nrational network participant to act in a harmful way because NPoS ensures that all participants can\nbe held accountable for their bad actions. In NPoS, validators are paid equal rewards regardless of\nthe amount of stake backing them, thus avoiding large payouts to few large validators which might\nlead to centralization."}),"\n",(0,o.jsx)(n.h2,{id:"being-a-nominator",children:"Being a Nominator"}),"\n",(0,o.jsx)(n.h3,{id:"tasks-and-responsibilities-of-a-nominator",children:"Tasks and Responsibilities of a Nominator"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Validators."})," Since validator slots are limited, most of those who wish to stake their tokens and\ncontribute to the economic security of the network will be nominators, thus here we focus on the\nrole of nominators. However, it is worth mentioning that validators do most of the heavy lifting:\nthey run the validator nodes and manage\n",(0,o.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/security/keys/session",children:"session keys"}),", produce new block\ncandidates in ",(0,o.jsx)(n.a,{href:"/docs/learn-consensus#block-production-babe",children:"BABE"}),", vote and come to consensus in\n",(0,o.jsx)(n.a,{href:"/docs/learn-consensus#finality-gadget-grandpa",children:"GRANDPA"}),", validate the state transition function of\nparachains, and possibly some other responsibilities regarding data availability and\n",(0,o.jsx)(n.a,{href:"/docs/learn-xcm",children:"XCM"}),". For more information, you can take a look at the\n",(0,o.jsx)(n.a,{href:"/docs/learn-validator",children:"validator docs"})," to understand what you need to do as a validator. If you want\nto become a validator you can consult\n",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"this"})," guide."]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Nominators."})," Nominators have far fewer responsibilities than validators. These include selecting\nvalidators and monitoring their performance, keeping an eye on changing commission rates (a\nvalidator can change commission at any time), and general health monitoring of their validators'\naccounts. Thus, while not being completely set-it-and-forget-it, a nominator's experience is\nrelatively hands-off compared to that of a validator, and even more with\n",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pools"}),". For more information, you can take a look at the\nnominator ",(0,o.jsx)(n.a,{href:"/docs/learn-nominator",children:"guide"})," to understanding your responsibilities as a nominator."]}),"\n",(0,o.jsxs)(n.p,{children:["If you want to become a nominator, see ",(0,o.jsx)(n.a,{href:"/docs/learn-nominator",children:"this"})," guide. If you are a\nbeginner and would like to securely stake your tokens using the Polkadot-JS UI, refer to\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000168057-how-do-i-stake-nominate-on-polkadot-",children:"this"}),"\nsupport article. The tutorial presented in the support article is demonstrated on Polkadot, but the\nprocedure is the same for Kusama."]}),"\n",(0,o.jsx)(n.admonition,{title:"Polkadot Staking Dashboard",type:"info",children:(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"https://staking.polkadot.cloud/dashboard/#/overview",children:"Staking Dashboard"})," provides a more\nuser-friendly alternative to staking. See the instructions in\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182133-how-to-use-the-staking-dashboard-staking-your-dot",children:"this"}),"\nsupport article to learn how to stake with the dashboard."]})}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Pools."}),' Pools are "built" on top of NPoS to provide a very low barrier to entry to staking,\nwithout sacrificing Polkadot\'s strict security model.']}),"\n",(0,o.jsx)(n.h3,{id:"selection-of-validators",children:"Selection of Validators"}),"\n",(0,o.jsx)(n.p,{children:"The task of choosing validators is not simple, as it should take into account nominator reward and\nrisk preferences. Ideally one aims to maximize the reward-to-risk ratio by maximizing rewards and\nminimizing risks, with sometimes having to compromise between the two, as minimizing risks might\ndecrease rewards as well. Nominators should pay attention, especially to six criteria when\nnominating validators (not in order of importance):"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"recent history of the era points earned across eras"}),"\n",(0,o.jsx)(n.li,{children:"validator's self stake (shows skin in the game)"}),"\n",(0,o.jsx)(n.li,{children:"total stake backing the validator (which is the sum of self stake and the stake coming from\nnominators)"}),"\n",(0,o.jsx)(n.li,{children:"commission fees (i.e. how much validators charge nominators)"}),"\n",(0,o.jsx)(n.li,{children:"verified identity"}),"\n",(0,o.jsx)(n.li,{children:"previous slashes"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"The diagram below shows how the selection of those criteria affects the reward-to-risk ratio."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"rewards and risks diagram",src:t(90997).A+"",width:"1920",height:"800"})}),"\n",(0,o.jsx)(n.h4,{id:"validator-selection-criteria",children:"Validator Selection Criteria"}),"\n",(0,o.jsx)(n.p,{children:"To maximize rewards and minimize risk, one could select those validators that:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"have era points above average (because they will get more rewards for being active),"}),"\n",(0,o.jsx)(n.li,{children:"have the total stake backing the validator below the average active validator stake (because they\nwill pay out more rewards per staked token),"}),"\n",(0,o.jsx)(n.li,{children:"have high own stake (because if slashed they have something to lose),"}),"\n",(0,o.jsx)(n.li,{children:"have low commission fees but not 0% (because it makes sense that for doing the heavy lifting,\nvalidators ask for a small commission),"}),"\n",(0,o.jsx)(n.li,{children:"have on-chain registered identity (because it adds a layer of trust and possibly provides access\nto their website and contact details),"}),"\n",(0,o.jsx)(n.li,{children:"and have not been slashed (meaning that their on-chain behavior is genuine)."}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"network-providers",children:"Network Providers"}),"\n",(0,o.jsxs)(n.p,{children:["For successful operation, a Validator node should always be ensured to meet the required\n",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-how-to-validate-polkadot#reference-hardware",children:"software, hardware, and network bandwidth specifications"}),".\nUnderstandably, most of the validator nodes run on cloud service providers that guarantee high\nhardware specifications and high levels of availability and connectivity. Keep in mind that a\nvalidator in the active set is supposed to be fully online and available for producing blocks. If\nthe active validator node goes offline due to network interruptions or a power outage, that\nvalidator will get fewer rewards."]}),"\n",(0,o.jsx)(n.admonition,{title:"Checking Validators using Network Providers",type:"tip",children:(0,o.jsxs)(n.p,{children:["You can connect your stash account to the ",(0,o.jsx)(n.a,{href:"https://polkawatch.app/",children:"Polkawatch app"}),". The app will\nshow your rewards earned in the past 60 eras divided by network provider and country. You will be\nable to see networks used by each validator and verify if your validators are using providers who\nsupport PoS. This is also a great tool to explore how decentralized your nominations are and act\naccordingly."]})}),"\n",(0,o.jsx)(n.h4,{id:"keeping-track-of-nominated-validators",children:"Keeping Track of Nominated Validators"}),"\n",(0,o.jsx)(n.admonition,{title:"Nominators must periodically check their validators",type:"caution",children:(0,o.jsxs)(n.p,{children:["Nominating is ",(0,o.jsx)(n.em,{children:"not"}),' a "set and forget" operation. The whole NPoS system is dynamic and nominators\nshould periodically monitor the performance and reputation of their validators. Failing to do so\ncould result in applied slashes and/or rewards not being paid out, possibly for a prolonged period.']})}),"\n",(0,o.jsxs)(n.p,{children:["Although the theory can be used as a general guideline, in practice it is more complicated and\nfollowing the theory might not necessarily lead to the desired result. Validators might have the\ntotal stake backing them below average, low commission and above average era points in one era and\nthen have a different profile in the next one. Selection based on the criteria like on-chain\nidentity, slash history and low commission make the staking rewards deterministic. But some criteria\nvary more than others, with era points being the most variable and thus one of the key probabilistic\ncomponents of staking rewards. Part of this probability is directly related to the fact that a\nvalidator can produce blocks for a parachain (i.e. para-validators) or the relay chain, with\npara-validators earning more era points per unit time (see\n",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-validator-payout#era-points",children:"this"})," page for more information). The\nrole can switch between sessions, and you can look at\n",(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking",children:"the staking tab on the Polkadot-JS UI"})," to know which\nvalidator is producing blocks for the relay chain or parachains."]}),"\n",(0,o.jsxs)(n.p,{children:["It is not recommended to change nominations because of the low era points of a validator in a single\nera. Variability in rewards due to the era points should level out over time. If a validator\nconsistently gets era points below average, it makes sense to nominate a better-performing validator\nfor the health of the network and increased staking rewards. See\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000150130-how-do-i-know-which-validators-to-choose-",children:"this"}),"\nsupport article to understand in detail how to select the set of validators to nominate."]}),"\n",(0,o.jsx)(n.h3,{id:"stash-account-and-staking-proxy",children:"Stash Account and Staking Proxy"}),"\n",(0,o.jsx)(n.p,{children:"Two different accounts can be used to securely manage your funds while staking."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Stash:"})," This account holds funds bonded for staking, but delegates all staking functions to a\nstaking proxy account. You may actively participate in staking with a stash private key kept in a\ncold wallet like Ledger, meaning it stays offline all the time. Having a staking proxy will allow\nyou to sign all staking-related transactions with the proxy instead of using your Ledger device.\nThis will allow you:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"to avoid carrying around your Ledger device just to sign staking-related transactions, and"}),"\n",(0,o.jsx)(n.li,{children:"to keep the transaction history of your stash clean"}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Staking Proxy:"})," This account acts on behalf of the stash account, signalling decisions about\nnominating and validating. It can set preferences like commission (for validators) and the staking\nrewards payout account. The earned rewards can be bonded (locked) immediately for bonding on your\nstash account, which would effectively compound the rewards you receive over time. You could also\nchoose to have them deposited to a different account as a free (transferable) balance. If you are\na validator, it can also be used to set your ",(0,o.jsx)(n.a,{href:"/docs/learn-cryptography",children:"session keys"}),". Staking\nproxies only need sufficient funds to pay for the transaction fees."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:'Never leave a high balance on a proxy account which are usually "hot" as their private key is stored\non the device (PC, phone) and it is always exposed to the internet for potential hacks and scams. It\nis good practice to deposit rewards on the stash account or to send them to another account on a\ncold wallet.'})}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"staking",src:t(5942).A+"",width:"1920",height:"800"})}),"\n",(0,o.jsxs)(n.p,{children:["This hierarchy of separate keys for stash and staking accounts was designed to add a layer of\nprotection to nominators and validator operators. The more often one exposes and uses a private key,\nthe higher its vulnerability for hacks or scams. So, if one uses a key for multiple roles on a\nblockchain network, it is likely that the account can get compromised. Note that the damage linked\nto stolen private keys is different depending on the type of account derivation. In the case of soft\nderivation, all derived accounts are compromised. More information about account derivation can be\nfound ",(0,o.jsx)(n.a,{href:"/docs/learn-account-advanced#derivation-paths",children:"here"}),"."]}),"\n",(0,o.jsxs)(n.admonition,{type:"info",children:[(0,o.jsx)(n.p,{children:"For Ledger users staking directly on Ledger Live, currently, there is no option to use separate\nstash and staking proxy accounts."}),(0,o.jsxs)(n.p,{children:["Ledger devices are now supported in ",(0,o.jsx)(n.a,{href:"https://www.subwallet.app/download.html",children:"SubWallet"}),",\n",(0,o.jsx)(n.a,{href:"https://talisman.xyz/",children:"Talisman"}),", and ",(0,o.jsx)(n.a,{href:"https://polkagate.xyz/",children:"PolkaGate"})," extension. Users can\nimport their Ledger accounts in the extension and use them as a stash in staking. You can find more\ninformation about, SubWallet, Talisman, PolkaGate and other wallets that officially secured funding\nfrom the treasury ",(0,o.jsx)(n.a,{href:"/docs/wallets-and-extensions",children:"here"}),"."]})]}),"\n",(0,o.jsx)(n.h3,{id:"claiming-staking-rewards",children:"Claiming Staking Rewards"}),"\n",(0,o.jsx)(n.p,{children:"Note that Kusama runs approximately 4x as fast as Polkadot, except for block production times.\nPolkadot will also produce blocks at approximately six-second intervals."}),"\n",(0,o.jsxs)(n.p,{children:["Rewards are calculated per era (approximately six hours on Kusama and twenty-four hours on\nPolkadot). These rewards are calculated based on era points, which have a probabilistic component.\nIn other words, there may be slight differences in your rewards from era to era, and even amongst\nvalidators in the active set at the same time. These variations should cancel out over a long enough\ntimeline. See the page on ",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-validator-payout",children:"Validator Payout Guide"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The distribution of staking rewards to the nominators is not automatic and needs to be triggered by\nsomeone. Typically the validators take care of this, but anyone can permissionlessly trigger rewards\npayout for all the nominators whose stake has backed a specific validator in the active set of that\nera. Staking rewards are kept available for\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#staking-reward-retention",children:"a limited amount of time"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["For more information on why this is so, see the page on ",(0,o.jsx)(n.a,{href:"/docs/learn-staking-advanced",children:"simple payouts"}),"."]}),"\n",(0,o.jsxs)(n.admonition,{title:"Payouts",type:"info",children:[(0,o.jsxs)(n.p,{children:["Payouts are unclaimed rewards waiting to be paid out to both validators and nominators. If you go to\nthe Staking payouts page on ",(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking",children:"Polkadot-JS"}),", you will see a\nlist of all validators that you have nominated in the past 84 eras and for which you have not yet\nreceived a payout. The payout page is visible only to stakers."]}),(0,o.jsx)(n.p,{children:"Each validator as well as their nominators have the option to trigger the payout for all unclaimed\neras. Note that this will pay everyone who was nominating that validator during those eras.\nTherefore, you may not see anything in this tab, yet still have received a payout if somebody\n(generally, but not necessarily, another nominator or the validator operator) has triggered the\npayout for that validator for that era."})]}),"\n",(0,o.jsx)(n.admonition,{title:"Time limit to claim staking rewards",type:"warning",children:(0,o.jsx)(n.p,{children:"If nobody claims your staking rewards within 84 eras, then you will not be able to claim them and\nthey will be lost. Additionally, if the validator unbonds all their own stake, any pending payouts\nwill also be lost."})}),"\n",(0,o.jsx)(n.p,{children:"Rewards can be directed to the same account used to sign the payout or to a completely unrelated\naccount. It is also possible to top-up / withdraw some bonded tokens without having to un-stake all\nstaked tokens."}),"\n",(0,o.jsxs)(n.p,{children:["If you wish to know if you received a payout, you will have to check via a block explorer. See\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000168954-how-can-i-see-my-staking-rewards-",children:"the relevant Support page"}),"\nfor details. For specific details about validator payouts, please see\n",(0,o.jsx)(n.a,{href:"/docs/maintain-guides-validator-payout",children:"this guide"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"chilling",children:"Chilling"}),"\n",(0,o.jsx)(n.p,{children:"Chilling is the act of stepping back from any nominating or validating. It can be done by a\nvalidator or nominator at any time, taking effect in the next era."}),"\n",(0,o.jsx)(n.p,{children:"Chilling can be validator-initiated, e.g. if there is a planned outage in the validator's\nsurroundings or hosting provider, and the validator wants to exit to protect themselves against\nslashing. Chilling will keep the validator active in the current era, but will move them to the\ninactive set in the next. The validator will not lose their nominators."}),"\n",(0,o.jsxs)(n.p,{children:['For more on chilling, see the "',(0,o.jsx)(n.a,{href:"/docs/maintain-guides-how-to-chill",children:"How to Chill"}),'" page on\nthis wiki.']}),"\n",(0,o.jsx)(n.h3,{id:"fast-unstake",children:"Fast Unstake"}),"\n",(0,o.jsx)(n.admonition,{title:"Fast Unstaking feature is live!",type:"info",children:(0,o.jsx)(n.p,{children:"If you accidentally bonded your tokens or your bonded tokens never backed any active validator, you\ncan now unbond them immediately."})}),"\n",(0,o.jsxs)(n.p,{children:["If your bonded balance did not back any validators for a\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#bounty-duration",children:"pre-determined period"}),", you are eligible to\nperform fast unstaking. The ",(0,o.jsx)(n.a,{href:"https://staking.polkadot.cloud/#/overview",children:"staking dashboard"})," will\nautomatically check if you qualify. For more information, visit the\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000169433-can-i-transfer-dot-without-unbonding-and-waiting-28-days-",children:'"Fast Unstake" section in this support article'}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"why-and-why-not-to-stake",children:"Why and Why not to Stake?"}),"\n",(0,o.jsx)(n.h3,{id:"pros-of-staking",children:"Pros of Staking"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Earn rewards for contributing to the network's security through staking."}),"\n",(0,o.jsxs)(n.li,{children:["Low barrier of entry through ",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"Nomination Pools"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Can choose ",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#maximum-votes-per-nominator",children:"multiple validators"}),"\nwhich can help to decentralize the network through the sophisticated\n",(0,o.jsx)(n.a,{href:"/docs/learn-consensus#nominated-proof-of-stake",children:"NPoS system"})]}),"\n",(0,o.jsxs)(n.li,{children:["85% of inflation/year of the tokens is primarily intended for staking rewards. Check the\n",(0,o.jsx)(n.a,{href:"/docs/learn-staking-advanced#inflation",children:"inflation"})," section on the Wiki for more information."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"cons-of-staking",children:"Cons of Staking"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Tokens will be locked during the\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#unbonding-duration",children:"unbonding period"})," and no rewards will be\nearned if you unbond."]}),"\n",(0,o.jsxs)(n.li,{children:["Possible punishment in case of the active validator found to be misbehaving (see\n",(0,o.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashing"}),")."]}),"\n",(0,o.jsx)(n.li,{children:"Lack of liquidity i.e. You would not be able to use the tokens for participating in crowdloans or\ntransfer them to different account etc."}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"unbonding-period-length",children:"Unbonding Period Length"}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#unbonding-duration",children:"unbonding period"})," provides a safety net\nfor slashing offenses identified in\n",(0,o.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/security/slashing/npos#slashing-in-past-eras",children:"past eras"}),",\nwhich can hold the respective validators and their nominators accountable. The unbonding period is\ncrucial in mitigating ex post facto slashing, particularly in guarding against long-range attacks.\nWhen a client encounters a chain finalized by\n",(0,o.jsx)(n.a,{href:"/docs/learn-consensus#finality-gadget-grandpa",children:"GRANDPA"})," that originates more than one\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#unbonding-duration",children:"unbonding period"})," in the past, it lacks the\nsecurity of slashing protection."]}),"\n",(0,o.jsxs)(n.p,{children:["Essentially, this period establishes a cadence for synchronizing with the chain or acquiring a\ncheckpoint within a timeframe that engenders trust. It's worth noting that while the choice of\n",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#unbonding-duration",children:"unbonding period length"})," is somewhat\narbitrary, it unquestionably provides a higher level of security compared to a shorter period."]}),"\n",(0,o.jsx)(n.h2,{id:"how-many-validators",children:"How many Validators?"}),"\n",(0,o.jsxs)(n.p,{children:["The top bound on the ",(0,o.jsx)(n.a,{href:"/docs/chain-state-values#active-validator-count",children:"number of validators"}),"\nhas not been determined yet, but should only be limited by the bandwidth strain of the network due\nto peer-to-peer message passing."]}),"\n",(0,o.jsx)(n.p,{children:"The estimate of the number of validators that Polkadot will have at maturity is around 1000, while\nKusama is already operating at this threshold."}),"\n",(0,o.jsx)(n.h2,{id:"why-am-i-not-receiving-rewards",children:"Why am I not receiving rewards?"}),"\n",(0,o.jsx)(n.p,{children:"Nominating is not a set-and-forget action. Nominators need to monitor their nominations and ensure\nthey are eligible to receive staking rewards. Otherwise, they would be risking their funds to secure\nthe chain with no reward. If you are bonding significantly more than the Minimum Active Bond and yet\nnot receiving rewards, your nominations are all waiting, or your active validator has 100%\ncommission. However, if you bond funds close to the Minimum Active Bond, there could be several\npossibilities for not receiving staking rewards. The table below can be used to troubleshoot why you\nmight not be receiving staking rewards using Polkadot-JS UI."}),"\n",(0,o.jsxs)(n.table,{children:[(0,o.jsx)(n.thead,{children:(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.th,{style:{textAlign:"center"},children:"Nomination Status"}),(0,o.jsx)(n.th,{style:{textAlign:"center"},children:"What's happening?"}),(0,o.jsx)(n.th,{style:{textAlign:"center"},children:"Causes"}),(0,o.jsx)(n.th,{style:{textAlign:"center"},children:"What to do?"})]})}),(0,o.jsxs)(n.tbody,{children:[(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{style:{textAlign:"center"},children:"Nominated validators are all in waiting status."}),(0,o.jsx)(n.td,{style:{textAlign:"center"},children:"Your stake has not been assigned to any of the nominated validators. You cannot earn rewards, nor be slashed in that era."}),(0,o.jsx)(n.td,{style:{textAlign:"center"},children:'Waiting validators are not in the active set in the current era and the stake backing them is not used to secure the network. In simple words, NPoS "does not see them".'}),(0,o.jsx)(n.td,{style:{textAlign:"center"},children:"Change your nominations. Try to select validators (with reasonable commission) that have high chances to end up in the active set."})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{style:{textAlign:"center"},children:"You have some inactive, and some waiting nominations."}),(0,o.jsx)(n.td,{style:{textAlign:"center"},children:'Validators shown as "Inactive" in your staking dashboard are still in the active set and are producing blocks in the current era, but your stake has not been assigned to any of them. You will not earn rewards if your stake is not backing an active validator. In this case, you cannot be slashed either.'}),(0,o.jsxs)(n.td,{style:{textAlign:"center"},children:[(0,o.jsx)(n.strong,{children:"Scenario 1:"})," You have bonded less than the Minimum Active Bond. ",(0,o.jsx)(n.strong,{children:"Scenario 2:"})," You have more than the Minimum Active Bond, but your account is at the tail end of the ",(0,o.jsx)(n.a,{href:"/docs/learn-staking-advanced#bags-list",children:"bags list"})," and within your bag there are accounts with less stake than you, in front of you."]}),(0,o.jsxs)(n.td,{style:{textAlign:"center"},children:[(0,o.jsx)(n.strong,{children:"Scenario 1:"})," Try bonding more funds. ",(0,o.jsx)(n.strong,{children:"Scenario 2:"})," Try to put your account in front of the accounts with less stake than you. Instructions available ",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181018-i-have-more-than-the-minimum-bonded-but-i-m-not-getting-rewards",children:"here"})]})]})]})]}),"\n",(0,o.jsx)(n.admonition,{title:"Join a Nomination Pool",type:"tip",children:(0,o.jsxs)(n.p,{children:["By joining a ",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pool"})," that is active and earning rewards, you\ncan start earning staking rewards with as low as 1 DOT. The nomination pools typically have a\ndedicated pool operator who ensures that the pool's stake is always backing an active validator and\nis receiving rewards."]})}),"\n",(0,o.jsx)(n.admonition,{title:"Bags List & Minimum Active Bond",type:"info",children:(0,o.jsxs)(n.p,{children:["You can find information about why you might not receive staking rewards on\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000170805-why-am-i-not-getting-staking-rewards-",children:"this support page"}),"\nand ",(0,o.jsx)(n.a,{href:"https://youtu.be/hIIZRJLrBZA",children:"this video tutorial"}),"."]})}),"\n",(0,o.jsx)(n.h2,{id:"staking-faq",children:"Staking FAQ"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["See\n",(0,o.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181959-staking-faq-s",children:"this support page"}),"\nfor the FAQs about staking."]})}),"\n",(0,o.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://medium.com/web3foundation/how-nominated-proof-of-stake-will-work-in-polkadot-377d70c6bd43",children:"How Nominated Proof of Stake will work in Polkadot"})," -\nBlog post by Web3 Foundation researcher Alfonso Cevallos covering NPoS in Polkadot."]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"/docs/maintain-guides-secure-validator",children:"Validator setup"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://decentradot.com/polkadot-validator-selector/",children:"Polkadot validator selector tool"})," - A tool\nthat helps nominators find reliable validators that meet quality-control criteria, including\ncommission rates, verified identity, etc."]}),"\n"]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.admonition,{title:"Polkadot-JS Guides",type:"info",children:(0,o.jsxs)(n.p,{children:["If you are an advanced user, see the ",(0,o.jsx)(n.a,{href:"./learn-guides-staking",children:"Polkadot-JS guides about staking"}),"."]})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},67141:(e,n,t)=>{t.d(n,{A:()=>i});var a=t(96540),o=t(74848);const i=function(e){var n,t=e.message,i=(0,a.useState)(!0),s=i[0],r=i[1];return(0,o.jsx)(o.Fragment,{children:s&&(0,o.jsxs)("div",{className:"message-box",children:[(0,o.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,o.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(n=t,n.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},90997:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/reward-risk-fee9f991186d4097ca3d3f0a713f4ad4.png"},5942:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/stash-and-staking-proxy-ea4d09387a4b56d1349ee896427d9f1d.png"},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>r});var a=t(96540);const o={},i=a.createContext(o);function s(e){const n=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),a.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2f3b630e.47c87fd4.js b/assets/js/2f3b630e.bae7573f.js similarity index 55% rename from assets/js/2f3b630e.47c87fd4.js rename to assets/js/2f3b630e.bae7573f.js index 811c961d872..85f28f129b8 100644 --- a/assets/js/2f3b630e.47c87fd4.js +++ b/assets/js/2f3b630e.bae7573f.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2584],{59327:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>f,contentTitle:()=>g,default:()=>j,frontMatter:()=>m,metadata:()=>t,toc:()=>v});const t=JSON.parse('{"id":"learn/learn-polkadot-opengov","title":"Introduction to Polkadot OpenGov","description":"Polkadot\u2019s Latest Model for Decentralized Governance.","source":"@site/../docs/learn/learn-polkadot-opengov.md","sourceDirName":"learn","slug":"/learn-polkadot-opengov","permalink":"/docs/learn-polkadot-opengov","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-polkadot-opengov.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1731067872000,"frontMatter":{"id":"learn-polkadot-opengov","title":"Introduction to Polkadot OpenGov","sidebar_label":"Polkadot OpenGov","description":"Polkadot\u2019s Latest Model for Decentralized Governance.","keywords":["governance","referenda","proposal","voting","endorse"],"slug":"../learn-polkadot-opengov"},"sidebar":"docs","previous":{"title":"Polkadot OpenGov","permalink":"/docs/learn-polkadot-opengov-index"},"next":{"title":"OpenGov Origins","permalink":"/docs/learn-polkadot-opengov-origins"}}');var i=o(74848),r=o(28453),a=o(96540),s=(0,i.jsx)("table",{children:(0,i.jsxs)("tbody",{children:[(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:"Lock Periods"}),(0,i.jsx)("th",{children:"Vote Multiplier"}),(0,i.jsx)("th",{children:"Length in Days"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"0"}),(0,i.jsx)("td",{children:"0.1"}),(0,i.jsx)("td",{id:"p0"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"1"}),(0,i.jsx)("td",{children:"1"}),(0,i.jsx)("td",{id:"p1"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"2"}),(0,i.jsx)("td",{children:"2"}),(0,i.jsx)("td",{id:"p2"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"4"}),(0,i.jsx)("td",{children:"3"}),(0,i.jsx)("td",{id:"p4"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"8"}),(0,i.jsx)("td",{children:"4"}),(0,i.jsx)("td",{id:"p8"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"16"}),(0,i.jsx)("td",{children:"5"}),(0,i.jsx)("td",{id:"p16"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"32"}),(0,i.jsx)("td",{children:"6"}),(0,i.jsx)("td",{id:"p32"})]})]})}),l=["p0","p1","p2","p4","p8","p16","p32"],d={p0:0,p1:7,p2:14,p4:28,p8:56,p16:112,p32:224},c={p0:0,p1:7,p2:14,p4:28,p8:56,p16:112,p32:224};function h(e){l.forEach((function(n){var o=document.getElementById(n);"polkadot"===e?o.innerText=d[n]:"kusama"===e&&(o.innerText=c[n])}))}const p=function(){var e=(0,a.useState)("");return e[0],e[1],(0,a.useEffect)((function(){var e=document.title;"Governance V1 \xb7 Polkadot Wiki"===e||"Introduction to Polkadot OpenGov \xb7 Polkadot Wiki"===e?h("polkadot"):"Governance V1 \xb7 Guide"===e||"Introduction to Polkadot OpenGov \xb7 Guide"===e?h("kusama"):console.log("Unknown wiki/guide type")}),[]),s};var u=o(67141);const m={id:"learn-polkadot-opengov",title:"Introduction to Polkadot OpenGov",sidebar_label:"Polkadot OpenGov",description:"Polkadot\u2019s Latest Model for Decentralized Governance.",keywords:["governance","referenda","proposal","voting","endorse"],slug:"../learn-polkadot-opengov"},g=void 0,f={},v=[{value:"Premise",id:"premise",level:2},{value:"Summary",id:"summary",level:2},{value:"Gov1 vs. Polkadot OpenGov",id:"gov1-vs-polkadot-opengov",level:2},{value:"Referenda",id:"referenda",level:2},{value:"Referenda Timeline",id:"referenda-timeline",level:3},{value:"Origins and Tracks",id:"origins-and-tracks",level:3},{value:"Voluntary Locking (Conviction Voting)",id:"voluntary-locking-conviction-voting",level:3},{value:"Approval and Support",id:"approval-and-support",level:3},{value:"Enactment",id:"enactment",level:3},{value:"Cancelling, Killing & Blacklisting",id:"cancelling-killing--blacklisting",level:3},{value:"Voting on a Referendum",id:"voting-on-a-referendum",level:2},{value:"Voting Without Conviction",id:"voting-without-conviction",level:3},{value:"Voting with Conviction",id:"voting-with-conviction",level:3},{value:"Multirole Delegation",id:"multirole-delegation",level:2},{value:"Resources",id:"resources",level:2}];function x(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(u.A,{message:"Before voting or delegating in Polkadot OpenGov, get familiar with [balances and locks](./learn-account-balances#locks)."}),"\n",(0,i.jsxs)(n.admonition,{title:"The content in this document is subject to change",type:"caution",children:[(0,i.jsxs)(n.p,{children:["The governance protocol has already undergone iterations (see\n",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance",children:"Governance V1"}),"). Governance is a constantly evolving protocol at\nthis stage in its lifecycle."]}),(0,i.jsxs)(n.p,{children:["For additional support about Polkadot OpenGov, see the\n",(0,i.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/65000105211",children:"dedicated support pages"}),"."]})]}),"\n",(0,i.jsx)(n.p,{children:"Polkadot uses a sophisticated governance mechanism that allows it to evolve gracefully overtime at\nthe ultimate behest of its assembled stakeholders. The goal is to ensure that most of the stake can\nalways command the network."}),"\n",(0,i.jsxs)(n.p,{children:["Polkadot brings together various novel mechanisms, including an amorphous (abstract) form of\nstate-transition function stored on-chain defined in a platform-agnostic language (i.e.\n",(0,i.jsx)(n.a,{href:"/docs/learn-wasm",children:"WebAssembly"}),"), and several on-chain voting mechanisms such as referenda and batch\napproval voting. All changes to the protocol must be agreed upon by stake-weighted referenda."]}),"\n",(0,i.jsx)(n.h2,{id:"premise",children:"Premise"}),"\n",(0,i.jsxs)(n.p,{children:["Polkadot's first governance system (",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance",children:"Governance V1"}),") included three\nmain components."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#technical-committee",children:"Technical Committee"}),": A technocratic\ncommittee to manage upgrade timelines."]}),"\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#council",children:"Council"}),': An approval-voted, elected executive\n"government" to manage parameters, admin, and spending proposals.']}),"\n",(0,i.jsx)(n.li,{children:"The Public: All token holders."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Over the first few years of operation, Governance V1 ensured the appropriate usage of treasury funds\nand enabled timely upgrades and fixes. Like most early technologies, protocols must evolve as they\nmature to improve their shortcomings and keep up with modern advancements. In Governance V1, all\nreferenda carried the same weight as only one referendum could be voted on at a time (except for\nemergency proposals), and the voting period could last multiple weeks. Also, an\n",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#alternating-voting-timetable",children:"alternating voting timetable"})," allowed\nto vote either for a public referendum or a council motion every 28 days (7 days on Kusama). This\nresulted in the system favoring careful consideration of very few proposals instead of broad\nconsideration of many."]}),"\n",(0,i.jsx)(n.p,{children:"Polkadot OpenGov changes how the practical means of day-to-day decisions are made, making the\nrepercussions of referenda better scoped and agile to increase the number of collective decisions\nthe system can make at any given time."}),"\n",(0,i.jsxs)(n.p,{children:["The following content is focused on Polkadot OpenGov, and on the main differences with previous\ngovernance versions. We recommend learning about ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance",children:"Governance v1"})," to\nbetter understand the need for and the direction of Polkadot OpenGov."]}),"\n",(0,i.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,i.jsx)(n.p,{children:"In Governance v1, active token holders (public) and the Council administrated the network's upgrade\ndecisions. Whether the public or the council initiated the proposal, it would eventually have to go\nthrough a referendum to let all holders (weighted by stake and conviction) make the decision."}),"\n",(0,i.jsx)(n.p,{children:"The Council fulfilled its role as the representative of the public, guardian of the treasury and\ninitiator of legislation, but it was often seen as a centralized entity. To further decentralize the\nnetwork, Polkadot OpenGov proposes the following main changes:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Migrating all responsibilities of the Council to the public via a direct democracy voting system."}),"\n",(0,i.jsxs)(n.li,{children:["Dissolving the current ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#council",children:"Council"})," collective"]}),"\n",(0,i.jsx)(n.li,{children:"Allowing users to delegate voting power in more ways to community members"}),"\n",(0,i.jsxs)(n.li,{children:["Dissolving the ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#technical-committee",children:"Technical Committee"})," and\nestablishing the broader ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-technical-fellowship",children:"Polkadot Technical Fellowship"})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"The figure below shows an overview of Polkadot OpenGov's structure."}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#summary",children:"this page"})," for a comparison with the structure of\nGovernance V1."]})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"opengov-overview",src:o(39040).A+"",width:"1920",height:"800"})}),"\n",(0,i.jsxs)(n.p,{children:["In Polkadot OpenGov, all the proposals are initiated by the public. The proposal will enter a\nLead-in period (for more information, see ",(0,i.jsx)(n.a,{href:"#referenda-timeline",children:"Referenda Timeline"}),"), after which it\nwill follow a specific ",(0,i.jsx)(n.a,{href:"#origins-and-tracks",children:"Track"})," which has a dedicated Origin. There are\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info",children:"15 Origins"}),", each with a different\ntrack. The origins and tracks parameters are preset values that set the duration of a referendum as\nwell as how many referenda can be voted on simultaneously. For example, a treasury proposal can now\nbe submitted in different tracks depending on the amount requested. A proposal for a small tip will\nneed to be submitted to the Small Tipper track, while a proposal requiring substantial funds will\nneed to be submitted to the Medium or Big Spender track."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-technical-fellowship",children:"Polkadot Technical Fellowship"})," can decide to\n",(0,i.jsx)(n.a,{href:"#whitelisting",children:"whitelist"})," a proposal that will be enacted through the Whitelist Caller origin.\nThose proposals will have a shorter Lead-in, Confirmation, and Enactment period when compared to the\nRoot Origin track."]}),"\n",(0,i.jsxs)(n.p,{children:["Each track has its own preset ",(0,i.jsx)(n.a,{href:"#approval-and-support",children:"Approval and Support"})," curves based on the\norigin's privileges. When both the approval and support criteria are satisfied for a specific period\n(called the confirmation period), the referendum passes and will be executed after the enactment\nperiod."]}),"\n",(0,i.jsx)(n.p,{children:"All referenda within each track and across tracks can be voted on simultaneously (assuming the\ntrack's maximum capacity is not reached)."}),"\n",(0,i.jsx)(n.p,{children:"Polkadot OpenGov also comes with multi-role delegations where the token holder can assign voting\npower on different tracks to different entities who are experts in judging the referenda submitted\nto those tracks. For example, suppose a token holder does not have the technical background to\nconsider the merits and vote on the referenda submitted to the Root track. In that case, they can\ndelegate their voting power just for the Root track to a trusted expert who (according to them) acts\nin the best interest of the network protocol. In this way, token holders do not need to be\nup-to-date with governance matters and can still make their votes count through delegates."}),"\n",(0,i.jsx)(n.h2,{id:"gov1-vs-polkadot-opengov",children:"Gov1 vs. Polkadot OpenGov"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Governance V1"}),(0,i.jsx)(n.th,{children:"Polkadot OpenGov"}),(0,i.jsx)(n.th,{children:"Polkadot OpenGov Benefit"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["Includes the ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#council",children:"Council"}),", the ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#technical-committee",children:"Technical Committee"}),", and the Public (i.e. token holders)."]}),(0,i.jsxs)(n.td,{children:["Includes the Public and the ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-technical-fellowship",children:"Technical Fellowship"}),"."]}),(0,i.jsx)(n.td,{children:"Simpler and more decentralized structure."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Referenda executed only from one origin (Root). Referenda in this origin must be carefully scrutinized. Therefore, there is only one track (i.e., only one referendum at a time can be executed)."}),(0,i.jsxs)(n.td,{children:["Referenda executed from ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info",children:"multiple origins"}),", each with a different track that shapes proposals\u2019 timelines. Depending on the origin, multiple referenda within the same track are possible."]}),(0,i.jsx)(n.td,{children:"Possibility to categorize proposals (based on importance and urgency) and execute them simultaneously within and between origin tracks."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Proposals can be submitted by either the Council or the Public."}),(0,i.jsx)(n.td,{children:"The public submits proposals."}),(0,i.jsx)(n.td,{children:"More democratic."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["Uses ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#adaptive-quorum-biasing",children:"Adaptive Quorum Biasing"})," to define the approval threshold based on turnout. Given the same turnout, council-initiated referenda require fewer Aye votes to pass compared to public referenda."]}),(0,i.jsx)(n.td,{children:"Uses origin-specific approval and support curves defining the amount of approval and support (i.e. turnout) needed as a function of time. The same curves are applied to all referenda within the same origin track."}),(0,i.jsx)(n.td,{children:"Referenda timeline depends on the origin and not on who submitted the proposal (i.e. Council or Public). This is a more democratic and equalitarian system."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["Uses ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#alternating-voting-timetable",children:"alternating voting timetable"})," allowing voters to cast votes for either council or public referenda every 28 eras."]}),(0,i.jsx)(n.td,{children:"Multiple referenda can be voted at the same time."}),(0,i.jsx)(n.td,{children:"More flexible and agile governance system."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Except for emergency proposals, all referenda have fixed voting and enactment periods of 28 eras."}),(0,i.jsx)(n.td,{children:"Periods' length is customizable and has pre-defined limits for each origin. The same limits apply to all tracks with the same origin. For example, the track in the origin Root will be longer than the track within the Small Tipper origin."}),(0,i.jsx)(n.td,{children:"Referenda\u2019s timeline is tailored to their importance and urgency. Flexible enactment period based on origin."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Emergency proposals turned referenda can be simultaneously voted on and executed with other referenda and have shorter enactment periods. They must be proposed by the Technical Committee and approved by the Council."}),(0,i.jsx)(n.td,{children:"No emergency proposals. The Technical Fellowship can whitelist proposals that will have their origin with shorter lead-in, confirmation, and enactment periods."}),(0,i.jsx)(n.td,{children:"The Technical Fellowship is a more decentralized entity than the Technical Committee. Whitelisting a proposal requires a majority of approval from the fellowship."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["Only the ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#endorsing-proposals",children:"most-endorsed proposal"})," is able to transit from Launch to Voting period. The time for the transition is indeterminate, and (with no possibility of canceling endorsements) proposers and endorsers might wait a long time before a referendum is tabled, and getting their deposits back."]}),(0,i.jsx)(n.td,{children:"All proposals will eventually be voted on (given track capacity and deposit are met and the Lead-in period has ended)."}),(0,i.jsx)(n.td,{children:"It allows all proposals to get a chance to be voted on in a timely, predictive manner."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["Only ",(0,i.jsx)(n.em,{children:"aye"})," or ",(0,i.jsx)(n.em,{children:"nay"})," votes possible."]}),(0,i.jsx)(n.td,{children:"Voters can have the additional voting options of abstaining or splitting votes."}),(0,i.jsx)(n.td,{children:"More ways to engage in voting and increase turnout."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Voters can decide to delegate votes to another account."}),(0,i.jsxs)(n.td,{children:["Voters can use ",(0,i.jsx)(n.a,{href:"#multirole-delegation",children:"multirole delegations"})," and delegate votes to different accounts depending on origins."]}),(0,i.jsx)(n.td,{children:"More agile delegations tailored by expertise."})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"referenda",children:"Referenda"}),"\n",(0,i.jsxs)(n.admonition,{title:"Public and Council Referenda in Governance v1",type:"info",children:[(0,i.jsxs)(n.p,{children:["With the Council's dissolution, ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#council-referenda",children:"council referenda"}),"\nare no longer present in Polkadot OpenGov."]}),(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#public-referenda",children:"this page"})," for more information about public\nreferenda in Governance v1."]})]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"In Polkadot OpenGov all referenda are public."})," Anyone can start a referendum at any time and do\nso as often as they wish. Previous features were expanded and improved, most notably\n",(0,i.jsx)(n.a,{href:"#origins-and-tracks",children:(0,i.jsx)(n.strong,{children:"Origins and Tracks"})})," help facilitate the flow and processing of the\nsubmitted referenda. The ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-technical-fellowship",children:"Technical Fellowship"})," has the\noption to ",(0,i.jsx)(n.a,{href:"#whitelisting",children:"whitelist"})," referenda that can be then proposed in the track with\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#whitelisted-caller",children:"whitelist origin"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"referenda-timeline",children:"Referenda Timeline"}),"\n",(0,i.jsx)(n.admonition,{title:"Voting timetable in Governance v1",type:"info",children:(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#referenda-timeline",children:"this page"})," for more information about the\nvoting timetable in Governance v1."]})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"opengov-timeline",src:o(17160).A+"",width:"1920",height:"800"})}),"\n",(0,i.jsx)(n.p,{children:"The figure above provides a summary view of the referenda timeline for Polkadot OpenGov."}),"\n",(0,i.jsxs)(n.p,{children:["In (1), when a referendum is initially created, the community can immediately vote on it. However,\nit is not immediately in a state where it can end or otherwise have its votes counted, approved, and\nultimately enacted. Instead, the proposal will stay within a ",(0,i.jsx)(n.strong,{children:"Lead-in Period"})," until it fulfills\nthree criteria:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:'Proposals must stay within the lead-in period for a pre-defined minimum amount of time. This helps\nmitigate against the possibility of "decision sniping" where an attacker controlling a substantial\namount of voting power might seek to have a proposal passed immediately after proposing, not\nallowing the overall voting population adequate time to consider and participate.'}),"\n",(0,i.jsx)(n.li,{children:"There must be enough room for the decision within the origin. Different origins have their limit\non the number of proposals that can be decided simultaneously. Tracks that have more potent\nabilities will have lower limits. For example, the Root level Origin has a limit of one, implying\nthat only a single proposal may be decided on at once."}),"\n",(0,i.jsxs)(n.li,{children:["A decision deposit must be submitted. Creating a referendum is cheap as the deposit value consists\nof only the value required for the on-chain storage needed to track it. But, having a referendum\nreviewed and decided upon carries the risk of using up the limited spots available in the\nreferenda queue. Having a more significant but refundable deposit requirement makes sense to help\nmitigate spam. Failing to submit the decision deposit will lead to a referendum ",(0,i.jsx)(n.em,{children:"timeout"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Decision Deposit Amounts",type:"info",children:(0,i.jsx)(n.p,{children:"In Polkadot OpenGov, someone must submit the Decision Deposit for a referendum to enter its Decision\nPeriod. The number of tokens required for the Decision Deposit depends on the track\u2019s privilege\nlevel. The higher the privilege, the higher the deposit. For example, malicious referenda posted on\nthe Small Tipper track inflict low economic damage to the network. In contrast, malicious referenda\non the Root track can inflict more significant harm, such as changing the entire network's runtime."})}),"\n",(0,i.jsxs)(n.p,{children:["Until they are in the lead-in period, proposals remain undecided. Once the criteria above are met,\nthe referendum moves to the ",(0,i.jsx)(n.em,{children:"deciding"})," state. The votes of the referendum are now counted towards\nthe outcome."]}),"\n",(0,i.jsxs)(n.p,{children:["In (2), the proposal enters the ",(0,i.jsx)(n.strong,{children:"Decision Period"}),", where voting can continue. For a proposal to be\napproved, votes must satisfy the approval and support criteria for at least the ",(0,i.jsx)(n.strong,{children:"Confirmation\nPeriod"}),"; otherwise, the proposal is automatically rejected. A rejected proposal can be resubmitted\nanytime and as many times as needed."]}),"\n",(0,i.jsxs)(n.p,{children:["In (3), approved proposals will enter the ",(0,i.jsx)(n.strong,{children:"Enactment Period"}),", after which proposed changes will be\nexecuted."]}),"\n",(0,i.jsx)(n.p,{children:"Note how the length of the lead-in, decision, confirmation, and enactment periods vary depending on\nthe track. Root origin track has more extended periods than the other tracks. Also, the number of\nreferenda within each track differs, with the Root origin track only accepting one proposal at a\ntime (see below)."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"opengov-track-capacity",src:o(61019).A+"",width:"1920",height:"800"})}),"\n",(0,i.jsx)(n.p,{children:"This directly affects the number of proposals that can be voted on and executed simultaneously.\nContinuing the comparison between Root and Small Tipper, Small Tipper will allow many proposals on\nits track to be executed simultaneously. In contrast, Root will allow only one proposal to be on its\ntrack. Once the track capacity is filled, additional proposals in the lead-in period will queue\nuntil place is available to enter the decision period."}),"\n",(0,i.jsx)(n.h3,{id:"origins-and-tracks",children:"Origins and Tracks"}),"\n",(0,i.jsxs)(n.p,{children:["An ",(0,i.jsx)(n.strong,{children:"Origin"})," is a specific level of privilege that will determine the ",(0,i.jsx)(n.strong,{children:"Track"})," of all referenda\nexecuted with that origin. The track is a pipeline in which the proposal lives and proceeds,\nindependent of other origins' tracks. The proposer of the referenda now selects an appropriate\nOrigin for their request based on the proposal\u2019s requirements."]}),"\n",(0,i.jsx)(n.p,{children:"Although the track structure is the same for all origins, track parameters are not. Such parameters\ninclude:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Maximum Deciding or Capacity"}),": the limit for the number of referenda that can be decided at\nonce (i.e., the number of tracks within each origin)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Decision deposit"}),": the amount of funds that must be placed on deposit to enter the Decision\nPeriod (note that more requirements must be met to enter the Decision Period)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Preparation Period"}),": the minimum amount of voting time needed before entering the Decision\nPeriod (given capacity and deposit are met)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Decision Period"}),": the time interval during which a proposal's outcome can be decided."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Confirmation Period"}),": the minimum amount of time the approval and support criteria must hold\nbefore the proposal is approved and moved to the enactment period. The confirmation period should\nstart before the end of the decision period."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Example Scenario of an Edge Case",type:"info",children:(0,i.jsx)(n.p,{children:"A referendum may enter the confirmation period just one block before the decision period ends. In\nthis scenario, the referendum will pass if it satisfies approval and support thresholds for the\nminimum confirmation period (track-dependent)."})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Voting Period"}),": The period in which voting is allowed on a referendum, which includes\npreparation, decision, and confirmation periods."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Minimum Enactment Period"}),": the minimum amount of waiting time before the proposed changes are\napplied"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Approval Curve"}),": the curve describing the minimum % of ",(0,i.jsx)(n.em,{children:"aye"})," votes as a function of time within\nthe Decision Period. The approval % is the portion of ",(0,i.jsx)(n.em,{children:"aye"})," votes (adjusted for conviction) over\nthe total votes (",(0,i.jsx)(n.em,{children:"aye"}),", ",(0,i.jsx)(n.em,{children:"nay"}),", and ",(0,i.jsx)(n.em,{children:"abstained"}),")."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Support Curve"}),": the curve describing the minimum % of all votes in support of a proposal as a\nfunction of time within the Decision Period. The support % is defined as the portion of all votes\n(",(0,i.jsx)(n.em,{children:"aye"})," and ",(0,i.jsx)(n.em,{children:"abstained"}),") without conviction over the total possible amount of votes in the system\n(i.e., the total active issuance)."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["For example, a runtime upgrade (requiring a ",(0,i.jsx)(n.code,{children:"set_code"})," call, if approved) does not have the same\nimplications for the ecosystem as the approval of a treasury tip (",(0,i.jsx)(n.code,{children:"reportAwesome"})," call) and\ntherefore, different Origins for these two actions are needed in which different deposits, support,\napproval, and a minimum ",(0,i.jsx)(n.a,{href:"#enactment",children:"enactment"})," periods will be predetermined on the pallet."]}),"\n",(0,i.jsxs)(n.p,{children:["For detailed information about origin and tracks, and parameter values in Kusama, see\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info",children:"this page"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"voluntary-locking-conviction-voting",children:"Voluntary Locking (Conviction Voting)"}),"\n",(0,i.jsx)(n.admonition,{title:"Conviction Voting Locks created during Gov 1",type:"info",children:(0,i.jsxs)(n.p,{children:["Conviction voting locks in Governance v1 will not be carried over to OpenGov. Voting with conviction\nin OpenGov will create a new lock (as this will use the ",(0,i.jsx)(n.code,{children:"convictionVoting"})," pallet), while any\nexisting lock under Governance v1 (using the deprecated ",(0,i.jsx)(n.code,{children:"democracy"})," pallet) will be left to expire.\nDelegations under Governance v1 will need to be re-issued under OpenGov."]})}),"\n",(0,i.jsx)(n.p,{children:"Polkadot utilizes an idea called voluntary locking that allows token holders to increase their\nvoting power by declaring how long they are willing to lock up their tokens; hence, the number of\nvotes for each token holder will be calculated by the following formula:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"votes = tokens * conviction_multiplier\n"})}),"\n",(0,i.jsx)(n.p,{children:"The conviction multiplier increases the vote multiplier by one every time the number of lock periods\ndouble."}),"\n",(0,i.jsx)(p,{}),"\n",(0,i.jsxs)(n.p,{children:['The maximum number of "doublings" of the\n',(0,i.jsx)(n.a,{href:"/docs/chain-state-values#conviction-voting-lock-period",children:"lock period"})," is set to 6 (and thus\n32 lock periods in total). For additional information regarding the timeline of governance events,\ncheck out the governance section on the\n",(0,i.jsx)(n.a,{href:"maintain-polkadot-parameters/#governance",children:"Polkadot Parameters page"}),"."]}),"\n",(0,i.jsx)(n.p,{children:'Votes are always "counted" at the same time (at the end of the voting period), no matter how long\nthe tokens are locked.'}),"\n",(0,i.jsx)(n.p,{children:"See below an example that shows how voluntary locking works."}),"\n",(0,i.jsxs)(n.p,{children:["Peter: Votes ",(0,i.jsx)(n.code,{children:"No"})," with 10 DOT for a 32-week lock period => 10 x 6 = 60 Votes"]}),"\n",(0,i.jsxs)(n.p,{children:["Logan: Votes ",(0,i.jsx)(n.code,{children:"Yes"})," with 20 DOT for one week lock period => 20 x 1 = 20 Votes"]}),"\n",(0,i.jsxs)(n.p,{children:["Kevin: Votes ",(0,i.jsx)(n.code,{children:"Yes"})," with 15 DOT for a 2-week lock period => 15 x 2 = 30 Votes"]}),"\n",(0,i.jsx)(n.p,{children:"Even though both Logan and Kevin vote with more DOT than Peter, the lock period for both of them is\nless than Peter\u2019s, leading to their voting power counting as less."}),"\n",(0,i.jsx)(n.admonition,{title:"Staked tokens can be used in governance",type:"info",children:(0,i.jsxs)(n.p,{children:["While the tokens are locked, you can still use them for voting and ",(0,i.jsx)(n.a,{href:"/docs/learn-staking",children:"staking"}),".\nYou are only prohibited from transferring these tokens to another account. ",(0,i.jsxs)(n.strong,{children:["See the section about\n",(0,i.jsx)(n.a,{href:"#voting-on-a-referendum",children:"OpenGov locks"}),", and learn more about locks on the\n",(0,i.jsx)(n.a,{href:"/docs/learn-account-balances#locks",children:"Balances page"}),"."]})]})}),"\n",(0,i.jsx)(n.h3,{id:"approval-and-support",children:"Approval and Support"}),"\n",(0,i.jsx)(n.admonition,{title:"Adaptive Quorum Biasing is deprecated",type:"info",children:(0,i.jsxs)(n.p,{children:["In Polkadot OpenGov,\n",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#adaptive-quorum-biasing",children:"Adaptive quorum biasing"})," used in Governance\nV1 has been replaced with the ",(0,i.jsx)(n.strong,{children:"Approval and Support system"}),"."]})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"opengov-curves-pass",src:o(13531).A+"",width:"1920",height:"800"})}),"\n",(0,i.jsx)(n.p,{children:"The figure above provides a summary view of how the approval and support system works during the\nDecision Period."}),"\n",(0,i.jsxs)(n.p,{children:["Once the proposal exits the Lead-in Period and enters the Voting Period, to be approved, it must\nsatisfy the approval and support criteria for the ",(0,i.jsx)(n.strong,{children:"Confirmation Period"}),"."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Approval"})," is defined as the share of ",(0,i.jsx)(n.a,{href:"#voluntary-locking",children:"conviction"}),"-weighted ",(0,i.jsx)(n.em,{children:"aye"})," votes\nagainst the conviction-weighted total of ",(0,i.jsx)(n.em,{children:"aye"})," and ",(0,i.jsx)(n.em,{children:"nay"})," votes. The code implementation can be\nviewed\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk/blob/f2fbba3be1d7deaf7cfc731cea00552c212ddfcf/substrate/frame/conviction-voting/src/types.rs#L77",children:"here"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Support"})," is the total number of ",(0,i.jsx)(n.em,{children:"aye"})," and ",(0,i.jsx)(n.em,{children:"abstain"})," votes (ignoring any adjustment for\nconviction) compared to the total possible votes (",(0,i.jsx)(n.a,{href:"/docs/learn-DOT#token-issuance",children:"active issuance"}),")\nthat could be made in the system. In case of ",(0,i.jsx)(n.em,{children:"split"})," votes, only ",(0,i.jsx)(n.em,{children:"aye"})," and ",(0,i.jsx)(n.em,{children:"abstain"})," will count."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"For example, let us consider a hypothetical example where the total active issuance is 100 DOT."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:'An account A votes "Aye" with 10 DOT with 4x conviction'}),"\n",(0,i.jsx)(n.li,{children:'An account B votes "Nay" with 5 DOT with 2x conviction'}),"\n",(0,i.jsx)(n.li,{children:'An account C votes "Abstain" with 20 DOT. (no conviction can be applied to "Abstain" votes)'}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In this scenario, only 35 DOT from the total active issuance participated in voting on the\nreferendum. Now, let us calculate the Approval and Support values for that referendum."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Approval is calculated as (Aye') / (Aye' + Nay\u2019), where Aye' and Nay' are the votes after applying\nthe conviction multiplier. Hence, Approval = (10 x 4) / (10 x 4 + 5 x 2) = 40/50 which is 80%."}),"\n",(0,i.jsx)(n.li,{children:'Support is calculated as (Aye + Abstain) / (total active issuance), where "Aye" and "Abstain" are\nthe votes without the conviction multiplier. Hence, Support = (10 + 20) / 100 which is 30%.'}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Nay votes are not counted towards Support",type:"info",children:(0,i.jsxs)(n.p,{children:["Support is a measure of voters who turned out either in favor of the referenda or consciously\nabstained from it. Support does not include ",(0,i.jsx)(n.em,{children:"nay"})," votes. This avoids edge situations where ",(0,i.jsx)(n.em,{children:"nay"}),"\nvotes could push a referendum into a confirming state. For example, imagine current approval is high\n(near 100%, way above the approval curve), and current support is just below the support curve. A\n",(0,i.jsx)(n.em,{children:"nay"})," could bump support above the support curve but not reduce approval below the approval curve.\nTherefore, someone voting against a proposal would make it pass. Hence, a decrease in % of current\napproval through new votes does not directly translate into increasing support because Support needs\nto consider ",(0,i.jsx)(n.em,{children:"nay"})," votes."]})}),"\n",(0,i.jsx)(n.p,{children:"The figure above shows the following:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Even if the approval threshold is reached (i.e., % of current approval is greater than the\napproval curve), the proposal only enters the confirmation period once the support threshold is\nalso reached (i.e., % current support is greater than the underlying support curve)."}),"\n",(0,i.jsxs)(n.li,{children:["If the referendum meets the approval and support thresholds for the duration of the confirmation\nperiod, the proposal will be approved and will be scheduled for enactment. Each track has a\ndefault minimum Enactment Period, and the approved referendum needs to wait till the end of it to\nbe executed. Powerful Tracks like ",(0,i.jsx)(n.code,{children:"Root"})," enforce a larger Enactment Period to ensure the network\nhas ample time to prepare for any changes the proposal may bring. The referendum proposers can\nalso set the enactment period higher than its default value."]}),"\n",(0,i.jsxs)(n.li,{children:["A referendum may exit the confirmation period when the thresholds are no longer met due to new\n",(0,i.jsx)(n.em,{children:"Nay"})," votes or a change of existing ",(0,i.jsx)(n.em,{children:"Aye"})," or ",(0,i.jsx)(n.em,{children:"Abstain"})," votes to ",(0,i.jsx)(n.em,{children:"Nay"})," . Each time it exits, the\nconfirmation period clock is reset. For example, suppose the confirmation period is 20 minutes,\nand a referendum enters it just for 5 min before exiting. The next time it enters, it must be\nconfirmed for 20 minutes (not 15 minutes)."]}),"\n",(0,i.jsx)(n.li,{children:"It is possible that a referendum meets the approval and support thresholds almost at the end of\nthe decision period. In this case, even though the decision period elapses, the referendum can\npass if it stays confirming for the duration of the track-specific confirmation period. It is\nrejected immediately if it exits the confirmation period after the decision period elapses."}),"\n",(0,i.jsx)(n.li,{children:"The approval curve starts at 100% and gradually decreases to 50%, but never below 50%. Assuming\nall the active token supply has voted on a proposal, the conviction vote-weighted support should\nalways be above 50% to pass."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"opengov-curves-pass",src:o(26002).A+"",width:"1920",height:"800"})}),"\n",(0,i.jsx)(n.p,{children:"Note that support may not increase monotonically, as shown in the figure, as people might switch\nvotes."}),"\n",(0,i.jsxs)(n.p,{children:["Different Origins' tracks have different Confirmation Periods and requirements for approval and\nsupport. For additional details on the various origins and tracks, check out\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info",children:"this table"}),". With proposals that use\nless privileged origins, it is far more reasonable to drop the required support to a more realistic\namount earlier than those which use highly privileged classes such as ",(0,i.jsx)(n.code,{children:"Root"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"enactment",children:"Enactment"}),"\n",(0,i.jsx)(n.admonition,{title:"Enactment in Governance v1",type:"info",children:(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#enactment",children:"this page"})," for more information about enactment in\nGovernance v1."]})}),"\n",(0,i.jsxs)(n.p,{children:["In Polkadot OpenGov, the proposer suggests the enactment period, but there is also a minimum set for\neach Origin Track. For example, ",(0,i.jsx)(n.code,{children:"root"})," Origin approvals require an extended period because of the\nimportance of the changes they bring to the network."]}),"\n",(0,i.jsx)(n.h3,{id:"cancelling-killing--blacklisting",children:"Cancelling, Killing & Blacklisting"}),"\n",(0,i.jsx)(n.admonition,{title:"Cancelling Referenda in Governance v1",type:"info",children:(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#cancelling-proposals",children:"this page"})," for more information about\ncancelling referenda in Governance v1."]})}),"\n",(0,i.jsxs)(n.p,{children:["Polkadot OpenGov has two origins dedicated to rejecting ongoing referenda:\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#referendum-canceller",children:"Referendum Canceller"})," and\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#referendum-killer",children:"Referendum Killer"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Referendum Canceller aims to cancel an already ongoing referendum. When this origin cancels a\nreferendum, the Submission and Decision Deposit are refunded to their originators. An example of\nwhen a referendum might be considered to be canceled is if the originator has made some errors in\ncreating the preimage and did not necessarily do anything malicious. Cancellation has a lower\nDecision Period, and Approval and Support criteria are much easier to meet over time than most other\nOrigins. This is because the cancellation of a referendum usually comes with a sense of urgency."}),"\n",(0,i.jsx)(n.p,{children:"Referendum Killer aims to instantly kill an ongoing referendum, slashing submission and decision\ndeposit (the account(s) that posted these deposits will lose those funds). This origin can be\nengaged if, for example, a malicious actor submits a referendum on the Root Track to set the code of\nthe chains' runtime to stop block production."}),"\n",(0,i.jsx)(n.p,{children:"The Decision Deposit for the Referendum Killer track itself is high to prevent malicious actors from\nattempting to slash deposits of good referenda. A subsequent Referendum Killer can kill an existing\nReferendum Killer."}),"\n",(0,i.jsxs)(n.p,{children:["For more information about how to cancel or kill a referendum, see the\n",(0,i.jsx)(n.a,{href:"./learn-guides-polkadot-opengov#cancel-or-kill-a-referendum",children:"advanced how-to guides"}),"."]}),"\n",(0,i.jsx)(n.admonition,{title:"Blacklisting",type:"info",children:(0,i.jsxs)(n.p,{children:["Blacklisting referenda in Polkadot OpenGov is\n",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#blacklisting-proposals",children:"the same as in Governance v1"}),"."]})}),"\n",(0,i.jsx)(n.h2,{id:"voting-on-a-referendum",children:"Voting on a Referendum"}),"\n",(0,i.jsx)(n.p,{children:"If you are a voter, it means that you will vote with your tokens on each single referendum."}),"\n",(0,i.jsxs)(n.p,{children:["In Governance V1, voters could cast only an ",(0,i.jsx)(n.em,{children:"aye"})," or ",(0,i.jsx)(n.em,{children:"nay"})," vote. In Polkadot OpenGov, voters can\nadditionally cast a ",(0,i.jsx)(n.em,{children:"abstain"})," and ",(0,i.jsx)(n.em,{children:"split"})," votes.\n",(0,i.jsx)(n.a,{href:"/docs/learn-guides-polkadot-opengov#voting-on-referenda",children:"Vote splitting"})," allows voters to allocate\ndifferent votes for ",(0,i.jsx)(n.em,{children:"aye"}),", ",(0,i.jsx)(n.em,{children:"nay"}),", and ",(0,i.jsx)(n.em,{children:"abstain"}),". Voting with conviction is not possible when\nabstaining or splitting the votes."]}),"\n",(0,i.jsx)(n.admonition,{title:"Only the last vote counts",type:"info",children:(0,i.jsx)(n.p,{children:"Voting a second time replaces your original vote, e.g. voting with 10 DOT, then a second extrinsic\nto vote with 5 DOT, means that you are voting with 5 DOT, not 10 DOT."})}),"\n",(0,i.jsxs)(n.p,{children:["Note that to successfully cast votes you need to have the\n",(0,i.jsx)(n.a,{href:"/docs/learn-accounts#existential-deposit-and-reaping",children:"existential deposit"})," and some additional funds\nto pay for transaction fees."]}),"\n",(0,i.jsx)(n.p,{children:"In general, you can remove your vote:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"While a referendum is ongoing (your vote does not count)"}),"\n",(0,i.jsx)(n.li,{children:"After a referendum ended (your vote counts)"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"If you voted without conviction, there's no conviction lock in either case. If you voted with\nconviction, you only get a conviction lock if the referendum ended and you voted with the winning\nside."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"voting-locks-1",src:o(81108).A+"",width:"1626",height:"912"})}),"\n",(0,i.jsx)(n.admonition,{title:"Revoke your delegation on a track if you like to vote on your own",type:"info",children:(0,i.jsxs)(n.p,{children:["If you want to vote on a referendum on a specific track on your own, you will need to revoke any\nexisting ",(0,i.jsx)(n.a,{href:"#multirole-delegation",children:"delegation"})," on that track (i.e. undelegate). You can have a\nconviction lock on the track, but you cannot have an active delegation."]})}),"\n",(0,i.jsx)(n.h3,{id:"voting-without-conviction",children:"Voting Without Conviction"}),"\n",(0,i.jsx)(n.p,{children:"If you vote without conviction, the referendum is ongoing, and you remove the vote, you can unlock\nyour tokens immediately. If the referendum ended, you can remove your vote and unlock your tokens\nimmediately, regardless of whether you are on the winning or losing side of the referendum. The\ngovernance app or interface you used for participating in Polkadot OpenGov should show an option to\nunlock your tokens."}),"\n",(0,i.jsx)(n.h3,{id:"voting-with-conviction",children:"Voting with Conviction"}),"\n",(0,i.jsx)(n.p,{children:"If you voted with conviction, the referendum is ongoing, and you removed the vote, you can unlock\nyour tokens immediately. If the referendum ended and you are on the losing side, you can remove your\nvote and unlock the tokens immediately. However, if you are on the winning side of the referendum,\nyou will get a conviction lock."}),"\n",(0,i.jsx)(n.p,{children:"Conviction locks are calculated from the time the referendum ended but are applied when you remove\nthe vote."}),"\n",(0,i.jsx)(n.p,{children:"For example, if you voted with conviction 1x with 10 DOT, those 10 DOT will be locked for 7 days\nafter the referendum ends (assuming you are on the winning side). If you remove the vote 3 days\nafter the referendum ended, your tokens will be locked for 4 more days. If you remove it on the 8th\nday after the end of the referendum, the tokens can be unlocked right away (after you remove the\nvote). When you remove the vote, the lock expiration block is calculated and added to the chain\nstate."}),"\n",(0,i.jsxs)(n.p,{children:["If you voted on multiple referenda, and you are on the winning side of all those referenda, you will\nget multiple conviction voting locks for all those referenda. ",(0,i.jsx)(n.strong,{children:"Locks do not stack"}),"; the length and\nsize of the lock decides. This means that - assuming you used the same conviction on the same number\nof tokens - when the conviction lock on the latest referendum (see below, Ref 4) expires, you will\nbe able to unlock your tokens. In the meantime, the previous locks (1 to 3) might have expired, and\nyou can remove those locks (after removing the votes)."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"voting-locks-2",src:o(3567).A+"",width:"1626",height:"914"})}),"\n",(0,i.jsx)(n.p,{children:"When you delegate your votes, the locking mechanism differs slightly. Please check the next section\non Multirole Delegation for more information."}),"\n",(0,i.jsx)(n.h2,{id:"multirole-delegation",children:"Multirole Delegation"}),"\n",(0,i.jsxs)(n.p,{children:["Polkadot OpenGov builds on the\n",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#delegations",children:"vote delegation feature from Governance v1"})," where a\nvoter can delegate their voting power to another voter. It does so by introducing a feature known as\n",(0,i.jsx)(n.strong,{children:"multirole delegation"}),", where voters can specify a different delegate for every class of\nreferendum in the system. Delegation can be done per track, and accounts can choose to select\ndifferent delegates (or no delegation) for each track."]}),"\n",(0,i.jsx)(n.p,{children:"For example, a voter could delegate one entity for managing a less potent referenda class, choose a\ndifferent delegate for another class with more powerful consequences and still retain full voting\npower over any remaining classes."}),"\n",(0,i.jsx)(n.p,{children:"Contrary to solo voting, with delegations, any conviction locks are applied as soon as you\nundelegate, regardless of whether your delegated votes were used for voting during that time. If\nyour delegated votes were used in any ongoing referenda, they would be removed from those referenda\nwhen you undelegate. Alternatively, after undelegating, you can delegate to another person or modify\nyour delegation. The only way to modify the delegation is to undelegate and delegate again. You do\nnot have to do this yourself; wallets and extensions should have implemented UI to modify delegation\nwithout you knowing this."}),"\n",(0,i.jsx)(n.p,{children:"If you delegate without conviction and you undelegate, you can unlock your tokens immediately.\nAlternatively, after undelegating, you can always delegate to another person or modify your\ndelegation."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"delegation-locks-1",src:o(46475).A+"",width:"1627",height:"913"})}),"\n",(0,i.jsx)(n.p,{children:"In the case you delegated with 1x conviction, you undelegate and re-delegate with 2x conviction; the\ntime you undelegate again, you will have created two conviction locks: one for the 1x and one for\nthe 2x conviction. If you re-delegate immediately with 1x conviction and undelegate, you will get a\nsecond 1x conviction lock, but the 2x conviction lock will be the one deciding when your token can\nbe unlocked."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"delegation-locks-2",src:o(32656).A+"",width:"1630",height:"912"})}),"\n",(0,i.jsxs)(n.admonition,{type:"info",children:[(0,i.jsx)(n.p,{children:"If the account delegated votes to different delegates using different convictions, then after\nundelegating those delegates, there will be different unlocking periods with lengths dependent on\nthe conviction multipliers."}),(0,i.jsx)(n.p,{children:(0,i.jsxs)(n.strong,{children:["Before delegating a specific track, you must remove any ",(0,i.jsx)(n.a,{href:"#voting-on-a-referendum",children:"vote"})," on that\ntrack."]})})]}),"\n",(0,i.jsx)(n.p,{children:"It is worth noting that a user delegating their voting power does not imply that the delegate will\nhave control over the funds of the delegating user's account. That delegate's account can vote with\na user's voting power but won't be able to transfer balances, nominate a different set of\nvalidators, or execute any call other than voting on the tracks defined by the user."}),"\n",(0,i.jsx)(n.p,{children:"The goal of delegations is to ensure the required support for proposals to be enacted is reached\nwhile keeping the overall design censorship-free. Also, voters might not have the technical\nknowledge to judge some referenda or might not have the time to read all referenda. Delegations\nallow voters to participate in OpenGov hands-free by delegating their voting power to trusted\nentities."}),"\n",(0,i.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/democracy/src",children:"Democracy Pallet"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://medium.com/polkadot-network/gov2-polkadots-next-generation-of-decentralised-governance-4d9ef657d11b",children:"Governance v2"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://matrix.to/#/#Polkadot-Direction:parity.io",children:"Polkadot Direction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://matrix.to/#/#Kusama-Direction:parity.io",children:"Kusama Direction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://polkadot.polkassembly.io/",children:"PolkAssembly"})}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.admonition,{title:"Polkadot-JS Guides",type:"info",children:(0,i.jsxs)(n.p,{children:["If you are an advanced user, see the\n",(0,i.jsx)(n.a,{href:"/docs/learn-guides-polkadot-opengov",children:"Polkadot-JS guides about OpenGov"}),"."]})})]})}function j(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},67141:(e,n,o)=>{o.d(n,{A:()=>r});var t=o(96540),i=o(74848);const r=function(e){var n,o=e.message,r=(0,t.useState)(!0),a=r[0],s=r[1];return(0,i.jsx)(i.Fragment,{children:a&&(0,i.jsxs)("div",{className:"message-box",children:[(0,i.jsx)("button",{className:"close-button",onClick:function(){s(!1)},children:"\u2716 "}),(0,i.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(n=o,n.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},46475:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/delegation-locks-1-c203e10abb20e87ec907c910c0221a8f.png"},32656:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/delegation-locks-2-db32ffe7daa316d3b96a6311cccdea85.png"},26002:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/opengov-curves-nopass-27f6968907aeb88e87069d29ca062568.png"},13531:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/opengov-curves-pass-73b6c7d1849e26082880cd7d629a633e.png"},39040:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/opengov-overview-a56ef29a3a173f9dc2b60a9008dcfc1b.png"},17160:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/opengov-timeline-26e5a1fae159676ab5052a4fd7416be5.png"},61019:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/opengov-track-capacity-a1e00e5bd7961ea13d38f79cf6fa4b9c.png"},81108:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/voting-locks-1-23e3e07cb23d8a6b30e50be110a5119b.png"},3567:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/voting-locks-2-d8eaa8ef9a38f7460042b27fadd0d166.png"},28453:(e,n,o)=>{o.d(n,{R:()=>a,x:()=>s});var t=o(96540);const i={},r=t.createContext(i);function a(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2584],{59327:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>f,contentTitle:()=>g,default:()=>j,frontMatter:()=>m,metadata:()=>t,toc:()=>v});const t=JSON.parse('{"id":"learn/learn-polkadot-opengov","title":"Introduction to Polkadot OpenGov","description":"Polkadot\u2019s Latest Model for Decentralized Governance.","source":"@site/../docs/learn/learn-polkadot-opengov.md","sourceDirName":"learn","slug":"/learn-polkadot-opengov","permalink":"/docs/learn-polkadot-opengov","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-polkadot-opengov.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1734535671000,"frontMatter":{"id":"learn-polkadot-opengov","title":"Introduction to Polkadot OpenGov","sidebar_label":"Polkadot OpenGov","description":"Polkadot\u2019s Latest Model for Decentralized Governance.","keywords":["governance","referenda","proposal","voting","endorse"],"slug":"../learn-polkadot-opengov"},"sidebar":"docs","previous":{"title":"Polkadot OpenGov","permalink":"/docs/learn-polkadot-opengov-index"},"next":{"title":"OpenGov Origins","permalink":"/docs/learn-polkadot-opengov-origins"}}');var i=o(74848),r=o(28453),a=o(96540),s=(0,i.jsx)("table",{children:(0,i.jsxs)("tbody",{children:[(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:"Lock Periods"}),(0,i.jsx)("th",{children:"Vote Multiplier"}),(0,i.jsx)("th",{children:"Length in Days"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"0"}),(0,i.jsx)("td",{children:"0.1"}),(0,i.jsx)("td",{id:"p0"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"1"}),(0,i.jsx)("td",{children:"1"}),(0,i.jsx)("td",{id:"p1"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"2"}),(0,i.jsx)("td",{children:"2"}),(0,i.jsx)("td",{id:"p2"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"4"}),(0,i.jsx)("td",{children:"3"}),(0,i.jsx)("td",{id:"p4"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"8"}),(0,i.jsx)("td",{children:"4"}),(0,i.jsx)("td",{id:"p8"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"16"}),(0,i.jsx)("td",{children:"5"}),(0,i.jsx)("td",{id:"p16"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:"32"}),(0,i.jsx)("td",{children:"6"}),(0,i.jsx)("td",{id:"p32"})]})]})}),l=["p0","p1","p2","p4","p8","p16","p32"],d={p0:0,p1:7,p2:14,p4:28,p8:56,p16:112,p32:224},c={p0:0,p1:7,p2:14,p4:28,p8:56,p16:112,p32:224};function h(e){l.forEach((function(n){var o=document.getElementById(n);"polkadot"===e?o.innerText=d[n]:"kusama"===e&&(o.innerText=c[n])}))}const p=function(){var e=(0,a.useState)("");return e[0],e[1],(0,a.useEffect)((function(){var e=document.title;"Governance V1 \xb7 Polkadot Wiki"===e||"Introduction to Polkadot OpenGov \xb7 Polkadot Wiki"===e?h("polkadot"):"Governance V1 \xb7 Guide"===e||"Introduction to Polkadot OpenGov \xb7 Guide"===e?h("kusama"):console.log("Unknown wiki/guide type")}),[]),s};var u=o(67141);const m={id:"learn-polkadot-opengov",title:"Introduction to Polkadot OpenGov",sidebar_label:"Polkadot OpenGov",description:"Polkadot\u2019s Latest Model for Decentralized Governance.",keywords:["governance","referenda","proposal","voting","endorse"],slug:"../learn-polkadot-opengov"},g=void 0,f={},v=[{value:"Premise",id:"premise",level:2},{value:"Summary",id:"summary",level:2},{value:"Gov1 vs. Polkadot OpenGov",id:"gov1-vs-polkadot-opengov",level:2},{value:"Referenda",id:"referenda",level:2},{value:"Referenda Timeline",id:"referenda-timeline",level:3},{value:"Origins and Tracks",id:"origins-and-tracks",level:3},{value:"Voluntary Locking (Conviction Voting)",id:"voluntary-locking-conviction-voting",level:3},{value:"Approval and Support",id:"approval-and-support",level:3},{value:"Enactment",id:"enactment",level:3},{value:"Cancelling, Killing & Blacklisting",id:"cancelling-killing--blacklisting",level:3},{value:"Voting on a Referendum",id:"voting-on-a-referendum",level:2},{value:"Voting Without Conviction",id:"voting-without-conviction",level:3},{value:"Voting with Conviction",id:"voting-with-conviction",level:3},{value:"Multirole Delegation",id:"multirole-delegation",level:2},{value:"Resources",id:"resources",level:2}];function x(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(u.A,{message:"Before voting or delegating in Polkadot OpenGov, get familiar with [balances and locks](./learn-account-balances#locks)."}),"\n",(0,i.jsxs)(n.admonition,{title:"The content in this document is subject to change",type:"caution",children:[(0,i.jsxs)(n.p,{children:["The governance protocol has already undergone iterations (see\n",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance",children:"Governance V1"}),"). Governance is a constantly evolving protocol at\nthis stage in its lifecycle."]}),(0,i.jsxs)(n.p,{children:["For additional support about Polkadot OpenGov, see the\n",(0,i.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/65000105211",children:"dedicated support pages"}),"."]})]}),"\n",(0,i.jsx)(n.p,{children:"Polkadot uses a sophisticated governance mechanism that allows it to evolve gracefully overtime at\nthe ultimate behest of its assembled stakeholders. The goal is to ensure that most of the stake can\nalways command the network."}),"\n",(0,i.jsxs)(n.p,{children:["Polkadot brings together various novel mechanisms, including an amorphous (abstract) form of\nstate-transition function stored on-chain defined in a platform-agnostic language (i.e.\n",(0,i.jsx)(n.a,{href:"/docs/learn-wasm",children:"WebAssembly"}),"), and several on-chain voting mechanisms such as referenda and batch\napproval voting. All changes to the protocol must be agreed upon by stake-weighted referenda."]}),"\n",(0,i.jsx)(n.h2,{id:"premise",children:"Premise"}),"\n",(0,i.jsxs)(n.p,{children:["Polkadot's first governance system (",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance",children:"Governance V1"}),") included three\nmain components."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#technical-committee",children:"Technical Committee"}),": A technocratic\ncommittee to manage upgrade timelines."]}),"\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#council",children:"Council"}),': An approval-voted, elected executive\n"government" to manage parameters, admin, and spending proposals.']}),"\n",(0,i.jsx)(n.li,{children:"The Public: All token holders."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Over the first few years of operation, Governance V1 ensured the appropriate usage of treasury funds\nand enabled timely upgrades and fixes. Like most early technologies, protocols must evolve as they\nmature to improve their shortcomings and keep up with modern advancements. In Governance V1, all\nreferenda carried the same weight as only one referendum could be voted on at a time (except for\nemergency proposals), and the voting period could last multiple weeks. Also, an\n",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#alternating-voting-timetable",children:"alternating voting timetable"})," allowed\nto vote either for a public referendum or a council motion every 28 days (7 days on Kusama). This\nresulted in the system favoring careful consideration of very few proposals instead of broad\nconsideration of many."]}),"\n",(0,i.jsx)(n.p,{children:"Polkadot OpenGov changes how the practical means of day-to-day decisions are made, making the\nrepercussions of referenda better scoped and agile to increase the number of collective decisions\nthe system can make at any given time."}),"\n",(0,i.jsxs)(n.p,{children:["The following content is focused on Polkadot OpenGov, and on the main differences with previous\ngovernance versions. We recommend learning about ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance",children:"Governance v1"})," to\nbetter understand the need for and the direction of Polkadot OpenGov."]}),"\n",(0,i.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,i.jsx)(n.p,{children:"In Governance v1, active token holders (public) and the Council administrated the network's upgrade\ndecisions. Whether the public or the council initiated the proposal, it would eventually have to go\nthrough a referendum to let all holders (weighted by stake and conviction) make the decision."}),"\n",(0,i.jsx)(n.p,{children:"The Council fulfilled its role as the representative of the public, guardian of the treasury and\ninitiator of legislation, but it was often seen as a centralized entity. To further decentralize the\nnetwork, Polkadot OpenGov proposes the following main changes:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Migrating all responsibilities of the Council to the public via a direct democracy voting system."}),"\n",(0,i.jsxs)(n.li,{children:["Dissolving the current ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#council",children:"Council"})," collective"]}),"\n",(0,i.jsx)(n.li,{children:"Allowing users to delegate voting power in more ways to community members"}),"\n",(0,i.jsxs)(n.li,{children:["Dissolving the ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#technical-committee",children:"Technical Committee"})," and\nestablishing the broader ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-technical-fellowship",children:"Polkadot Technical Fellowship"})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"The figure below shows an overview of Polkadot OpenGov's structure."}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#summary",children:"this page"})," for a comparison with the structure of\nGovernance V1."]})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"opengov-overview",src:o(39040).A+"",width:"1920",height:"800"})}),"\n",(0,i.jsxs)(n.p,{children:["In Polkadot OpenGov, all the proposals are initiated by the public. The proposal will enter a\nLead-in period (for more information, see ",(0,i.jsx)(n.a,{href:"#referenda-timeline",children:"Referenda Timeline"}),"), after which it\nwill follow a specific ",(0,i.jsx)(n.a,{href:"#origins-and-tracks",children:"Track"})," which has a dedicated Origin. There are\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info",children:"15 Origins"}),", each with a different\ntrack. The origins and tracks parameters are preset values that set the duration of a referendum as\nwell as how many referenda can be voted on simultaneously. For example, a treasury proposal can now\nbe submitted in different tracks depending on the amount requested. A proposal for a small tip will\nneed to be submitted to the Small Tipper track, while a proposal requiring substantial funds will\nneed to be submitted to the Medium or Big Spender track."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-technical-fellowship",children:"Polkadot Technical Fellowship"})," can decide to\n",(0,i.jsx)(n.a,{href:"#whitelisting",children:"whitelist"})," a proposal that will be enacted through the Whitelist Caller origin.\nThose proposals will have a shorter Lead-in, Confirmation, and Enactment period when compared to the\nRoot Origin track."]}),"\n",(0,i.jsxs)(n.p,{children:["Each track has its own preset ",(0,i.jsx)(n.a,{href:"#approval-and-support",children:"Approval and Support"})," curves based on the\norigin's privileges. When both the approval and support criteria are satisfied for a specific period\n(called the confirmation period), the referendum passes and will be executed after the enactment\nperiod."]}),"\n",(0,i.jsx)(n.p,{children:"All referenda within each track and across tracks can be voted on simultaneously (assuming the\ntrack's maximum capacity is not reached)."}),"\n",(0,i.jsx)(n.p,{children:"Polkadot OpenGov also comes with multi-role delegations where the token holder can assign voting\npower on different tracks to different entities who are experts in judging the referenda submitted\nto those tracks. For example, suppose a token holder does not have the technical background to\nconsider the merits and vote on the referenda submitted to the Root track. In that case, they can\ndelegate their voting power just for the Root track to a trusted expert who (according to them) acts\nin the best interest of the network protocol. In this way, token holders do not need to be\nup-to-date with governance matters and can still make their votes count through delegates."}),"\n",(0,i.jsx)(n.h2,{id:"gov1-vs-polkadot-opengov",children:"Gov1 vs. Polkadot OpenGov"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Governance V1"}),(0,i.jsx)(n.th,{children:"Polkadot OpenGov"}),(0,i.jsx)(n.th,{children:"Polkadot OpenGov Benefit"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["Includes the ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#council",children:"Council"}),", the ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#technical-committee",children:"Technical Committee"}),", and the Public (i.e. token holders)."]}),(0,i.jsxs)(n.td,{children:["Includes the Public and the ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-technical-fellowship",children:"Technical Fellowship"}),"."]}),(0,i.jsx)(n.td,{children:"Simpler and more decentralized structure."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Referenda executed only from one origin (Root). Referenda in this origin must be carefully scrutinized. Therefore, there is only one track (i.e., only one referendum at a time can be executed)."}),(0,i.jsxs)(n.td,{children:["Referenda executed from ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info",children:"multiple origins"}),", each with a different track that shapes proposals\u2019 timelines. Depending on the origin, multiple referenda within the same track are possible."]}),(0,i.jsx)(n.td,{children:"Possibility to categorize proposals (based on importance and urgency) and execute them simultaneously within and between origin tracks."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Proposals can be submitted by either the Council or the Public."}),(0,i.jsx)(n.td,{children:"The public submits proposals."}),(0,i.jsx)(n.td,{children:"More democratic."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["Uses ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#adaptive-quorum-biasing",children:"Adaptive Quorum Biasing"})," to define the approval threshold based on turnout. Given the same turnout, council-initiated referenda require fewer Aye votes to pass compared to public referenda."]}),(0,i.jsx)(n.td,{children:"Uses origin-specific approval and support curves defining the amount of approval and support (i.e. turnout) needed as a function of time. The same curves are applied to all referenda within the same origin track."}),(0,i.jsx)(n.td,{children:"Referenda timeline depends on the origin and not on who submitted the proposal (i.e. Council or Public). This is a more democratic and equalitarian system."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["Uses ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#alternating-voting-timetable",children:"alternating voting timetable"})," allowing voters to cast votes for either council or public referenda every 28 eras."]}),(0,i.jsx)(n.td,{children:"Multiple referenda can be voted at the same time."}),(0,i.jsx)(n.td,{children:"More flexible and agile governance system."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Except for emergency proposals, all referenda have fixed voting and enactment periods of 28 eras."}),(0,i.jsx)(n.td,{children:"Periods' length is customizable and has pre-defined limits for each origin. The same limits apply to all tracks with the same origin. For example, the track in the origin Root will be longer than the track within the Small Tipper origin."}),(0,i.jsx)(n.td,{children:"Referenda\u2019s timeline is tailored to their importance and urgency. Flexible enactment period based on origin."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Emergency proposals turned referenda can be simultaneously voted on and executed with other referenda and have shorter enactment periods. They must be proposed by the Technical Committee and approved by the Council."}),(0,i.jsx)(n.td,{children:"No emergency proposals. The Technical Fellowship can whitelist proposals that will have their origin with shorter lead-in, confirmation, and enactment periods."}),(0,i.jsx)(n.td,{children:"The Technical Fellowship is a more decentralized entity than the Technical Committee. Whitelisting a proposal requires a majority of approval from the fellowship."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["Only the ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#endorsing-proposals",children:"most-endorsed proposal"})," is able to transit from Launch to Voting period. The time for the transition is indeterminate, and (with no possibility of canceling endorsements) proposers and endorsers might wait a long time before a referendum is tabled, and getting their deposits back."]}),(0,i.jsx)(n.td,{children:"All proposals will eventually be voted on (given track capacity and deposit are met and the Lead-in period has ended)."}),(0,i.jsx)(n.td,{children:"It allows all proposals to get a chance to be voted on in a timely, predictive manner."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["Only ",(0,i.jsx)(n.em,{children:"aye"})," or ",(0,i.jsx)(n.em,{children:"nay"})," votes possible."]}),(0,i.jsx)(n.td,{children:"Voters can have the additional voting options of abstaining or splitting votes."}),(0,i.jsx)(n.td,{children:"More ways to engage in voting and increase turnout."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Voters can decide to delegate votes to another account."}),(0,i.jsxs)(n.td,{children:["Voters can use ",(0,i.jsx)(n.a,{href:"#multirole-delegation",children:"multirole delegations"})," and delegate votes to different accounts depending on origins."]}),(0,i.jsx)(n.td,{children:"More agile delegations tailored by expertise."})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"referenda",children:"Referenda"}),"\n",(0,i.jsxs)(n.admonition,{title:"Public and Council Referenda in Governance v1",type:"info",children:[(0,i.jsxs)(n.p,{children:["With the Council's dissolution, ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#council-referenda",children:"council referenda"}),"\nare no longer present in Polkadot OpenGov."]}),(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#public-referenda",children:"this page"})," for more information about public\nreferenda in Governance v1."]})]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"In Polkadot OpenGov all referenda are public."})," Anyone can start a referendum at any time and do\nso as often as they wish. Previous features were expanded and improved, most notably\n",(0,i.jsx)(n.a,{href:"#origins-and-tracks",children:(0,i.jsx)(n.strong,{children:"Origins and Tracks"})})," help facilitate the flow and processing of the\nsubmitted referenda. The ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-technical-fellowship",children:"Technical Fellowship"})," has the\noption to ",(0,i.jsx)(n.a,{href:"#whitelisting",children:"whitelist"})," referenda that can be then proposed in the track with\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#whitelisted-caller",children:"whitelist origin"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"referenda-timeline",children:"Referenda Timeline"}),"\n",(0,i.jsx)(n.admonition,{title:"Voting timetable in Governance v1",type:"info",children:(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#referenda-timeline",children:"this page"})," for more information about the\nvoting timetable in Governance v1."]})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"opengov-timeline",src:o(17160).A+"",width:"1920",height:"800"})}),"\n",(0,i.jsx)(n.p,{children:"The figure above provides a summary view of the referenda timeline for Polkadot OpenGov."}),"\n",(0,i.jsxs)(n.p,{children:["In (1), when a referendum is initially created, the community can immediately vote on it. However,\nit is not immediately in a state where it can end or otherwise have its votes counted, approved, and\nultimately enacted. Instead, the proposal will stay within a ",(0,i.jsx)(n.strong,{children:"Lead-in Period"})," until it fulfills\nthree criteria:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:'Proposals must stay within the lead-in period for a pre-defined minimum amount of time. This helps\nmitigate against the possibility of "decision sniping" where an attacker controlling a substantial\namount of voting power might seek to have a proposal passed immediately after proposing, not\nallowing the overall voting population adequate time to consider and participate.'}),"\n",(0,i.jsx)(n.li,{children:"There must be enough room for the decision within the origin. Different origins have their limit\non the number of proposals that can be decided simultaneously. Tracks that have more potent\nabilities will have lower limits. For example, the Root level Origin has a limit of one, implying\nthat only a single proposal may be decided on at once."}),"\n",(0,i.jsxs)(n.li,{children:["A decision deposit must be submitted. Creating a referendum is cheap as the deposit value consists\nof only the value required for the on-chain storage needed to track it. But, having a referendum\nreviewed and decided upon carries the risk of using up the limited spots available in the\nreferenda queue. Having a more significant but refundable deposit requirement makes sense to help\nmitigate spam. Failing to submit the decision deposit will lead to a referendum ",(0,i.jsx)(n.em,{children:"timeout"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Decision Deposit Amounts",type:"info",children:(0,i.jsx)(n.p,{children:"In Polkadot OpenGov, someone must submit the Decision Deposit for a referendum to enter its Decision\nPeriod. The number of tokens required for the Decision Deposit depends on the track\u2019s privilege\nlevel. The higher the privilege, the higher the deposit. For example, malicious referenda posted on\nthe Small Tipper track inflict low economic damage to the network. In contrast, malicious referenda\non the Root track can inflict more significant harm, such as changing the entire network's runtime."})}),"\n",(0,i.jsxs)(n.p,{children:["Until they are in the lead-in period, proposals remain undecided. Once the criteria above are met,\nthe referendum moves to the ",(0,i.jsx)(n.em,{children:"deciding"})," state. The votes of the referendum are now counted towards\nthe outcome."]}),"\n",(0,i.jsxs)(n.p,{children:["In (2), the proposal enters the ",(0,i.jsx)(n.strong,{children:"Decision Period"}),", where voting can continue. For a proposal to be\napproved, votes must satisfy the approval and support criteria for at least the ",(0,i.jsx)(n.strong,{children:"Confirmation\nPeriod"}),"; otherwise, the proposal is automatically rejected. A rejected proposal can be resubmitted\nanytime and as many times as needed."]}),"\n",(0,i.jsxs)(n.p,{children:["In (3), approved proposals will enter the ",(0,i.jsx)(n.strong,{children:"Enactment Period"}),", after which proposed changes will be\nexecuted."]}),"\n",(0,i.jsx)(n.p,{children:"Note how the length of the lead-in, decision, confirmation, and enactment periods vary depending on\nthe track. Root origin track has more extended periods than the other tracks. Also, the number of\nreferenda within each track differs, with the Root origin track only accepting one proposal at a\ntime (see below)."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"opengov-track-capacity",src:o(61019).A+"",width:"1920",height:"800"})}),"\n",(0,i.jsx)(n.p,{children:"This directly affects the number of proposals that can be voted on and executed simultaneously.\nContinuing the comparison between Root and Small Tipper, Small Tipper will allow many proposals on\nits track to be executed simultaneously. In contrast, Root will allow only one proposal to be on its\ntrack. Once the track capacity is filled, additional proposals in the lead-in period will queue\nuntil place is available to enter the decision period."}),"\n",(0,i.jsx)(n.h3,{id:"origins-and-tracks",children:"Origins and Tracks"}),"\n",(0,i.jsxs)(n.p,{children:["An ",(0,i.jsx)(n.strong,{children:"Origin"})," is a specific level of privilege that will determine the ",(0,i.jsx)(n.strong,{children:"Track"})," of all referenda\nexecuted with that origin. The track is a pipeline in which the proposal lives and proceeds,\nindependent of other origins' tracks. The proposer of the referenda now selects an appropriate\nOrigin for their request based on the proposal\u2019s requirements."]}),"\n",(0,i.jsx)(n.p,{children:"Although the track structure is the same for all origins, track parameters are not. Such parameters\ninclude:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Maximum Deciding or Capacity"}),": the limit for the number of referenda that can be decided at\nonce (i.e., the number of tracks within each origin)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Decision deposit"}),": the amount of funds that must be placed on deposit to enter the Decision\nPeriod (note that more requirements must be met to enter the Decision Period)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Preparation Period"}),": the minimum amount of voting time needed before entering the Decision\nPeriod (given capacity and deposit are met)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Decision Period"}),": the time interval during which a proposal's outcome can be decided."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Confirmation Period"}),": the minimum amount of time the approval and support criteria must hold\nbefore the proposal is approved and moved to the enactment period. The confirmation period should\nstart before the end of the decision period."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Example Scenario of an Edge Case",type:"info",children:(0,i.jsx)(n.p,{children:"A referendum may enter the confirmation period just one block before the decision period ends. In\nthis scenario, the referendum will pass if it satisfies approval and support thresholds for the\nminimum confirmation period (track-dependent)."})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Voting Period"}),": The period in which voting is allowed on a referendum, which includes\npreparation, decision, and confirmation periods."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Minimum Enactment Period"}),": the minimum amount of waiting time before the proposed changes are\napplied"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Approval Curve"}),": the curve describing the minimum % of ",(0,i.jsx)(n.em,{children:"aye"})," votes as a function of time within\nthe Decision Period. The approval % is the portion of ",(0,i.jsx)(n.em,{children:"aye"})," votes (adjusted for conviction) over\nthe total votes (",(0,i.jsx)(n.em,{children:"aye"}),", ",(0,i.jsx)(n.em,{children:"nay"}),", and ",(0,i.jsx)(n.em,{children:"abstained"}),")."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Support Curve"}),": the curve describing the minimum % of all votes in support of a proposal as a\nfunction of time within the Decision Period. The support % is defined as the portion of all votes\n(",(0,i.jsx)(n.em,{children:"aye"})," and ",(0,i.jsx)(n.em,{children:"abstained"}),") without conviction over the total possible amount of votes in the system\n(i.e., the total active issuance)."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["For example, a runtime upgrade (requiring a ",(0,i.jsx)(n.code,{children:"set_code"})," call, if approved) does not have the same\nimplications for the ecosystem as the approval of a treasury tip (",(0,i.jsx)(n.code,{children:"reportAwesome"})," call) and\ntherefore, different Origins for these two actions are needed in which different deposits, support,\napproval, and a minimum ",(0,i.jsx)(n.a,{href:"#enactment",children:"enactment"})," periods will be predetermined on the pallet."]}),"\n",(0,i.jsxs)(n.p,{children:["For detailed information about origin and tracks, and parameter values in Kusama, see\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info",children:"this page"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"voluntary-locking-conviction-voting",children:"Voluntary Locking (Conviction Voting)"}),"\n",(0,i.jsx)(n.admonition,{title:"Conviction Voting Locks created during Gov 1",type:"info",children:(0,i.jsxs)(n.p,{children:["Conviction voting locks in Governance v1 will not be carried over to OpenGov. Voting with conviction\nin OpenGov will create a new lock (as this will use the ",(0,i.jsx)(n.code,{children:"convictionVoting"})," pallet), while any\nexisting lock under Governance v1 (using the deprecated ",(0,i.jsx)(n.code,{children:"democracy"})," pallet) will be left to expire.\nDelegations under Governance v1 will need to be re-issued under OpenGov."]})}),"\n",(0,i.jsx)(n.p,{children:"Polkadot utilizes an idea called voluntary locking that allows token holders to increase their\nvoting power by declaring how long they are willing to lock up their tokens; hence, the number of\nvotes for each token holder will be calculated by the following formula:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"votes = tokens * conviction_multiplier\n"})}),"\n",(0,i.jsx)(n.p,{children:"The conviction multiplier increases the vote multiplier by one every time the number of lock periods\ndouble."}),"\n",(0,i.jsx)(p,{}),"\n",(0,i.jsxs)(n.p,{children:['The maximum number of "doublings" of the\n',(0,i.jsx)(n.a,{href:"/docs/chain-state-values#conviction-voting-lock-period",children:"lock period"})," is set to 6 (and thus\n32 lock periods in total). For additional information regarding the timeline of governance events,\ncheck out the governance section on the\n",(0,i.jsx)(n.a,{href:"/docs/maintain-polkadot-parameters#governance",children:"Polkadot Parameters page"}),"."]}),"\n",(0,i.jsx)(n.p,{children:'Votes are always "counted" at the same time (at the end of the voting period), no matter how long\nthe tokens are locked.'}),"\n",(0,i.jsx)(n.p,{children:"See below an example that shows how voluntary locking works."}),"\n",(0,i.jsxs)(n.p,{children:["Peter: Votes ",(0,i.jsx)(n.code,{children:"No"})," with 10 DOT for a 32-week lock period => 10 x 6 = 60 Votes"]}),"\n",(0,i.jsxs)(n.p,{children:["Logan: Votes ",(0,i.jsx)(n.code,{children:"Yes"})," with 20 DOT for one week lock period => 20 x 1 = 20 Votes"]}),"\n",(0,i.jsxs)(n.p,{children:["Kevin: Votes ",(0,i.jsx)(n.code,{children:"Yes"})," with 15 DOT for a 2-week lock period => 15 x 2 = 30 Votes"]}),"\n",(0,i.jsx)(n.p,{children:"Even though both Logan and Kevin vote with more DOT than Peter, the lock period for both of them is\nless than Peter\u2019s, leading to their voting power counting as less."}),"\n",(0,i.jsx)(n.admonition,{title:"Staked tokens can be used in governance",type:"info",children:(0,i.jsxs)(n.p,{children:["While the tokens are locked, you can still use them for voting and ",(0,i.jsx)(n.a,{href:"/docs/learn-staking",children:"staking"}),".\nYou are only prohibited from transferring these tokens to another account. ",(0,i.jsxs)(n.strong,{children:["See the section about\n",(0,i.jsx)(n.a,{href:"#voting-on-a-referendum",children:"OpenGov locks"}),", and learn more about locks on the\n",(0,i.jsx)(n.a,{href:"/docs/learn-account-balances#locks",children:"Balances page"}),"."]})]})}),"\n",(0,i.jsx)(n.h3,{id:"approval-and-support",children:"Approval and Support"}),"\n",(0,i.jsx)(n.admonition,{title:"Adaptive Quorum Biasing is deprecated",type:"info",children:(0,i.jsxs)(n.p,{children:["In Polkadot OpenGov,\n",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#adaptive-quorum-biasing",children:"Adaptive quorum biasing"})," used in Governance\nV1 has been replaced with the ",(0,i.jsx)(n.strong,{children:"Approval and Support system"}),"."]})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"opengov-curves-pass",src:o(13531).A+"",width:"1920",height:"800"})}),"\n",(0,i.jsx)(n.p,{children:"The figure above provides a summary view of how the approval and support system works during the\nDecision Period."}),"\n",(0,i.jsxs)(n.p,{children:["Once the proposal exits the Lead-in Period and enters the Voting Period, to be approved, it must\nsatisfy the approval and support criteria for the ",(0,i.jsx)(n.strong,{children:"Confirmation Period"}),"."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Approval"})," is defined as the share of ",(0,i.jsx)(n.a,{href:"#voluntary-locking",children:"conviction"}),"-weighted ",(0,i.jsx)(n.em,{children:"aye"})," votes\nagainst the conviction-weighted total of ",(0,i.jsx)(n.em,{children:"aye"})," and ",(0,i.jsx)(n.em,{children:"nay"})," votes. The code implementation can be\nviewed\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk/blob/f2fbba3be1d7deaf7cfc731cea00552c212ddfcf/substrate/frame/conviction-voting/src/types.rs#L77",children:"here"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Support"})," is the total number of ",(0,i.jsx)(n.em,{children:"aye"})," and ",(0,i.jsx)(n.em,{children:"abstain"})," votes (ignoring any adjustment for\nconviction) compared to the total possible votes (",(0,i.jsx)(n.a,{href:"/docs/learn-DOT#token-issuance",children:"active issuance"}),")\nthat could be made in the system. In case of ",(0,i.jsx)(n.em,{children:"split"})," votes, only ",(0,i.jsx)(n.em,{children:"aye"})," and ",(0,i.jsx)(n.em,{children:"abstain"})," will count."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"For example, let us consider a hypothetical example where the total active issuance is 100 DOT."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:'An account A votes "Aye" with 10 DOT with 4x conviction'}),"\n",(0,i.jsx)(n.li,{children:'An account B votes "Nay" with 5 DOT with 2x conviction'}),"\n",(0,i.jsx)(n.li,{children:'An account C votes "Abstain" with 20 DOT. (no conviction can be applied to "Abstain" votes)'}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In this scenario, only 35 DOT from the total active issuance participated in voting on the\nreferendum. Now, let us calculate the Approval and Support values for that referendum."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Approval is calculated as (Aye') / (Aye' + Nay\u2019), where Aye' and Nay' are the votes after applying\nthe conviction multiplier. Hence, Approval = (10 x 4) / (10 x 4 + 5 x 2) = 40/50 which is 80%."}),"\n",(0,i.jsx)(n.li,{children:'Support is calculated as (Aye + Abstain) / (total active issuance), where "Aye" and "Abstain" are\nthe votes without the conviction multiplier. Hence, Support = (10 + 20) / 100 which is 30%.'}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Nay votes are not counted towards Support",type:"info",children:(0,i.jsxs)(n.p,{children:["Support is a measure of voters who turned out either in favor of the referenda or consciously\nabstained from it. Support does not include ",(0,i.jsx)(n.em,{children:"nay"})," votes. This avoids edge situations where ",(0,i.jsx)(n.em,{children:"nay"}),"\nvotes could push a referendum into a confirming state. For example, imagine current approval is high\n(near 100%, way above the approval curve), and current support is just below the support curve. A\n",(0,i.jsx)(n.em,{children:"nay"})," could bump support above the support curve but not reduce approval below the approval curve.\nTherefore, someone voting against a proposal would make it pass. Hence, a decrease in % of current\napproval through new votes does not directly translate into increasing support because Support needs\nto consider ",(0,i.jsx)(n.em,{children:"nay"})," votes."]})}),"\n",(0,i.jsx)(n.p,{children:"The figure above shows the following:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Even if the approval threshold is reached (i.e., % of current approval is greater than the\napproval curve), the proposal only enters the confirmation period once the support threshold is\nalso reached (i.e., % current support is greater than the underlying support curve)."}),"\n",(0,i.jsxs)(n.li,{children:["If the referendum meets the approval and support thresholds for the duration of the confirmation\nperiod, the proposal will be approved and will be scheduled for enactment. Each track has a\ndefault minimum Enactment Period, and the approved referendum needs to wait till the end of it to\nbe executed. Powerful Tracks like ",(0,i.jsx)(n.code,{children:"Root"})," enforce a larger Enactment Period to ensure the network\nhas ample time to prepare for any changes the proposal may bring. The referendum proposers can\nalso set the enactment period higher than its default value."]}),"\n",(0,i.jsxs)(n.li,{children:["A referendum may exit the confirmation period when the thresholds are no longer met due to new\n",(0,i.jsx)(n.em,{children:"Nay"})," votes or a change of existing ",(0,i.jsx)(n.em,{children:"Aye"})," or ",(0,i.jsx)(n.em,{children:"Abstain"})," votes to ",(0,i.jsx)(n.em,{children:"Nay"})," . Each time it exits, the\nconfirmation period clock is reset. For example, suppose the confirmation period is 20 minutes,\nand a referendum enters it just for 5 min before exiting. The next time it enters, it must be\nconfirmed for 20 minutes (not 15 minutes)."]}),"\n",(0,i.jsx)(n.li,{children:"It is possible that a referendum meets the approval and support thresholds almost at the end of\nthe decision period. In this case, even though the decision period elapses, the referendum can\npass if it stays confirming for the duration of the track-specific confirmation period. It is\nrejected immediately if it exits the confirmation period after the decision period elapses."}),"\n",(0,i.jsx)(n.li,{children:"The approval curve starts at 100% and gradually decreases to 50%, but never below 50%. Assuming\nall the active token supply has voted on a proposal, the conviction vote-weighted support should\nalways be above 50% to pass."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"opengov-curves-pass",src:o(26002).A+"",width:"1920",height:"800"})}),"\n",(0,i.jsx)(n.p,{children:"Note that support may not increase monotonically, as shown in the figure, as people might switch\nvotes."}),"\n",(0,i.jsxs)(n.p,{children:["Different Origins' tracks have different Confirmation Periods and requirements for approval and\nsupport. For additional details on the various origins and tracks, check out\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info",children:"this table"}),". With proposals that use\nless privileged origins, it is far more reasonable to drop the required support to a more realistic\namount earlier than those which use highly privileged classes such as ",(0,i.jsx)(n.code,{children:"Root"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"enactment",children:"Enactment"}),"\n",(0,i.jsx)(n.admonition,{title:"Enactment in Governance v1",type:"info",children:(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#enactment",children:"this page"})," for more information about enactment in\nGovernance v1."]})}),"\n",(0,i.jsxs)(n.p,{children:["In Polkadot OpenGov, the proposer suggests the enactment period, but there is also a minimum set for\neach Origin Track. For example, ",(0,i.jsx)(n.code,{children:"root"})," Origin approvals require an extended period because of the\nimportance of the changes they bring to the network."]}),"\n",(0,i.jsx)(n.h3,{id:"cancelling-killing--blacklisting",children:"Cancelling, Killing & Blacklisting"}),"\n",(0,i.jsx)(n.admonition,{title:"Cancelling Referenda in Governance v1",type:"info",children:(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#cancelling-proposals",children:"this page"})," for more information about\ncancelling referenda in Governance v1."]})}),"\n",(0,i.jsxs)(n.p,{children:["Polkadot OpenGov has two origins dedicated to rejecting ongoing referenda:\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#referendum-canceller",children:"Referendum Canceller"})," and\n",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov-origins#referendum-killer",children:"Referendum Killer"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Referendum Canceller aims to cancel an already ongoing referendum. When this origin cancels a\nreferendum, the Submission and Decision Deposit are refunded to their originators. An example of\nwhen a referendum might be considered to be canceled is if the originator has made some errors in\ncreating the preimage and did not necessarily do anything malicious. Cancellation has a lower\nDecision Period, and Approval and Support criteria are much easier to meet over time than most other\nOrigins. This is because the cancellation of a referendum usually comes with a sense of urgency."}),"\n",(0,i.jsx)(n.p,{children:"Referendum Killer aims to instantly kill an ongoing referendum, slashing submission and decision\ndeposit (the account(s) that posted these deposits will lose those funds). This origin can be\nengaged if, for example, a malicious actor submits a referendum on the Root Track to set the code of\nthe chains' runtime to stop block production."}),"\n",(0,i.jsx)(n.p,{children:"The Decision Deposit for the Referendum Killer track itself is high to prevent malicious actors from\nattempting to slash deposits of good referenda. A subsequent Referendum Killer can kill an existing\nReferendum Killer."}),"\n",(0,i.jsxs)(n.p,{children:["For more information about how to cancel or kill a referendum, see the\n",(0,i.jsx)(n.a,{href:"./learn-guides-polkadot-opengov#cancel-or-kill-a-referendum",children:"advanced how-to guides"}),"."]}),"\n",(0,i.jsx)(n.admonition,{title:"Blacklisting",type:"info",children:(0,i.jsxs)(n.p,{children:["Blacklisting referenda in Polkadot OpenGov is\n",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#blacklisting-proposals",children:"the same as in Governance v1"}),"."]})}),"\n",(0,i.jsx)(n.h2,{id:"voting-on-a-referendum",children:"Voting on a Referendum"}),"\n",(0,i.jsx)(n.p,{children:"If you are a voter, it means that you will vote with your tokens on each single referendum."}),"\n",(0,i.jsxs)(n.p,{children:["In Governance V1, voters could cast only an ",(0,i.jsx)(n.em,{children:"aye"})," or ",(0,i.jsx)(n.em,{children:"nay"})," vote. In Polkadot OpenGov, voters can\nadditionally cast a ",(0,i.jsx)(n.em,{children:"abstain"})," and ",(0,i.jsx)(n.em,{children:"split"})," votes.\n",(0,i.jsx)(n.a,{href:"/docs/learn-guides-polkadot-opengov#voting-on-referenda",children:"Vote splitting"})," allows voters to allocate\ndifferent votes for ",(0,i.jsx)(n.em,{children:"aye"}),", ",(0,i.jsx)(n.em,{children:"nay"}),", and ",(0,i.jsx)(n.em,{children:"abstain"}),". Voting with conviction is not possible when\nabstaining or splitting the votes."]}),"\n",(0,i.jsx)(n.admonition,{title:"Only the last vote counts",type:"info",children:(0,i.jsx)(n.p,{children:"Voting a second time replaces your original vote, e.g. voting with 10 DOT, then a second extrinsic\nto vote with 5 DOT, means that you are voting with 5 DOT, not 10 DOT."})}),"\n",(0,i.jsxs)(n.p,{children:["Note that to successfully cast votes you need to have the\n",(0,i.jsx)(n.a,{href:"/docs/learn-accounts#existential-deposit-and-reaping",children:"existential deposit"})," and some additional funds\nto pay for transaction fees."]}),"\n",(0,i.jsx)(n.p,{children:"In general, you can remove your vote:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"While a referendum is ongoing (your vote does not count)"}),"\n",(0,i.jsx)(n.li,{children:"After a referendum ended (your vote counts)"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"If you voted without conviction, there's no conviction lock in either case. If you voted with\nconviction, you only get a conviction lock if the referendum ended and you voted with the winning\nside."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"voting-locks-1",src:o(81108).A+"",width:"1626",height:"912"})}),"\n",(0,i.jsx)(n.admonition,{title:"Revoke your delegation on a track if you like to vote on your own",type:"info",children:(0,i.jsxs)(n.p,{children:["If you want to vote on a referendum on a specific track on your own, you will need to revoke any\nexisting ",(0,i.jsx)(n.a,{href:"#multirole-delegation",children:"delegation"})," on that track (i.e. undelegate). You can have a\nconviction lock on the track, but you cannot have an active delegation."]})}),"\n",(0,i.jsx)(n.h3,{id:"voting-without-conviction",children:"Voting Without Conviction"}),"\n",(0,i.jsx)(n.p,{children:"If you vote without conviction, the referendum is ongoing, and you remove the vote, you can unlock\nyour tokens immediately. If the referendum ended, you can remove your vote and unlock your tokens\nimmediately, regardless of whether you are on the winning or losing side of the referendum. The\ngovernance app or interface you used for participating in Polkadot OpenGov should show an option to\nunlock your tokens."}),"\n",(0,i.jsx)(n.h3,{id:"voting-with-conviction",children:"Voting with Conviction"}),"\n",(0,i.jsx)(n.p,{children:"If you voted with conviction, the referendum is ongoing, and you removed the vote, you can unlock\nyour tokens immediately. If the referendum ended and you are on the losing side, you can remove your\nvote and unlock the tokens immediately. However, if you are on the winning side of the referendum,\nyou will get a conviction lock."}),"\n",(0,i.jsx)(n.p,{children:"Conviction locks are calculated from the time the referendum ended but are applied when you remove\nthe vote."}),"\n",(0,i.jsx)(n.p,{children:"For example, if you voted with conviction 1x with 10 DOT, those 10 DOT will be locked for 7 days\nafter the referendum ends (assuming you are on the winning side). If you remove the vote 3 days\nafter the referendum ended, your tokens will be locked for 4 more days. If you remove it on the 8th\nday after the end of the referendum, the tokens can be unlocked right away (after you remove the\nvote). When you remove the vote, the lock expiration block is calculated and added to the chain\nstate."}),"\n",(0,i.jsxs)(n.p,{children:["If you voted on multiple referenda, and you are on the winning side of all those referenda, you will\nget multiple conviction voting locks for all those referenda. ",(0,i.jsx)(n.strong,{children:"Locks do not stack"}),"; the length and\nsize of the lock decides. This means that - assuming you used the same conviction on the same number\nof tokens - when the conviction lock on the latest referendum (see below, Ref 4) expires, you will\nbe able to unlock your tokens. In the meantime, the previous locks (1 to 3) might have expired, and\nyou can remove those locks (after removing the votes)."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"voting-locks-2",src:o(3567).A+"",width:"1626",height:"914"})}),"\n",(0,i.jsx)(n.p,{children:"When you delegate your votes, the locking mechanism differs slightly. Please check the next section\non Multirole Delegation for more information."}),"\n",(0,i.jsx)(n.h2,{id:"multirole-delegation",children:"Multirole Delegation"}),"\n",(0,i.jsxs)(n.p,{children:["Polkadot OpenGov builds on the\n",(0,i.jsx)(n.a,{href:"/docs/learn/learn-governance#delegations",children:"vote delegation feature from Governance v1"})," where a\nvoter can delegate their voting power to another voter. It does so by introducing a feature known as\n",(0,i.jsx)(n.strong,{children:"multirole delegation"}),", where voters can specify a different delegate for every class of\nreferendum in the system. Delegation can be done per track, and accounts can choose to select\ndifferent delegates (or no delegation) for each track."]}),"\n",(0,i.jsx)(n.p,{children:"For example, a voter could delegate one entity for managing a less potent referenda class, choose a\ndifferent delegate for another class with more powerful consequences and still retain full voting\npower over any remaining classes."}),"\n",(0,i.jsx)(n.p,{children:"Contrary to solo voting, with delegations, any conviction locks are applied as soon as you\nundelegate, regardless of whether your delegated votes were used for voting during that time. If\nyour delegated votes were used in any ongoing referenda, they would be removed from those referenda\nwhen you undelegate. Alternatively, after undelegating, you can delegate to another person or modify\nyour delegation. The only way to modify the delegation is to undelegate and delegate again. You do\nnot have to do this yourself; wallets and extensions should have implemented UI to modify delegation\nwithout you knowing this."}),"\n",(0,i.jsx)(n.p,{children:"If you delegate without conviction and you undelegate, you can unlock your tokens immediately.\nAlternatively, after undelegating, you can always delegate to another person or modify your\ndelegation."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"delegation-locks-1",src:o(46475).A+"",width:"1627",height:"913"})}),"\n",(0,i.jsx)(n.p,{children:"In the case you delegated with 1x conviction, you undelegate and re-delegate with 2x conviction; the\ntime you undelegate again, you will have created two conviction locks: one for the 1x and one for\nthe 2x conviction. If you re-delegate immediately with 1x conviction and undelegate, you will get a\nsecond 1x conviction lock, but the 2x conviction lock will be the one deciding when your token can\nbe unlocked."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"delegation-locks-2",src:o(32656).A+"",width:"1630",height:"912"})}),"\n",(0,i.jsxs)(n.admonition,{type:"info",children:[(0,i.jsx)(n.p,{children:"If the account delegated votes to different delegates using different convictions, then after\nundelegating those delegates, there will be different unlocking periods with lengths dependent on\nthe conviction multipliers."}),(0,i.jsx)(n.p,{children:(0,i.jsxs)(n.strong,{children:["Before delegating a specific track, you must remove any ",(0,i.jsx)(n.a,{href:"#voting-on-a-referendum",children:"vote"})," on that\ntrack."]})})]}),"\n",(0,i.jsx)(n.p,{children:"It is worth noting that a user delegating their voting power does not imply that the delegate will\nhave control over the funds of the delegating user's account. That delegate's account can vote with\na user's voting power but won't be able to transfer balances, nominate a different set of\nvalidators, or execute any call other than voting on the tracks defined by the user."}),"\n",(0,i.jsx)(n.p,{children:"The goal of delegations is to ensure the required support for proposals to be enacted is reached\nwhile keeping the overall design censorship-free. Also, voters might not have the technical\nknowledge to judge some referenda or might not have the time to read all referenda. Delegations\nallow voters to participate in OpenGov hands-free by delegating their voting power to trusted\nentities."}),"\n",(0,i.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/democracy/src",children:"Democracy Pallet"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://medium.com/polkadot-network/gov2-polkadots-next-generation-of-decentralised-governance-4d9ef657d11b",children:"Governance v2"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://matrix.to/#/#Polkadot-Direction:parity.io",children:"Polkadot Direction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://matrix.to/#/#Kusama-Direction:parity.io",children:"Kusama Direction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://polkadot.polkassembly.io/",children:"PolkAssembly"})}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.admonition,{title:"Polkadot-JS Guides",type:"info",children:(0,i.jsxs)(n.p,{children:["If you are an advanced user, see the\n",(0,i.jsx)(n.a,{href:"/docs/learn-guides-polkadot-opengov",children:"Polkadot-JS guides about OpenGov"}),"."]})})]})}function j(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},67141:(e,n,o)=>{o.d(n,{A:()=>r});var t=o(96540),i=o(74848);const r=function(e){var n,o=e.message,r=(0,t.useState)(!0),a=r[0],s=r[1];return(0,i.jsx)(i.Fragment,{children:a&&(0,i.jsxs)("div",{className:"message-box",children:[(0,i.jsx)("button",{className:"close-button",onClick:function(){s(!1)},children:"\u2716 "}),(0,i.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(n=o,n.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},46475:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/delegation-locks-1-c203e10abb20e87ec907c910c0221a8f.png"},32656:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/delegation-locks-2-db32ffe7daa316d3b96a6311cccdea85.png"},26002:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/opengov-curves-nopass-27f6968907aeb88e87069d29ca062568.png"},13531:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/opengov-curves-pass-73b6c7d1849e26082880cd7d629a633e.png"},39040:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/opengov-overview-a56ef29a3a173f9dc2b60a9008dcfc1b.png"},17160:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/opengov-timeline-26e5a1fae159676ab5052a4fd7416be5.png"},61019:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/opengov-track-capacity-a1e00e5bd7961ea13d38f79cf6fa4b9c.png"},81108:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/voting-locks-1-23e3e07cb23d8a6b30e50be110a5119b.png"},3567:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/voting-locks-2-d8eaa8ef9a38f7460042b27fadd0d166.png"},28453:(e,n,o)=>{o.d(n,{R:()=>a,x:()=>s});var t=o(96540);const i={},r=t.createContext(i);function a(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3482.dc74d0a4.js b/assets/js/3482.bc9a25f8.js similarity index 97% rename from assets/js/3482.dc74d0a4.js rename to assets/js/3482.bc9a25f8.js index 9650e5b34f6..a44707d5c8d 100644 --- a/assets/js/3482.dc74d0a4.js +++ b/assets/js/3482.bc9a25f8.js @@ -1,2 +1,2 @@ -/*! For license information please see 3482.dc74d0a4.js.LICENSE.txt */ -(self.webpackChunk=self.webpackChunk||[]).push([[3482],{39404:function(e,t,n){!function(e,t){"use strict";function r(e,t){if(!e)throw new Error(t||"Assertion failed")}function a(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function i(e,t,n){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var s;"object"==typeof e?e.exports=i:t.BN=i,i.BN=i,i.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:n(47790).Buffer}catch(M){}function o(e,t){var n=e.charCodeAt(t);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void r(!1,"Invalid character in "+e)}function c(e,t,n){var r=o(e,n);return n-1>=t&&(r|=o(e,n-1)<<4),r}function d(e,t,n,a){for(var i=0,s=0,o=Math.min(e.length,n),c=t;c=49?d-49+10:d>=17?d-17+10:d,r(d>=0&&s0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var a=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(a++,this.negative=1),a=0;a-=3)s=e[a]|e[a-1]<<8|e[a-2]<<16,this.words[i]|=s<>>26-o&67108863,(o+=24)>=26&&(o-=26,i++);else if("le"===n)for(a=0,i=0;a>>26-o&67108863,(o+=24)>=26&&(o-=26,i++);return this._strip()},i.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=2)a=c(e,t,r)<=18?(i-=18,s+=1,this.words[s]|=a>>>26):i+=8;else for(r=(e.length-t)%2==0?t+1:t;r=18?(i-=18,s+=1,this.words[s]|=a>>>26):i+=8;this._strip()},i.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,a=1;a<=67108863;a*=t)r++;r--,a=a/t|0;for(var i=e.length-n,s=i%r,o=Math.min(i,i-s)+n,c=0,u=n;u1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=l}catch(M){i.prototype.inspect=l}else i.prototype.inspect=l;function l(){return(this.red?""}var f=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],p=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var a=0,i=0,s=0;s>>24-a&16777215,(a+=2)>=26&&(a-=26,s--),n=0!==i||s!==this.length-1?f[6-c.length]+c+n:c+n}for(0!==i&&(n=i.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var d=p[e],u=h[e];n="";var l=this.clone();for(l.negative=0;!l.isZero();){var b=l.modrn(u).toString(e);n=(l=l.idivn(u)).isZero()?b+n:f[d-b.length]+b+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16,2)},s&&(i.prototype.toBuffer=function(e,t){return this.toArrayLike(s,e,t)}),i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)};function b(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var a=0|e.words[0],i=0|t.words[0],s=a*i,o=67108863&s,c=s/67108864|0;n.words[0]=o;for(var d=1;d>>26,l=67108863&c,f=Math.min(d,t.length-1),p=Math.max(0,d-e.length+1);p<=f;p++){var h=d-p|0;u+=(s=(a=0|e.words[h])*(i=0|t.words[p])+l)/67108864|0,l=67108863&s}n.words[d]=0|l,c=0|u}return 0!==c?n.words[d]=0|c:n.length--,n._strip()}i.prototype.toArrayLike=function(e,t,n){this._strip();var a=this.byteLength(),i=n||Math.max(1,a);r(a<=i,"byte array longer than desired length"),r(i>0,"Requested array length <= 0");var s=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,i);return this["_toArrayLike"+("le"===t?"LE":"BE")](s,a),s},i.prototype._toArrayLikeLE=function(e,t){for(var n=0,r=0,a=0,i=0;a>8&255),n>16&255),6===i?(n>24&255),r=0,i=0):(r=s>>>24,i+=2)}if(n=0&&(e[n--]=s>>8&255),n>=0&&(e[n--]=s>>16&255),6===i?(n>=0&&(e[n--]=s>>24&255),r=0,i=0):(r=s>>>24,i+=2)}if(n>=0)for(e[n--]=r;n>=0;)e[n--]=0},Math.clz32?i.prototype._countBits=function(e){return 32-Math.clz32(e)}:i.prototype._countBits=function(e){var t=e,n=0;return t>=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 8191&t||(n+=13,t>>>=13),127&t||(n+=7,t>>>=7),15&t||(n+=4,t>>>=4),3&t||(n+=2,t>>>=2),1&t||n++,n},i.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var a=0;a0&&(this.words[a]=~this.words[a]&67108863>>26-n),this._strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,a=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var a=0,i=0;i>>26;for(;0!==a&&i>>26;if(this.length=n.length,0!==a)this.words[this.length]=a,this.length++;else if(n!==this)for(;ie.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,a=this.cmp(e);if(0===a)return this.negative=0,this.length=1,this.words[0]=0,this;a>0?(n=this,r=e):(n=e,r=this);for(var i=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==i&&s>26,this.words[s]=67108863&t;if(0===i&&s>>13,p=0|s[1],h=8191&p,b=p>>>13,m=0|s[2],y=8191&m,x=m>>>13,g=0|s[3],v=8191&g,w=g>>>13,V=0|s[4],T=8191&V,S=V>>>13,k=0|s[5],_=8191&k,P=k>>>13,M=0|s[6],I=8191&M,N=M>>>13,E=0|s[7],O=8191&E,A=E>>>13,C=0|s[8],H=8191&C,R=C>>>13,B=0|s[9],L=8191&B,z=B>>>13,U=0|o[0],D=8191&U,q=U>>>13,j=0|o[1],F=8191&j,X=j>>>13,W=0|o[2],Z=8191&W,G=W>>>13,K=0|o[3],J=8191&K,Y=K>>>13,Q=0|o[4],$=8191&Q,ee=Q>>>13,te=0|o[5],ne=8191&te,re=te>>>13,ae=0|o[6],ie=8191&ae,se=ae>>>13,oe=0|o[7],ce=8191&oe,de=oe>>>13,ue=0|o[8],le=8191&ue,fe=ue>>>13,pe=0|o[9],he=8191&pe,be=pe>>>13;n.negative=e.negative^t.negative,n.length=19;var me=(d+(r=Math.imul(l,D))|0)+((8191&(a=(a=Math.imul(l,q))+Math.imul(f,D)|0))<<13)|0;d=((i=Math.imul(f,q))+(a>>>13)|0)+(me>>>26)|0,me&=67108863,r=Math.imul(h,D),a=(a=Math.imul(h,q))+Math.imul(b,D)|0,i=Math.imul(b,q);var ye=(d+(r=r+Math.imul(l,F)|0)|0)+((8191&(a=(a=a+Math.imul(l,X)|0)+Math.imul(f,F)|0))<<13)|0;d=((i=i+Math.imul(f,X)|0)+(a>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,D),a=(a=Math.imul(y,q))+Math.imul(x,D)|0,i=Math.imul(x,q),r=r+Math.imul(h,F)|0,a=(a=a+Math.imul(h,X)|0)+Math.imul(b,F)|0,i=i+Math.imul(b,X)|0;var xe=(d+(r=r+Math.imul(l,Z)|0)|0)+((8191&(a=(a=a+Math.imul(l,G)|0)+Math.imul(f,Z)|0))<<13)|0;d=((i=i+Math.imul(f,G)|0)+(a>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(v,D),a=(a=Math.imul(v,q))+Math.imul(w,D)|0,i=Math.imul(w,q),r=r+Math.imul(y,F)|0,a=(a=a+Math.imul(y,X)|0)+Math.imul(x,F)|0,i=i+Math.imul(x,X)|0,r=r+Math.imul(h,Z)|0,a=(a=a+Math.imul(h,G)|0)+Math.imul(b,Z)|0,i=i+Math.imul(b,G)|0;var ge=(d+(r=r+Math.imul(l,J)|0)|0)+((8191&(a=(a=a+Math.imul(l,Y)|0)+Math.imul(f,J)|0))<<13)|0;d=((i=i+Math.imul(f,Y)|0)+(a>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(T,D),a=(a=Math.imul(T,q))+Math.imul(S,D)|0,i=Math.imul(S,q),r=r+Math.imul(v,F)|0,a=(a=a+Math.imul(v,X)|0)+Math.imul(w,F)|0,i=i+Math.imul(w,X)|0,r=r+Math.imul(y,Z)|0,a=(a=a+Math.imul(y,G)|0)+Math.imul(x,Z)|0,i=i+Math.imul(x,G)|0,r=r+Math.imul(h,J)|0,a=(a=a+Math.imul(h,Y)|0)+Math.imul(b,J)|0,i=i+Math.imul(b,Y)|0;var ve=(d+(r=r+Math.imul(l,$)|0)|0)+((8191&(a=(a=a+Math.imul(l,ee)|0)+Math.imul(f,$)|0))<<13)|0;d=((i=i+Math.imul(f,ee)|0)+(a>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(_,D),a=(a=Math.imul(_,q))+Math.imul(P,D)|0,i=Math.imul(P,q),r=r+Math.imul(T,F)|0,a=(a=a+Math.imul(T,X)|0)+Math.imul(S,F)|0,i=i+Math.imul(S,X)|0,r=r+Math.imul(v,Z)|0,a=(a=a+Math.imul(v,G)|0)+Math.imul(w,Z)|0,i=i+Math.imul(w,G)|0,r=r+Math.imul(y,J)|0,a=(a=a+Math.imul(y,Y)|0)+Math.imul(x,J)|0,i=i+Math.imul(x,Y)|0,r=r+Math.imul(h,$)|0,a=(a=a+Math.imul(h,ee)|0)+Math.imul(b,$)|0,i=i+Math.imul(b,ee)|0;var we=(d+(r=r+Math.imul(l,ne)|0)|0)+((8191&(a=(a=a+Math.imul(l,re)|0)+Math.imul(f,ne)|0))<<13)|0;d=((i=i+Math.imul(f,re)|0)+(a>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(I,D),a=(a=Math.imul(I,q))+Math.imul(N,D)|0,i=Math.imul(N,q),r=r+Math.imul(_,F)|0,a=(a=a+Math.imul(_,X)|0)+Math.imul(P,F)|0,i=i+Math.imul(P,X)|0,r=r+Math.imul(T,Z)|0,a=(a=a+Math.imul(T,G)|0)+Math.imul(S,Z)|0,i=i+Math.imul(S,G)|0,r=r+Math.imul(v,J)|0,a=(a=a+Math.imul(v,Y)|0)+Math.imul(w,J)|0,i=i+Math.imul(w,Y)|0,r=r+Math.imul(y,$)|0,a=(a=a+Math.imul(y,ee)|0)+Math.imul(x,$)|0,i=i+Math.imul(x,ee)|0,r=r+Math.imul(h,ne)|0,a=(a=a+Math.imul(h,re)|0)+Math.imul(b,ne)|0,i=i+Math.imul(b,re)|0;var Ve=(d+(r=r+Math.imul(l,ie)|0)|0)+((8191&(a=(a=a+Math.imul(l,se)|0)+Math.imul(f,ie)|0))<<13)|0;d=((i=i+Math.imul(f,se)|0)+(a>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,r=Math.imul(O,D),a=(a=Math.imul(O,q))+Math.imul(A,D)|0,i=Math.imul(A,q),r=r+Math.imul(I,F)|0,a=(a=a+Math.imul(I,X)|0)+Math.imul(N,F)|0,i=i+Math.imul(N,X)|0,r=r+Math.imul(_,Z)|0,a=(a=a+Math.imul(_,G)|0)+Math.imul(P,Z)|0,i=i+Math.imul(P,G)|0,r=r+Math.imul(T,J)|0,a=(a=a+Math.imul(T,Y)|0)+Math.imul(S,J)|0,i=i+Math.imul(S,Y)|0,r=r+Math.imul(v,$)|0,a=(a=a+Math.imul(v,ee)|0)+Math.imul(w,$)|0,i=i+Math.imul(w,ee)|0,r=r+Math.imul(y,ne)|0,a=(a=a+Math.imul(y,re)|0)+Math.imul(x,ne)|0,i=i+Math.imul(x,re)|0,r=r+Math.imul(h,ie)|0,a=(a=a+Math.imul(h,se)|0)+Math.imul(b,ie)|0,i=i+Math.imul(b,se)|0;var Te=(d+(r=r+Math.imul(l,ce)|0)|0)+((8191&(a=(a=a+Math.imul(l,de)|0)+Math.imul(f,ce)|0))<<13)|0;d=((i=i+Math.imul(f,de)|0)+(a>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(H,D),a=(a=Math.imul(H,q))+Math.imul(R,D)|0,i=Math.imul(R,q),r=r+Math.imul(O,F)|0,a=(a=a+Math.imul(O,X)|0)+Math.imul(A,F)|0,i=i+Math.imul(A,X)|0,r=r+Math.imul(I,Z)|0,a=(a=a+Math.imul(I,G)|0)+Math.imul(N,Z)|0,i=i+Math.imul(N,G)|0,r=r+Math.imul(_,J)|0,a=(a=a+Math.imul(_,Y)|0)+Math.imul(P,J)|0,i=i+Math.imul(P,Y)|0,r=r+Math.imul(T,$)|0,a=(a=a+Math.imul(T,ee)|0)+Math.imul(S,$)|0,i=i+Math.imul(S,ee)|0,r=r+Math.imul(v,ne)|0,a=(a=a+Math.imul(v,re)|0)+Math.imul(w,ne)|0,i=i+Math.imul(w,re)|0,r=r+Math.imul(y,ie)|0,a=(a=a+Math.imul(y,se)|0)+Math.imul(x,ie)|0,i=i+Math.imul(x,se)|0,r=r+Math.imul(h,ce)|0,a=(a=a+Math.imul(h,de)|0)+Math.imul(b,ce)|0,i=i+Math.imul(b,de)|0;var Se=(d+(r=r+Math.imul(l,le)|0)|0)+((8191&(a=(a=a+Math.imul(l,fe)|0)+Math.imul(f,le)|0))<<13)|0;d=((i=i+Math.imul(f,fe)|0)+(a>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(L,D),a=(a=Math.imul(L,q))+Math.imul(z,D)|0,i=Math.imul(z,q),r=r+Math.imul(H,F)|0,a=(a=a+Math.imul(H,X)|0)+Math.imul(R,F)|0,i=i+Math.imul(R,X)|0,r=r+Math.imul(O,Z)|0,a=(a=a+Math.imul(O,G)|0)+Math.imul(A,Z)|0,i=i+Math.imul(A,G)|0,r=r+Math.imul(I,J)|0,a=(a=a+Math.imul(I,Y)|0)+Math.imul(N,J)|0,i=i+Math.imul(N,Y)|0,r=r+Math.imul(_,$)|0,a=(a=a+Math.imul(_,ee)|0)+Math.imul(P,$)|0,i=i+Math.imul(P,ee)|0,r=r+Math.imul(T,ne)|0,a=(a=a+Math.imul(T,re)|0)+Math.imul(S,ne)|0,i=i+Math.imul(S,re)|0,r=r+Math.imul(v,ie)|0,a=(a=a+Math.imul(v,se)|0)+Math.imul(w,ie)|0,i=i+Math.imul(w,se)|0,r=r+Math.imul(y,ce)|0,a=(a=a+Math.imul(y,de)|0)+Math.imul(x,ce)|0,i=i+Math.imul(x,de)|0,r=r+Math.imul(h,le)|0,a=(a=a+Math.imul(h,fe)|0)+Math.imul(b,le)|0,i=i+Math.imul(b,fe)|0;var ke=(d+(r=r+Math.imul(l,he)|0)|0)+((8191&(a=(a=a+Math.imul(l,be)|0)+Math.imul(f,he)|0))<<13)|0;d=((i=i+Math.imul(f,be)|0)+(a>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(L,F),a=(a=Math.imul(L,X))+Math.imul(z,F)|0,i=Math.imul(z,X),r=r+Math.imul(H,Z)|0,a=(a=a+Math.imul(H,G)|0)+Math.imul(R,Z)|0,i=i+Math.imul(R,G)|0,r=r+Math.imul(O,J)|0,a=(a=a+Math.imul(O,Y)|0)+Math.imul(A,J)|0,i=i+Math.imul(A,Y)|0,r=r+Math.imul(I,$)|0,a=(a=a+Math.imul(I,ee)|0)+Math.imul(N,$)|0,i=i+Math.imul(N,ee)|0,r=r+Math.imul(_,ne)|0,a=(a=a+Math.imul(_,re)|0)+Math.imul(P,ne)|0,i=i+Math.imul(P,re)|0,r=r+Math.imul(T,ie)|0,a=(a=a+Math.imul(T,se)|0)+Math.imul(S,ie)|0,i=i+Math.imul(S,se)|0,r=r+Math.imul(v,ce)|0,a=(a=a+Math.imul(v,de)|0)+Math.imul(w,ce)|0,i=i+Math.imul(w,de)|0,r=r+Math.imul(y,le)|0,a=(a=a+Math.imul(y,fe)|0)+Math.imul(x,le)|0,i=i+Math.imul(x,fe)|0;var _e=(d+(r=r+Math.imul(h,he)|0)|0)+((8191&(a=(a=a+Math.imul(h,be)|0)+Math.imul(b,he)|0))<<13)|0;d=((i=i+Math.imul(b,be)|0)+(a>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(L,Z),a=(a=Math.imul(L,G))+Math.imul(z,Z)|0,i=Math.imul(z,G),r=r+Math.imul(H,J)|0,a=(a=a+Math.imul(H,Y)|0)+Math.imul(R,J)|0,i=i+Math.imul(R,Y)|0,r=r+Math.imul(O,$)|0,a=(a=a+Math.imul(O,ee)|0)+Math.imul(A,$)|0,i=i+Math.imul(A,ee)|0,r=r+Math.imul(I,ne)|0,a=(a=a+Math.imul(I,re)|0)+Math.imul(N,ne)|0,i=i+Math.imul(N,re)|0,r=r+Math.imul(_,ie)|0,a=(a=a+Math.imul(_,se)|0)+Math.imul(P,ie)|0,i=i+Math.imul(P,se)|0,r=r+Math.imul(T,ce)|0,a=(a=a+Math.imul(T,de)|0)+Math.imul(S,ce)|0,i=i+Math.imul(S,de)|0,r=r+Math.imul(v,le)|0,a=(a=a+Math.imul(v,fe)|0)+Math.imul(w,le)|0,i=i+Math.imul(w,fe)|0;var Pe=(d+(r=r+Math.imul(y,he)|0)|0)+((8191&(a=(a=a+Math.imul(y,be)|0)+Math.imul(x,he)|0))<<13)|0;d=((i=i+Math.imul(x,be)|0)+(a>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,r=Math.imul(L,J),a=(a=Math.imul(L,Y))+Math.imul(z,J)|0,i=Math.imul(z,Y),r=r+Math.imul(H,$)|0,a=(a=a+Math.imul(H,ee)|0)+Math.imul(R,$)|0,i=i+Math.imul(R,ee)|0,r=r+Math.imul(O,ne)|0,a=(a=a+Math.imul(O,re)|0)+Math.imul(A,ne)|0,i=i+Math.imul(A,re)|0,r=r+Math.imul(I,ie)|0,a=(a=a+Math.imul(I,se)|0)+Math.imul(N,ie)|0,i=i+Math.imul(N,se)|0,r=r+Math.imul(_,ce)|0,a=(a=a+Math.imul(_,de)|0)+Math.imul(P,ce)|0,i=i+Math.imul(P,de)|0,r=r+Math.imul(T,le)|0,a=(a=a+Math.imul(T,fe)|0)+Math.imul(S,le)|0,i=i+Math.imul(S,fe)|0;var Me=(d+(r=r+Math.imul(v,he)|0)|0)+((8191&(a=(a=a+Math.imul(v,be)|0)+Math.imul(w,he)|0))<<13)|0;d=((i=i+Math.imul(w,be)|0)+(a>>>13)|0)+(Me>>>26)|0,Me&=67108863,r=Math.imul(L,$),a=(a=Math.imul(L,ee))+Math.imul(z,$)|0,i=Math.imul(z,ee),r=r+Math.imul(H,ne)|0,a=(a=a+Math.imul(H,re)|0)+Math.imul(R,ne)|0,i=i+Math.imul(R,re)|0,r=r+Math.imul(O,ie)|0,a=(a=a+Math.imul(O,se)|0)+Math.imul(A,ie)|0,i=i+Math.imul(A,se)|0,r=r+Math.imul(I,ce)|0,a=(a=a+Math.imul(I,de)|0)+Math.imul(N,ce)|0,i=i+Math.imul(N,de)|0,r=r+Math.imul(_,le)|0,a=(a=a+Math.imul(_,fe)|0)+Math.imul(P,le)|0,i=i+Math.imul(P,fe)|0;var Ie=(d+(r=r+Math.imul(T,he)|0)|0)+((8191&(a=(a=a+Math.imul(T,be)|0)+Math.imul(S,he)|0))<<13)|0;d=((i=i+Math.imul(S,be)|0)+(a>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(L,ne),a=(a=Math.imul(L,re))+Math.imul(z,ne)|0,i=Math.imul(z,re),r=r+Math.imul(H,ie)|0,a=(a=a+Math.imul(H,se)|0)+Math.imul(R,ie)|0,i=i+Math.imul(R,se)|0,r=r+Math.imul(O,ce)|0,a=(a=a+Math.imul(O,de)|0)+Math.imul(A,ce)|0,i=i+Math.imul(A,de)|0,r=r+Math.imul(I,le)|0,a=(a=a+Math.imul(I,fe)|0)+Math.imul(N,le)|0,i=i+Math.imul(N,fe)|0;var Ne=(d+(r=r+Math.imul(_,he)|0)|0)+((8191&(a=(a=a+Math.imul(_,be)|0)+Math.imul(P,he)|0))<<13)|0;d=((i=i+Math.imul(P,be)|0)+(a>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,r=Math.imul(L,ie),a=(a=Math.imul(L,se))+Math.imul(z,ie)|0,i=Math.imul(z,se),r=r+Math.imul(H,ce)|0,a=(a=a+Math.imul(H,de)|0)+Math.imul(R,ce)|0,i=i+Math.imul(R,de)|0,r=r+Math.imul(O,le)|0,a=(a=a+Math.imul(O,fe)|0)+Math.imul(A,le)|0,i=i+Math.imul(A,fe)|0;var Ee=(d+(r=r+Math.imul(I,he)|0)|0)+((8191&(a=(a=a+Math.imul(I,be)|0)+Math.imul(N,he)|0))<<13)|0;d=((i=i+Math.imul(N,be)|0)+(a>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(L,ce),a=(a=Math.imul(L,de))+Math.imul(z,ce)|0,i=Math.imul(z,de),r=r+Math.imul(H,le)|0,a=(a=a+Math.imul(H,fe)|0)+Math.imul(R,le)|0,i=i+Math.imul(R,fe)|0;var Oe=(d+(r=r+Math.imul(O,he)|0)|0)+((8191&(a=(a=a+Math.imul(O,be)|0)+Math.imul(A,he)|0))<<13)|0;d=((i=i+Math.imul(A,be)|0)+(a>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,r=Math.imul(L,le),a=(a=Math.imul(L,fe))+Math.imul(z,le)|0,i=Math.imul(z,fe);var Ae=(d+(r=r+Math.imul(H,he)|0)|0)+((8191&(a=(a=a+Math.imul(H,be)|0)+Math.imul(R,he)|0))<<13)|0;d=((i=i+Math.imul(R,be)|0)+(a>>>13)|0)+(Ae>>>26)|0,Ae&=67108863;var Ce=(d+(r=Math.imul(L,he))|0)+((8191&(a=(a=Math.imul(L,be))+Math.imul(z,he)|0))<<13)|0;return d=((i=Math.imul(z,be))+(a>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,c[0]=me,c[1]=ye,c[2]=xe,c[3]=ge,c[4]=ve,c[5]=we,c[6]=Ve,c[7]=Te,c[8]=Se,c[9]=ke,c[10]=_e,c[11]=Pe,c[12]=Me,c[13]=Ie,c[14]=Ne,c[15]=Ee,c[16]=Oe,c[17]=Ae,c[18]=Ce,0!==d&&(c[19]=d,n.length++),n};function y(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,a=0,i=0;i>>26)|0)>>>26,s&=67108863}n.words[i]=o,r=s,s=a}return 0!==r?n.words[i]=r:n.length--,n._strip()}function x(e,t,n){return y(e,t,n)}function g(e,t){this.x=e,this.y=t}Math.imul||(m=b),i.prototype.mulTo=function(e,t){var n=this.length+e.length;return 10===this.length&&10===e.length?m(this,e,t):n<63?b(this,e,t):n<1024?y(this,e,t):x(this,e,t)},g.prototype.makeRBT=function(e){for(var t=new Array(e),n=i.prototype._countBits(e)-1,r=0;r>=1;return r},g.prototype.permute=function(e,t,n,r,a,i){for(var s=0;s>>=1)a++;return 1<>>=13,n[2*s+1]=8191&i,i>>>=13;for(s=2*t;s>=26,n+=i/67108864|0,n+=s>>>26,this.words[a]=67108863&s}return 0!==n&&(this.words[a]=n,this.length++),t?this.ineg():this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>a&1}return t}(e);if(0===t.length)return new i(1);for(var n=this,r=0;r=0);var t,n=e%26,a=(e-n)/26,i=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(t=0;t>>26-n}s&&(this.words[t]=s,this.length++)}if(0!==a){for(t=this.length-1;t>=0;t--)this.words[t+a]=this.words[t];for(t=0;t=0),a=t?(t-t%26)/26:0;var i=e%26,s=Math.min((e-i)/26,this.length),o=67108863^67108863>>>i<s)for(this.length-=s,d=0;d=0&&(0!==u||d>=a);d--){var l=0|this.words[d];this.words[d]=u<<26-i|l>>>i,u=l&o}return c&&0!==u&&(c.words[c.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,a=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var a=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(c/67108864|0),this.words[a+n]=67108863&i}for(;a>26,this.words[a+n]=67108863&i;if(0===o)return this._strip();for(r(-1===o),o=0,a=0;a>26,this.words[a]=67108863&i;return this.negative=1,this._strip()},i.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),a=e,s=0|a.words[a.length-1];0!==(n=26-this._countBits(s))&&(a=a.ushln(n),r.iushln(n),s=0|a.words[a.length-1]);var o,c=r.length-a.length;if("mod"!==t){(o=new i(null)).length=c+1,o.words=new Array(o.length);for(var d=0;d=0;l--){var f=67108864*(0|r.words[a.length+l])+(0|r.words[a.length+l-1]);for(f=Math.min(f/s|0,67108863),r._ishlnsubmul(a,f,l);0!==r.negative;)f--,r.negative=0,r._ishlnsubmul(a,1,l),r.isZero()||(r.negative^=1);o&&(o.words[l]=f)}return o&&o._strip(),r._strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:o||null,mod:r}},i.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(o=this.neg().divmod(e,t),"mod"!==t&&(a=o.div.neg()),"div"!==t&&(s=o.mod.neg(),n&&0!==s.negative&&s.iadd(e)),{div:a,mod:s}):0===this.negative&&0!==e.negative?(o=this.divmod(e.neg(),t),"mod"!==t&&(a=o.div.neg()),{div:a,mod:o.mod}):this.negative&e.negative?(o=this.neg().divmod(e.neg(),t),"div"!==t&&(s=o.mod.neg(),n&&0!==s.negative&&s.isub(e)),{div:o.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new i(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modrn(e.words[0]))}:this._wordDiv(e,t);var a,s,o},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),a=e.andln(1),i=n.cmp(r);return i<0||1===a&&0===i?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modrn=function(e){var t=e<0;t&&(e=-e),r(e<=67108863);for(var n=(1<<26)%e,a=0,i=this.length-1;i>=0;i--)a=(n*a+(0|this.words[i]))%e;return t?-a:a},i.prototype.modn=function(e){return this.modrn(e)},i.prototype.idivn=function(e){var t=e<0;t&&(e=-e),r(e<=67108863);for(var n=0,a=this.length-1;a>=0;a--){var i=(0|this.words[a])+67108864*n;this.words[a]=i/e|0,n=i%e}return this._strip(),t?this.ineg():this},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a=new i(1),s=new i(0),o=new i(0),c=new i(1),d=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++d;for(var u=n.clone(),l=t.clone();!t.isZero();){for(var f=0,p=1;!(t.words[0]&p)&&f<26;++f,p<<=1);if(f>0)for(t.iushrn(f);f-- >0;)(a.isOdd()||s.isOdd())&&(a.iadd(u),s.isub(l)),a.iushrn(1),s.iushrn(1);for(var h=0,b=1;!(n.words[0]&b)&&h<26;++h,b<<=1);if(h>0)for(n.iushrn(h);h-- >0;)(o.isOdd()||c.isOdd())&&(o.iadd(u),c.isub(l)),o.iushrn(1),c.iushrn(1);t.cmp(n)>=0?(t.isub(n),a.isub(o),s.isub(c)):(n.isub(t),o.isub(a),c.isub(s))}return{a:o,b:c,gcd:n.iushln(d)}},i.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a,s=new i(1),o=new i(0),c=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var d=0,u=1;!(t.words[0]&u)&&d<26;++d,u<<=1);if(d>0)for(t.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(c),s.iushrn(1);for(var l=0,f=1;!(n.words[0]&f)&&l<26;++l,f<<=1);if(l>0)for(n.iushrn(l);l-- >0;)o.isOdd()&&o.iadd(c),o.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(o)):(n.isub(t),o.isub(s))}return(a=0===t.cmpn(1)?s:o).cmpn(0)<0&&a.iadd(e),a},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var a=t.cmp(n);if(a<0){var i=t;t=n,n=i}else if(0===a||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,a=1<>>26,o&=67108863,this.words[s]=o}return 0!==i&&(this.words[s]=i,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var a=0|this.words[0];t=a===e?0:ae.length)return 1;if(this.length=0;n--){var r=0|this.words[n],a=0|e.words[n];if(r!==a){ra&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new _(e)},i.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function w(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function V(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function T(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function S(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function k(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(e){if("string"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function P(e){_.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},w.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},w.prototype.split=function(e,t){e.iushrn(this.n,0,t)},w.prototype.imulK=function(e){return e.imul(this.k)},a(V,w),V.prototype.split=function(e,t){for(var n=4194303,r=Math.min(e.length,9),a=0;a>>22,i=s}i>>>=22,e.words[a-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},V.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=a,t=r}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new V;else if("p224"===e)t=new T;else if("p192"===e)t=new S;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new k}return v[e]=t,t},_.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},_.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},_.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(u(e,e.umod(this.m)._forceRed(this)),e)},_.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},_.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},_.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},_.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},_.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},_.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},_.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},_.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},_.prototype.isqr=function(e){return this.imul(e,e.clone())},_.prototype.sqr=function(e){return this.mul(e,e)},_.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new i(1)).iushrn(2);return this.pow(e,n)}for(var a=this.m.subn(1),s=0;!a.isZero()&&0===a.andln(1);)s++,a.iushrn(1);r(!a.isZero());var o=new i(1).toRed(this),c=o.redNeg(),d=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);0!==this.pow(u,d).cmp(c);)u.redIAdd(c);for(var l=this.pow(u,a),f=this.pow(e,a.addn(1).iushrn(1)),p=this.pow(e,a),h=s;0!==p.cmp(o);){for(var b=p,m=0;0!==b.cmp(o);m++)b=b.redSqr();r(m=0;r--){for(var d=t.words[r],u=c-1;u>=0;u--){var l=d>>u&1;a!==n[0]&&(a=this.sqr(a)),0!==l||0!==s?(s<<=1,s|=l,(4===++o||0===r&&0===u)&&(a=this.mul(a,n[s]),o=0,s=0)):o=0}c=26}return a},_.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},_.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new P(e)},a(P,_),P.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},P.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},P.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=n.isub(r).iushrn(this.shift),i=a;return a.cmp(this.m)>=0?i=a.isub(this.m):a.cmpn(0)<0&&(i=a.iadd(this.m)),i._forceRed(this)},P.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=n.isub(r).iushrn(this.shift),s=a;return a.cmp(this.m)>=0?s=a.isub(this.m):a.cmpn(0)<0&&(s=a.iadd(this.m)),s._forceRed(this)},P.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=n.nmd(e),this)},30228:e=>{"use strict";var t=Object.prototype.hasOwnProperty,n="~";function r(){}function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,r,i,s){if("function"!=typeof r)throw new TypeError("The listener must be a function");var o=new a(r,i||e,s),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function s(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function o(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,r,a=[];if(0===this._eventsCount)return a;for(r in e=this._events)t.call(e,r)&&a.push(n?r.slice(1):r);return Object.getOwnPropertySymbols?a.concat(Object.getOwnPropertySymbols(e)):a},o.prototype.listeners=function(e){var t=n?n+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var a=0,i=r.length,s=new Array(i);a{t.$o=171008,t.qO=339468,t.ee="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"},10467:(e,t,n)=>{"use strict";function r(e,t,n,r,a,i,s){try{var o=e[i](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,a)}function a(e){return function(){var t=this,n=arguments;return new Promise((function(a,i){var s=e.apply(t,n);function o(e){r(s,a,i,o,c,"next",e)}function c(e){r(s,a,i,o,c,"throw",e)}o(void 0)}))}}n.d(t,{A:()=>a})},90675:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(82284);function a(){a=function(){return t};var e,t={},n=Object.prototype,i=n.hasOwnProperty,s=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},c=o.iterator||"@@iterator",d=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function f(e,t,n,r){var a=t&&t.prototype instanceof g?t:g,i=Object.create(a.prototype),o=new O(r||[]);return s(i,"_invoke",{value:M(e,n,o)}),i}function p(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=f;var h="suspendedStart",b="suspendedYield",m="executing",y="completed",x={};function g(){}function v(){}function w(){}var V={};l(V,c,(function(){return this}));var T=Object.getPrototypeOf,S=T&&T(T(A([])));S&&S!==n&&i.call(S,c)&&(V=S);var k=w.prototype=g.prototype=Object.create(V);function _(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function P(e,t){function n(a,s,o,c){var d=p(e[a],e,s);if("throw"!==d.type){var u=d.arg,l=u.value;return l&&"object"==(0,r.A)(l)&&i.call(l,"__await")?t.resolve(l.__await).then((function(e){n("next",e,o,c)}),(function(e){n("throw",e,o,c)})):t.resolve(l).then((function(e){u.value=e,o(u)}),(function(e){return n("throw",e,o,c)}))}c(d.arg)}var a;s(this,"_invoke",{value:function(e,r){function i(){return new t((function(t,a){n(e,r,t,a)}))}return a=a?a.then(i,i):i()}})}function M(t,n,r){var a=h;return function(i,s){if(a===m)throw Error("Generator is already running");if(a===y){if("throw"===i)throw s;return{value:e,done:!0}}for(r.method=i,r.arg=s;;){var o=r.delegate;if(o){var c=I(o,r);if(c){if(c===x)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===h)throw a=y,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=m;var d=p(t,n,r);if("normal"===d.type){if(a=r.done?y:b,d.arg===x)continue;return{value:d.arg,done:r.done}}"throw"===d.type&&(a=y,r.method="throw",r.arg=d.arg)}}}function I(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,I(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),x;var i=p(a,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,x;var s=i.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,x):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,x)}function N(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(N,this),this.reset(!0)}function A(t){if(t||""===t){var n=t[c];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,s=function n(){for(;++a=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var c=i.call(s,"catchLoc"),d=i.call(s,"finallyLoc");if(c&&d){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),x}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;E(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:A(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),x}},t}},28453:(e,t,n)=>{"use strict";n.d(t,{R:()=>s,x:()=>o});var r=n(96540);const a={},i=r.createContext(a);function s(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),r.createElement(i.Provider,{value:t},e.children)}},2026:(e,t,n)=>{"use strict";n.d(t,{G:()=>hV});var r={};n.r(r),n.d(r,{aK:()=>Lc,e8:()=>Vc,DO:()=>wc,dJ:()=>zc,OG:()=>Uc,My:()=>Sc,Ph:()=>Nc,lX:()=>Ec,Id:()=>Hc,fg:()=>jc,qj:()=>Cc,aT:()=>Ic,r4:()=>Bc,aY:()=>vc,x:()=>Wc,lq:()=>Oc,z:()=>Ac,zW:()=>kc,Q5:()=>Xc});var a={};n.r(a),n.d(a,{BitVec:()=>Dd,Bool:()=>Uo,Bytes:()=>sr,Data:()=>cu,F32:()=>jd,F64:()=>Fd,GeneralExtrinsic:()=>ws,GenericAccountId:()=>po,GenericAccountId32:()=>po,GenericAccountId33:()=>ho,GenericAccountIndex:()=>vo,GenericAddress:()=>zo,GenericBlock:()=>wo,GenericCall:()=>ko,GenericChainProperties:()=>Mo,GenericConsensusEngineId:()=>Co,GenericEthereumAccountId:()=>Rd,GenericEthereumLookupSource:()=>zd,GenericEvent:()=>zi,GenericEventData:()=>Li,GenericExtrinsic:()=>Qi,GenericExtrinsicEra:()=>is,GenericExtrinsicPayload:()=>cs,GenericExtrinsicPayloadUnknown:()=>ds,GenericExtrinsicPayloadV4:()=>hs,GenericExtrinsicPayloadV5:()=>gs,GenericExtrinsicSignatureV4:()=>ys,GenericExtrinsicSignatureV5:()=>vs,GenericExtrinsicUnknown:()=>us,GenericExtrinsicV4:()=>ps,GenericExtrinsicV5:()=>xs,GenericImmortalEra:()=>rs,GenericLookupSource:()=>Bo,GenericMortalEra:()=>as,GenericMultiAddress:()=>zo,GenericSignerPayload:()=>fs,GenericVote:()=>Fo,I128:()=>Kd,I16:()=>Wd,I256:()=>Jd,I32:()=>Zd,I64:()=>Gd,I8:()=>Xd,ISize:()=>Yd,Null:()=>Jt,OptionBool:()=>Qd,StorageKey:()=>pu,Text:()=>eu,Type:()=>tu,U128:()=>au,U16:()=>ru,U256:()=>iu,U32:()=>bo,U64:()=>$i,U8:()=>nu,USize:()=>su,bool:()=>Uo,f32:()=>jd,f64:()=>Fd,i128:()=>Kd,i16:()=>Wd,i256:()=>Jd,i32:()=>Zd,i64:()=>Gd,i8:()=>Xd,isize:()=>Yd,u128:()=>au,u16:()=>ru,u256:()=>iu,u32:()=>bo,u64:()=>$i,u8:()=>nu,usize:()=>su});var i={};n.r(i),n.d(i,{assetConversion:()=>Pu,assets:()=>Mu,attestations:()=>El,aura:()=>Iu,author:()=>pf,authorship:()=>Nu,babe:()=>Ou,balances:()=>Au,beefy:()=>Ru,benchmark:()=>Bu,blockbuilder:()=>qu,bridges:()=>Ol,chain:()=>hf,childstate:()=>bf,claims:()=>Al,collective:()=>ju,consensus:()=>Fu,contracts:()=>Wu,contractsAbi:()=>sf,crowdloan:()=>Cl,cumulus:()=>Hl,democracy:()=>Zu,dev:()=>Gu,discovery:()=>Ku,dryRunApi:()=>$l,elections:()=>Ju,engine:()=>Yu,eth:()=>cf,evm:()=>Qu,extrinsics:()=>$u,finality:()=>Bl,fungibles:()=>el,genericAsset:()=>tl,genesisBuilder:()=>nl,gilt:()=>rl,grandpa:()=>il,identity:()=>sl,imOnline:()=>ol,lottery:()=>cl,metadata:()=>yu,mixnet:()=>dl,mmr:()=>ul,nfts:()=>ll,nimbus:()=>df,nompools:()=>fl,offchain:()=>mf,offences:()=>pl,ormlOracle:()=>uf,ormlTokens:()=>lf,parachains:()=>Jl,payment:()=>Vf,poll:()=>Yl,pow:()=>hl,proxy:()=>bl,purchase:()=>Ql,recovery:()=>ml,rpc:()=>ff,runtime:()=>ku,scaleInfo:()=>_u,scheduler:()=>yl,session:()=>xl,society:()=>gl,staking:()=>vl,state:()=>Tf,statement:()=>wl,support:()=>Vl,syncstate:()=>Tl,system:()=>Sl,treasury:()=>kl,txpayment:()=>_l,txqueue:()=>Pl,uniques:()=>Ml,utility:()=>Il,vesting:()=>Nl,xcm:()=>nf,xcmPaymentApi:()=>rf,xcmRuntimeApi:()=>af});var s={};n.r(s),n.d(s,{kusama:()=>yh,polkadot:()=>xh,westend:()=>gh});var o={};n.r(o),n.d(o,{_flags:()=>vb,_identity:()=>Mb,accountId:()=>gb,flags:()=>wb,hasIdentity:()=>Nb,hasIdentityMulti:()=>Eb,idAndIndex:()=>Vb,idToIndex:()=>Ob,identity:()=>Ib,indexToId:()=>zb,indexes:()=>Lb,info:()=>Db});var c={};n.r(c),n.d(c,{hasProposals:()=>$b,members:()=>Qb,prime:()=>am,proposal:()=>em,proposalCount:()=>tm,proposalHashes:()=>nm,proposals:()=>rm});var d={};n.r(d),n.d(d,{_getIds:()=>sm,all:()=>om,expand:()=>dm,get:()=>cm,getExpanded:()=>um,listNodes:()=>fm});var u={};n.r(u),n.d(u,{account:()=>Nm,all:()=>Tm,votingBalance:()=>Om,votingBalances:()=>Em});var l={};n.r(l),n.d(l,{bounties:()=>Hm});var f={};n.r(f),n.d(f,{_getHeaderRange:()=>Km,bestNumber:()=>Um,bestNumberFinalized:()=>Dm,bestNumberLag:()=>qm,getBlock:()=>Fm,getBlockByNumber:()=>Xm,getHeader:()=>Zm,subscribeFinalizedBlocks:()=>Gm,subscribeFinalizedHeads:()=>Jm,subscribeNewBlocks:()=>Ym,subscribeNewHeads:()=>Qm});var p={};n.r(p),n.d(p,{fees:()=>$m});var h={};n.r(h),n.d(h,{hasProposals:()=>sy,members:()=>iy,prime:()=>ly,proposal:()=>oy,proposalCount:()=>cy,proposalHashes:()=>dy,proposals:()=>uy,votes:()=>ry,votesOf:()=>ay});var b={};n.r(b),n.d(b,{childKey:()=>fy,contributions:()=>gy,ownContributions:()=>Vy});var m={};n.r(m),n.d(m,{_referendumInfo:()=>Qy,_referendumVotes:()=>Jy,_referendumsVotes:()=>Yy,dispatchQueue:()=>Oy,locks:()=>Hy,nextExternal:()=>Ry,preimage:()=>Dy,preimages:()=>Uy,proposals:()=>jy,referendumIds:()=>Fy,referendums:()=>Xy,referendumsActive:()=>Wy,referendumsFinished:()=>Zy,referendumsInfo:()=>$y,sqrtElectorate:()=>ex});var y={};n.r(y),n.d(y,{info:()=>ax});var x={};n.r(x),n.d(x,{receivedHeartbeats:()=>sx});var g={};n.r(g),n.d(g,{hasProposals:()=>cx,members:()=>ox,prime:()=>px,proposal:()=>dx,proposalCount:()=>ux,proposalHashes:()=>lx,proposals:()=>fx});var v={};n.r(v),n.d(v,{info:()=>yx,overview:()=>gx});var w={};n.r(w),n.d(w,{eraLength:()=>kx,eraProgress:()=>_x,indexes:()=>wx,info:()=>Vx,progress:()=>Sx,sessionProgress:()=>Px});var V={};n.r(V),n.d(V,{_members:()=>Ex,candidates:()=>Mx,info:()=>Ix,member:()=>Nx,members:()=>Ox});var T={};n.r(T),n.d(T,{_eraExposure:()=>tg,_eraPrefs:()=>lg,_eraSlashes:()=>gg,_erasExposure:()=>rg,_erasPoints:()=>cg,_erasPrefs:()=>pg,_erasRewards:()=>mg,_erasSlashes:()=>wg,_ownExposures:()=>_g,_ownSlashes:()=>Ig,_stakerExposures:()=>Bg,_stakerPoints:()=>Ug,_stakerPrefs:()=>qg,_stakerRewards:()=>Zg,_stakerRewardsEras:()=>Wg,_stakerSlashes:()=>Yg,account:()=>Bx,accounts:()=>Rx,currentPoints:()=>Lx,electedInfo:()=>Ux,eraExposure:()=>ng,eraPrefs:()=>fg,eraSlashes:()=>vg,erasExposure:()=>ag,erasHistoric:()=>ig,erasPoints:()=>dg,erasPrefs:()=>hg,erasRewards:()=>yg,erasSlashes:()=>Vg,keys:()=>Tg,keysMulti:()=>Sg,nextElected:()=>ev,overview:()=>kg,ownExposure:()=>Pg,ownExposures:()=>Mg,ownSlash:()=>Ng,ownSlashes:()=>Eg,query:()=>Hg,queryMulti:()=>Rg,stakerExposure:()=>zg,stakerExposures:()=>Lg,stakerPoints:()=>Dg,stakerPrefs:()=>jg,stakerRewards:()=>Gg,stakerRewardsMulti:()=>Jg,stakerRewardsMultiEras:()=>Kg,stakerSlashes:()=>Qg,stashes:()=>$g,validators:()=>tv,waitingInfo:()=>rv});var S={};n.r(S),n.d(S,{hasProposals:()=>iv,members:()=>av,prime:()=>uv,proposal:()=>sv,proposalCount:()=>ov,proposalHashes:()=>cv,proposals:()=>dv});var k={};n.r(k),n.d(k,{proposals:()=>lv});var _={};n.r(_),n.d(_,{events:()=>fv,signingInfo:()=>wv});var P=n(56199),M=n(76284),I=n(25311),N=n(82422),E=n(79931);const O="@polkadot/api",A=(new URL("file:///home/runner/work/polkadot-wiki/polkadot-wiki/node_modules/@polkadot/api/packageInfo.js").pathname.substring(0,new URL("file:///home/runner/work/polkadot-wiki/polkadot-wiki/node_modules/@polkadot/api/packageInfo.js").pathname.lastIndexOf("/")+1),"15.0.1");function C(e,t){return e.findMetaCall((0,E.e)(t))}function H(e,t){return e.findMetaError((0,E.e)(t))}function R(e){var t=e((function(e){Error.call(e),e.stack=(new Error).stack}));return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var B=R((function(e){return function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}})),L=n(31635);function z(e){return"function"==typeof e}var U=R((function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=t}}));function D(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var q=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,a;if(!this.closed){this.closed=!0;var i=this._parentage;if(i)if(this._parentage=null,Array.isArray(i))try{for(var s=(0,L.__values)(i),o=s.next();!o.done;o=s.next()){o.value.remove(this)}}catch(p){e={error:p}}finally{try{o&&!o.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}else i.remove(this);var c=this.initialTeardown;if(z(c))try{c()}catch(h){a=h instanceof U?h.errors:[h]}var d=this._finalizers;if(d){this._finalizers=null;try{for(var u=(0,L.__values)(d),l=u.next();!l.done;l=u.next()){var f=l.value;try{X(f)}catch(b){a=null!=a?a:[],b instanceof U?a=(0,L.__spreadArray)((0,L.__spreadArray)([],(0,L.__read)(a)),(0,L.__read)(b.errors)):a.push(b)}}}catch(m){n={error:m}}finally{try{l&&!l.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(a)throw new U(a)}},e.prototype.add=function(t){var n;if(t&&t!==this)if(this.closed)X(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&D(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&D(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}(),j=q.EMPTY;function F(e){return e instanceof q||e&&"closed"in e&&z(e.remove)&&z(e.add)&&z(e.unsubscribe)}function X(e){z(e)?e():e.unsubscribe()}var W={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Z={setTimeout:function(e,t){for(var n=[],r=2;r{return n=t,!Array.isArray(n)||2!==n.length||function(e,t){return(0,Fe.b)(e)||(We(e)?!e.eq(t):e!==t)}(e.get(t[0]),t[1]);var n}))}function Ge(e,t){return Array.isArray(t)?Ze(e,t):t instanceof Map?Ze(e,[...t.entries()]):!!(0,Xe.G)(t)&&Ze(e,Object.entries(t))}class Ke extends Map{registry;createdAtHash;initialU8aLength;isStorageFallback;constructor(e,t){const n=function(e){return Object.entries(e||{})}(t);super(n),this.registry=e,De(this,n.map((([e])=>e)),(e=>this.get(e)))}get encodedLength(){return 0}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return 0===[...this.keys()].length}eq(e){return Ge(this,e)}getT(e){return this.get(e)}inspect(){throw new Error("Unimplemented")}toHex(){throw new Error("Unimplemented")}toHuman(){return[...this.entries()].reduce(((e,[t,n])=>(e[t]=(0,qe.T)(n?.toHuman)?n.toHuman():n,e)),{})}toJSON(){return[...this.entries()].reduce(((e,[t,n])=>(e[t]=n,e)),{})}toPrimitive(e){return[...this.entries()].reduce(((t,[n,r])=>(t[n]=(0,qe.T)(r.toPrimitive)?r.toPrimitive(e):r,t)),{})}toRawType(){return"Json"}toString(){return(0,je.A)(this.toJSON())}toU8a(e){throw new Error("Unimplemented")}}var Je=n(74749);function Ye(e){for(let t=0,n=e.length;t126)return!1}return!0}function Qe(e){return(0,I.K)(e)?(0,Je.qv)(e)?Ye((0,E.e)(e)):function(e){for(let t=0,n=e.length;t126)return!1}return!0}(e):!!e&&Ye(e)}var $e=n(75487);class et{__encoding;constructor(e){this.__encoding=e}decode(e){let t="";for(let n=0,r=e.length;n!!e)))}get isUtf8(){return function(e){if(!e)return(0,I.K)(e);const t=(0,E.e)(e),n=t.length;let r=0;for(;r=194&&t[r]<=223){if(!(r+1191)return!1;r+=2}else if(224===t[r]){if(!(r+2191)return!1;if(t[r+2]<128||t[r+2]>191)return!1;r+=3}else if(t[r]>=225&&t[r]<=236){if(!(r+2191)return!1;if(t[r+2]<128||t[r+2]>191)return!1;r+=3}else if(237===t[r]){if(!(r+2159)return!1;if(t[r+2]<128||t[r+2]>191)return!1;r+=3}else if(t[r]>=238&&t[r]<=239){if(!(r+2191)return!1;if(t[r+2]<128||t[r+2]>191)return!1;r+=3}else if(240===t[r]){if(!(r+3191)return!1;if(t[r+2]<128||t[r+2]>191)return!1;if(t[r+3]<128||t[r+3]>191)return!1;r+=4}else if(t[r]>=241&&t[r]<=243){if(!(r+3191)return!1;if(t[r+2]<128||t[r+2]>191)return!1;if(t[r+3]<128||t[r+3]>191)return!1;r+=4}else{if(244!==t[r])return!1;if(!(r+3143)return!1;if(t[r+2]<128||t[r+2]>191)return!1;if(t[r+3]<128||t[r+3]>191)return!1;r+=4}return!0}(this)}bitLength(){return 8*this.length}eq(e){return e instanceof Uint8Array?this.length===e.length&&!this.some(((t,n)=>t!==e[n])):this.eq((0,E.e)(e))}inspect(){return{outer:[this.toU8a()]}}toHex(){return(0,N.X)(this)}toHuman(e,t){return this.toPrimitive(t)}toJSON(){return this.toHex()}toPrimitive(e){if(!e&&this.isAscii){const e=this.toUtf8();if(Qe(e))return e}return this.toJSON()}toRawType(){return"Raw"}toString(){return this.toHex()}toU8a(e){return Uint8Array.from(this)}toUtf8(){if(!this.isUtf8)throw new Error("The character sequence is not a valid Utf8 string");return nt(this)}}class at{registry;createdAtHash;isStorageFallback;__internal__neverError;constructor(e,t="DoNotConstruct"){throw this.registry=e,this.__internal__neverError=new Error(`DoNotConstruct: Cannot construct unknown type ${t}`),this.__internal__neverError}static with(e){return class extends at{constructor(t){super(t,e)}}}get encodedLength(){throw this.__internal__neverError}get hash(){throw this.__internal__neverError}get isEmpty(){throw this.__internal__neverError}eq(){throw this.__internal__neverError}inspect(){throw this.__internal__neverError}toHex(){throw this.__internal__neverError}toHuman(){throw this.__internal__neverError}toJSON(){throw this.__internal__neverError}toPrimitive(){throw this.__internal__neverError}toRawType(){throw this.__internal__neverError}toString(){throw this.__internal__neverError}toU8a(){throw this.__internal__neverError}}var it=n(52502),st=n(39404);function ot(e,{isLe:t=!0,isNegative:n=!1}={}){t||(e=e.slice().reverse());const r=e.length;if(n&&r&&128&e[r-1])switch(r){case 0:return new st(0);case 1:return new st(-1*(255^e[0])-1);case 2:return new st(-1*(e[0]+(e[1]<<8)^65535)-1);case 3:return new st(-1*(e[0]+(e[1]<<8)+(e[2]<<16)^16777215)-1);case 4:return new st(-1*(e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]^4294967295)-1);case 5:return new st(-1*((e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]^4294967295)+4294967296*(255^e[4]))-1);case 6:return new st(-1*((e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]^4294967295)+4294967296*(e[4]+(e[5]<<8)^65535))-1);default:return new st(e,"le").fromTwos(8*r)}switch(r){case 0:return new st(0);case 1:return new st(e[0]);case 2:return new st(e[0]+(e[1]<<8));case 3:return new st(e[0]+(e[1]<<8)+(e[2]<<16));case 4:return new st(e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]);case 5:return new st(e[0]+(e[1]<<8)+(e[2]<<16)+16777216*(e[3]+(e[4]<<8)));case 6:return new st(e[0]+(e[1]<<8)+(e[2]<<16)+16777216*(e[3]+(e[4]<<8)+(e[5]<<16)));default:return new st(e,"le")}}function ct(e){const t=(0,E.e)(e);switch(3&t[0]){case 0:return[1,new st(t[0]>>>2)];case 1:return[2,new st(t[0]+(t[1]<<8)>>>2)];case 2:return[4,new st(t[0]+(t[1]<<8)+(t[2]<<16)+16777216*t[3]>>>2)];default:{const e=5+(t[0]>>>2);switch(e){case 5:return[5,new st(t[1]+(t[2]<<8)+(t[3]<<16)+16777216*t[4])];case 6:return[6,new st(t[1]+(t[2]<<8)+(t[3]<<16)+16777216*(t[4]+(t[5]<<8)))];case 7:return[7,new st(t[1]+(t[2]<<8)+(t[3]<<16)+16777216*(t[4]+(t[5]<<8)+(t[6]<<16)))];default:return[e,ot(t.subarray(1,e))]}}}}function dt(e){switch(3&e[0]){case 0:return[1,e[0]>>>2];case 1:return[2,e[0]+(e[1]<<8)>>>2];case 2:return[4,e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]>>>2];default:switch(5+(e[0]>>>2)){case 5:return[5,e[1]+(e[2]<<8)+(e[3]<<16)+16777216*e[4]];case 6:return[6,e[1]+(e[2]<<8)+(e[3]<<16)+16777216*(e[4]+(e[5]<<8))];case 7:return[7,e[1]+(e[2]<<8)+(e[3]<<16)+16777216*(e[4]+(e[5]<<8)+(e[6]<<16))];default:throw new Error("Compact input is > Number.MAX_SAFE_INTEGER")}}}var ut=n(336);const lt=new st(0),ft=new st(1),pt=new st(2),ht=new st(100),bt=new st(1e6),mt=new st(1e9),yt=mt.mul(mt),xt=new st(Number.MAX_SAFE_INTEGER),gt=new st(94906265);function vt(e,{isLe:t=!1,isNegative:n=!1}={}){if(!e||"0x"===e)return new st(0);const r=function(e){if(!e||"0x"===e)return"";if(Je.eR.test(e))return e.substring(2);if(Je.Ed.test(e))return e;throw new Error(`Expected hex value to convert, found '${e}'`)}(e),a=new st(r,16,t?"le":"be");return n?a.fromTwos(4*r.length):a}var wt=n(26805),Vt=n(77389);const Tt=(0,Vt.Mp)("toBigInt"),St=(0,Vt.Mp)("toBn");function kt(e){return e?st.isBN(e)?e:(0,Je.qv)(e)?vt(e.toString()):(0,wt.s)(e)?new st(e.toString()):St(e)?e.toBn():Tt(e)?new st(e.toBigInt().toString()):new st(e):new st(0)}const _t={bitLength:-1,isLe:!0,isNegative:!1};function Pt(e,{bitLength:t=-1,isLe:n=!0,isNegative:r=!1}=_t){const a=kt(e),i=-1===t?Math.ceil(a.bitLength()/8):Math.ceil((t||0)/8);if(!e)return-1===t?new Uint8Array(1):new Uint8Array(i);const s=new Uint8Array(i),o=r?a.toTwos(8*i):a;return s.set(o.toArray(n?"le":"be",i),0),s}function Mt(...e){const t=e.length,n=new Array(t);let r=0;for(let a=0;aWe(e)?!e.eq(t[n]):e!==t[n]))))}class Bt extends Array{registry;createdAtHash;initialU8aLength;isStorageFallback;static get[Symbol.species](){return Array}constructor(e,t){super(t),this.registry=e}get encodedLength(){const e=this.length;let t=Ht(e).length;for(let n=0;n{const n=t.replace(/[-_., ]+/g," ").trim().split(" ");let r="";for(let a=0,i=n.length;a(t?zt[e.charCodeAt(0)]:Ut[e.charCodeAt(0)])+e.slice(1))),Ft=qt((e=>zt[e.charCodeAt(0)]+e.slice(1)));function Xt(e,t){return"function"==typeof t?t:e.createClassUnsafe(t)}function Wt(e,t){const n=t.length,r=new Array(n);for(let a=0;a(0,Lt.E)(e)))){if(!t.every((e=>(0,Lt.E)(e)&&e>=0&&e<=255)))throw new Error("Invalid number-indexed enum definition");return!1}return!0}(t)){const[i,s]=Zt(e,t);for(let e=0,t=s.length;ee!==Jt)),a=!1}else{const e=Object.entries(t);for(let t=0,r=e.length;te.toLowerCase())),i=n.toLowerCase(),s=a.indexOf(i);if(-1===s)throw new Error(`Cannot map Enum JSON, unable to find '${n}' in ${a.join(", ")}`);try{return en(e,t,Object.values(t)[s].index,r)}catch(o){throw new Error(`Enum(${n}):: ${o.message}`)}}class nn{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__def;__internal__entryIndex;__internal__indexes;__internal__isBasic;__internal__isIndexed;__internal__raw;constructor(e,t,n,r,{definition:a,setDefinition:i=P.D}={}){const{def:s,isBasic:o,isIndexed:c}=a||i(Yt(e,t)),d=(0,ut.b)(n)&&n.length&&!(0,Lt.E)(r)?$t(e,s,n[0],n.subarray(1)):function(e,t,n,r){if((0,Lt.E)(r))return en(e,t,r,n);if((0,ut.b)(n)||(0,Je.qv)(n)){const r=(0,E.e)(n);if(r.length)return $t(e,t,r[0],r.subarray(1))}else{if(n instanceof nn)return en(e,t,n.index,n.value);if((0,Lt.E)(n))return en(e,t,n);if((0,I.K)(n))return tn(e,t,n.toString());if((0,Xe.G)(n)){const r=Object.keys(n)[0];return tn(e,t,r,n[r])}}return en(e,t,Object.values(t)[0].index)}(e,s,n,r);this.registry=e,this.__internal__def=s,this.__internal__isBasic=o,this.__internal__isIndexed=c,this.__internal__indexes=Object.values(s).map((({index:e})=>e)),this.__internal__entryIndex=this.__internal__indexes.indexOf(d.index),this.__internal__raw=d.value,this.__internal__raw.initialU8aLength&&(this.initialU8aLength=1+this.__internal__raw.initialU8aLength)}static with(e){let t;const n=e=>t=e;return class extends nn{static{const t=Array.isArray(e)?e:Object.keys(e),n=t.length,r=new Array(n),a=new Array(n);for(let e=0;er.type===t[n])),De(this.prototype,r,((e,n,r)=>{if(r.type!==t[n])throw new Error(`Cannot convert '${r.type}' via ${e}`);return r.value}))}constructor(r,a,i){super(r,e,a,i,{definition:t,setDefinition:n})}}}get encodedLength(){return 1+this.__internal__raw.encodedLength}get hash(){return this.registry.hash(this.toU8a())}get index(){return this.__internal__indexes[this.__internal__entryIndex]}get inner(){return this.__internal__raw}get isBasic(){return this.__internal__isBasic}get isEmpty(){return this.__internal__raw.isEmpty}get isNone(){return this.__internal__raw instanceof Jt}get defIndexes(){return this.__internal__indexes}get defKeys(){return Object.keys(this.__internal__def)}get type(){return this.defKeys[this.__internal__entryIndex]}get value(){return this.__internal__raw}eq(e){return(0,ut.b)(e)?!this.toU8a().some(((t,n)=>t!==e[n])):(0,Lt.E)(e)?this.toNumber()===e:this.__internal__isBasic&&(0,I.K)(e)?this.type===e:(0,Je.qv)(e)?this.toHex()===e:e instanceof nn?this.index===e.index&&this.value.eq(e.value):(0,Xe.G)(e)?this.value.eq(e[this.type]):this.value.eq(e)}inspect(){if(this.__internal__isBasic)return{outer:[new Uint8Array([this.index])]};const{inner:e,outer:t=[]}=this.__internal__raw.inspect();return{inner:e,outer:[new Uint8Array([this.index]),...t]}}toHex(){return(0,N.X)(this.toU8a())}toHuman(e,t){return this.__internal__isBasic||this.isNone?this.type:{[this.type]:this.__internal__raw.toHuman(e,t)}}toJSON(){return this.__internal__isBasic?this.type:{[jt(this.type)]:this.__internal__raw.toJSON()}}toNumber(){return this.index}toPrimitive(e){return this.__internal__isBasic?this.type:{[jt(this.type)]:this.__internal__raw.toPrimitive(e)}}_toRawStruct(){if(this.__internal__isBasic)return this.__internal__isIndexed?this.defKeys.reduce(((e,t,n)=>(e[t]=this.__internal__indexes[n],e)),{}):this.defKeys;const e=Object.entries(this.__internal__def);return Gt(this.registry,e.reduce(((e,[t,{Type:n}],r)=>(e[0][r]=n,e[1][r]=t,e)),[new Array(e.length),new Array(e.length)]))}toRawType(){return(0,je.A)({_enum:this._toRawStruct()})}toString(){return this.isNone?this.type:(0,je.A)(this.toJSON())}toU8a(e){return e?this.__internal__raw.toU8a(e):It([new Uint8Array([this.index]),this.__internal__raw.toU8a(e)])}}function rn(e){return"boolean"==typeof e}function an(e,t,n,{message:r},a,i,s,o,c){let d="";try{d=`: ${new o(e).toRawType()}`}catch{}return`${t}: failed at ${(0,N.X)(a.subarray(0,16))}\u2026${c?` on ${c}`:""} (index ${i+1}/${s})${d}:: ${r}`}function sn(e,t,n,[r,a]){const i=t.length;let s=0,o=0;try{for(;on=e;return class extends dn{static{const t=Object.keys(e);De(this.prototype,t,((e,t,n)=>n.get(e)))}constructor(a,i){super(a,e,i,t,{definition:n,setDefinition:r})}}}get defKeys(){return this.__internal__Types[1]}get isEmpty(){for(const e of this.values())if(!e.isEmpty)return!1;return!0}get encodedLength(){let e=0;for(const t of this.values())e+=t.encodedLength;return e}get hash(){return this.registry.hash(this.toU8a())}get Type(){const e={},[t,n]=this.__internal__Types;for(let r=0,a=n.length;r ${(0,je.A)(t)} (typeof ${typeof t})`)}const vn=(0,it.v)("Map");function wn(e,t,n,r){const a=new Map;for(const[s,o]of r.entries()){const r=t.prototype instanceof Bt||t.prototype instanceof dn||t.prototype instanceof nn;try{a.set(s instanceof t?s:new t(e,r&&"string"==typeof s?JSON.parse(s):s),o instanceof n?o:new n(e,o))}catch(i){throw vn.error("Failed to decode key or value:",i.message),i}}return[t,n,a,0]}function Vn(e,t,n,r){const a=Xt(e,t),i=Xt(e,n);if(!r)return[a,i,new Map,0];if((0,ut.b)(r)||(0,Je.qv)(r))return function(e,t,n,r){const a=new Map,[i,s]=dt(r),o=[];for(let u=0;uxn("BTreeMap",t,e))).sort((([e],[t])=>gn(e,t))))}(o):o),this.registry=e,this.initialU8aLength=c,this.__internal__KeyClass=i,this.__internal__ValClass=s,this.__internal__type=a}get encodedLength(){let e=Ht(this.size).length;for(const[t,n]of this.entries())e+=t.encodedLength+n.encodedLength;return e}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return 0===this.size}eq(e){return Ge(this,e)}inspect(){const e=[];for(const[t,n]of this.entries())e.push(t.inspect()),e.push(n.inspect());return{inner:e,outer:[Ht(this.size)]}}toHex(){return(0,N.X)(this.toU8a())}toHuman(e,t){const n={};for(const[r,a]of this.entries())n[r instanceof rt&&!t&&r.isAscii?r.toUtf8():r.toString()]=a.toHuman(e,t);return n}toJSON(){const e={};for(const[t,n]of this.entries())e[t.toString()]=n.toJSON();return e}toPrimitive(e){const t={};for(const[n,r]of this.entries())t[n instanceof rt&&!e&&n.isAscii?n.toUtf8():n.toString()]=r.toPrimitive(e);return t}toRawType(){return`${this.__internal__type}<${this.registry.getClassName(this.__internal__KeyClass)||new this.__internal__KeyClass(this.registry).toRawType()},${this.registry.getClassName(this.__internal__ValClass)||new this.__internal__ValClass(this.registry).toRawType()}>`}toString(){return(0,je.A)(this.toJSON())}toU8a(e){const t=[];e||t.push(Ht(this.size));for(const[n,r]of this.entries())t.push(n.toU8a(e),r.toU8a(e));return It(t)}}class Sn extends Tn{static with(e,t){return class extends Sn{constructor(n,r){super(n,e,t,r,"BTreeMap")}}}}function kn(e,t){return e.size===t.length&&!t.some((t=>!e.has(t)))}const _n=(0,it.v)("BTreeSet");function Pn(e,t,n){const r=Xt(e,t);if(!n)return[r,new Set,0];if((0,ut.b)(n)||(0,Je.qv)(n))return function(e,t,n){const r=new Set,[a,i]=dt(n),s=new Array(i),[o]=on(e,s,n,a,t);for(let c=0;c{try{r.add(n instanceof t?n:new t(e,n))}catch(a){throw _n.error("Failed to decode key or value:",a.message),a}})),[t,r,0]}(e,r,n);throw new Error("BTreeSet: cannot decode type")}class Mn extends Set{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__ValClass;constructor(e,t,n){const[r,a,i]=Pn(e,t,n);super(function(e){const t=new Set;return new Set(Array.from(e).filter((e=>xn("BTreeSet",t,e))).sort(gn))}(a)),this.registry=e,this.initialU8aLength=i,this.__internal__ValClass=r}static with(e){return class extends Mn{constructor(t,n){super(t,e,n)}}}get encodedLength(){let e=Ht(this.size).length;for(const t of this.values())e+=t.encodedLength;return e}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return 0===this.size}get strings(){return[...super.values()].map((e=>e.toString()))}eq(e){return t=this,n=e,Array.isArray(n)?kn(t,n):n instanceof Set?kn(t,[...n.values()]):!!(0,Xe.G)(n)&&kn(t,Object.values(n));var t,n}inspect(){const e=[];for(const t of this.values())e.push(t.inspect());return{inner:e,outer:[Ht(this.size)]}}toHex(){return(0,N.X)(this.toU8a())}toHuman(e,t){const n=[];for(const r of this.values())n.push(r.toHuman(e,t));return n}toJSON(){const e=[];for(const t of this.values())e.push(t.toJSON());return e}toRawType(){return`BTreeSet<${this.registry.getClassName(this.__internal__ValClass)||new this.__internal__ValClass(this.registry).toRawType()}>`}toPrimitive(e){const t=[];for(const n of this.values())t.push(n.toPrimitive(e));return t}toString(){return(0,je.A)(this.toJSON())}toU8a(e){const t=[];e||t.push(Ht(this.size));for(const n of this.values())t.push(n.toU8a(e));return It(t)}}class In{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__Type;__internal__raw;constructor(e,t,n=0,{definition:r,setDefinition:a=P.D}={}){this.registry=e,this.__internal__Type=r||a(Xt(e,t));const[i,s]=function(e,t,n){if((0,ut.b)(n)){const[r,a]=(3&n[0])<3?dt(n):ct(n);return[new t(e,a),r]}if(n instanceof In){const r=n.unwrap();return r instanceof t?[r,0]:[new t(e,r),0]}return n instanceof t?[n,0]:[new t(e,n),0]}(e,this.__internal__Type,n);this.initialU8aLength=s,this.__internal__raw=i}static with(e){let t;const n=e=>t=e;return class extends In{constructor(r,a){super(r,e,a,{definition:t,setDefinition:n})}}}get encodedLength(){return this.toU8a().length}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return this.__internal__raw.isEmpty}bitLength(){return this.__internal__raw.bitLength()}eq(e){return this.__internal__raw.eq(e instanceof In?e.__internal__raw:e)}inspect(){return{outer:[this.toU8a()]}}toBigInt(){return this.__internal__raw.toBigInt()}toBn(){return this.__internal__raw.toBn()}toHex(e){return this.__internal__raw.toHex(e)}toHuman(e,t){return this.__internal__raw.toHuman(e,t)}toJSON(){return this.__internal__raw.toJSON()}toNumber(){return this.__internal__raw.toNumber()}toPrimitive(e){return this.__internal__raw.toPrimitive(e)}toRawType(){return`Compact<${this.registry.getClassName(this.__internal__Type)||this.__internal__raw.toRawType()}>`}toString(){return this.__internal__raw.toString()}toU8a(e){return Ht(this.__internal__raw.toBn())}unwrap(){return this.__internal__raw}}class Nn extends Tn{static with(e,t){return class extends Nn{constructor(n,r){super(n,e,t,r)}}}}const En=new RegExp("(\\d+?)(?=(\\d{3})+(?!\\d)|$)","g");function On(e,t=","){const n=e[0].startsWith("-"),r=n?e.substring(1).match(En):e.match(En);return r?`${n?"-":""}${r.join(t)}`:e}function An(e){return{decimal:.1.toLocaleString(e).substring(1,2),thousand:1e3.toLocaleString(e).substring(1,2)}}const Cn=[{power:-24,text:"yocto",value:"y"},{power:-21,text:"zepto",value:"z"},{power:-18,text:"atto",value:"a"},{power:-15,text:"femto",value:"f"},{power:-12,text:"pico",value:"p"},{power:-9,text:"nano",value:"n"},{power:-6,text:"micro",value:"\xb5"},{power:-3,text:"milli",value:"m"},{power:0,text:"Unit",value:"-"},{power:3,text:"Kilo",value:"k"},{power:6,text:"Mill",value:"M"},{power:9,text:"Bill",value:"B"},{power:12,text:"Tril",value:"T"},{power:15,text:"Peta",value:"P"},{power:18,text:"Exa",value:"E"},{power:21,text:"Zeta",value:"Z"},{power:24,text:"Yotta",value:"Y"}];function Hn(e){for(let t=0,n=Cn.length;tRn(e,t),Un.findSi=Hn,Un.getDefaults=()=>({decimals:Ln,unit:zn}),Un.getOptions=(e=Ln)=>Cn.filter((({power:t})=>!(t<0)||e+t>=0)),Un.setDefaults=({decimals:e,unit:t})=>{Ln=(Array.isArray(e)?e[0]:e)??Ln,zn=(Array.isArray(t)?t[0]:t)??zn,Cn[8].text=zn};const qn=new st(1e4),jn=[["Perquintill",yt],["Perbill",mt],["Permill",bt],["Percent",ht]];function Fn(e,t){if((0,Lt.E)(e)){if(!Number.isInteger(e)||e>Number.MAX_SAFE_INTEGER||ei)throw new Error(`${this.toRawType()}: Input too large. Found input with ${super.bitLength()} bits, expected ${i}`)}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return this.isZero()}bitLength(){return this.__internal__bitLength}eq(e){return super.eq((0,Je.qv)(e)?vt(e.toString(),{isLe:!1,isNegative:!this.isUnsigned}):kt(e))}inspect(){return{outer:[this.toU8a()]}}isMax(){return this.toU8a().filter((e=>255===e)).length===this.__internal__bitLength/8}toBigInt(){return BigInt(this.toString())}toBn(){return this}toHex(e=!1){return function(e,{bitLength:t=-1,isLe:n=!1,isNegative:r=!1}={}){return(0,N.X)(Pt(e,{bitLength:t,isLe:n,isNegative:r}))}(this,{bitLength:this.bitLength(),isLe:e,isNegative:!this.isUnsigned})}toHuman(e){const t=this.toRawType();if("Balance"===t)return this.isMax()?"everything":Un(this,{decimals:this.registry.chainDecimals[0],withSi:!0,withUnit:this.registry.chainTokens[0]});const[,n]=jn.find((([e])=>e===t))||[];return n?function(e,t){return`${(e.mul(qn).div(t).toNumber()/100).toFixed(2)}%`}(this,n):Dn(this)}toJSON(e=!1){return e||this.__internal__bitLength>128||super.bitLength()>52?this.toHex():this.toNumber()}toPrimitive(){return super.bitLength()>52?this.toString():this.toNumber()}toRawType(){return this instanceof this.registry.createClassUnsafe("Balance")?"Balance":`${this.isUnsigned?"u":"i"}${this.bitLength()}`}toString(e){return super.toString(e)}toU8a(e){return Pt(this,{bitLength:this.bitLength(),isLe:!0,isNegative:!this.isUnsigned})}}class Wn extends Xn{constructor(e,t=0,n){super(e,t,n,!0)}static with(e,t){return class extends Wn{constructor(t,n){super(t,n,e)}toRawType(){return t||super.toRawType()}}}}class Zn extends Jt{toRawType(){return"None"}}class Gn{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__Type;__internal__raw;constructor(e,t,n,{definition:r,setDefinition:a=P.D}={}){const i=r||a(Xt(e,t)),s=(0,ut.b)(n)&&n.length&&!fn(n)?0===n[0]?new Zn(e):new i(e,n.subarray(1)):function(e,t,n){return n instanceof t?n:n instanceof Gn?n.value instanceof t?n.value:n.isNone?new Zn(e):new t(e,n.value):(0,Kt.k)(n)||(0,Fe.b)(n)||"0x"===n||n instanceof Zn?new Zn(e):(0,ut.b)(n)?n.length&&0!==n[0]?new t(e,n.subarray(1)):new Zn(e):new t(e,n)}(e,i,n);this.registry=e,this.__internal__Type=i,this.__internal__raw=s,s?.initialU8aLength&&(this.initialU8aLength=1+s.initialU8aLength)}static with(e){let t;const n=e=>(t=e,e);return class extends Gn{constructor(r,a){super(r,e,a,{definition:t,setDefinition:n})}}}get encodedLength(){return 1+this.__internal__raw.encodedLength}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return this.isNone}get isNone(){return this.__internal__raw instanceof Zn}get isSome(){return!this.isNone}get value(){return this.__internal__raw}eq(e){return e instanceof Gn?this.isSome===e.isSome&&this.value.eq(e.value):this.value.eq(e)}inspect(){if(this.isNone)return{outer:[new Uint8Array([0])]};const{inner:e,outer:t=[]}=this.__internal__raw.inspect();return{inner:e,outer:[new Uint8Array([1]),...t]}}toHex(){return this.isNone?"0x":(0,N.X)(this.toU8a().subarray(1))}toHuman(e,t){return this.__internal__raw.toHuman(e,t)}toJSON(){return this.isNone?null:this.__internal__raw.toJSON()}toPrimitive(e){return this.isNone?null:this.__internal__raw.toPrimitive(e)}toRawType(e){const t=this.registry.getClassName(this.__internal__Type)||new this.__internal__Type(this.registry).toRawType();return e?t:`Option<${t}>`}toString(){return this.__internal__raw.toString()}toU8a(e){if(e)return this.__internal__raw.toU8a(!0);const t=new Uint8Array(this.encodedLength);return this.isSome&&(t.set([1]),t.set(this.__internal__raw.toU8a(),1)),t}unwrap(){if(this.isNone)throw new Error("Option: unwrapping a None value");return this.__internal__raw}unwrapOr(e){return this.isSome?this.unwrap():e}unwrapOrDefault(){return this.isSome?this.unwrap():new this.__internal__Type(this.registry)}}class Kn extends Bt{__internal__Types;constructor(e,t,n,{definition:r,setDefinition:a=P.D}={}){const i=r||a(Array.isArray(t)?[Wt(e,t),[]]:(0,qe.T)(t)||(0,I.K)(t)?[[Xt(e,t)],[]]:Zt(e,t));super(e,i[0].length),this.initialU8aLength=((0,ut.b)(n)?sn(e,this,n,i):function(e,t,n,r){if(Array.isArray(n)){const i=r[0];for(let r=0,s=i.length;rt=e;return class extends Kn{constructor(r,a){super(r,e,a,{definition:t,setDefinition:n})}}}get encodedLength(){let e=0;for(let t=0,n=this.length;tnew e(this.registry).toRawType()))}inspect(){return{inner:this.inspectInner()}}toRawType(){return`(${this.__internal__Types[0].map((e=>this.registry.getClassName(e)||new e(this.registry).toRawType())).join(",")})`}toString(){return(0,je.A)(this.toJSON())}toU8a(e){return It(this.toU8aInner(e))}}class Jn extends Kn{__internal__rangeName;constructor(e,t,n,{rangeName:r="Range"}={}){super(e,[t,t],n),this.__internal__rangeName=r}static with(e){return class extends Jn{constructor(t,n){super(t,e,n)}}}get start(){return this[0]}get end(){return this[1]}toRawType(){return`${this.__internal__rangeName}<${this.start.toRawType()}>`}}class Yn extends Jn{constructor(e,t,n){super(e,t,n,{rangeName:"RangeInclusive"})}static with(e){return class extends Yn{constructor(t,n){super(t,e,n)}}}}class Qn extends nn{constructor(e,t,n,r){super(e,{Ok:t,Err:n},r)}static with(e){return class extends Qn{constructor(t,n){super(t,e.Ok,e.Err,n)}}}get asErr(){if(!this.isErr)throw new Error("Cannot extract Err value from Ok result, check isErr first");return this.value}get asOk(){if(!this.isOk)throw new Error("Cannot extract Ok value from Err result, check isOk first");return this.value}get isEmpty(){return this.isOk&&this.value.isEmpty}get isErr(){return!this.isOk}get isOk(){return 0===this.index}toRawType(){const e=this._toRawStruct();return`Result<${e.Ok},${e.Err}>`}}function $n(e,t){const n=new st(0);for(let r=0,a=t.length;rr.strings.includes(t[n])))}constructor(n,r){super(n,e,r,t)}}}get encodedLength(){return this.__internal__byteLength}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return 0===this.size}get strings(){return[...super.values()]}get valueEncoded(){return $n(this.__internal__allowed,this.strings)}add=e=>{if(this.__internal__allowed&&(0,Fe.b)(this.__internal__allowed[e]))throw new Error(`Set: Invalid key '${e}' on add`);return super.add(e),this};eq(e){return Array.isArray(e)?Rt(this.strings.sort(),e.sort()):e instanceof Set?this.eq([...e.values()]):!(!(0,Lt.E)(e)&&!(0,pn.f)(e))&&this.valueEncoded.eq(kt(e))}inspect(){return{outer:[this.toU8a()]}}toHex(){return(0,N.X)(this.toU8a())}toHuman(){return this.toJSON()}toJSON(){return this.strings}toNumber(){return this.valueEncoded.toNumber()}toPrimitive(){return this.toJSON()}toRawType(){return(0,je.A)({_set:this.__internal__allowed})}toString(){return`[${this.strings.join(", ")}]`}toU8a(e){return Pt(this.valueEncoded,{bitLength:8*this.__internal__byteLength,isLe:!0})}}class rr extends Xn{static with(e,t){return class extends rr{constructor(t,n){super(t,n,e)}toRawType(){return t||super.toRawType()}}}}function ar(e){return It([Ht(e.length),e])}const ir=10485760;class sr extends rt{constructor(e,t){const[n,r]=!(0,ut.b)(t)||t instanceof rt?Array.isArray(t)||(0,I.K)(t)?[(0,E.e)(t),0]:[t,0]:function(e){if(!e.length)return[new Uint8Array,0];const[t,n]=dt(e),r=t+n;if(n>ir)throw new Error(`Bytes length ${n.toString()} exceeds 10485760`);if(r>e.length)throw new Error(`Bytes: required length less than remainder, expected at least ${r}, found ${e.length}`);return[e.subarray(t,r),r]}(t);super(e,n,r)}get encodedLength(){return this.length+Ht(this.length).length}inspect(e){const t=Ht(this.length);return{outer:e?[super.toU8a()]:this.length?[t,super.toU8a()]:[t]}}toRawType(){return"Bytes"}toU8a(e){return e?super.toU8a(e):ar(this)}}const or=524288,cr=(0,it.v)("Vec");function dr(e,t,n,r,a){if(Array.isArray(n)){const r=t.length;for(let s=0;sor)throw new Error(`Vec length ${r.toString()} exceeds 524288`);return[t,r,n]}if(!e)return[null,0,0];throw new Error(`Expected array/hex input to Vec<*> decoding, found ${typeof e}: ${(0,je.A)(e)}`)}(n);super(e,s),this.__internal__Type=r||a(Xt(e,t)),this.initialU8aLength=((0,ut.b)(i)?on(e,this,i,o,this.__internal__Type):dr(e,this,i,o,this.__internal__Type))[0]}static with(e){let t;const n=e=>t=e;return class extends ur{constructor(r,a){super(r,e,a,{definition:t,setDefinition:n})}}}get Type(){return this.__internal__Type.name}indexOf(e){const t=e instanceof this.__internal__Type?e:new this.__internal__Type(this.registry,e);for(let n=0,r=this.length;n`}}class lr extends rt{constructor(e,t=new Uint8Array,n=256){const[r,a]=function(e,t){const n=(0,E.e)(e),r=t/8;if(!n.length)return[new Uint8Array(r),0];if((0,ut.b)(e)?n.lengthn=e;return class extends fr{constructor(a,i){super(a,e,t,i,{definition:n,setDefinition:r})}}}get Type(){return new this.__internal__Type(this.registry).toRawType()}get encodedLength(){let e=0;for(let t=0,n=this.length;t`}toString(){return this.__internal__decoded?this.__internal__decoded.toString():super.toString()}unwrap(){if(!this.__internal__decoded)throw new Error(`${this.__internal__opaqueName}: unwrapping an undecodable value`);return this.__internal__decoded}}class br extends hr{constructor(e,t,n){super(e,t,n,{opaqueName:"WrapperOpaque"})}static with(e){return class extends br{constructor(t,n){super(t,e,n)}}}get inner(){return this.unwrap()}}var mr;!function(e){e[e.BTreeMap=0]="BTreeMap",e[e.BTreeSet=1]="BTreeSet",e[e.Compact=2]="Compact",e[e.DoNotConstruct=3]="DoNotConstruct",e[e.Enum=4]="Enum",e[e.HashMap=5]="HashMap",e[e.Int=6]="Int",e[e.Linkage=7]="Linkage",e[e.Null=8]="Null",e[e.Option=9]="Option",e[e.Plain=10]="Plain",e[e.Range=11]="Range",e[e.RangeInclusive=12]="RangeInclusive",e[e.Result=13]="Result",e[e.Set=14]="Set",e[e.Si=15]="Si",e[e.Struct=16]="Struct",e[e.Tuple=17]="Tuple",e[e.UInt=18]="UInt",e[e.Vec=19]="Vec",e[e.VecFixed=20]="VecFixed",e[e.WrapperKeepOpaque=21]="WrapperKeepOpaque",e[e.WrapperOpaque=22]="WrapperOpaque"}(mr||(mr={}));const yr=["BTreeMap","BTreeSet","HashMap","Vec"],xr=yr.concat(["Compact","DoNotConstruct","Int","Linkage","Range","RangeInclusive","Result","Opaque","Option","UInt","WrapperKeepOpaque","WrapperOpaque"]),gr=["<","(","[",'"',","," "],vr=[Vr("::Inherent","InherentOfflineReport",!1),Vr("VecDeque<","Vec<",!1),e=>{if(e.includes(" as HasCompact"))for(let t=0,n=e.length;t`)}return e},Sr("Bounded",!0),Sr("Weak",!1),function(){const e=/\s/g,t=/(T|Self)::/g,n=/<(T|Self)asTrait>::/g,r=/::/g,a=//g,i=/::Type/g;return s=>(e.lastIndex=0,t.lastIndex=0,n.lastIndex=0,r.lastIndex=0,a.lastIndex=0,i.lastIndex=0,s.replace(e,"").replace(t,"").replace(n,"").replace(r,"").replace(a,"Lookup").replace(i,""))}(),function(){const e=e=>`(${e},${e})`;return t=>Tr(t,"PairOf<",e)}(),function(e){const t=e=>e;return n=>Tr(n,e,t)}("Box<"),e=>{for(let t=0,n=e.length;t{const r=t-n.length;return r>=0&&e.substring(r,t)===n&&(0===r||gr.includes(e[r-1]))}))){const n=wr(e,t+1);e=`${e.substring(0,t)}${e.substring(n+1)}`}return e},Vr("String","Text"),Vr("Vec","Bytes"),Vr("&\\[u8\\]","Bytes"),Vr("&'static\\[u8\\]","Bytes"),Vr("RawAddress","Address"),Vr("Lookup::Source","LookupSource"),Vr("Lookup::Target","LookupTarget"),Vr("exec::StorageKey","ContractStorageKey"),function(){const e=/,\)/g,t=/\(([^,]+)\)/;return n=>(e.lastIndex=0,n.replace(e,")").replace(t,"$1"))}(),e=>{let t=0;for(;-1!==t;)if(t=e.indexOf("::"),0===t)e=e.substring(2);else if(-1!==t){let n=t;for(;-1!==n&&!gr.includes(e[n]);)n--;e=`${e.substring(0,n+1)}${e.substring(t+2)}`}return e},e=>e.trim()];function wr(e,t){let n=0;for(let r=t,a=e.length;r"===e[r]){if(!n)return r;n--}else"<"===e[r]&&n++;throw new Error(`Unable to find closing matching <> on '${e}' (start ${t})`)}function Vr(e,t,n=!0){const r=new RegExp(`(^${e}|${gr.map((t=>`\\${t}${e}`)).join("|")})`,"g"),a=e=>(r.lastIndex=0,n&&gr.includes(e[0])?`${e[0]}${t}`:t);return e=>e.replace(r,a)}function Tr(e,t,n){let r=-1;for(;;){if(r=e.indexOf(t,r+1),-1===r)return e;const a=r+t.length,i=wr(e,a);e=`${e.substring(0,r)}${n(e.substring(a,i))}${e.substring(i+1)}`}}function Sr(e,t){return n=>{for(let r=0,a=yr.length;r{const n=e.split(",").map((e=>e.trim())).filter((e=>e));return t&&n.pop(),`${a}<${n.join(",")}>`}))}return n}}const kr=new Map;function _r(e){const t=e.toString(),n=kr.get(t);if(n)return n;let r=t;for(let a=0,i=vr.length;a({index:t,info:mr.Plain,name:e,type:"Null"}))):!function(e){const t=Object.values(e);if(t.some((e=>(0,Lt.E)(e)))){if(!t.every((e=>(0,Lt.E)(e)&&e>=0&&e<=255)))throw new Error("Invalid number-indexed enum definition");return!1}return!0}(t)?e.sub=Object.entries(t).map((([e,t])=>({index:t,info:mr.Plain,name:e,type:"Null"}))):e.sub=Object.entries(t).map((([e,t],r)=>(0,M.b)({},Rr(Mr(t||"Null"),{name:e},n),{index:r}))),e}function Nr(e,t,n,r){return e.sub=0===n.length?[]:function(e){const t=[];let n=0,r=0,a=0,i=0,s=0;for(let o=0,c=e.length;o":n--;break;case"[":r++;break;case"]":r--;break;case"{":a++;break;case"}":a--;break;case"(":i++;break;case")":i--}if(n||r||a||i)throw new Error(`Invalid definition (missing terminators) found in ${e}`);return t.push(e.substring(s,e.length).trim()),t}(n).map((e=>Rr(e,{},r))),e}function Er(e,t,n,r){const[a,i]=t.substring(r.length+1,t.length-1).split(","),s=parseInt(a.trim(),10);if(s>8192||s%8)throw new Error(`${t}: Only support for ${r}, where length <= 8192 and a power of 8, found ${s}`);return e.displayName=i,e.length=s,e}function Or(e,[t,n]){return e.startsWith(t)&&e.slice(-1*n.length)===n}const Ar=[["[","]",mr.VecFixed,function(e,t,n,r){const a=t.length-1;let i=-1,s=0;for(let l=1;l":s--}if(-1===i)throw new Error(`${t}: Unable to extract location of ';'`);const o=t.substring(1,i),[c,d]=t.substring(i+1,a).split(";"),u=parseInt(c.trim(),10);if(u>2048)throw new Error(`${t}: Only support for [Type; ], where length <= 2048`);return e.displayName=d,e.length=u,e.sub=Rr(o,{},r),e}],["{","}",mr.Struct,function(e,t,n,r){const a=JSON.parse(t),i=Object.keys(a);return a._enum?Ir(e,a._enum,r,a._fallback):a._set?function(e,t,n){return e.info=mr.Set,e.fallbackType=n,e.length=t._bitLength,e.sub=Object.entries(t).filter((([e])=>!e.startsWith("_"))).map((([e,t])=>({index:t,info:mr.Plain,name:e,type:"Null"}))),e}(e,a._set,a._fallback):(e.alias=a._alias?new Map(Object.entries(a._alias)):void 0,e.fallbackType=a._fallback,e.sub=i.filter((e=>!Pr.includes(e))).map((e=>Rr(Mr(a[e]),{name:e},r))),e)}],["(",")",mr.Tuple,Nr],["BTreeMap<",">",mr.BTreeMap,Nr],["HashMap<",">",mr.HashMap,Nr],["Int<",">",mr.Int,function(e,t,n){return Er(e,t,0,"Int")}],["Result<",">",mr.Result,Nr],["UInt<",">",mr.UInt,function(e,t,n){return Er(e,t,0,"UInt")}],["DoNotConstruct<",">",mr.DoNotConstruct,function(e,t,n){return e.displayName=t.substring(15,t.length-1),e}]],Cr=[["BTreeSet<",">",mr.BTreeSet],["Compact<",">",mr.Compact],["Linkage<",">",mr.Linkage],["Opaque<",">",mr.WrapperOpaque],["Option<",">",mr.Option],["Range<",">",mr.Range],["RangeInclusive<",">",mr.RangeInclusive],["Vec<",">",mr.Vec],["WrapperKeepOpaque<",">",mr.WrapperKeepOpaque],["WrapperOpaque<",">",mr.WrapperOpaque]];function Hr(e,[t,n]){return e.substring(t.length,e.length-n.length)}function Rr(e,{displayName:t,name:n}={},r=0){const a=_r(e),i={displayName:t,info:mr.Plain,name:n,type:a};if(++r>64)throw new Error("getTypeDef: Maximum nested limit reached");const s=Ar.find((e=>Or(a,e)));if(s)return i.info=s[2],s[3](i,a,Hr(a,s),r);const o=Cr.find((e=>Or(a,e)));return o&&(i.info=o[2],i.sub=Rr(Hr(a,o),{},r)),i}function Br({lookupName:e,type:t}){return e||t}function Lr(e){if(!Array.isArray(e.sub))throw new Error(`Expected subtype as TypeDef[] in ${(0,je.A)(e)}`);return e.sub}function zr(e){return Br(function(e){if(!e.sub||Array.isArray(e.sub))throw new Error(`Expected subtype as TypeDef in ${(0,je.A)(e)}`);return e.sub}(e))}function Ur(e){const t=Lr(e),n={};for(let r=0,a=t.length;r`);return e.with(n,t)}function jr(e,t){const[n,r]=Dr(t);return e.with(n,r)}function Fr(e,t){return e.with(zr(t))}const Xr={[mr.BTreeMap]:(e,t)=>jr(Sn,t),[mr.BTreeSet]:(e,t)=>Fr(Mn,t),[mr.Compact]:(e,t)=>Fr(In,t),[mr.DoNotConstruct]:(e,t)=>at.with(t.displayName||t.type),[mr.Enum]:(e,t)=>{const n=Lr(t);return nn.with(n.every((({type:e})=>"Null"===e))?n.reduce(((e,{index:t,name:n},r)=>{if(!n)throw new Error("No name found in sub definition");return e[n]=t||r,e}),{}):Ur(t))},[mr.HashMap]:(e,t)=>jr(Nn,t),[mr.Int]:(e,t)=>qr(Wn,t),[mr.Linkage]:(e,t)=>{const n=`Option<${zr(t)}>`,r=dn.with({previous:n,next:n});return r.prototype.toRawType=function(){return`Linkage<${this.next.toRawType(!0)}>`},r},[mr.Null]:(e,t)=>Jt,[mr.Option]:(e,t)=>{if(!t.sub||Array.isArray(t.sub))throw new Error("Expected type information for Option");return Fr(Gn,t)},[mr.Plain]:(e,t)=>e.getOrUnknown(t.type),[mr.Range]:(e,t)=>Fr(Jn,t),[mr.RangeInclusive]:(e,t)=>Fr(Yn,t),[mr.Result]:(e,t)=>{const[n,r]=Dr(t);return Qn.with({Err:r,Ok:n})},[mr.Set]:(e,t)=>nr.with(Lr(t).reduce(((e,{index:t,name:n})=>{if(!n||!(0,Lt.E)(t))throw new Error("No name found in sub definition");return e[n]=t,e}),{}),t.length),[mr.Si]:(e,t)=>Wr(e,e.lookup.getTypeDef(t.type)),[mr.Struct]:(e,t)=>dn.with(Ur(t),t.alias),[mr.Tuple]:(e,t)=>Kn.with(Dr(t)),[mr.UInt]:(e,t)=>qr(rr,t),[mr.Vec]:(e,{sub:t})=>{if(!t||Array.isArray(t))throw new Error("Expected type information for vector");return"u8"===t.type?sr:ur.with(Br(t))},[mr.VecFixed]:(e,{displayName:t,length:n,sub:r})=>{if(!(0,Lt.E)(n)||!r||Array.isArray(r))throw new Error("Expected length & type information for fixed vector");return"u8"===r.type?lr.with(8*n,t):fr.with(Br(r),n)},[mr.WrapperKeepOpaque]:(e,t)=>Fr(hr,t),[mr.WrapperOpaque]:(e,t)=>Fr(br,t)};function Wr(e,t){return e.getUnsafe(t.type,!1,t)}function Zr(e,t){return e.getUnsafe(t)||Wr(e,e.isLookupType(t)?e.lookup.getTypeDef(t):Rr(t))}function Gr(e,t){const n=(0,E.e)(e),r=(0,E.e)(t);if(n.length===r.length){const e=new DataView(n.buffer,n.byteOffset),t=new DataView(r.buffer,r.byteOffset),a=n.length%4|0,i=n.length-a|0;for(let n=0;n!e))))throw new Error(`${r}:: Decoded input doesn't match input, received ${(0,N.X)(t,512)} (${t.length} bytes), created ${(0,N.X)(n,512)} (${n.length} bytes)`)}function Jr(e,t,n=[],{blockHash:r,isFallback:a,isOptional:i,isPedantic:s}={}){const o=new(i?Gn.with(t):t)(e,...n);return s&&function(e,[t]){(0,ut.b)(t)?Kr(e,t):(0,Je.qv)(t)&&Kr(e,(0,E.e)(t))}(o,n),r&&(o.createdAtHash=Yr(e,"BlockHash",[r])),a&&(o.isStorageFallback=!0),o}function Yr(e,t,n=[],r={}){let a=null,i=null;try{return a=Zr(e,t),Jr(e,a,n,r)}catch(s){i=new Error(`createType(${t}):: ${s.message}`)}if(a?.__fallbackType)try{return a=Zr(e,a.__fallbackType),Jr(e,a,n,r)}catch{}throw i}function Qr(e,t,n,r,a=0){const i=r?r(t,a):t.toString();let s;Object.defineProperty(e,i,{configurable:!0,enumerable:!0,get:function(){if(void 0===s){s=n(t,a,this);try{Object.defineProperty(this,i,{value:s})}catch{}}return s}})}function $r(e,t,n,r){for(let a=0,i=t.length;a0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function ra(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");ta(e.outputLen),ta(e.blockLen)}function aa(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function ia(e,t){na(e);const n=t.outputLen;if(e.lengthnew Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4)),ca=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),da=(e,t)=>e<<32-t|e>>>t,ua=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0],la=e=>e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255,fa=ua?e=>e:e=>la(e);function pa(e){for(let t=0;te().update(ha(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function ya(e){const t=(t,n)=>e(n).update(ha(t)).digest(),n=e({});return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=t=>e(t),t}function xa(e=32){if(sa&&"function"==typeof sa.getRandomValues)return sa.getRandomValues(new Uint8Array(e));if(sa&&"function"==typeof sa.randomBytes)return sa.randomBytes(e);throw new Error("crypto.getRandomValues must be defined")}const ga=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3]);class va extends ba{constructor(e,t,n={},r,a,i){if(super(),this.blockLen=e,this.outputLen=t,this.length=0,this.pos=0,this.finished=!1,this.destroyed=!1,ta(e),ta(t),ta(r),t<0||t>r)throw new Error("outputLen bigger than keyLen");if(void 0!==n.key&&(n.key.length<1||n.key.length>r))throw new Error(`key must be up 1..${r} byte long or undefined`);if(void 0!==n.salt&&n.salt.length!==a)throw new Error(`salt must be ${a} byte long or undefined`);if(void 0!==n.personalization&&n.personalization.length!==i)throw new Error(`personalization must be ${i} byte long or undefined`);this.buffer32=oa(this.buffer=new Uint8Array(e))}update(e){aa(this);const{blockLen:t,buffer:n,buffer32:r}=this,a=(e=ha(e)).length,i=e.byteOffset,s=e.buffer;for(let o=0;or[t]=fa(e)))}digest(){const{buffer:e,outputLen:t}=this;this.digestInto(e);const n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){const{buffer:t,length:n,finished:r,destroyed:a,outputLen:i,pos:s}=this;return e||(e=new this.constructor({dkLen:i})),e.set(...this.get()),e.length=n,e.finished=r,e.destroyed=a,e.outputLen=i,e.buffer.set(t),e.pos=s,e}}const wa=BigInt(2**32-1),Va=BigInt(32);function Ta(e,t=!1){return t?{h:Number(e&wa),l:Number(e>>Va&wa)}:{h:0|Number(e>>Va&wa),l:0|Number(e&wa)}}function Sa(e,t=!1){let n=new Uint32Array(e.length),r=new Uint32Array(e.length);for(let a=0;ae<>>32-n,_a=(e,t,n)=>t<>>32-n,Pa=(e,t,n)=>t<>>64-n,Ma=(e,t,n)=>e<>>64-n;const Ia={fromBig:Ta,split:Sa,toBig:(e,t)=>BigInt(e>>>0)<>>0),shrSH:(e,t,n)=>e>>>n,shrSL:(e,t,n)=>e<<32-n|t>>>n,rotrSH:(e,t,n)=>e>>>n|t<<32-n,rotrSL:(e,t,n)=>e<<32-n|t>>>n,rotrBH:(e,t,n)=>e<<64-n|t>>>n-32,rotrBL:(e,t,n)=>e>>>n-32|t<<64-n,rotr32H:(e,t)=>t,rotr32L:(e,t)=>e,rotlSH:ka,rotlSL:_a,rotlBH:Pa,rotlBL:Ma,add:function(e,t,n,r){const a=(t>>>0)+(r>>>0);return{h:e+n+(a/2**32|0)|0,l:0|a}},add3L:(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0),add3H:(e,t,n,r)=>t+n+r+(e/2**32|0)|0,add4L:(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0),add4H:(e,t,n,r,a)=>t+n+r+a+(e/2**32|0)|0,add5H:(e,t,n,r,a,i)=>t+n+r+a+i+(e/2**32|0)|0,add5L:(e,t,n,r,a)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(a>>>0)},Na=Ia,Ea=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Oa=new Uint32Array(32);function Aa(e,t,n,r,a,i){const s=a[i],o=a[i+1];let c=Oa[2*e],d=Oa[2*e+1],u=Oa[2*t],l=Oa[2*t+1],f=Oa[2*n],p=Oa[2*n+1],h=Oa[2*r],b=Oa[2*r+1],m=Na.add3L(c,u,s);d=Na.add3H(m,d,l,o),c=0|m,({Dh:b,Dl:h}={Dh:b^d,Dl:h^c}),({Dh:b,Dl:h}={Dh:Na.rotr32H(b,h),Dl:Na.rotr32L(b,h)}),({h:p,l:f}=Na.add(p,f,b,h)),({Bh:l,Bl:u}={Bh:l^p,Bl:u^f}),({Bh:l,Bl:u}={Bh:Na.rotrSH(l,u,24),Bl:Na.rotrSL(l,u,24)}),Oa[2*e]=c,Oa[2*e+1]=d,Oa[2*t]=u,Oa[2*t+1]=l,Oa[2*n]=f,Oa[2*n+1]=p,Oa[2*r]=h,Oa[2*r+1]=b}function Ca(e,t,n,r,a,i){const s=a[i],o=a[i+1];let c=Oa[2*e],d=Oa[2*e+1],u=Oa[2*t],l=Oa[2*t+1],f=Oa[2*n],p=Oa[2*n+1],h=Oa[2*r],b=Oa[2*r+1],m=Na.add3L(c,u,s);d=Na.add3H(m,d,l,o),c=0|m,({Dh:b,Dl:h}={Dh:b^d,Dl:h^c}),({Dh:b,Dl:h}={Dh:Na.rotrSH(b,h,16),Dl:Na.rotrSL(b,h,16)}),({h:p,l:f}=Na.add(p,f,b,h)),({Bh:l,Bl:u}={Bh:l^p,Bl:u^f}),({Bh:l,Bl:u}={Bh:Na.rotrBH(l,u,63),Bl:Na.rotrBL(l,u,63)}),Oa[2*e]=c,Oa[2*e+1]=d,Oa[2*t]=u,Oa[2*t+1]=l,Oa[2*n]=f,Oa[2*n+1]=p,Oa[2*r]=h,Oa[2*r+1]=b}class Ha extends va{constructor(e={}){super(128,void 0===e.dkLen?64:e.dkLen,e,64,16,16),this.v0l=0|Ea[0],this.v0h=0|Ea[1],this.v1l=0|Ea[2],this.v1h=0|Ea[3],this.v2l=0|Ea[4],this.v2h=0|Ea[5],this.v3l=0|Ea[6],this.v3h=0|Ea[7],this.v4l=0|Ea[8],this.v4h=0|Ea[9],this.v5l=0|Ea[10],this.v5h=0|Ea[11],this.v6l=0|Ea[12],this.v6h=0|Ea[13],this.v7l=0|Ea[14],this.v7h=0|Ea[15];const t=e.key?e.key.length:0;if(this.v0l^=this.outputLen|t<<8|65536|1<<24,e.salt){const t=oa(ha(e.salt));this.v4l^=fa(t[0]),this.v4h^=fa(t[1]),this.v5l^=fa(t[2]),this.v5h^=fa(t[3])}if(e.personalization){const t=oa(ha(e.personalization));this.v6l^=fa(t[0]),this.v6h^=fa(t[1]),this.v7l^=fa(t[2]),this.v7h^=fa(t[3])}if(e.key){const t=new Uint8Array(this.blockLen);t.set(ha(e.key)),this.update(t)}}get(){let{v0l:e,v0h:t,v1l:n,v1h:r,v2l:a,v2h:i,v3l:s,v3h:o,v4l:c,v4h:d,v5l:u,v5h:l,v6l:f,v6h:p,v7l:h,v7h:b}=this;return[e,t,n,r,a,i,s,o,c,d,u,l,f,p,h,b]}set(e,t,n,r,a,i,s,o,c,d,u,l,f,p,h,b){this.v0l=0|e,this.v0h=0|t,this.v1l=0|n,this.v1h=0|r,this.v2l=0|a,this.v2h=0|i,this.v3l=0|s,this.v3h=0|o,this.v4l=0|c,this.v4h=0|d,this.v5l=0|u,this.v5h=0|l,this.v6l=0|f,this.v6h=0|p,this.v7l=0|h,this.v7h=0|b}compress(e,t,n){this.get().forEach(((e,t)=>Oa[t]=e)),Oa.set(Ea,16);let{h:r,l:a}=Na.fromBig(BigInt(this.length));Oa[24]=Ea[8]^a,Oa[25]=Ea[9]^r,n&&(Oa[28]=~Oa[28],Oa[29]=~Oa[29]);let i=0;const s=ga;for(let o=0;o<12;o++)Aa(0,4,8,12,e,t+2*s[i++]),Ca(0,4,8,12,e,t+2*s[i++]),Aa(1,5,9,13,e,t+2*s[i++]),Ca(1,5,9,13,e,t+2*s[i++]),Aa(2,6,10,14,e,t+2*s[i++]),Ca(2,6,10,14,e,t+2*s[i++]),Aa(3,7,11,15,e,t+2*s[i++]),Ca(3,7,11,15,e,t+2*s[i++]),Aa(0,5,10,15,e,t+2*s[i++]),Ca(0,5,10,15,e,t+2*s[i++]),Aa(1,6,11,12,e,t+2*s[i++]),Ca(1,6,11,12,e,t+2*s[i++]),Aa(2,7,8,13,e,t+2*s[i++]),Ca(2,7,8,13,e,t+2*s[i++]),Aa(3,4,9,14,e,t+2*s[i++]),Ca(3,4,9,14,e,t+2*s[i++]);this.v0l^=Oa[0]^Oa[16],this.v0h^=Oa[1]^Oa[17],this.v1l^=Oa[2]^Oa[18],this.v1h^=Oa[3]^Oa[19],this.v2l^=Oa[4]^Oa[20],this.v2h^=Oa[5]^Oa[21],this.v3l^=Oa[6]^Oa[22],this.v3h^=Oa[7]^Oa[23],this.v4l^=Oa[8]^Oa[24],this.v4h^=Oa[9]^Oa[25],this.v5l^=Oa[10]^Oa[26],this.v5h^=Oa[11]^Oa[27],this.v6l^=Oa[12]^Oa[28],this.v6h^=Oa[13]^Oa[29],this.v7l^=Oa[14]^Oa[30],this.v7h^=Oa[15]^Oa[31],Oa.fill(0)}destroy(){this.destroyed=!0,this.buffer32.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Ra=ya((e=>new Ha(e)));var Ba=n(8319),La=n(58861);const za=$e.Mn.crypto;const Ua={getRandomValues:function(e){return za.getRandomValues(e)}},Da={crypto:Ua};class qa{__internal__bridge;constructor(e){this.__internal__bridge=e}abort=()=>{throw new Error("abort")};__wbindgen_is_undefined=e=>void 0===this.__internal__bridge.getObject(e);__wbindgen_throw=(e,t)=>{throw new Error(this.__internal__bridge.getString(e,t))};__wbg_self_1b7a39e3a92c949c=()=>this.__internal__bridge.addObject(Da);__wbg_require_604837428532a733=(e,t)=>{throw new Error(`Unable to require ${this.__internal__bridge.getString(e,t)}`)};__wbg_crypto_968f1772287e2df0=e=>this.__internal__bridge.addObject(Ua);__wbg_getRandomValues_a3d34b4fee3c2869=e=>this.__internal__bridge.addObject(Ua.getRandomValues);__wbg_getRandomValues_f5e14ab7ac8e995d=(e,t,n)=>{Ua.getRandomValues(this.__internal__bridge.getU8a(t,n))};__wbg_randomFillSync_d5bd2d655fdf256a=(e,t,n)=>{throw new Error("randomFillsync is not available")};__wbindgen_object_drop_ref=e=>{this.__internal__bridge.takeObject(e)}}function ja(e,t,n){return async r=>{const a={error:null,type:"none",wasm:null};try{if(!t?.length)throw new Error("No WebAssembly provided for initialization");if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw new Error("WebAssembly is not available in your environment");const e=await WebAssembly.instantiate(t,{wbg:r});a.wasm=e.instance.exports,a.type="wasm"}catch(i){"function"==typeof n?(a.wasm=n(r),a.type="asm"):(a.error=`FATAL: Unable to initialize @polkadot/wasm-${e}:: ${i.message}`,console.error(a.error))}return a}}const Fa=Uint8Array,Xa=Uint16Array,Wa=Uint32Array,Za=new Fa([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ga=new Fa([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Ka=new Fa([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Ja=(e,t)=>{const n=new Xa(31);for(let a=0;a<31;++a)n[a]=t+=1<>>1|(21845&bV)<<1;e=(52428&e)>>>2|(13107&e)<<2,e=(61680&e)>>>4|(3855&e)<<4,ei[bV]=((65280&e)>>>8|(255&e)<<8)>>>1}const ti=(e,t,n)=>{const r=e.length;let a=0;const i=new Xa(t);for(;a>n]=r}}else for(o=new Xa(r),a=0;a>15-e[a]);return o},ni=new Fa(288);for(let bV=0;bV<144;++bV)ni[bV]=8;for(let bV=144;bV<256;++bV)ni[bV]=9;for(let bV=256;bV<280;++bV)ni[bV]=7;for(let bV=280;bV<288;++bV)ni[bV]=8;const ri=new Fa(32);for(let bV=0;bV<32;++bV)ri[bV]=5;const ai=ti(ni,9,1),ii=ti(ri,5,1),si=(e,t,n)=>{const r=t>>>3;return(e[r]|e[r+1]<<8)>>>(7&t)&n},oi=(e,t)=>{const n=t>>>3;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>>(7&t)},ci=e=>{let t=e[0];for(let n=1,r=e.length;nt&&(t=e[n]);return t},di=(e,t,n)=>{const r=!n||n.i;n||(n={});const a=e.length,i=!t||!r;t||(t=new Fa(3*a));const s=e=>{let n=t.length;if(e>n){const r=new Fa(Math.max(n<<1,e));r.set(t),t=r}};let o=n.f||0,c=n.p||0,d=n.b||0,u=n.l,l=n.d,f=n.m,p=n.n;if(o&&!u)return t;const h=a<<3;do{if(!u){n.f=o=si(e,c,1);const m=si(e,c+1,3);if(c+=3,!m){const o=((b=c)>>>3)+(7&b&&1)+4,u=e[o-4]|e[o-3]<<8,l=o+u;if(l>a){if(r)throw"unexpected EOF";break}i&&s(d+u),t.set(e.subarray(o,l),d),n.b=d+=u,n.p=c=l<<3;continue}if(1==m)u=ai,l=ii,f=9,p=5;else{if(2!=m)throw"invalid block type";{const t=si(e,c,31)+257,n=si(e,c+10,15)+4,a=t+si(e,c+5,31)+1;c+=14;const i=new Fa(a),s=new Fa(19);for(let r=0;rh)break;const b=ti(s,o,1);for(let r=0;r>>4;if(n<16)i[r++]=n;else{let t=0,a=0;for(16==n?(a=3+si(e,c,3),c+=2,t=i[r-1]):17==n?(a=3+si(e,c,7),c+=3):18==n&&(a=11+si(e,c,127),c+=7);a--;)i[r++]=t}}const m=i.subarray(0,t),y=i.subarray(t);f=ci(m),p=ci(y),u=ti(m,f,1),l=ti(y,p,1)}}if(c>h)throw"unexpected EOF"}i&&s(d+131072);const m=(1<>>4;if(c+=15&n,c>h)throw"unexpected EOF";if(!n)throw"invalid length/literal";if(r<256)t[d++]=r;else{if(256==r){u=void 0;break}{let n=r-254;if(r>264){const t=r-257,a=Ga[t];n=si(e,c,(1<>>4;if(!a)throw"invalid distance";c+=15&a;let u=$a[o];if(o>3){const t=Ka[o];u+=oi(e,c)&(1<h)throw"unexpected EOF";i&&s(d+131072);const f=d+n;for(;d{(null==t||t<0)&&(t=0),(null==n||n>e.length)&&(n=e.length);const r=new(e instanceof Xa?Xa:e instanceof Wa?Wa:Fa)(n-t);return r.set(e.subarray(t,n)),r})(t,0,d)};function ui(e,t){return di(((e=>{if(8!=(15&e[0])||e[0]>>>4>7||(e[0]<<8|e[1])%31)throw"invalid zlib data";if(32&e[1])throw"invalid zlib data: preset dictionaries not supported"})(e),e.subarray(2,-4)),t)}const li="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fi=new Array(256);for(let bV=0,mV=64;bV=8&&(t[++a]=n>>>(r-=8)&255);return t}(pi.ee,new Uint8Array(pi.$o)),new Uint8Array(pi.qO)),bi=ja("crypto",hi,null),mi=new class{__internal__createWasm;__internal__heap;__internal__wbg;__internal__cachegetInt32;__internal__cachegetUint8;__internal__heapNext;__internal__wasm;__internal__wasmError;__internal__wasmPromise;__internal__type;constructor(e){this.__internal__createWasm=e,this.__internal__cachegetInt32=null,this.__internal__cachegetUint8=null,this.__internal__heap=new Array(32).fill(void 0).concat(void 0,null,!0,!1),this.__internal__heapNext=this.__internal__heap.length,this.__internal__type="none",this.__internal__wasm=null,this.__internal__wasmError=null,this.__internal__wasmPromise=null,this.__internal__wbg={...new qa(this)}}get error(){return this.__internal__wasmError}get type(){return this.__internal__type}get wasm(){return this.__internal__wasm}async init(e){this.__internal__wasmPromise&&!e||(this.__internal__wasmPromise=(e||this.__internal__createWasm)(this.__internal__wbg));const{error:t,type:n,wasm:r}=await this.__internal__wasmPromise;return this.__internal__type=n,this.__internal__wasm=r,this.__internal__wasmError=t,this.__internal__wasm}getObject(e){return this.__internal__heap[e]}dropObject(e){e<36||(this.__internal__heap[e]=this.__internal__heapNext,this.__internal__heapNext=e)}takeObject(e){const t=this.getObject(e);return this.dropObject(e),t}addObject(e){this.__internal__heapNext===this.__internal__heap.length&&this.__internal__heap.push(this.__internal__heap.length+1);const t=this.__internal__heapNext;return this.__internal__heapNext=this.__internal__heap[t],this.__internal__heap[t]=e,t}getInt32(){return null!==this.__internal__cachegetInt32&&this.__internal__cachegetInt32.buffer===this.__internal__wasm.memory.buffer||(this.__internal__cachegetInt32=new Int32Array(this.__internal__wasm.memory.buffer)),this.__internal__cachegetInt32}getUint8(){return null!==this.__internal__cachegetUint8&&this.__internal__cachegetUint8.buffer===this.__internal__wasm.memory.buffer||(this.__internal__cachegetUint8=new Uint8Array(this.__internal__wasm.memory.buffer)),this.__internal__cachegetUint8}getU8a(e,t){return this.getUint8().subarray(e/1,e/1+t)}getString(e,t){return nt(this.getU8a(e,t))}allocU8a(e){const t=this.__internal__wasm.__wbindgen_malloc(1*e.length);return this.getUint8().set(e,t/1),[t,e.length]}allocString(e){return this.allocU8a((0,La.j)(e))}resultU8a(){const e=this.getInt32()[2],t=this.getInt32()[3],n=this.getU8a(e,t).slice();return this.__internal__wasm.__wbindgen_free(e,1*t),n}resultString(){return nt(this.resultU8a())}}(bi);function yi(e){return(...t)=>{if(!mi.wasm)throw new Error("The WASM interface has not been initialized. Ensure that you wait for the initialization Promise with waitReady() from @polkadot/wasm-crypto (or cryptoWaitReady() from @polkadot/util-crypto) before attempting to use WASM-only interfaces.");return e(mi.wasm,...t)}}const xi=yi(((e,t)=>(e.ext_secp_pub_expand(8,...mi.allocU8a(t)),mi.resultU8a()))),gi=yi(((e,t,n,r)=>(e.ext_blake2b(8,...mi.allocU8a(t),...mi.allocU8a(n),r),mi.resultU8a()))),vi=yi(((e,t)=>(e.ext_keccak256(8,...mi.allocU8a(t)),mi.resultU8a()))),wi=yi(((e,t)=>(e.ext_keccak512(8,...mi.allocU8a(t)),mi.resultU8a()))),Vi=yi(((e,t,n)=>(e.ext_twox(8,...mi.allocU8a(t),n),mi.resultU8a())));function Ti(){return!!mi.wasm}async function Si(){try{const e=await async function(e){return mi.init(e)}();return!!e}catch{return!1}}function ki(e){return(...t)=>(0,N.X)(e(...t))}function _i(e,t){return(n,r=256,a)=>{const i=(0,E.e)(n);return!Ba.CW||!a&&Ti()?e[r](i):t[r](i)}}function Pi(e,t=256,n,r){const a=Math.ceil(t/8),i=(0,E.e)(e);return!Ba.CW||!r&&Ti()?gi(i,(0,E.e)(n),a):Ra(i,n?{dkLen:a,key:n}:{dkLen:a})}const Mi=ki(Pi),Ii={extrinsic:{},payload:{}},Ni={LimitParathreadCommits:Ii,OnlyStakingAndClaims:Ii,PrevalidateAttests:Ii,RestrictFunctionality:Ii,TransactionCallFilter:Ii,ValidateDoubleVoteReports:Ii},Ei={DisallowSigned:Ii},Oi={extrinsic:{era:"ExtrinsicEra"},payload:{blockHash:"Hash"}},Ai={extrinsic:{tip:"Compact"},payload:{}},Ci={ChargeTransactionPayment:Ai,CheckBlockGasLimit:Ii,CheckEra:Oi,CheckGenesis:{extrinsic:{},payload:{genesisHash:"Hash"}},CheckMetadataHash:{extrinsic:{mode:"u8"},payload:{metadataHash:"Option<[u8;32]>"}},CheckMortality:Oi,CheckNonZeroSender:Ii,CheckNonce:{extrinsic:{nonce:"Compact"},payload:{}},CheckSpecVersion:{extrinsic:{},payload:{specVersion:"u32"}},CheckTxVersion:{extrinsic:{},payload:{transactionVersion:"u32"}},CheckVersion:{extrinsic:{},payload:{specVersion:"u32"}},CheckWeight:Ii,LockStakingStatus:Ii,SkipCheckIfFeeless:Ai,ValidateEquivocationReport:Ii},Hi=(0,M.b)({},Ci,Ni,Ei,{ChargeAssetTxPayment:{extrinsic:{tip:"Compact",assetId:"TAssetConversion"},payload:{}}}),Ri=["CheckVersion","CheckGenesis","CheckEra","CheckNonce","CheckWeight","ChargeTransactionPayment","CheckBlockGasLimit"];function Bi(e,t,n={}){return e.map((e=>n[e]||Hi[e])).filter((e=>!!e)).reduce(((e,n)=>(0,M.b)(e,n[t])),{})}class Li extends Kn{__internal__meta;__internal__method;__internal__names=null;__internal__section;__internal__typeDef;constructor(e,t,n,r="",a=""){const i=n?.fields||[];super(e,i.map((({type:t})=>e.createLookupType(t))),t),this.__internal__meta=n,this.__internal__method=a,this.__internal__section=r,this.__internal__typeDef=i.map((({type:t})=>e.lookup.getTypeDef(t)));const s=i.map((({name:t})=>e.lookup.sanitizeField(t)[0])).filter((e=>!!e));s.length===i.length&&(this.__internal__names=s,De(this,s,((e,t)=>this[t])))}get meta(){return this.__internal__meta}get method(){return this.__internal__method}get names(){return this.__internal__names}get section(){return this.__internal__section}get typeDef(){return this.__internal__typeDef}toHuman(e,t){if(null!==this.__internal__names){const n={};for(let r=0,a=this.__internal__names.length;re.toString()))}:null,super.toHuman(e,t))}}class Ui{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__raw;constructor(e,t,n){this.initialU8aLength=n,this.__internal__raw=t,this.registry=e}get encodedLength(){return this.toU8a().length}get hash(){return this.registry.hash(this.toU8a())}get inner(){return this.__internal__raw}get isEmpty(){return this.__internal__raw.isEmpty}eq(e){return this.__internal__raw.eq(e)}inspect(){return this.__internal__raw.inspect()}toHex(e){return this.__internal__raw.toHex(e)}toHuman(e,t){return this.__internal__raw.toHuman(e,t)}toJSON(){return this.__internal__raw.toJSON()}toPrimitive(e){return this.__internal__raw.toPrimitive(e)}toString(){return this.__internal__raw.toString()}toU8a(e){return this.__internal__raw.toU8a(e)}unwrap(){return this.__internal__raw}valueOf(){return this.__internal__raw}}const Di=new Uint8Array,qi=new Uint8Array([0]),ji="bare",Fi=["ExtrinsicUnknown","ExtrinsicUnknown","ExtrinsicUnknown","ExtrinsicUnknown","ExtrinsicV4","ExtrinsicV5"],Xi={bare:"ExtrinsicV5",general:"GeneralExtrinsic"},Wi=0,Zi=64,Gi={0:"bare",64:"general"};function Ki(e,t,n,r){if(t instanceof Qi)return t.unwrap();const a=!(128&~n),i=5==(63&n)?Xi[r]:Fi[63&n]||Fi[0];return e.createTypeUnsafe(i,[t,{isSigned:a,version:n}])}function Ji(e,t,n=4,r=ji){return(0,ut.b)(t)||Array.isArray(t)||(0,Je.qv)(t)?function(e,t,n,r){if(!t.length)return Ki(e,new Uint8Array,n,r);const[a,i]=ct(t),s=a+i.toNumber();if(s>t.length)throw new Error(`Extrinsic: length less than remainder, expected at least ${s}, found ${t.length}`);const o=t.subarray(a,s),c=192&o[0];return Ki(e,"general"===Gi[`${c}`]?t:o.subarray(1),o[0],Gi[`${c}`]||r)}(e,(0,E.e)(t),n,r):t instanceof e.createClassUnsafe("Call")?Ki(e,{method:t},n,r):Ki(e,t,n,r)}class Yi extends Ui{__internal__preamble;constructor(e,t,n,r){super(e,t,n);const a=Object.keys(e.getSignedExtensionTypes());if(5===this.version&&"general"!==r){const e=e=>this.inner.signature[e];for(let t=0,n=a.length;t>12,1),o=(a>>4)*s;if(i<4||o>=i)throw new Error("Invalid data passed to Mortal era");return[new $i(e,i),new $i(e,o)]}(e,(0,E.e)(t));if(!t)return[new $i(e),new $i(e)];if((0,Xe.G)(t))return function(e,t){const{current:n,period:r}=t;let a=Math.pow(2,Math.ceil(Math.log2(r)));a=Math.min(Math.max(a,4),65536);const i=n%a,s=Math.max(a>>12,1),o=i/s*s;return[new $i(e,a),new $i(e,o)]}(e,t);throw new Error("Invalid data passed to Mortal era")}function ns(e=new Uint8Array){if((0,ut.b)(e))return e.length&&0!==e[0]?new Uint8Array([1,e[0],e[1]]):new Uint8Array([0]);if(!e)return new Uint8Array([0]);if(e instanceof is)return ns(e.toU8a());if((0,Je.qv)(e))return ns((0,es.V)(e));if((0,Xe.G)(e)){const t=Object.entries(e).map((([e,t])=>[e.toLowerCase(),t])),n=t.find((([e])=>"mortalera"===e.toLowerCase())),r=t.find((([e])=>"immortalera"===e.toLowerCase()));return n?{MortalEra:n[1]}:r?{ImmortalEra:r[1]}:{MortalEra:e}}throw new Error("Invalid data passed to Era")}class rs extends rt{constructor(e,t){super(e,qi)}}class as extends Kn{constructor(e,t){super(e,{period:$i,phase:$i},ts(e,t))}get encodedLength(){return 2}get period(){return this[0]}get phase(){return this[1]}toHuman(){return{period:Dn(this.period),phase:Dn(this.phase)}}toJSON(){return this.toHex()}toU8a(e){const t=this.period.toNumber(),n=Math.min(15,Math.max(1,function(e){const t=e.toString(2);let n=0;for(;"0"===t[t.length-1-n];)n++;return n}(t)-1))+(this.phase.toNumber()/Math.max(t>>12,1)<<4);return new Uint8Array([255&n,n>>8])}birth(e){const t=this.phase.toNumber(),n=this.period.toNumber();return~~((Math.max(kt(e).toNumber(),t)-t)/n)*n+t}death(e){return this.birth(e)+this.period.toNumber()}}class is extends nn{constructor(e,t){super(e,{ImmortalEra:rs,MortalEra:as},ns(t))}get encodedLength(){return this.isImmortalEra?this.asImmortalEra.encodedLength:this.asMortalEra.encodedLength}get asImmortalEra(){if(!this.isImmortalEra)throw new Error(`Cannot convert '${this.type}' via asImmortalEra`);return this.inner}get asMortalEra(){if(!this.isMortalEra)throw new Error(`Cannot convert '${this.type}' via asMortalEra`);return this.inner}get isImmortalEra(){return 0===this.index}get isMortalEra(){return this.index>0}toU8a(e){return this.isMortalEra?this.asMortalEra.toU8a(e):this.asImmortalEra.toU8a(e)}}const ss=["ExtrinsicPayloadUnknown","ExtrinsicPayloadUnknown","ExtrinsicPayloadUnknown","ExtrinsicPayloadUnknown","ExtrinsicPayloadV4","ExtrinsicPayloadV5"],os={bare:"ExtrinsicPayloadV5",general:"ExtrinsicPayloadV5"};class cs extends Ui{constructor(e,t,{preamble:n,version:r}={}){super(e,function(e,t,n=5,r=ji){if(t instanceof cs)return t.unwrap();const a=5===n?os[r]:ss[n]||ss[0];if(t&&t.assetId&&(0,Je.qv)(t.assetId)){const r=e.createType("TAssetConversion",(0,es.V)(t.assetId));if("0x00"===t.assetId||t.assetId==="0x01"+r.toHex().slice(2)){const i={...t,assetId:r.toJSON()};return e.createTypeUnsafe(a,[i,{version:n}])}}return e.createTypeUnsafe(a,[t,{version:n}])}(e,t,r,n))}get blockHash(){return this.inner.blockHash}get era(){return this.inner.era}get genesisHash(){return this.inner.genesisHash||this.registry.createTypeUnsafe("Hash",[])}get method(){return this.inner.method}get nonce(){return this.inner.nonce}get specVersion(){return this.inner.specVersion||this.registry.createTypeUnsafe("u32",[])}get tip(){return this.inner.tip||this.registry.createTypeUnsafe("Compact",[])}get transactionVersion(){return this.inner.transactionVersion||this.registry.createTypeUnsafe("u32",[])}get assetId(){return this.inner.assetId}get metadataHash(){return this.inner.metadataHash}eq(e){return this.inner.eq(e)}sign(e){const t=this.inner.sign(e);return{signature:(0,N.X)(t)}}toHuman(e,t){return this.inner.toHuman(e,t)}toJSON(){return this.toHex()}toRawType(){return"ExtrinsicPayload"}toString(){return this.toHex()}toU8a(e){return super.toU8a(!!e&&{method:!0})}}class ds extends dn{constructor(e,t,{version:n=0}={}){throw super(e,{}),new Error(`Unsupported extrinsic payload version ${n}`)}}class us extends dn{constructor(e,t,{isSigned:n=!1,version:r=0}={}){throw super(e,{}),new Error(`Unsupported ${n?"":"un"}signed extrinsic version ${127&r}`)}}const ls={address:"Address",assetId:"Option",blockHash:"Hash",blockNumber:"BlockNumber",era:"ExtrinsicEra",genesisHash:"Hash",metadataHash:"Option<[u8;32]>",method:"Call",mode:"u8",nonce:"Compact",runtimeVersion:"RuntimeVersion",signedExtensions:"Vec",tip:"Compact",version:"u8"};class fs extends dn{__internal__extraTypes;constructor(e,t){const n=(0,M.b)({},e.getSignedExtensionTypes(),e.getSignedExtensionExtra());super(e,(0,M.b)({},n,ls,{withSignedTransaction:"bool"}),t),this.__internal__extraTypes={};const r=e=>this.get(e);for(const[a,i]of Object.entries(n))ls[a]||(this.__internal__extraTypes[a]=i),Ue(this,a,r)}get address(){return this.getT("address")}get blockHash(){return this.getT("blockHash")}get blockNumber(){return this.getT("blockNumber")}get era(){return this.getT("era")}get genesisHash(){return this.getT("genesisHash")}get method(){return this.getT("method")}get nonce(){return this.getT("nonce")}get runtimeVersion(){return this.getT("runtimeVersion")}get signedExtensions(){return this.getT("signedExtensions")}get tip(){return this.getT("tip")}get assetId(){return this.getT("assetId")}get version(){return this.getT("version")}get mode(){return this.getT("mode")}get metadataHash(){return this.getT("metadataHash")}get withSignedTransaction(){return this.getT("withSignedTransaction").isTrue}toPayload(){const e={},t=Object.keys(this.__internal__extraTypes);for(let n=0,r=t.length;ne.toString())),specVersion:this.runtimeVersion.specVersion.toHex(),tip:this.tip.toHex(),transactionVersion:this.runtimeVersion.transactionVersion.toHex(),version:this.version.toNumber(),withSignedTransaction:this.withSignedTransaction})}toRaw(){const e=this.toPayload(),t=(0,N.X)(this.registry.createTypeUnsafe("ExtrinsicPayload",[e,{version:e.version}]).toU8a({method:!0}));return{address:e.address,data:t,type:"payload"}}}class ps extends dn{constructor(e,t,{isSigned:n}={}){super(e,{signature:"ExtrinsicSignatureV4",method:"Call"},ps.decodeExtrinsic(e,t,n))}static decodeExtrinsic(e,t,n=!1){if(t instanceof ps)return t;if(t instanceof e.createClassUnsafe("Call"))return{method:t};if((0,ut.b)(t)){const r=e.createTypeUnsafe("ExtrinsicSignatureV4",[t,{isSigned:n}]);return{method:e.createTypeUnsafe("Call",[t.subarray(r.encodedLength)]),signature:r}}return t||{}}get encodedLength(){return this.toU8a().length}get method(){return this.getT("method")}get signature(){return this.getT("signature")}get version(){return 4}addSignature(e,t,n){return this.signature.addSignature(e,t,n),this}sign(e,t){return this.signature.sign(this.method,e,t),this}signFake(e,t){return this.signature.signFake(this.method,e,t),this}}class hs extends dn{__internal__signOptions;constructor(e,t){super(e,(0,M.b)({method:"Bytes"},e.getSignedExtensionTypes(),e.getSignedExtensionExtra()),t),this.__internal__signOptions={withType:e.createTypeUnsafe("ExtrinsicSignature",[])instanceof nn}}inspect(){return super.inspect({method:!0})}get blockHash(){return this.getT("blockHash")}get era(){return this.getT("era")}get genesisHash(){return this.getT("genesisHash")}get method(){return this.getT("method")}get nonce(){return this.getT("nonce")}get specVersion(){return this.getT("specVersion")}get tip(){return this.getT("tip")}get transactionVersion(){return this.getT("transactionVersion")}get assetId(){return this.getT("assetId")}get metadataHash(){return this.getT("metadataHash")}sign(e){return function(e,t,n,r){const a=n.length>256?e.hash(n):n;return t.sign(a,r)}(this.registry,e,this.toU8a({method:!0}),this.__internal__signOptions)}}const bs=new Uint8Array(256).fill(1);function ms(e,t){return e.createTypeUnsafe("Address",[(0,ut.b)(t)?(0,N.X)(t):t])}class ys extends dn{__internal__signKeys;constructor(e,t,{isSigned:n}={}){const r=e.getSignedExtensionTypes();super(e,(0,M.b)({signer:"Address",signature:"ExtrinsicSignature"},r),ys.decodeExtrinsicSignature(t,n)),this.__internal__signKeys=Object.keys(r),De(this,this.__internal__signKeys,(e=>this.get(e)))}static decodeExtrinsicSignature(e,t=!1){return e&&(e instanceof ys||t)?e:Di}get encodedLength(){return this.isSigned?super.encodedLength:0}get isSigned(){return!this.signature.isEmpty}get era(){return this.getT("era")}get nonce(){return this.getT("nonce")}get signature(){return this.multiSignature.value||this.multiSignature}get multiSignature(){return this.getT("signature")}get signer(){return this.getT("signer")}get tip(){return this.getT("tip")}get assetId(){return this.getT("assetId")}get mode(){return this.getT("mode")}get metadataHash(){return this.getT("metadataHash")}_injectSignature(e,t,n){for(let r=0,a=this.__internal__signKeys.length;rthis.get(e)))}static decodeExtrinsicSignature(e,t=!1){return e&&(e instanceof vs||t)?e:Di}get encodedLength(){return this.isSigned?super.encodedLength:0}get isSigned(){return!this.signature.isEmpty}get era(){return this.getT("era")}get nonce(){return this.getT("nonce")}get signature(){return this.multiSignature.value||this.multiSignature}get multiSignature(){return this.getT("signature")}get signer(){return this.getT("signer")}get tip(){return this.getT("tip")}get assetId(){return this.getT("assetId")}get mode(){return this.getT("mode")}get metadataHash(){return this.getT("metadataHash")}get transactionExtensionVersion(){return this.getT("transactionExtensionVersion")}_injectSignature(e,t,n){throw new Error("Extrinsic: ExtrinsicV5 does not include signing support")}addSignature(e,t,n){throw new Error("Extrinsic: ExtrinsicV5 does not include signing support")}createPayload(e,t){const{era:n,runtimeVersion:{specVersion:r,transactionVersion:a}}=t;return new gs(this.registry,(0,M.b)({},t,{era:n||qi,method:e.toHex(),specVersion:r,transactionVersion:a}))}sign(e,t,n){throw new Error("Extrinsic: ExtrinsicV5 does not include signing support")}signFake(e,t,n){throw new Error("Extrinsic: ExtrinsicV5 does not include signing support")}toU8a(e){return this.isSigned?super.toU8a(e):Di}}class ws extends dn{__internal__version;__internal__preamble;constructor(e,t,n){const r=e.getSignedExtensionTypes();super(e,(0,M.b)({transactionExtensionVersion:"u8"},r,{method:"Call"}),ws.decodeExtrinsic(e,t)),this.__internal__version=n?.version||5,this.__internal__preamble=64}static decodeExtrinsic(e,t){if(!t)return Di;if(t instanceof ws)return t;if((0,ut.b)(t)||Array.isArray(t)||(0,Je.qv)(t))return function(e){if(!e.length)return new Uint8Array;const[t,n]=ct(e),r=t+n.toNumber();if(r>e.length)throw new Error(`Extrinsic: length less than remainder, expected at least ${r}, found ${e.length}`);const a=e.subarray(t,r);if(69!==a[0])throw new Error("Extrinsic: incorrect version for General Transactions, expected 5, found "+(127&a[0]));return a.subarray(1)}((0,E.e)(t));if((0,Xe.G)(t)){const{payload:n,transactionExtensionVersion:r}=t;return(0,M.b)(n||{},{transactionExtensionVersion:r||e.getTransactionExtensionVersion()})}return{}}get encodedLength(){return super.encodedLength}get era(){return this.getT("era")}get nonce(){return this.getT("nonce")}get tip(){return this.getT("tip")}get assetId(){return this.getT("assetId")}get mode(){return this.getT("mode")}get metadataHash(){return this.getT("metadataHash")}get transactionExtensionVersion(){return this.getT("transactionExtensionVersion")}get method(){return this.getT("method")}get version(){return this.__internal__version}get preamble(){return this.__internal__preamble}toHex(e){return(0,N.X)(this.toU8a(e))}toU8a(e){return e?this.encode():ar(this.encode())}toRawType(){return"GeneralExt"}encode(){return Mt(new Uint8Array([this.version|this.preamble]),super.toU8a())}signFake(){throw new Error("Extrinsic: Type GeneralExtrinsic does not have signFake implemented")}addSignature(){throw new Error("Extrinsic: Type GeneralExtrinsic does not have addSignature implemented")}sign(){throw new Error("Extrinsic: Type GeneralExtrinsic does not have sign implemented")}signature(){throw new Error("Extrinsic: Type GeneralExtrinsic does not have the signature getter")}}function Vs(e){if(!Number.isSafeInteger(e))throw new Error(`Wrong integer: ${e}`)}function Ts(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name}function Ss(...e){const t=e=>e,n=(e,t)=>n=>e(t(n));return{encode:e.map((e=>e.encode)).reduceRight(n,t),decode:e.map((e=>e.decode)).reduce(n,t)}}function ks(e){return{encode:t=>{if(!Array.isArray(t)||t.length&&"number"!=typeof t[0])throw new Error("alphabet.encode input should be an array of numbers");return t.map((t=>{if(Vs(t),t<0||t>=e.length)throw new Error(`Digit index outside alphabet: ${t} (alphabet: ${e.length})`);return e[t]}))},decode:t=>{if(!Array.isArray(t)||t.length&&"string"!=typeof t[0])throw new Error("alphabet.decode input should be array of strings");return t.map((t=>{if("string"!=typeof t)throw new Error(`alphabet.decode: not string element=${t}`);const n=e.indexOf(t);if(-1===n)throw new Error(`Unknown letter: "${t}". Allowed: ${e}`);return n}))}}}function _s(e=""){if("string"!=typeof e)throw new Error("join separator should be string");return{encode:t=>{if(!Array.isArray(t)||t.length&&"string"!=typeof t[0])throw new Error("join.encode input should be array of strings");for(let e of t)if("string"!=typeof e)throw new Error(`join.encode: non-string input=${e}`);return t.join(e)},decode:t=>{if("string"!=typeof t)throw new Error("join.decode input should be string");return t.split(e)}}}function Ps(e,t="="){if(Vs(e),"string"!=typeof t)throw new Error("padding chr should be string");return{encode(n){if(!Array.isArray(n)||n.length&&"string"!=typeof n[0])throw new Error("padding.encode input should be array of strings");for(let e of n)if("string"!=typeof e)throw new Error(`padding.encode: non-string input=${e}`);for(;n.length*e%8;)n.push(t);return n},decode(n){if(!Array.isArray(n)||n.length&&"string"!=typeof n[0])throw new Error("padding.encode input should be array of strings");for(let e of n)if("string"!=typeof e)throw new Error(`padding.decode: non-string input=${e}`);let r=n.length;if(r*e%8)throw new Error("Invalid padding: string should have whole number of bytes");for(;r>0&&n[r-1]===t;r--)if(!((r-1)*e%8))throw new Error("Invalid padding: string has too much padding");return n.slice(0,r)}}}function Ms(e){if("function"!=typeof e)throw new Error("normalize fn should be function");return{encode:e=>e,decode:t=>e(t)}}function Is(e,t,n){if(t<2)throw new Error(`convertRadix: wrong from=${t}, base cannot be less than 2`);if(n<2)throw new Error(`convertRadix: wrong to=${n}, base cannot be less than 2`);if(!Array.isArray(e))throw new Error("convertRadix: data should be array");if(!e.length)return[];let r=0;const a=[],i=Array.from(e);for(i.forEach((e=>{if(Vs(e),e<0||e>=t)throw new Error(`Wrong integer: ${e}`)}));;){let e=0,s=!0;for(let a=r;at?Ns(t,e%t):e,Es=(e,t)=>e+(t-Ns(e,t));function Os(e,t,n,r){if(!Array.isArray(e))throw new Error("convertRadix2: data should be array");if(t<=0||t>32)throw new Error(`convertRadix2: wrong from=${t}`);if(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(Es(t,n)>32)throw new Error(`convertRadix2: carry overflow from=${t} to=${n} carryBits=${Es(t,n)}`);let a=0,i=0;const s=2**n-1,o=[];for(const c of e){if(Vs(c),c>=2**t)throw new Error(`convertRadix2: invalid data word=${c} from=${t}`);if(a=a<32)throw new Error(`convertRadix2: carry overflow pos=${i} from=${t}`);for(i+=t;i>=n;i-=n)o.push((a>>i-n&s)>>>0);a&=2**i-1}if(a=a<=t)throw new Error("Excess padding");if(!r&&a)throw new Error(`Non-zero padding: ${a}`);return r&&i>0&&o.push(a>>>0),o}function As(e){return Vs(e),{encode:t=>{if(!Ts(t))throw new Error("radix.encode input should be Uint8Array");return Is(Array.from(t),256,e)},decode:t=>{if(!Array.isArray(t)||t.length&&"number"!=typeof t[0])throw new Error("radix.decode input should be array of numbers");return Uint8Array.from(Is(t,e,256))}}}function Cs(e,t=!1){if(Vs(e),e<=0||e>32)throw new Error("radix2: bits should be in (0..32]");if(Es(8,e)>32||Es(e,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!Ts(n))throw new Error("radix2.encode input should be Uint8Array");return Os(Array.from(n),8,e,!t)},decode:n=>{if(!Array.isArray(n)||n.length&&"number"!=typeof n[0])throw new Error("radix2.decode input should be array of numbers");return Uint8Array.from(Os(n,e,8,t))}}}const Hs=Ss(Cs(4),ks("0123456789ABCDEF"),_s("")),Rs=Ss(Cs(5),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),Ps(5),_s("")),Bs=(Cs(5),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),_s(""),Cs(5),ks("0123456789ABCDEFGHIJKLMNOPQRSTUV"),Ps(5),_s(""),Cs(5),ks("0123456789ABCDEFGHIJKLMNOPQRSTUV"),_s(""),Cs(5),ks("0123456789ABCDEFGHJKMNPQRSTVWXYZ"),_s(""),Ms((e=>e.toUpperCase().replace(/O/g,"0").replace(/[IL]/g,"1"))),Ss(Cs(6),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),Ps(6),_s(""))),Ls=(Cs(6),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),_s(""),Ss(Cs(6),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),Ps(6),_s(""))),zs=(Cs(6),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),_s(""),e=>Ss(As(58),ks(e),_s(""))),Us=zs("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"),Ds=[0,2,3,5,6,7,9,10,11],qs={encode(e){let t="";for(let n=0;n(new TextDecoder).decode(e),decode:e=>(new TextEncoder).encode(e)};Cs(4),ks("0123456789abcdef"),_s(""),Ms((e=>{if("string"!=typeof e||e.length%2)throw new TypeError(`hex.decode: expected string, got ${typeof e} with length ${e.length}`);return e.toLowerCase()}));function Fs({coder:e,ipfs:t},n){return(r,a)=>(n(r,a),e.decode(t&&a?r.substring(1):r))}function Xs({coder:e,ipfs:t}){return(n,r)=>{const a=e.encode((0,E.e)(n));return t&&r?`${t}${a}`:a}}function Ws({chars:e,ipfs:t,type:n,withPadding:r}){return(a,i)=>{if("string"!=typeof a)throw new Error(`Expected ${n} string input`);if(t&&i&&!a.startsWith(t))throw new Error(`Expected ipfs-compatible ${n} to start with '${t}'`);for(let t=i?1:0,s=a.length;te)),prefix:42};function co(e,t,n=-1){if(!e)throw new Error("Invalid empty address passed");if((0,ut.b)(e)||(0,Je.qv)(e))return(0,E.e)(e);try{const r=Ks(e);if(!oo.allowedEncodedLengths.includes(r.length))throw new Error("Invalid decoded address length");const[a,i,s,o]=function(e){const t=64&e[0]?2:1,n=1===t?e[0]:(63&e[0])<<2|e[1]>>6|(63&e[1])<<8,r=[34+t,35+t].includes(e.length),a=e.length-(r?2:1),i=Qs(e.subarray(0,a));return[!(128&e[0]||[46,47].includes(e[0])||(r?e[e.length-2]!==i[0]||e[e.length-1]!==i[1]:e[e.length-1]!==i[0])),a,t,n]}(r);if(!a&&!t)throw new Error("Invalid decoded address checksum");if(-1!==n&&n!==o)throw new Error(`Expected ss58Format ${n}, received ${o}`);return r.slice(s,i)}catch(r){throw new Error(`Decoding ${e}: ${r.message}`)}}function uo(e,t=oo.prefix){const n=co(e);if(t<0||t>16383||[46,47].includes(t))throw new Error("Out of range ss58Format specified");if(!oo.allowedDecodedLengths.includes(n.length))throw new Error(`Expected a valid key to convert, with length ${oo.allowedDecodedLengths.join(", ")}`);const r=Mt(t<64?[t]:[(252&t)>>2|64,t>>8|(3&t)<<6],n);return Js(Mt(r,Qs(r).subarray(0,[32,33].includes(n.length)?2:1)))}function lo(e){if((0,ut.b)(e)||Array.isArray(e))return(0,E.e)(e);if(!e)return new Uint8Array;if((0,Je.qv)(e))return(0,es.V)(e);if((0,I.K)(e))return co(e.toString());throw new Error("Unknown type passed to AccountId constructor, found typeof "+typeof e)}class fo extends lr{constructor(e,t=264,n){const r=lo(n);if(8*r.lengthe)))throw new Error(`Invalid AccountId provided, expected ${t>>3} bytes, found ${r.length}`);super(e,r,t)}eq(e){return super.eq(lo(e))}toHuman(){return this.toJSON()}toJSON(){return this.toString()}toPrimitive(){return this.toJSON()}toString(){return uo(this,this.registry.chainSS58)}toRawType(){return"AccountId"}}class po extends fo{constructor(e,t){super(e,256,t)}}class ho extends fo{constructor(e,t){super(e,264,t)}}class bo extends(rr.with(32)){__UIntType="u32"}const mo=new st(239),yo=new st(1).shln(16),xo=new st(1).shln(32);function go(e){return e instanceof vo?e.toBn():(0,pn.f)(e)||(0,Lt.E)(e)||(0,Je.qv)(e)||(0,ut.b)(e)||(0,wt.s)(e)?e:go(co(e))}class vo extends bo{constructor(e,t=new st(0)){super(e,go(t))}static calcLength(e){const t=kt(e);return t.lte(mo)?1:t.lt(yo)?2:t.lt(xo)?4:8}static readLength(e){const t=e[0];return 252===t?[1,2]:253===t?[1,4]:254===t?[1,8]:[0,1]}static writeLength(e){switch(e.length){case 2:return new Uint8Array([252]);case 4:return new Uint8Array([253]);case 8:return new Uint8Array([254]);default:return new Uint8Array([])}}eq(e){return(0,pn.f)(e)||(0,Lt.E)(e)?super.eq(e):super.eq(this.registry.createTypeUnsafe("AccountIndex",[e]))}toHuman(){return this.toJSON()}toJSON(){return this.toString()}toPrimitive(){return this.toJSON()}toString(){const e=vo.calcLength(this);return uo(this.toU8a().subarray(0,e),this.registry.chainSS58)}toRawType(){return"AccountIndex"}}class wo extends dn{constructor(e,t){super(e,{header:"Header",extrinsics:"Vec"},t)}get contentHash(){return this.registry.hash(this.toU8a())}get extrinsics(){return this.getT("extrinsics")}get hash(){return this.header.hash}get header(){return this.getT("header")}}function Vo(e,t){return t.fields.reduce(((t,{name:n,type:r},a)=>(t[n.unwrapOr(`param${a}`).toString()]=e.createLookupType(r),t)),{})}function To(e,t=new Uint8Array,n){if((0,ut.b)(t)||(0,Je.qv)(t))return function(e,t,n){const r=e.firstCallIndex.slice();r.set(t.subarray(0,2),0);const a=n||e.findMetaCall(r).meta;return{args:t.subarray(2),argsDef:Vo(e,a),callIndex:r,meta:a}}(e,(0,E.e)(t),n);if((0,Xe.G)(t)&&t.callIndex&&t.args)return function(e,t,n){const{args:r,callIndex:a}=t,i=a instanceof So?a.toU8a():a,s=n||e.findMetaCall(i).meta;return{args:r,argsDef:Vo(e,s),callIndex:a,meta:s}}(e,t,n);throw new Error(`Call: Cannot decode value '${t}' of type ${typeof t}`)}class So extends lr{constructor(e,t){super(e,t,16)}toPrimitive(){return this.toHex()}}class ko extends dn{_meta;constructor(e,t,n){const r=To(e,t,n);try{super(e,{callIndex:So,args:dn.with(r.argsDef)},r)}catch(a){let t="unknown.unknown";try{const n=e.findMetaCall(r.callIndex);t=`${n.section}.${n.method}`}catch{}throw new Error(`Call: failed decoding ${t}:: ${a.message}`)}this._meta=r.meta}get args(){return[...this.getT("args").values()]}get argsDef(){return Vo(this.registry,this.meta)}get argsEntries(){return[...this.getT("args").entries()]}get callIndex(){return this.getT("callIndex").toU8a()}get data(){return this.getT("args").toU8a()}get meta(){return this._meta}get method(){return this.registry.findMetaCall(this.callIndex).method}get section(){return this.registry.findMetaCall(this.callIndex).section}is(e){return e.callIndex[0]===this.callIndex[0]&&e.callIndex[1]===this.callIndex[1]}toHuman(e,t){let n;try{n=this.registry.findMetaCall(this.callIndex)}catch{}return(0,M.b)({args:this.argsEntries.reduce(((n,[r,a])=>(0,M.b)(n,{[r]:a.toHuman(e,t)})),{}),method:n?.method,section:n?.section},e&&n?{docs:n.meta.docs.map((e=>e.toString()))}:null)}toRawType(){return"Call"}}function _o(e,t,n,r=!0){return n&&(0,qe.T)(n.unwrapOrDefault)?n:e.createTypeUnsafe(t,[r?(0,Kt.k)(n)||(0,Fe.b)(n)?null:Array.isArray(n)?n:[n]:n])}function Po(e,t){return(t&&(0,qe.T)(t.entries)?[...t.entries()]:Object.entries(t||{})).reduce(((t,[n,r])=>(t[n]=function(e,t,n){return"ss58Format"===t?_o(e,"Option",n,!1):"tokenDecimals"===t?_o(e,"Option>",n):"tokenSymbol"===t?_o(e,"Option>",n):"isEthereum"===t?_o(e,"Bool",n,!1):n}(e,n,r),t)),{isEthereum:e.createTypeUnsafe("Bool",[]),ss58Format:e.createTypeUnsafe("Option",[]),tokenDecimals:e.createTypeUnsafe("Option>",[]),tokenSymbol:e.createTypeUnsafe("Option>",[])})}class Mo extends Ke{constructor(e,t){super(e,Po(e,t))}get isEthereum(){return this.getT("isEthereum")}get ss58Format(){return this.getT("ss58Format")}get tokenDecimals(){return this.getT("tokenDecimals")}get tokenSymbol(){return this.getT("tokenSymbol")}}const Io=(0,La.j)("aura"),No=(0,La.j)("BABE"),Eo=(0,La.j)("FRNK"),Oo=(0,La.j)("pow_"),Ao=(0,La.j)("nmbs");class Co extends lr{constructor(e,t){super(e,(0,Lt.E)(t)?Pt(t,{isLe:!1}):t,32)}get isAura(){return this.eq(Io)}get isBabe(){return this.eq(No)}get isGrandpa(){return this.eq(Eo)}get isPow(){return this.eq(Oo)}get isNimbus(){return this.eq(Ao)}extractAuthor(e,t){if(t?.length){if(this.isAura)return function(e,t,n){return n[e.createTypeUnsafe("RawAuraPreDigest",[t.toU8a(!0)]).slotNumber.mod(new st(n.length)).toNumber()]}(this.registry,e,t);if(this.isBabe)return function(e,t,n){return n[e.createTypeUnsafe("RawBabePreDigestCompat",[t.toU8a(!0)]).value.toNumber()]}(this.registry,e,t)}if(this.isPow||this.isNimbus)return function(e,t){return e.createTypeUnsafe("AccountId",[t])}(this.registry,e)}toHuman(){return this.toString()}toRawType(){return"ConsensusEngineId"}toString(){return this.isAscii?nt(this):(0,N.X)(this)}}const Ho=new Uint8Array([255]);function Ro(e,t){return t instanceof Bo?t.inner:t instanceof po||t instanceof vo?t:(0,pn.f)(t)||(0,Lt.E)(t)||(0,wt.s)(t)?e.createTypeUnsafe("AccountIndex",[t]):Array.isArray(t)||(0,Je.qv)(t)||(0,ut.b)(t)?function(e,t){if(32===t.length)return e.createTypeUnsafe("AccountId",[t]);if(255===t[0])return e.createTypeUnsafe("AccountId",[t.subarray(1)]);const[n,r]=vo.readLength(t);return e.createTypeUnsafe("AccountIndex",[ot(t.subarray(n,n+r))])}(e,(0,E.e)(t)):function(e,t){const n=co(t);return 32===n.length?e.createTypeUnsafe("AccountId",[n]):e.createTypeUnsafe("AccountIndex",[ot(n)])}(e,t)}class Bo extends Ui{constructor(e,t=new Uint8Array){super(e,Ro(e,t))}get encodedLength(){const e=this._rawLength;return e+(e>1?1:0)}get _rawLength(){return this.inner instanceof vo?vo.calcLength(this.inner):this.inner.encodedLength}inspect(){const e=this.inner.toU8a().subarray(0,this._rawLength);return{outer:[new Uint8Array(this.inner instanceof vo?vo.writeLength(e):Ho),e]}}toHex(){return(0,N.X)(this.toU8a())}toRawType(){return"Address"}toU8a(e){const t=this.inner.toU8a().subarray(0,this._rawLength);return e?t:Mt(this.inner instanceof vo?vo.writeLength(t):Ho,t)}}function Lo(e,t){return[0,32].includes(t.length)?{Id:t}:20===t.length?{Address20:t}:t.length<=8?{Index:e.createTypeUnsafe("AccountIndex",[t]).toNumber()}:t}class zo extends nn{constructor(e,t){super(e,{Id:"AccountId",Index:"Compact",Raw:"Bytes",Address32:"H256",Address20:"H160"},function(e,t){return t instanceof po?{Id:t}:(0,ut.b)(t)?Lo(e,t):t instanceof zo?t:t instanceof vo||(0,pn.f)(t)||(0,Lt.E)(t)?{Index:(0,Lt.E)(t)?t:t.toNumber()}:(0,I.K)(t)?Lo(e,co(t.toString())):t}(e,t))}inspect(){const{inner:e,outer:t=[]}=this.inner.inspect();return{inner:e,outer:[new Uint8Array([this.index]),...t]}}toString(){return this.value.toString()}}class Uo extends Boolean{registry;createdAtHash;initialU8aLength=1;isStorageFallback;constructor(e,t=!1){super((0,ut.b)(t)?1===t[0]:t instanceof Boolean?t.valueOf():!!t),this.registry=e}get encodedLength(){return 1}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return this.isFalse}get isFalse(){return!this.isTrue}get isTrue(){return this.valueOf()}eq(e){return this.valueOf()===(e instanceof Boolean?e.valueOf():e)}inspect(){return{outer:[this.toU8a()]}}toHex(){return(0,N.X)(this.toU8a())}toHuman(){return this.toJSON()}toJSON(){return this.valueOf()}toPrimitive(){return this.toJSON()}toRawType(){return"bool"}toString(){return this.toJSON().toString()}toU8a(e){return new Uint8Array([this.valueOf()?1:0])}}const Do=128;function qo(e){return e?new Uint8Array([128]):new Uint8Array([0])}function jo(e,t){return(0,ut.b)(t)?function(e){return e.length?e.subarray(0,1):new Uint8Array([0])}(t):(0,Fe.b)(t)||t instanceof Boolean||rn(t)?qo(new Uo(e,t).isTrue):(0,Lt.E)(t)?qo(t<0):function(e,t){return new Uint8Array([(new Uo(e,t.aye).isTrue?Do:0)|e.createTypeUnsafe("Conviction",[t.conviction||0]).index])}(e,t)}class Fo extends lr{__internal__aye;__internal__conviction;constructor(e,t){const n=jo(e,t);super(e,n,8),this.__internal__aye=(n[0]&Do)===Do,this.__internal__conviction=this.registry.createTypeUnsafe("Conviction",[127&n[0]])}get conviction(){return this.__internal__conviction}get isAye(){return this.__internal__aye}get isNay(){return!this.isAye}toHuman(e){return{conviction:this.conviction.toHuman(e),vote:this.isAye?"Aye":"Nay"}}toPrimitive(){return{aye:this.isAye,conviction:this.conviction.toPrimitive()}}toRawType(){return"Vote"}}const Xo=[],Wo=[],Zo=[],Go=BigInt(0),Ko=BigInt(1),Jo=BigInt(2),Yo=BigInt(7),Qo=BigInt(256),$o=BigInt(113);for(let bV=0,mV=Ko,yV=1,xV=0;bV<24;bV++){[yV,xV]=[xV,(2*yV+3*xV)%5],Xo.push(2*(5*xV+yV)),Wo.push((bV+1)*(bV+2)/2%64);let e=Go;for(let t=0;t<7;t++)mV=(mV<>Yo)*$o)%Qo,mV&Jo&&(e^=Ko<<(Ko<n>32?Pa(e,t,n):ka(e,t,n),rc=(e,t,n)=>n>32?Ma(e,t,n):_a(e,t,n);class ac extends ba{constructor(e,t,n,r=!1,a=24){if(super(),this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.rounds=a,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,ta(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=oa(this.state)}keccak(){ua||pa(this.state32),function(e,t=24){const n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let r=0;r<10;r++)n[r]=e[r]^e[r+10]^e[r+20]^e[r+30]^e[r+40];for(let r=0;r<10;r+=2){const t=(r+8)%10,a=(r+2)%10,i=n[a],s=n[a+1],o=nc(i,s,1)^n[t],c=rc(i,s,1)^n[t+1];for(let n=0;n<50;n+=10)e[r+n]^=o,e[r+n+1]^=c}let t=e[2],a=e[3];for(let n=0;n<24;n++){const r=Wo[n],i=nc(t,a,r),s=rc(t,a,r),o=Xo[n];t=e[o],a=e[o+1],e[o]=i,e[o+1]=s}for(let r=0;r<50;r+=10){for(let t=0;t<10;t++)n[t]=e[r+t];for(let t=0;t<10;t++)e[r+t]^=~n[(t+2)%10]&n[(t+4)%10]}e[0]^=ec[r],e[1]^=tc[r]}n.fill(0)}(this.state32,this.rounds),ua||pa(this.state32),this.posOut=0,this.pos=0}update(e){aa(this);const{blockLen:t,state:n}=this,r=(e=ha(e)).length;for(let a=0;a=n&&this.keccak();const i=Math.min(n-this.posOut,a-r);e.set(t.subarray(this.posOut,this.posOut+i),r),this.posOut+=i,r+=i}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return ta(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(ia(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){const{blockLen:t,suffix:n,outputLen:r,rounds:a,enableXOF:i}=this;return e||(e=new ac(t,n,r,i,a)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=a,e.suffix=n,e.outputLen=r,e.enableXOF=i,e.destroyed=this.destroyed,e}}const ic=(e,t,n)=>ma((()=>new ac(t,e,n))),sc=_i({256:vi,512:wi},{256:ic(1,136,32),512:ic(1,72,64)});function oc(e){return!(!e||42!==e.length||!(0,Je.qv)(e))&&(!(!/^(0x)?[0-9a-f]{40}$/.test(e)&&!/^(0x)?[0-9A-F]{40}$/.test(e))||function(e){const t=e.replace("0x",""),n=(0,N.X)(sc(t.toLowerCase()),-1,!1);for(let i=0;i<40;i++)if(r=t[i],a=parseInt(n[i],16),r!==(a>7?r.toUpperCase():r.toLowerCase()))return!1;var r,a;return!0}(e))}const cc=(e,t,n)=>e&t^e&n^t&n;class dc extends ba{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ca(this.buffer)}update(e){aa(this);const{view:t,buffer:n,blockLen:r}=this,a=(e=ha(e)).length;for(let i=0;ir-i&&(this.process(n,0),i=0);for(let u=i;u>a&i),o=Number(n&i),c=r?4:0,d=r?0:4;e.setUint32(t+c,s,r),e.setUint32(t+d,o,r)}(n,r-8,BigInt(8*this.length),a),this.process(n,0);const s=ca(e),o=this.outputLen;if(o%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const c=o/4,d=this.get();if(c>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u>>3,r=da(t,17)^da(t,19)^t>>>10;fc[l]=r+fc[l-7]+n+fc[l-16]|0}let{A:n,B:r,C:a,D:i,E:s,F:o,G:c,H:d}=this;for(let l=0;l<64;l++){const e=d+(da(s,6)^da(s,11)^da(s,25))+((u=s)&o^~u&c)+uc[l]+fc[l]|0,t=(da(n,2)^da(n,13)^da(n,22))+cc(n,r,a)|0;d=c,c=o,o=s,s=i+e|0,i=a,a=r,r=n,n=e+t|0}var u;n=n+this.A|0,r=r+this.B|0,a=a+this.C|0,i=i+this.D|0,s=s+this.E|0,o=o+this.F|0,c=c+this.G|0,d=d+this.H|0,this.set(n,r,a,i,s,o,c,d)}roundClean(){fc.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const hc=ma((()=>new pc));class bc extends ba{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,ra(e);const n=ha(t);if(this.iHash=e.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,a=new Uint8Array(r);a.set(n.length>r?e.create().update(n).digest():n);for(let i=0;inew bc(e,t).update(n).digest();mc.create=(e,t)=>new bc(e,t);const yc=BigInt(0),xc=BigInt(1),gc=BigInt(2);function vc(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name}function wc(e){if(!vc(e))throw new Error("Uint8Array expected")}function Vc(e,t){if("boolean"!=typeof t)throw new Error(`${e} must be valid boolean, got "${t}".`)}const Tc=Array.from({length:256},((e,t)=>t.toString(16).padStart(2,"0")));function Sc(e){wc(e);let t="";for(let n=0;n=Pc._0&&e<=Pc._9?e-Pc._0:e>=Pc._A&&e<=Pc._F?e-(Pc._A-10):e>=Pc._a&&e<=Pc._f?e-(Pc._a-10):void 0}function Ic(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);const t=e.length,n=t/2;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let a=0,i=0;a"bigint"==typeof e&&yc<=e;function Bc(e,t,n){return Rc(e)&&Rc(t)&&Rc(n)&&t<=e&&eyc;e>>=xc,t+=1);return t}const Uc=e=>(gc<new Uint8Array(e),qc=e=>Uint8Array.from(e);function jc(e,t,n){if("number"!=typeof e||e<2)throw new Error("hashLen must be a number");if("number"!=typeof t||t<2)throw new Error("qByteLen must be a number");if("function"!=typeof n)throw new Error("hmacFn must be a function");let r=Dc(e),a=Dc(e),i=0;const s=()=>{r.fill(1),a.fill(0),i=0},o=(...e)=>n(a,r,...e),c=(e=Dc())=>{a=o(qc([0]),e),r=o(),0!==e.length&&(a=o(qc([1]),e),r=o())},d=()=>{if(i++>=1e3)throw new Error("drbg: tried 1000 values");let e=0;const n=[];for(;e{let n;for(s(),c(e);!(n=t(d()));)c();return s(),n}}const Fc={bigint:e=>"bigint"==typeof e,function:e=>"function"==typeof e,boolean:e=>"boolean"==typeof e,string:e=>"string"==typeof e,stringOrUint8Array:e=>"string"==typeof e||vc(e),isSafeInteger:e=>Number.isSafeInteger(e),array:e=>Array.isArray(e),field:(e,t)=>t.Fp.isValid(e),hash:e=>"function"==typeof e&&Number.isSafeInteger(e.outputLen)};function Xc(e,t,n={}){const r=(t,n,r)=>{const a=Fc[n];if("function"!=typeof a)throw new Error(`Invalid validator "${n}", expected function`);const i=e[t];if(!(r&&void 0===i||a(i,e)))throw new Error(`Invalid param ${String(t)}=${i} (${typeof i}), expected ${n}`)};for(const[a,i]of Object.entries(t))r(a,i,!1);for(const[a,i]of Object.entries(n))r(a,i,!0);return e}function Wc(e){const t=new WeakMap;return(n,...r)=>{const a=t.get(n);if(void 0!==a)return a;const i=e(n,...r);return t.set(n,i),i}}const Zc=BigInt(0),Gc=BigInt(1),Kc=BigInt(2),Jc=BigInt(3),Yc=BigInt(4),Qc=BigInt(5),$c=BigInt(8);BigInt(9),BigInt(16);function ed(e,t){const n=e%t;return n>=Zc?n:t+n}function td(e,t,n){if(n<=Zc||t 0");if(n===Gc)return Zc;let r=Gc;for(;t>Zc;)t&Gc&&(r=r*e%n),e=e*e%n,t>>=Gc;return r}function nd(e,t,n){let r=e;for(;t-- >Zc;)r*=r,r%=n;return r}function rd(e,t){if(e===Zc||t<=Zc)throw new Error(`invert: expected positive integers, got n=${e} mod=${t}`);let n=ed(e,t),r=t,a=Zc,i=Gc,s=Gc,o=Zc;for(;n!==Zc;){const e=r/n,t=r%n,c=a-s*e,d=i-o*e;r=n,n=t,a=s,i=o,s=c,o=d}if(r!==Gc)throw new Error("invert: does not exist");return ed(a,t)}function ad(e){if(e%Yc===Jc){const t=(e+Gc)/Yc;return function(e,n){const r=e.pow(n,t);if(!e.eql(e.sqr(r),n))throw new Error("Cannot find square root");return r}}if(e%$c===Qc){const t=(e-Qc)/$c;return function(e,n){const r=e.mul(n,Kc),a=e.pow(r,t),i=e.mul(n,a),s=e.mul(e.mul(i,Kc),a),o=e.mul(i,e.sub(s,e.ONE));if(!e.eql(e.sqr(o),n))throw new Error("Cannot find square root");return o}}return function(e){const t=(e-Gc)/Kc;let n,r,a;for(n=e-Gc,r=0;n%Kc===Zc;n/=Kc,r++);for(a=Kc;a 0, got ${e}`);const{nBitLength:a,nByteLength:i}=sd(e,t);if(i>2048)throw new Error("Field lengths over 2048 bytes are not supported");const s=ad(e),o=Object.freeze({ORDER:e,BITS:a,BYTES:i,MASK:Uc(a),ZERO:Zc,ONE:Gc,create:t=>ed(t,e),isValid:t=>{if("bigint"!=typeof t)throw new Error("Invalid field element: expected bigint, got "+typeof t);return Zc<=t&&te===Zc,isOdd:e=>(e&Gc)===Gc,neg:t=>ed(-t,e),eql:(e,t)=>e===t,sqr:t=>ed(t*t,e),add:(t,n)=>ed(t+n,e),sub:(t,n)=>ed(t-n,e),mul:(t,n)=>ed(t*n,e),pow:(e,t)=>function(e,t,n){if(n 0");if(n===Zc)return e.ONE;if(n===Gc)return t;let r=e.ONE,a=t;for(;n>Zc;)n&Gc&&(r=e.mul(r,a)),a=e.sqr(a),n>>=Gc;return r}(o,e,t),div:(t,n)=>ed(t*rd(n,e),e),sqrN:e=>e*e,addN:(e,t)=>e+t,subN:(e,t)=>e-t,mulN:(e,t)=>e*t,inv:t=>rd(t,e),sqrt:r.sqrt||(e=>s(o,e)),invertBatch:e=>function(e,t){const n=new Array(t.length),r=t.reduce(((t,r,a)=>e.is0(r)?t:(n[a]=t,e.mul(t,r))),e.ONE),a=e.inv(r);return t.reduceRight(((t,r,a)=>e.is0(r)?t:(n[a]=e.mul(t,n[a]),e.mul(t,r))),a),n}(o,e),cmov:(e,t,n)=>n?t:e,toBytes:e=>n?Ac(e,i):Oc(e,i),fromBytes:e=>{if(e.length!==i)throw new Error(`Fp.fromBytes: expected ${i}, got ${e.length}`);return n?Ec(e):Nc(e)}});return Object.freeze(o)}function cd(e){if("bigint"!=typeof e)throw new Error("field order must be bigint");const t=e.toString(2).length;return Math.ceil(t/8)}function dd(e){const t=cd(e);return t+Math.ceil(t/2)}const ud=BigInt(0),ld=BigInt(1),fd=new WeakMap,pd=new WeakMap;function hd(e){return function(e){const t=id.reduce(((e,t)=>(e[t]="function",e)),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"});Xc(e,t)}(e.Fp),Xc(e,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...sd(e.n,e.nBitLength),...e,p:e.Fp.ORDER})}function bd(e){void 0!==e.lowS&&Vc("lowS",e.lowS),void 0!==e.prehash&&Vc("prehash",e.prehash)}const{Ph:md,aT:yd}=r,xd={Err:class extends Error{constructor(e=""){super(e)}},_tlv:{encode:(e,t)=>{const{Err:n}=xd;if(e<0||e>256)throw new n("tlv.encode: wrong tag");if(1&t.length)throw new n("tlv.encode: unpadded data");const r=t.length/2,a=kc(r);if(a.length/2&128)throw new n("tlv.encode: long form length too big");const i=r>127?kc(a.length/2|128):"";return`${kc(e)}${i}${a}${t}`},decode(e,t){const{Err:n}=xd;let r=0;if(e<0||e>256)throw new n("tlv.encode: wrong tag");if(t.length<2||t[r++]!==e)throw new n("tlv.decode: wrong tlv");const a=t[r++];let i=0;if(!!(128&a)){const e=127&a;if(!e)throw new n("tlv.decode(long): indefinite length not supported");if(e>4)throw new n("tlv.decode(long): byte length is too big");const s=t.subarray(r,r+e);if(s.length!==e)throw new n("tlv.decode: length bytes not complete");if(0===s[0])throw new n("tlv.decode(long): zero leftmost byte");for(const t of s)i=i<<8|t;if(r+=e,i<128)throw new n("tlv.decode(long): not minimal encoding")}else i=a;const s=t.subarray(r,r+i);if(s.length!==i)throw new n("tlv.decode: wrong value length");return{v:s,l:t.subarray(r+i)}}},_int:{encode(e){const{Err:t}=xd;if(e{const a=t.toAffine();return Hc(Uint8Array.from([4]),n.toBytes(a.x),n.toBytes(a.y))}),i=t.fromBytes||(e=>{const t=e.subarray(1);return{x:n.fromBytes(t.subarray(0,n.BYTES)),y:n.fromBytes(t.subarray(n.BYTES,2*n.BYTES))}});function s(e){const{a:r,b:a}=t,i=n.sqr(e),s=n.mul(i,e);return n.add(n.add(s,n.mul(e,r)),a)}if(!n.eql(n.sqr(t.Gy),s(t.Gx)))throw new Error("bad generator point: equation left != right");function o(e){const{allowedPrivateKeyLengths:n,nByteLength:r,wrapPrivateKey:a,n:i}=t;if(n&&"bigint"!=typeof e){if(vc(e)&&(e=Sc(e)),"string"!=typeof e||!n.includes(e.length))throw new Error("Invalid key");e=e.padStart(2*r,"0")}let s;try{s="bigint"==typeof e?e:Nc(Cc("private key",e,r))}catch(o){throw new Error(`private key must be ${r} bytes, hex or bigint, not ${typeof e}`)}return a&&(s=ed(s,i)),Lc("private key",s,vd,i),s}function c(e){if(!(e instanceof l))throw new Error("ProjectivePoint expected")}const d=Wc(((e,t)=>{const{px:r,py:a,pz:i}=e;if(n.eql(i,n.ONE))return{x:r,y:a};const s=e.is0();null==t&&(t=s?n.ONE:n.inv(i));const o=n.mul(r,t),c=n.mul(a,t),d=n.mul(i,t);if(s)return{x:n.ZERO,y:n.ZERO};if(!n.eql(d,n.ONE))throw new Error("invZ was invalid");return{x:o,y:c}})),u=Wc((e=>{if(e.is0()){if(t.allowInfinityPoint&&!n.is0(e.py))return;throw new Error("bad point: ZERO")}const{x:r,y:a}=e.toAffine();if(!n.isValid(r)||!n.isValid(a))throw new Error("bad point: x or y not FE");const i=n.sqr(a),o=s(r);if(!n.eql(i,o))throw new Error("bad point: equation left != right");if(!e.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0}));class l{constructor(e,t,r){if(this.px=e,this.py=t,this.pz=r,null==e||!n.isValid(e))throw new Error("x required");if(null==t||!n.isValid(t))throw new Error("y required");if(null==r||!n.isValid(r))throw new Error("z required");Object.freeze(this)}static fromAffine(e){const{x:t,y:r}=e||{};if(!e||!n.isValid(t)||!n.isValid(r))throw new Error("invalid affine point");if(e instanceof l)throw new Error("projective point not allowed");const a=e=>n.eql(e,n.ZERO);return a(t)&&a(r)?l.ZERO:new l(t,r,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(e){const t=n.invertBatch(e.map((e=>e.pz)));return e.map(((e,n)=>e.toAffine(t[n]))).map(l.fromAffine)}static fromHex(e){const t=l.fromAffine(i(Cc("pointHex",e)));return t.assertValidity(),t}static fromPrivateKey(e){return l.BASE.multiply(o(e))}static msm(e,t){return function(e,t,n,r){if(!Array.isArray(n)||!Array.isArray(r)||r.length!==n.length)throw new Error("arrays of points and scalars must have equal length");r.forEach(((e,n)=>{if(!t.isValid(e))throw new Error(`wrong scalar at index ${n}`)})),n.forEach(((t,n)=>{if(!(t instanceof e))throw new Error(`wrong point at index ${n}`)}));const a=zc(BigInt(n.length)),i=a>12?a-3:a>4?a-2:a?2:1,s=(1<=0;u-=i){o.fill(e.ZERO);for(let e=0;e>BigInt(u)&BigInt(s));o[a]=o[a].add(n[e])}let t=e.ZERO;for(let n=o.length-1,r=e.ZERO;n>0;n--)r=r.add(o[n]),t=t.add(r);if(d=d.add(t),0!==u)for(let e=0;egd||c>gd;)s&vd&&(d=d.add(f)),c&vd&&(u=u.add(f)),f=f.double(),s>>=vd,c>>=vd;return i&&(d=d.negate()),o&&(u=u.negate()),u=new l(n.mul(u.px,a.beta),u.py,u.pz),d.add(u)}multiply(e){const{endo:r,n:a}=t;let i,s;if(Lc("scalar",e,vd,a),r){const{k1neg:t,k1:a,k2neg:o,k2:c}=r.splitScalar(e);let{p:d,f:u}=this.wNAF(a),{p:f,f:h}=this.wNAF(c);d=p.constTimeNegate(t,d),f=p.constTimeNegate(o,f),f=new l(n.mul(f.px,r.beta),f.py,f.pz),i=d.add(f),s=u.add(h)}else{const{p:t,f:n}=this.wNAF(e);i=t,s=n}return l.normalizeZ([i,s])[0]}multiplyAndAddUnsafe(e,t,n){const r=l.BASE,a=(e,t)=>t!==gd&&t!==vd&&e.equals(r)?e.multiply(t):e.multiplyUnsafe(t),i=a(this,t).add(a(e,n));return i.is0()?void 0:i}toAffine(e){return d(this,e)}isTorsionFree(){const{h:e,isTorsionFree:n}=t;if(e===vd)return!0;if(n)return n(l,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:e,clearCofactor:n}=t;return e===vd?this:n?n(l,this):this.multiplyUnsafe(t.h)}toRawBytes(e=!0){return Vc("isCompressed",e),this.assertValidity(),a(l,this,e)}toHex(e=!0){return Vc("isCompressed",e),Sc(this.toRawBytes(e))}}l.BASE=new l(t.Gx,t.Gy,n.ONE),l.ZERO=new l(n.ZERO,n.ONE,n.ZERO);const f=t.nBitLength,p=function(e,t){const n=(e,t)=>{const n=t.negate();return e?n:t},r=e=>{if(!Number.isSafeInteger(e)||e<=0||e>t)throw new Error(`Wrong window size=${e}, should be [1..${t}]`)},a=e=>(r(e),{windows:Math.ceil(t/e)+1,windowSize:2**(e-1)});return{constTimeNegate:n,unsafeLadder(t,n){let r=e.ZERO,a=t;for(;n>ud;)n&ld&&(r=r.add(a)),a=a.double(),n>>=ld;return r},precomputeWindow(e,t){const{windows:n,windowSize:r}=a(t),i=[];let s=e,o=s;for(let a=0;a>=f,a>o&&(a-=l,i+=ld);const s=t,p=t+Math.abs(a)-1,h=e%2!=0,b=a<0;0===a?d=d.add(n(h,r[s])):c=c.add(n(b,r[p]))}return{p:c,f:d}},wNAFCached(e,t,n){const r=pd.get(e)||1;let a=fd.get(e);return a||(a=this.precomputeWindow(e,r),1!==r&&fd.set(e,n(a))),this.wNAF(r,a,t)},setWindowSize(e,t){r(t),pd.set(e,t),fd.delete(e)}}}(l,t.endo?Math.ceil(f/2):f);return{CURVE:t,ProjectivePoint:l,normPrivateKeyToScalar:o,weierstrassEquation:s,isWithinCurveOrder:function(e){return Bc(e,vd,t.n)}}}function Td(e){const t=function(e){const t=hd(e);return Xc(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}(e),{Fp:n,n:r}=t,a=n.BYTES+1,i=2*n.BYTES+1;function s(e){return ed(e,r)}function o(e){return rd(e,r)}const{ProjectivePoint:c,normPrivateKeyToScalar:d,weierstrassEquation:u,isWithinCurveOrder:l}=Vd({...t,toBytes(e,t,r){const a=t.toAffine(),i=n.toBytes(a.x),s=Hc;return Vc("isCompressed",r),r?s(Uint8Array.from([t.hasEvenY()?2:3]),i):s(Uint8Array.from([4]),i,n.toBytes(a.y))},fromBytes(e){const t=e.length,r=e[0],s=e.subarray(1);if(t!==a||2!==r&&3!==r){if(t===i&&4===r){return{x:n.fromBytes(s.subarray(0,n.BYTES)),y:n.fromBytes(s.subarray(n.BYTES,2*n.BYTES))}}throw new Error(`Point of length ${t} was invalid. Expected ${a} compressed bytes or ${i} uncompressed bytes`)}{const e=Nc(s);if(!Bc(e,vd,n.ORDER))throw new Error("Point is not on curve");const t=u(e);let a;try{a=n.sqrt(t)}catch(o){const e=o instanceof Error?": "+o.message:"";throw new Error("Point is not on curve"+e)}return!(1&~r)!==((a&vd)===vd)&&(a=n.neg(a)),{x:e,y:a}}}}),f=e=>Sc(Oc(e,t.nByteLength));function p(e){return e>r>>vd}const h=(e,t,n)=>Nc(e.slice(t,n));class b{constructor(e,t,n){this.r=e,this.s=t,this.recovery=n,this.assertValidity()}static fromCompact(e){const n=t.nByteLength;return e=Cc("compactSignature",e,2*n),new b(h(e,0,n),h(e,n,2*n))}static fromDER(e){const{r:t,s:n}=xd.toSig(Cc("DER",e));return new b(t,n)}assertValidity(){Lc("r",this.r,vd,r),Lc("s",this.s,vd,r)}addRecoveryBit(e){return new b(this.r,this.s,e)}recoverPublicKey(e){const{r:r,s:a,recovery:i}=this,d=g(Cc("msgHash",e));if(null==i||![0,1,2,3].includes(i))throw new Error("recovery id invalid");const u=2===i||3===i?r+t.n:r;if(u>=n.ORDER)throw new Error("recovery id 2 or 3 invalid");const l=1&i?"03":"02",p=c.fromHex(l+f(u)),h=o(u),b=s(-d*h),m=s(a*h),y=c.BASE.multiplyAndAddUnsafe(p,b,m);if(!y)throw new Error("point at infinify");return y.assertValidity(),y}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new b(this.r,s(-this.s),this.recovery):this}toDERRawBytes(){return Ic(this.toDERHex())}toDERHex(){return xd.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Ic(this.toCompactHex())}toCompactHex(){return f(this.r)+f(this.s)}}const m={isValidPrivateKey(e){try{return d(e),!0}catch(t){return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{const e=dd(t.n);return function(e,t,n=!1){const r=e.length,a=cd(t),i=dd(t);if(r<16||r1024)throw new Error(`expected ${i}-1024 bytes of input, got ${r}`);const s=ed(n?Nc(e):Ec(e),t-Gc)+Gc;return n?Ac(s,a):Oc(s,a)}(t.randomBytes(e),t.n)},precompute:(e=8,t=c.BASE)=>(t._setWindowSize(e),t.multiply(BigInt(3)),t)};function y(e){const t=vc(e),n="string"==typeof e,r=(t||n)&&e.length;return t?r===a||r===i:n?r===2*a||r===2*i:e instanceof c}const x=t.bits2int||function(e){const n=Nc(e),r=8*e.length-t.nBitLength;return r>0?n>>BigInt(r):n},g=t.bits2int_modN||function(e){return s(x(e))},v=Uc(t.nBitLength);function w(e){return Lc(`num < 2^${t.nBitLength}`,e,gd,v),Oc(e,t.nByteLength)}function V(e,r,a=T){if(["recovered","canonical"].some((e=>e in a)))throw new Error("sign() legacy options not supported");const{hash:i,randomBytes:u}=t;let{lowS:f,prehash:h,extraEntropy:m}=a;null==f&&(f=!0),e=Cc("msgHash",e),bd(a),h&&(e=Cc("prehashed msgHash",i(e)));const y=g(e),v=d(r),V=[w(v),w(y)];if(null!=m&&!1!==m){const e=!0===m?u(n.BYTES):m;V.push(Cc("extraEntropy",e))}const S=Hc(...V),k=y;return{seed:S,k2sig:function(e){const t=x(e);if(!l(t))return;const n=o(t),r=c.BASE.multiply(t).toAffine(),a=s(r.x);if(a===gd)return;const i=s(n*s(k+a*v));if(i===gd)return;let d=(r.x===a?0:2)|Number(r.y&vd),u=i;return f&&p(i)&&(u=function(e){return p(e)?s(-e):e}(i),d^=1),new b(a,u,d)}}}const T={lowS:t.lowS,prehash:!1},S={lowS:t.lowS,prehash:!1};return c.BASE._setWindowSize(8),{CURVE:t,getPublicKey:function(e,t=!0){return c.fromPrivateKey(e).toRawBytes(t)},getSharedSecret:function(e,t,n=!0){if(y(e))throw new Error("first arg must be private key");if(!y(t))throw new Error("second arg must be public key");return c.fromHex(t).multiply(d(e)).toRawBytes(n)},sign:function(e,n,r=T){const{seed:a,k2sig:i}=V(e,n,r),s=t;return jc(s.hash.outputLen,s.nByteLength,s.hmac)(a,i)},verify:function(e,n,r,a=S){const i=e;if(n=Cc("msgHash",n),r=Cc("publicKey",r),"strict"in a)throw new Error("options.strict was renamed to lowS");bd(a);const{lowS:d,prehash:u}=a;let l,f;try{if("string"==typeof i||vc(i))try{l=b.fromDER(i)}catch(V){if(!(V instanceof xd.Err))throw V;l=b.fromCompact(i)}else{if("object"!=typeof i||"bigint"!=typeof i.r||"bigint"!=typeof i.s)throw new Error("PARSE");{const{r:e,s:t}=i;l=new b(e,t)}}f=c.fromHex(r)}catch(T){if("PARSE"===T.message)throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(d&&l.hasHighS())return!1;u&&(n=t.hash(n));const{r:p,s:h}=l,m=g(n),y=o(h),x=s(m*y),v=s(p*y),w=c.BASE.multiplyAndAddUnsafe(f,x,v)?.toAffine();return!!w&&s(w.x)===p},ProjectivePoint:c,Signature:b,utils:m}}function Sd(e){return{hash:e,hmac:(t,...n)=>mc(e,t,function(...e){let t=0;for(let r=0;r(e+t/Md)/t;function Nd(e){const t=kd,n=BigInt(3),r=BigInt(6),a=BigInt(11),i=BigInt(22),s=BigInt(23),o=BigInt(44),c=BigInt(88),d=e*e*e%t,u=d*d*e%t,l=nd(u,n,t)*u%t,f=nd(l,n,t)*u%t,p=nd(f,Md,t)*d%t,h=nd(p,a,t)*p%t,b=nd(h,i,t)*h%t,m=nd(b,o,t)*b%t,y=nd(m,c,t)*m%t,x=nd(y,o,t)*b%t,g=nd(x,n,t)*u%t,v=nd(g,s,t)*h%t,w=nd(v,r,t)*d%t,V=nd(w,Md,t);if(!Ed.eql(Ed.sqr(V),e))throw new Error("Cannot find square root");return V}const Ed=od(kd,void 0,void 0,{sqrt:Nd}),Od=function(e,t){const n=t=>Td({...e,...Sd(t)});return Object.freeze({...n(t),create:n})}({a:BigInt(0),b:BigInt(7),Fp:Ed,n:_d,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:e=>{const t=_d,n=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-Pd*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=n,s=BigInt("0x100000000000000000000000000000000"),o=Id(i*e,t),c=Id(-r*e,t);let d=ed(e-o*n-c*a,t),u=ed(-o*r-c*i,t);const l=d>s,f=u>s;if(l&&(d=t-d),f&&(u=t-u),d>s||u>s)throw new Error("splitScalar: Endomorphism failed, k="+e);return{k1neg:l,k1:d,k2neg:f,k2:u}}}},hc);BigInt(0);Od.ProjectivePoint;const Ad={bitLength:256,isLe:!1};function Cd(e){return[33,65].includes(e.length)&&(e=sc(function(e,t){if(![33,65].includes(e.length))throw new Error(`Invalid publicKey provided, received ${e.length} bytes input`);if(65===e.length)return e.subarray(1);if(!Ba.CW||!t&&Ti())return xi(e).subarray(1);const{px:n,py:r}=Od.ProjectivePoint.fromHex(e);return Mt(Pt(n,Ad),Pt(r,Ad))}(e))),e.slice(-20)}function Hd(e){return(0,ut.b)(e)||Array.isArray(e)?(0,E.e)(e):(0,Je.qv)(e)||oc(e.toString())?(0,es.V)(e.toString()):(0,I.K)(e)?(0,E.e)(e):e}class Rd extends lr{constructor(e,t=new Uint8Array){super(e,Hd(t),160)}eq(e){return!!e&&super.eq(Hd(e))}toHuman(){return this.toJSON()}toJSON(){return this.toString()}toPrimitive(){return this.toJSON()}toString(){return function(e){if(!e)return"0x";const t=(0,E.e)(e);if(![20,32,33,65].includes(t.length))throw new Error(`Invalid address or publicKey provided, received ${t.length} bytes input`);const n=(0,N.X)(Cd(t),-1,!1),r=(0,N.X)(sc(n),-1,!1);let a="";for(let i=0;i<40;i++)a=`${a}${parseInt(r[i],16)>7?n[i].toUpperCase():n[i]}`;return`0x${a}`}(this)}toRawType(){return"AccountId"}}const Bd=new Uint8Array([255]);function Ld(e,t){return t instanceof zd?t.inner:t instanceof Rd||t instanceof vo?t:(0,ut.b)(t)||Array.isArray(t)||(0,Je.qv)(t)?function(e,t){if(20===t.length)return e.createTypeUnsafe("EthereumAccountId",[t]);if(255===t[0])return e.createTypeUnsafe("EthereumAccountId",[t.subarray(1)]);const[n,r]=vo.readLength(t);return e.createTypeUnsafe("AccountIndex",[ot(t.subarray(n,n+r))])}(e,(0,E.e)(t)):(0,pn.f)(t)||(0,Lt.E)(t)||(0,wt.s)(t)?e.createTypeUnsafe("AccountIndex",[t]):function(e,t){const n=co(t);return 20===n.length?e.createTypeUnsafe("EthereumAccountId",[n]):e.createTypeUnsafe("AccountIndex",[ot(n)])}(e,t)}class zd extends Ui{constructor(e,t=new Uint8Array){super(e,Ld(e,t))}get encodedLength(){const e=this._rawLength;return e+(e>1?1:0)}get _rawLength(){return this.inner instanceof vo?vo.calcLength(this.inner):this.inner.encodedLength}toHex(){return(0,N.X)(this.toU8a())}toRawType(){return"Address"}toU8a(e){const t=this.inner.toU8a().subarray(0,this._rawLength);return e?t:Mt(this.inner instanceof vo?vo.writeLength(t):Bd,t)}}function Ud(e){if(Array.isArray(e)||(0,I.K)(e)){const t=(0,E.e)(e);return[t.length/8,t]}return function(e){if(!e?.length)return[0,new Uint8Array];const[t,n]=dt(e),r=t+Math.ceil(n/8);if(r>e.length)throw new Error(`BitVec: required length less than remainder, expected at least ${r}, found ${e.length}`);return[n,e.subarray(t,r)]}(e)}class Dd extends rt{__internal__decodedLength;__internal__isMsb;constructor(e,t,n=!1){const[r,a]=Ud(t);super(e,a),this.__internal__decodedLength=r,this.__internal__isMsb=n}get encodedLength(){return this.length+Ht(this.__internal__decodedLength).length}inspect(){return{outer:[Ht(this.__internal__decodedLength),super.toU8a()]}}toBoolArray(){const e=[...this.toU8a(!0)].map((e=>[!!(128&e),!!(64&e),!!(32&e),!!(16&e),!!(8&e),!!(4&e),!!(2&e),!!(1&e)])),t=e.length,n=new Array(8*t);for(let r=0;r`00000000${e.toString(2)}`.slice(-8))).map((e=>this.__internal__isMsb?e:e.split("").reverse().join(""))).join("_")}`}toRawType(){return"BitVec"}toU8a(e){const t=super.toU8a(e);return e?t:It([Ht(this.__internal__decodedLength),t])}}class qd extends Number{encodedLength;registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__bitLength;constructor(e,t,{bitLength:n=32}={}){super((0,ut.b)(t)||(0,Je.qv)(t)?0===t.length?0:function(e,{bitLength:t=32,isLe:n=!0}={}){if(32!==t&&64!==t)throw new Error("Invalid bitLength provided, expected 32 or 64");if(e.length"}toU8a(e){return e?super.toU8a(!0):this.isSome?new Uint8Array([this.isTrue?1:2]):new Uint8Array([0])}}const $d=131072;class eu extends String{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__override=null;constructor(e,t){const[n,r]=function(e){if((0,ut.b)(e)){if(!e.length)return["",0];if(e instanceof rt)return[nt(e),0];const[t,n]=dt(e),r=t+n;if(n>$d)throw new Error(`Text: length ${n.toString()} exceeds 131072`);if(r>e.length)throw new Error(`Text: required length less than remainder, expected at least ${r}, found ${e.length}`);return[nt(e.subarray(t,r)),r]}return(0,Je.qv)(e)?[nt((0,es.V)(e)),0]:[e?e.toString():"",0]}(t);super(n),this.registry=e,this.initialU8aLength=r}get encodedLength(){return this.toU8a().length}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return 0===this.length}get length(){return super.length}eq(e){return!!(0,I.K)(e)&&this.toString()===e.toString()}inspect(){const e=(0,La.j)(super.toString());return{outer:e.length?[Ht(e.length),e]:[Ht(e.length)]}}setOverride(e){this.__internal__override=e}toHex(){return(0,N.X)(this.toU8a(!0))}toHuman(){return this.toJSON()}toJSON(){return this.toString()}toPrimitive(){return this.toJSON()}toRawType(){return"Text"}toString(){return this.__internal__override||super.toString()}toU8a(e){const t=(0,La.j)(super.toString());return e?t:ar(t)}}class tu extends eu{constructor(e,t=""){super(e,t),this.setOverride(_r(this.toString()))}toRawType(){return"Type"}}class nu extends(rr.with(8)){__UIntType="u8"}class ru extends(rr.with(16)){__UIntType="u16"}class au extends(rr.with(128)){__UIntType="u128"}class iu extends(rr.with(256)){__UIntType="u256"}class su extends bo{constructor(e,t){throw super(e,t),new Error("The `usize` type should not be used. Since it is platform-specific, it creates incompatibilities between native (generally u64) and WASM (always u32) code. Use one of the `u32` or `u64` types explicitly.")}}function ou(e,t){return(0,ut.b)(t)||(0,I.K)(t)?function(e,t){const n=t[0];if(!n)return[void 0,void 0];if(n>=1&&n<=33){const r=n-1,a=t.subarray(1,r+1);return[e.createTypeUnsafe("Raw",[a]),1]}if(n>=34&&n<=37)return[t.subarray(1,33),n-32];throw new Error(`Unable to decode Data, invalid indicator byte ${n}`)}(e,(0,E.e)(t)):t?[t,void 0]:[void 0,void 0]}class cu extends nn{constructor(e,t){if(super(e,{None:"Null",Raw:"Bytes",BlakeTwo256:"H256",Sha256:"H256",Keccak256:"H256",ShaThree256:"H256"},...ou(e,t)),this.isRaw&&this.asRaw.length>32)throw new Error("Data.Raw values are limited to a maximum length of 32 bytes")}get asBlakeTwo256(){return this.value}get asKeccak256(){return this.value}get asRaw(){return this.value}get asSha256(){return this.value}get asShaThree256(){return this.value}get isBlakeTwo256(){return 2===this.index}get isKeccak256(){return 4===this.index}get isNone(){return 0===this.index}get isRaw(){return 1===this.index}get isSha256(){return 3===this.index}get isShaThree256(){return 5===this.index}get encodedLength(){return this.toU8a().length}toU8a(){if(0===this.index)return new Uint8Array(1);if(1===this.index){const e=this.value.toU8a(!0),t=Math.min(e.length,32),n=new Uint8Array(t+1);return n.set([t+1],0),n.set(e.subarray(0,t),1),n}const e=new Uint8Array(33);return e.set([this.index+32],0),e.set(this.value.toU8a(),1),e}}function du(e,t){const n=e.getTypeDef(t);return n.lookupName||n.type}function uu(e,t,n){const r=du(e.lookup,function(e){return e.isPlain?e.asPlain:e.asMap.value}(t));return n?`Option<${r}>`:r}const lu={Blake2_128:[16,!1],Blake2_128Concat:[16,!0],Blake2_256:[32,!1],Identity:[0,!0],Twox128:[16,!1],Twox256:[32,!1],Twox64Concat:[8,!0]};function fu(e,t,n){if(!n||!n.type.isMap)return[];const{hashers:r,key:a}=n.type.asMap,i=1===r.length?[a]:e.lookup.getSiType(a).def.asTuple;return function(e,t,n){let r=32;const a=n.length,i=new Array(a);for(let s=0;s[e,i[t]])))}class pu extends sr{__internal__args;__internal__meta;__internal__outputType;__internal__method;__internal__section;constructor(e,t,n={}){const{key:r,method:a,section:i}=function(e){if((0,ut.b)(e)||!e||(0,I.K)(e))return{key:e};if(e instanceof pu)return{key:e,method:e.method,section:e.section};if((0,qe.T)(e))return{key:e(),method:e.method,section:e.section};if(Array.isArray(e)){const[t,n=[]]=e;if(!(0,qe.T)(t))throw new Error("Expected function input for key construction");if(t.meta&&t.meta.type.isMap){const e=t.meta.type.asMap;if(!Array.isArray(n)||n.length!==e.hashers.length)throw new Error(`Expected an array of ${e.hashers.length} values as params to a Map query`)}return{key:t(...n),method:t.method,section:t.section}}throw new Error(`Unable to convert input ${e} to StorageKey`)}(t);super(e,r),this.__internal__outputType=function(e,t){if(t instanceof pu)return t.outputType;if((0,qe.T)(t))return uu(e,t.meta.type);if(Array.isArray(t)){const[n]=t;if(n.meta)return uu(e,n.meta.type)}return"Raw"}(e,t),this.setMeta(function(e){if(e instanceof pu)return e.meta;if((0,qe.T)(e))return e.meta;if(Array.isArray(e)){const[t]=e;return t.meta}}(t),n.section||i,n.method||a)}get args(){return this.__internal__args}get meta(){return this.__internal__meta}get method(){return this.__internal__method}get outputType(){return this.__internal__outputType}get section(){return this.__internal__section}is(e){return e.section===this.section&&e.method===this.method}setMeta(e,t,n){this.__internal__meta=e,this.__internal__method=n||this.__internal__method,this.__internal__section=t||this.__internal__section,e&&(this.__internal__outputType=uu(this.registry,e.type));try{this.__internal__args=fu(this.registry,this.toU8a(!0),e)}catch{}return this}toHuman(e,t){return this.__internal__args.length?this.__internal__args.map((e=>e.toHuman(void 0,t))):super.toHuman(void 0,t)}toRawType(){return"StorageKey"}}const hu={metadata:{description:"Returns the metadata of a runtime",params:[],type:"OpaqueMetadata"}},bu={name:"Text",fields:"Vec",index:"u8",docs:"Vec"},mu={Si1Field:{name:"Option",type:"Si1LookupTypeId",typeName:"Option",docs:"Vec"},Si1LookupTypeId:"Compact",Si1Path:"Si0Path",Si1Type:{path:"Si1Path",params:"Vec",def:"Si1TypeDef",docs:"Vec"},Si1TypeDef:{_enum:{Composite:"Si1TypeDefComposite",Variant:"Si1TypeDefVariant",Sequence:"Si1TypeDefSequence",Array:"Si1TypeDefArray",Tuple:"Si1TypeDefTuple",Primitive:"Si1TypeDefPrimitive",Compact:"Si1TypeDefCompact",BitSequence:"Si1TypeDefBitSequence",HistoricMetaCompat:"Type"}},Si1TypeDefArray:{len:"u32",type:"Si1LookupTypeId"},Si1TypeDefBitSequence:{bitStoreType:"Si1LookupTypeId",bitOrderType:"Si1LookupTypeId"},Si1TypeDefCompact:{type:"Si1LookupTypeId"},Si1TypeDefComposite:{fields:"Vec"},Si1TypeDefPrimitive:"Si0TypeDefPrimitive",Si1TypeDefSequence:{type:"Si1LookupTypeId"},Si1TypeDefTuple:"Vec",Si1TypeParameter:{name:"Text",type:"Option"},Si1TypeDefVariant:{variants:"Vec"},Si1Variant:bu},yu={rpc:{},runtime:{Metadata:[{methods:{metadata_at_version:{description:"Returns the metadata at a given version.",params:[{name:"version",type:"u32"}],type:"Option"},metadata_versions:{description:"Returns the supported metadata versions.",params:[],type:"Vec"},...hu},version:2},{methods:{...hu},version:1}]},types:{ErrorMetadataV9:{name:"Text",docs:"Vec"},EventMetadataV9:{name:"Text",args:"Vec",docs:"Vec"},FunctionArgumentMetadataV9:{name:"Text",type:"Type"},FunctionMetadataV9:{name:"Text",args:"Vec",docs:"Vec"},MetadataV9:{modules:"Vec"},ModuleConstantMetadataV9:{name:"Text",type:"Type",value:"Bytes",docs:"Vec"},ModuleMetadataV9:{name:"Text",storage:"Option",calls:"Option>",events:"Option>",constants:"Vec",errors:"Vec"},StorageEntryMetadataV9:{name:"Text",modifier:"StorageEntryModifierV9",type:"StorageEntryTypeV9",fallback:"Bytes",docs:"Vec"},StorageEntryModifierV9:{_enum:["Optional","Default","Required"]},StorageEntryTypeV9:{_enum:{Plain:"Type",Map:{hasher:"StorageHasherV9",key:"Type",value:"Type",linked:"bool"},DoubleMap:{hasher:"StorageHasherV9",key1:"Type",key2:"Type",value:"Type",key2Hasher:"StorageHasherV9"}}},StorageHasherV9:{_enum:{Blake2_128:null,Blake2_256:null,Twox128:null,Twox256:null,Twox64Concat:null}},StorageMetadataV9:{prefix:"Text",items:"Vec"},ErrorMetadataV10:"ErrorMetadataV9",EventMetadataV10:"EventMetadataV9",FunctionArgumentMetadataV10:"FunctionArgumentMetadataV9",FunctionMetadataV10:"FunctionMetadataV9",MetadataV10:{modules:"Vec"},ModuleConstantMetadataV10:"ModuleConstantMetadataV9",ModuleMetadataV10:{name:"Text",storage:"Option",calls:"Option>",events:"Option>",constants:"Vec",errors:"Vec"},StorageEntryModifierV10:"StorageEntryModifierV9",StorageEntryMetadataV10:{name:"Text",modifier:"StorageEntryModifierV10",type:"StorageEntryTypeV10",fallback:"Bytes",docs:"Vec"},StorageEntryTypeV10:{_enum:{Plain:"Type",Map:{hasher:"StorageHasherV10",key:"Type",value:"Type",linked:"bool"},DoubleMap:{hasher:"StorageHasherV10",key1:"Type",key2:"Type",value:"Type",key2Hasher:"StorageHasherV10"}}},StorageMetadataV10:{prefix:"Text",items:"Vec"},StorageHasherV10:{_enum:{Blake2_128:null,Blake2_256:null,Blake2_128Concat:null,Twox128:null,Twox256:null,Twox64Concat:null}},...{ErrorMetadataV11:"ErrorMetadataV10",EventMetadataV11:"EventMetadataV10",ExtrinsicMetadataV11:{version:"u8",signedExtensions:"Vec"},FunctionArgumentMetadataV11:"FunctionArgumentMetadataV10",FunctionMetadataV11:"FunctionMetadataV10",MetadataV11:{modules:"Vec",extrinsic:"ExtrinsicMetadataV11"},ModuleConstantMetadataV11:"ModuleConstantMetadataV10",ModuleMetadataV11:{name:"Text",storage:"Option",calls:"Option>",events:"Option>",constants:"Vec",errors:"Vec"},StorageEntryModifierV11:"StorageEntryModifierV10",StorageEntryMetadataV11:{name:"Text",modifier:"StorageEntryModifierV11",type:"StorageEntryTypeV11",fallback:"Bytes",docs:"Vec"},StorageEntryTypeV11:{_enum:{Plain:"Type",Map:{hasher:"StorageHasherV11",key:"Type",value:"Type",linked:"bool"},DoubleMap:{hasher:"StorageHasherV11",key1:"Type",key2:"Type",value:"Type",key2Hasher:"StorageHasherV11"}}},StorageMetadataV11:{prefix:"Text",items:"Vec"},StorageHasherV11:{_enum:{Blake2_128:null,Blake2_256:null,Blake2_128Concat:null,Twox128:null,Twox256:null,Twox64Concat:null,Identity:null}}},ErrorMetadataV12:"ErrorMetadataV11",EventMetadataV12:"EventMetadataV11",ExtrinsicMetadataV12:"ExtrinsicMetadataV11",FunctionArgumentMetadataV12:"FunctionArgumentMetadataV11",FunctionMetadataV12:"FunctionMetadataV11",MetadataV12:{modules:"Vec",extrinsic:"ExtrinsicMetadataV12"},ModuleConstantMetadataV12:"ModuleConstantMetadataV11",ModuleMetadataV12:{name:"Text",storage:"Option",calls:"Option>",events:"Option>",constants:"Vec",errors:"Vec",index:"u8"},StorageEntryModifierV12:"StorageEntryModifierV11",StorageEntryMetadataV12:"StorageEntryMetadataV11",StorageEntryTypeV12:"StorageEntryTypeV11",StorageMetadataV12:"StorageMetadataV11",StorageHasherV12:"StorageHasherV11",ErrorMetadataV13:"ErrorMetadataV12",EventMetadataV13:"EventMetadataV12",ExtrinsicMetadataV13:"ExtrinsicMetadataV12",FunctionArgumentMetadataV13:"FunctionArgumentMetadataV12",FunctionMetadataV13:"FunctionMetadataV12",MetadataV13:{modules:"Vec",extrinsic:"ExtrinsicMetadataV13"},ModuleConstantMetadataV13:"ModuleConstantMetadataV12",ModuleMetadataV13:{name:"Text",storage:"Option",calls:"Option>",events:"Option>",constants:"Vec",errors:"Vec",index:"u8"},StorageEntryModifierV13:"StorageEntryModifierV12",StorageEntryMetadataV13:{name:"Text",modifier:"StorageEntryModifierV13",type:"StorageEntryTypeV13",fallback:"Bytes",docs:"Vec"},StorageEntryTypeV13:{_enum:{Plain:"Type",Map:{hasher:"StorageHasherV13",key:"Type",value:"Type",linked:"bool"},DoubleMap:{hasher:"StorageHasherV13",key1:"Type",key2:"Type",value:"Type",key2Hasher:"StorageHasherV13"},NMap:{keyVec:"Vec",hashers:"Vec",value:"Type"}}},StorageMetadataV13:{prefix:"Text",items:"Vec"},StorageHasherV13:"StorageHasherV12",...{PortableTypeV14:{id:"Si1LookupTypeId",type:"Si1Type"},ErrorMetadataV14:{...bu,args:"Vec"},EventMetadataV14:{...bu,args:"Vec"},FunctionArgumentMetadataV14:{name:"Text",type:"Type",typeName:"Option"},FunctionMetadataV14:{...bu,args:"Vec"},ExtrinsicMetadataV14:{type:"SiLookupTypeId",version:"u8",signedExtensions:"Vec"},MetadataV14:{lookup:"PortableRegistry",pallets:"Vec",extrinsic:"ExtrinsicMetadataV14",type:"SiLookupTypeId"},PalletCallMetadataV14:{type:"SiLookupTypeId"},PalletConstantMetadataV14:{name:"Text",type:"SiLookupTypeId",value:"Bytes",docs:"Vec"},PalletErrorMetadataV14:{type:"SiLookupTypeId"},PalletEventMetadataV14:{type:"SiLookupTypeId"},PalletMetadataV14:{name:"Text",storage:"Option",calls:"Option",events:"Option",constants:"Vec",errors:"Option",index:"u8"},PalletStorageMetadataV14:{prefix:"Text",items:"Vec"},SignedExtensionMetadataV14:{identifier:"Text",type:"SiLookupTypeId",additionalSigned:"SiLookupTypeId"},StorageEntryMetadataV14:{name:"Text",modifier:"StorageEntryModifierV14",type:"StorageEntryTypeV14",fallback:"Bytes",docs:"Vec"},StorageEntryModifierV14:"StorageEntryModifierV13",StorageEntryTypeV14:{_enum:{Plain:"SiLookupTypeId",Map:{hashers:"Vec",key:"SiLookupTypeId",value:"SiLookupTypeId"}}},StorageHasherV14:"StorageHasherV13"},CustomMetadata15:{map:"BTreeMap"},CustomValueMetadata15:{type:"SiLookupTypeId",value:"Bytes"},ExtrinsicMetadataV15:{version:"u8",addressType:"SiLookupTypeId",callType:"SiLookupTypeId",signatureType:"SiLookupTypeId",extraType:"SiLookupTypeId",signedExtensions:"Vec"},OuterEnums15:{callType:"SiLookupTypeId",eventType:"SiLookupTypeId",errorType:"SiLookupTypeId"},PalletMetadataV15:{name:"Text",storage:"Option",calls:"Option",events:"Option",constants:"Vec",errors:"Option",index:"u8",docs:"Vec"},RuntimeApiMetadataV15:{name:"Text",methods:"Vec",docs:"Vec"},RuntimeApiMethodMetadataV15:{name:"Text",inputs:"Vec",output:"SiLookupTypeId",docs:"Vec"},RuntimeApiMethodParamMetadataV15:{name:"Text",type:"SiLookupTypeId"},MetadataV15:{lookup:"PortableRegistry",pallets:"Vec",extrinsic:"ExtrinsicMetadataV15",type:"SiLookupTypeId",apis:"Vec",outerEnums:"OuterEnums15",custom:"CustomMetadata15"},ErrorMetadataLatest:"ErrorMetadataV14",EventMetadataLatest:"EventMetadataV14",ExtrinsicMetadataLatest:"ExtrinsicMetadataV15",FunctionArgumentMetadataLatest:"FunctionArgumentMetadataV14",FunctionMetadataLatest:"FunctionMetadataV14",MetadataLatest:"MetadataV15",PalletCallMetadataLatest:"PalletCallMetadataV14",PalletConstantMetadataLatest:"PalletConstantMetadataV14",PalletErrorMetadataLatest:"PalletErrorMetadataV14",PalletEventMetadataLatest:"PalletEventMetadataV14",PalletMetadataLatest:"PalletMetadataV15",PalletStorageMetadataLatest:"PalletStorageMetadataV14",PortableType:"PortableTypeV14",RuntimeApiMetadataLatest:"RuntimeApiMetadataV15",SignedExtensionMetadataLatest:"SignedExtensionMetadataV14",StorageEntryMetadataLatest:"StorageEntryMetadataV14",StorageEntryModifierLatest:"StorageEntryModifierV14",StorageEntryTypeLatest:"StorageEntryTypeV14",StorageHasher:"StorageHasherV14",OpaqueMetadata:"Opaque",MetadataAll:{_enum:{V0:"DoNotConstruct",V1:"DoNotConstruct",V2:"DoNotConstruct",V3:"DoNotConstruct",V4:"DoNotConstruct",V5:"DoNotConstruct",V6:"DoNotConstruct",V7:"DoNotConstruct",V8:"DoNotConstruct",V9:"MetadataV9",V10:"MetadataV10",V11:"MetadataV11",V12:"MetadataV12",V13:"MetadataV13",V14:"MetadataV14",V15:"MetadataV15"}}}},xu={execute_block:{description:"Execute the given block.",params:[{name:"block",type:"Block"}],type:"Null"}},gu={version:{description:"Returns the version of the runtime.",params:[],type:"RuntimeVersionPre3"}},vu={initialize_block:{description:"Initialize a block with the given header.",params:[{name:"header",type:"Header"}],type:"Null"}},wu={version:{description:"Returns the version of the runtime.",params:[],type:"RuntimeVersion"}},Vu={...xu,initialize_block:{description:"Initialize a block with the given header.",params:[{name:"header",type:"Header"}],type:"ExtrinsicInclusionMode"}},Tu={Core:[{methods:{...wu,...Vu},version:5},{methods:{...wu,...xu,...vu},version:4},{methods:{version:{description:"Returns the version of the runtime.",params:[],type:"RuntimeVersionPre4"},...xu,...vu},version:3},{methods:{...gu,...xu,...vu},version:2},{methods:{initialise_block:{description:"Initialize a block with the given header.",params:[{name:"header",type:"Header"}],type:"Null"},...gu,...xu},version:1}]},Su={Council:"CollectiveOrigin",System:"SystemOrigin",TechnicalCommittee:"CollectiveOrigin",Xcm:"XcmOrigin",XcmPallet:"XcmOrigin",Authority:"AuthorityOrigin",GeneralCouncil:"CollectiveOrigin"},ku={rpc:{},runtime:Tu,types:{Fixed64:"Int<64, Fixed64>",FixedI64:"Int<64, FixedI64>",FixedU64:"UInt<64, FixedU64>",Fixed128:"Int<128, Fixed128>",FixedI128:"Int<128, FixedI128>",FixedU128:"UInt<128, FixedU128>",I32F32:"Int<64, I32F32>",U32F32:"UInt<64, U32F32>",PerU16:"UInt<16, PerU16>",Perbill:"UInt<32, Perbill>",Percent:"UInt<8, Percent>",Permill:"UInt<32, Permill>",Perquintill:"UInt<64, Perquintill>",AccountId:"AccountId32",AccountId20:"GenericEthereumAccountId",AccountId32:"GenericAccountId32",AccountId33:"GenericAccountId33",AccountIdOf:"AccountId",AccountIndex:"GenericAccountIndex",Address:"MultiAddress",AssetId:"u32",Balance:"UInt<128, Balance>",BalanceOf:"Balance",Block:"GenericBlock",BlockNumber:"u32",BlockNumberFor:"BlockNumber",BlockNumberOf:"BlockNumber",Call:"GenericCall",CallHash:"Hash",CallHashOf:"CallHash",ChangesTrieConfiguration:{digestInterval:"u32",digestLevels:"u32"},ChangesTrieSignal:{_enum:{NewConfiguration:"Option"}},ConsensusEngineId:"GenericConsensusEngineId",CodecHash:"Hash",CrateVersion:{major:"u16",minor:"u8",patch:"u8"},Digest:{logs:"Vec"},DigestItem:{_enum:{Other:"Bytes",AuthoritiesChange:"Vec",ChangesTrieRoot:"Hash",SealV0:"SealV0",Consensus:"Consensus",Seal:"Seal",PreRuntime:"PreRuntime",ChangesTrieSignal:"ChangesTrieSignal",RuntimeEnvironmentUpdated:"Null"}},ExtrinsicsWeight:{normal:"Weight",operational:"Weight"},H32:"[u8; 4; H32]",H64:"[u8; 8; H64]",H128:"[u8; 16; H128]",H160:"[u8; 20; H160]",H256:"[u8; 32; H256]",H512:"[u8; 64; H512]",H1024:"[u8; 128; H1024]",H2048:"[u8; 256; H2048]",Hash:"H256",Header:{parentHash:"Hash",number:"Compact",stateRoot:"Hash",extrinsicsRoot:"Hash",digest:"Digest"},HeaderPartial:{parentHash:"Hash",number:"BlockNumber"},IndicesLookupSource:"GenericLookupSource",Index:"u32",Justification:"(ConsensusEngineId, EncodedJustification)",EncodedJustification:"Bytes",Justifications:"Vec",KeyValue:"(StorageKey, StorageData)",KeyTypeId:"u32",LockIdentifier:"[u8; 8]",LookupSource:"MultiAddress",LookupTarget:"AccountId",ModuleId:"LockIdentifier",MultiAddress:"GenericMultiAddress",MultiSigner:{_enum:{Ed25519:"[u8; 32]",Sr25519:"[u8; 32]",Ecdsa:"[u8; 33]"}},Moment:"UInt<64, Moment>",OpaqueCall:"Bytes",Origin:"DoNotConstruct",OriginCaller:{_enum:{System:"SystemOrigin"}},PalletId:"LockIdentifier",PalletsOrigin:"OriginCaller",PalletVersion:{major:"u16",minor:"u8",patch:"u8"},Pays:{_enum:["Yes","No"]},Phantom:"Null",PhantomData:"Null",Releases:{_enum:["V1","V2","V3","V4","V5","V6","V7","V8","V9","V10"]},RuntimeCall:"Call",RuntimeEvent:"Event",RuntimeDbWeight:{read:"Weight",write:"Weight"},SignedBlock:"SignedBlockWithJustifications",SignedBlockWithJustification:{block:"Block",justification:"Option"},SignedBlockWithJustifications:{block:"Block",justifications:"Option"},Slot:"u64",SlotDuration:"u64",StorageData:"Bytes",StorageInfo:{palletName:"Bytes",storage_name:"Bytes",prefix:"Bytes",maxValues:"Option",maxSize:"Option"},StorageProof:{trieNodes:"Vec"},TransactionPriority:"u64",TransactionLongevity:"u64",TransactionTag:"Bytes",TransactionInfo:{_alias:{dataSize:"size"},chunkRoot:"H256",contentHash:"H256",dataSize:"u32",blockChunks:"u32"},TransactionStorageProof:{chunk:"Vec",proof:"Vec>"},ValidatorId:"AccountId",ValidatorIdOf:"ValidatorId",WeightV0:"u32",WeightV1:"u64",WeightV2:{refTime:"Compact",proofSize:"Compact"},Weight:"WeightV2",WeightMultiplier:"Fixed64",PreRuntime:"(ConsensusEngineId, Bytes)",SealV0:"(u64, Signature)",Seal:"(ConsensusEngineId, Bytes)",Consensus:"(ConsensusEngineId, Bytes)",ExtrinsicInclusionMode:{_enum:["AllExtrinsics","OnlyInherents"]}}},_u={rpc:{},types:{Si0Field:{name:"Option",type:"Si0LookupTypeId",typeName:"Option",docs:"Vec"},Si0LookupTypeId:"u32",Si0Path:"Vec",Si0Type:{path:"Si0Path",params:"Vec",def:"Si0TypeDef"},Si0TypeDef:{_enum:{Composite:"Si0TypeDefComposite",Variant:"Si0TypeDefVariant",Sequence:"Si0TypeDefSequence",Array:"Si0TypeDefArray",Tuple:"Si0TypeDefTuple",Primitive:"Si0TypeDefPrimitive",Compact:"Si0TypeDefCompact",Phantom:"Si0TypeDefPhantom",BitSequence:"Si0TypeDefBitSequence"}},Si0TypeDefArray:{len:"u32",type:"Si0LookupTypeId"},Si0TypeDefBitSequence:{bitStoreType:"Si0LookupTypeId",bitOrderType:"Si0LookupTypeId"},Si0TypeDefCompact:{type:"Si0LookupTypeId"},Si0TypeDefComposite:{fields:"Vec"},Si0TypeDefPhantom:"Null",Si0TypeDefVariant:{variants:"Vec"},Si0TypeDefPrimitive:{_enum:["Bool","Char","Str","U8","U16","U32","U64","U128","U256","I8","I16","I32","I64","I128","I256"]},Si0TypeDefSequence:{type:"Si0LookupTypeId"},Si0TypeDefTuple:"Vec",Si0TypeParameter:{name:"Text",type:"Option"},Si0Variant:{name:"Text",fields:"Vec",index:"Option",discriminant:"Option",docs:"Vec"},...mu,SiField:"Si1Field",SiLookupTypeId:"Si1LookupTypeId",SiPath:"Si1Path",SiType:"Si1Type",SiTypeDef:"Si1TypeDef",SiTypeDefArray:"Si1TypeDefArray",SiTypeDefBitSequence:"Si1TypeDefBitSequence",SiTypeDefCompact:"Si1TypeDefCompact",SiTypeDefComposite:"Si1TypeDefComposite",SiTypeDefPrimitive:"Si1TypeDefPrimitive",SiTypeDefSequence:"Si1TypeDefSequence",SiTypeDefTuple:"Si1TypeDefTuple",SiTypeParameter:"Si1TypeParameter",SiTypeDefVariant:"Si1TypeDefVariant",SiVariant:"Si1Variant"}},Pu={rpc:{},runtime:{AssetConversionApi:[{methods:{get_reserves:{description:"Get pool reserves",params:[{name:"asset1",type:"StagingXcmV3MultiLocation"},{name:"asset2",type:"StagingXcmV3MultiLocation"}],type:"Option<(Balance,Balance)>"},quote_price_exact_tokens_for_tokens:{description:"Quote price: exact tokens for tokens",params:[{name:"asset1",type:"StagingXcmV3MultiLocation"},{name:"asset2",type:"StagingXcmV3MultiLocation"},{name:"amount",type:"u128"},{name:"include_fee",type:"bool"}],type:"Option<(Balance)>"},quote_price_tokens_for_exact_tokens:{description:"Quote price: tokens for exact tokens",params:[{name:"asset1",type:"StagingXcmV3MultiLocation"},{name:"asset2",type:"StagingXcmV3MultiLocation"},{name:"amount",type:"u128"},{name:"include_fee",type:"bool"}],type:"Option<(Balance)>"}},version:1}]},types:{TAssetConversion:"Option"}},Mu={rpc:{},runtime:{AssetsApi:[{methods:{account_balances:{description:"Return the current set of authorities.",params:[{name:"account",type:"AccountId"}],type:"Vec<(u32, TAssetBalance)>"}},version:1}]},types:{AssetApprovalKey:{owner:"AccountId",delegate:"AccountId"},AssetApproval:{amount:"TAssetBalance",deposit:"TAssetDepositBalance"},AssetBalance:{balance:"TAssetBalance",isFrozen:"bool",isSufficient:"bool"},AssetDestroyWitness:{accounts:"Compact",sufficients:"Compact",approvals:"Compact"},AssetDetails:{owner:"AccountId",issuer:"AccountId",admin:"AccountId",freezer:"AccountId",supply:"TAssetBalance",deposit:"TAssetDepositBalance",minBalance:"TAssetBalance",isSufficient:"bool",accounts:"u32",sufficients:"u32",approvals:"u32",isFrozen:"bool"},AssetMetadata:{deposit:"TAssetDepositBalance",name:"Vec",symbol:"Vec",decimals:"u8",isFrozen:"bool"},TAssetBalance:"u64",TAssetDepositBalance:"BalanceOf"}},Iu={rpc:{},runtime:{AuraApi:[{methods:{authorities:{description:"Return the current set of authorities.",params:[],type:"Vec"},slot_duration:{description:"Returns the slot duration for Aura.",params:[],type:"SlotDuration"}},version:1}]},types:{RawAuraPreDigest:{slotNumber:"u64"}}},Nu={rpc:{},types:{UncleEntryItem:{_enum:{InclusionHeight:"BlockNumber",Uncle:"(Hash, Option)"}}}},Eu={current_epoch:{description:"Returns information regarding the current epoch.",params:[],type:"Epoch"},current_epoch_start:{description:"Returns the slot that started the current epoch.",params:[],type:"Slot"},generate_key_ownership_proof:{description:"Generates a proof of key ownership for the given authority in the current epoch.",params:[{name:"slot",type:"Slot"},{name:"authorityId",type:"AuthorityId"}],type:"Option"},next_epoch:{description:"Returns information regarding the next epoch (which was already previously announced).",params:[],type:"Epoch"},submit_report_equivocation_unsigned_extrinsic:{description:"Submits an unsigned extrinsic to report an equivocation.",params:[{name:"equivocationProof",type:"BabeEquivocationProof"},{name:"keyOwnerProof",type:"OpaqueKeyOwnershipProof"}],type:"Option"}},Ou={rpc:{epochAuthorship:{description:"Returns data about which slots (primary or secondary) can be claimed in the current epoch with the keys in the keystore",isUnsafe:!0,params:[],type:"HashMap"}},runtime:{BabeApi:[{methods:{configuration:{description:"Return the genesis configuration for BABE. The configuration is only read on genesis.",params:[],type:"BabeGenesisConfiguration"},...Eu},version:2},{methods:{configuration:{description:"Return the configuration for BABE. Version 1.",params:[],type:"BabeGenesisConfigurationV1"},...Eu},version:1}]},types:{AllowedSlots:{_enum:["PrimarySlots","PrimaryAndSecondaryPlainSlots","PrimaryAndSecondaryVRFSlots"]},BabeAuthorityWeight:"u64",BabeEpochConfiguration:{c:"(u64, u64)",allowedSlots:"AllowedSlots"},BabeBlockWeight:"u32",BabeEquivocationProof:{offender:"AuthorityId",slotNumber:"SlotNumber",firstHeader:"Header",secondHeader:"Header"},BabeGenesisConfiguration:{slotDuration:"u64",epochLength:"u64",c:"(u64, u64)",genesisAuthorities:"Vec<(AuthorityId, BabeAuthorityWeight)>",randomness:"Randomness",allowedSlots:"AllowedSlots"},BabeGenesisConfigurationV1:{slotDuration:"u64",epochLength:"u64",c:"(u64, u64)",genesisAuthorities:"Vec<(AuthorityId, BabeAuthorityWeight)>",randomness:"Randomness",secondarySlots:"bool"},BabeWeight:"u64",MaybeRandomness:"Option",MaybeVrf:"Option",Epoch:{epochIndex:"u64",startSlot:"Slot",duration:"u64",authorities:"Vec<(AuthorityId, BabeAuthorityWeight)>",randomness:"Hash",config:"BabeEpochConfiguration"},EpochAuthorship:{primary:"Vec",secondary:"Vec",secondary_vrf:"Vec"},NextConfigDescriptor:{_enum:{V0:"Null",V1:"NextConfigDescriptorV1"}},NextConfigDescriptorV1:{c:"(u64, u64)",allowedSlots:"AllowedSlots"},OpaqueKeyOwnershipProof:"Bytes",Randomness:"Hash",RawBabePreDigest:{_enum:{Phantom:"Null",Primary:"RawBabePreDigestPrimary",SecondaryPlain:"RawBabePreDigestSecondaryPlain",SecondaryVRF:"RawBabePreDigestSecondaryVRF"}},RawBabePreDigestPrimary:{authorityIndex:"u32",slotNumber:"SlotNumber",vrfOutput:"VrfOutput",vrfProof:"VrfProof"},RawBabePreDigestSecondaryPlain:{authorityIndex:"u32",slotNumber:"SlotNumber"},RawBabePreDigestSecondaryVRF:{authorityIndex:"u32",slotNumber:"SlotNumber",vrfOutput:"VrfOutput",vrfProof:"VrfProof"},RawBabePreDigestTo159:{_enum:{Primary:"RawBabePreDigestPrimaryTo159",Secondary:"RawBabePreDigestSecondaryTo159"}},RawBabePreDigestPrimaryTo159:{authorityIndex:"u32",slotNumber:"SlotNumber",weight:"BabeBlockWeight",vrfOutput:"VrfOutput",vrfProof:"VrfProof"},RawBabePreDigestSecondaryTo159:{authorityIndex:"u32",slotNumber:"SlotNumber",weight:"BabeBlockWeight"},RawBabePreDigestCompat:{_enum:{Zero:"u32",One:"u32",Two:"u32",Three:"u32"}},SlotNumber:"u64",VrfData:"[u8; 32]",VrfOutput:"[u8; 32]",VrfProof:"[u8; 64]"}},Au={rpc:{},types:{AccountData:{free:"Balance",reserved:"Balance",miscFrozen:"Balance",feeFrozen:"Balance"},BalanceLockTo212:{id:"LockIdentifier",amount:"Balance",until:"BlockNumber",reasons:"WithdrawReasons"},BalanceLock:{id:"LockIdentifier",amount:"Balance",reasons:"Reasons"},BalanceStatus:{_enum:["Free","Reserved"]},Reasons:{_enum:["Fee","Misc","All"]},ReserveData:{id:"ReserveIdentifier",amount:"Balance"},ReserveIdentifier:"[u8; 8]",VestingSchedule:{offset:"Balance",perBlock:"Balance",startingBlock:"BlockNumber"},WithdrawReasons:{_set:{TransactionPayment:1,Transfer:2,Reserve:4,Fee:8,Tip:16}}}},Cu={beefy_genesis:{description:"Return the block number where BEEFY consensus is enabled/started",params:[],type:"Option"},generate_key_ownership_proof:{description:"Generates a proof of key ownership for the given authority in the given set.",params:[{name:"setId",type:"ValidatorSetId"},{name:"authorityId",type:"AuthorityId"}],type:"Option"},validator_set:{description:"Return the current active BEEFY validator set",params:[],type:"Option"}},Hu={...Cu,submit_report_equivocation_unsigned_extrinsic:{description:"Submits an unsigned extrinsic to report an equivocation.",params:[{name:"equivocationProof",type:"BeefyEquivocationProof"},{name:"keyOwnerProof",type:"OpaqueKeyOwnershipProof"}],type:"Option"}},Ru={rpc:{getFinalizedHead:{description:"Returns hash of the latest BEEFY finalized block as seen by this client.",params:[],type:"H256"},subscribeJustifications:{description:"Returns the block most recently finalized by BEEFY, alongside its justification.",params:[],pubsub:["justifications","subscribeJustifications","unsubscribeJustifications"],type:"BeefyVersionedFinalityProof"}},runtime:{BeefyApi:[{methods:{...Cu,submit_report_double_voting_unsigned_extrinsic:{description:"Submits an unsigned extrinsic to report a double voting equivocation.",params:[{name:"equivocationProof",type:"SpConsensusBeefyDoubleVotingProof"},{name:"keyOwnerProof",type:"OpaqueKeyOwnershipProof"}],type:"Option"}},version:4},{methods:Hu,version:3},{methods:Hu,version:2},{methods:Hu,version:1}],BeefyMmrApi:[{methods:{authority_set_proof:{description:"Return the currently active BEEFY authority set proof.",params:[],type:"BeefyAuthoritySet"},next_authority_set_proof:{description:"Return the next/queued BEEFY authority set proof.",params:[],type:"BeefyNextAuthoritySet"}},version:1}]},types:{BeefyAuthoritySet:{id:"u64",len:"u32",root:"H256"},BeefyCommitment:{payload:"BeefyPayload",blockNumber:"BlockNumber",validatorSetId:"ValidatorSetId"},BeefyId:"[u8; 33]",BeefyEquivocationProof:{first:"BeefyVoteMessage",second:"BeefyVoteMessage"},BeefyCompactSignedCommitment:{commitment:"BeefyCommitment",signaturesFrom:"Vec",validatorSetLen:"u32",signaturesCompact:"Vec"},BeefySignedCommitment:{commitment:"BeefyCommitment",signatures:"Vec>"},BeefyVersionedFinalityProof:{_enum:{V0:"Null",V1:"BeefyCompactSignedCommitment"}},BeefyNextAuthoritySet:{id:"u64",len:"u32",root:"H256"},BeefyPayload:"Vec<(BeefyPayloadId, Bytes)>",BeefyPayloadId:"[u8;2]",BeefyVoteMessage:{commitment:"BeefyCommitment",id:"AuthorityId",signature:"Signature"},MmrRootHash:"H256",ValidatorSetId:"u64",ValidatorSet:{validators:"Vec",id:"ValidatorSetId"}}},Bu={rpc:{},runtime:{Benchmark:[{methods:{benchmark_metadata:{description:"Get the benchmark metadata available for this runtime.",params:[{name:"extra",type:"bool"}],type:"(Vec, Vec)"},dispatch_benchmark:{description:"Dispatch the given benchmark.",params:[{name:"config",type:"BenchmarkConfig"}],type:"Result, Text>"}},version:1}]},types:{BenchmarkBatch:{pallet:"Text",instance:"Text",benchmark:"Text",results:"Vec"},BenchmarkConfig:{pallet:"Bytes",benchmark:"Bytes",selectedComponents:"Vec<(BenchmarkParameter, u32)>",verify:"bool",internalRepeats:"u32"},BenchmarkList:{pallet:"Bytes",instance:"Bytes",benchmarks:"Vec"},BenchmarkMetadata:{name:"Bytes",components:"Vec<(BenchmarkParameter, u32, u32)>"},BenchmarkParameter:{_enum:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]},BenchmarkResult:{components:"Vec<(BenchmarkParameter, u32)>",extrinsicTime:"u128",storageRootTime:"u128",reads:"u32",repeatReads:"u32",writes:"u32",repeatWrites:"u32",proofSize:"u32",benchKeys:"Vec<(Vec, u32, u32, bool)>"}}},Lu={random_seed:{description:"Generate a random seed.",params:[],type:"Hash"}},zu={apply_extrinsic:{description:"Apply the given extrinsic.",params:[{name:"extrinsic",type:"Extrinsic"}],type:"ApplyExtrinsicResultPre6"}},Uu={check_inherents:{description:"Check that the inherents are valid.",params:[{name:"block",type:"Block"},{name:"data",type:"InherentData"}],type:"CheckInherentsResult"},inherent_extrinsics:{description:"Generate inherent extrinsics.",params:[{name:"inherent",type:"InherentData"}],type:"Vec"}},Du={finalize_block:{description:"Finish the current block.",params:[],type:"Header"}},qu={rpc:{},runtime:{BlockBuilder:[{methods:{apply_extrinsic:{description:"Apply the given extrinsic.",params:[{name:"extrinsic",type:"Extrinsic"}],type:"ApplyExtrinsicResult"},...Uu,...Du},version:6},{methods:{...zu,...Uu,...Du},version:5},{methods:{...Lu,...zu,...Uu,...Du},version:4},{methods:{...Lu,...Uu,...Du},version:3},{methods:{finalise_block:{description:"Finish the current block.",params:[],type:"Header"},...Lu,...Uu},version:2}]},types:{CheckInherentsResult:{okay:"bool",fatalError:"bool",errors:"InherentData"},InherentData:{data:"BTreeMap"},InherentIdentifier:"[u8; 8]"}},ju={rpc:{},types:{CollectiveOrigin:{_enum:{Members:"(MemberCount, MemberCount)",Member:"AccountId"}},MemberCount:"u32",ProposalIndex:"u32",VotesTo230:{index:"ProposalIndex",threshold:"MemberCount",ayes:"Vec",nays:"Vec"},Votes:{index:"ProposalIndex",threshold:"MemberCount",ayes:"Vec",nays:"Vec",end:"BlockNumber"}}},Fu={rpc:{},types:{AuthorityId:"AccountId",RawVRFOutput:"[u8; 32]"}},Xu={get_storage:{description:"Query a given storage key in a given contract.",params:[{name:"address",type:"AccountId"},{name:"key",type:"Bytes"}],type:"Option"},upload_code:{description:"Upload new code without instantiating a contract from it.",params:[{name:"origin",type:"AccountId"},{name:"code",type:"Bytes"},{name:"storageDepositLimit",type:"Option"}],type:"CodeUploadResult"}},Wu={rpc:{call:{deprecated:"Use the runtime interface `api.call.contractsApi.call` instead",description:"Executes a call to a contract",params:[{name:"callRequest",type:"ContractCallRequest"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"ContractExecResult"},getStorage:{deprecated:"Use the runtime interface `api.call.contractsApi.getStorage` instead",description:"Returns the value under a specified storage key in a contract",params:[{name:"address",type:"AccountId"},{name:"key",type:"H256"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Option"},instantiate:{deprecated:"Use the runtime interface `api.call.contractsApi.instantiate` instead",description:"Instantiate a new contract",params:[{name:"request",type:"InstantiateRequestV1"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"ContractInstantiateResult"},rentProjection:{deprecated:"Not available in newer versions of the contracts interfaces",description:"Returns the projected time a given contract will be able to sustain paying its rent",params:[{name:"address",type:"AccountId"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Option"},uploadCode:{deprecated:"Use the runtime interface `api.call.contractsApi.uploadCode` instead",description:"Upload new code without instantiating a contract from it",endpoint:"contracts_upload_code",params:[{name:"uploadRequest",type:"CodeUploadRequest"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"CodeUploadResult"}},runtime:{ContractsApi:[{methods:{call:{description:"Perform a call from a specified account to a given contract.",params:[{name:"origin",type:"AccountId"},{name:"dest",type:"AccountId"},{name:"value",type:"Balance"},{name:"gasLimit",type:"Option"},{name:"storageDepositLimit",type:"Option"},{name:"inputData",type:"Vec"}],type:"ContractExecResult"},instantiate:{description:"Instantiate a new contract.",params:[{name:"origin",type:"AccountId"},{name:"value",type:"Balance"},{name:"gasLimit",type:"Option"},{name:"storageDepositLimit",type:"Option"},{name:"code",type:"CodeSource"},{name:"data",type:"Bytes"},{name:"salt",type:"Bytes"}],type:"ContractInstantiateResult"},...Xu},version:2},{methods:{call:{description:"Perform a call from a specified account to a given contract.",params:[{name:"origin",type:"AccountId"},{name:"dest",type:"AccountId"},{name:"value",type:"Balance"},{name:"gasLimit",type:"u64"},{name:"storageDepositLimit",type:"Option"},{name:"inputData",type:"Vec"}],type:"ContractExecResultU64"},instantiate:{description:"Instantiate a new contract.",params:[{name:"origin",type:"AccountId"},{name:"value",type:"Balance"},{name:"gasLimit",type:"u64"},{name:"storageDepositLimit",type:"Option"},{name:"code",type:"CodeSource"},{name:"data",type:"Bytes"},{name:"salt",type:"Bytes"}],type:"ContractInstantiateResultU64"},...Xu},version:1}]},types:{AliveContractInfo:{trieId:"TrieId",storageSize:"u32",pairCount:"u32",codeHash:"CodeHash",rentAllowance:"Balance",rentPaid:"Balance",deductBlock:"BlockNumber",lastWrite:"Option",_reserved:"Option"},CodeHash:"Hash",CodeSource:{_enum:{Upload:"Bytes",Existing:"Hash"}},CodeUploadRequest:{origin:"AccountId",code:"Bytes",storageDepositLimit:"Option"},CodeUploadResult:"Result",CodeUploadResultValue:{codeHash:"CodeHash",deposit:"Balance"},ContractCallRequest:{origin:"AccountId",dest:"AccountId",value:"Balance",gasLimit:"u64",storageDepositLimit:"Option",inputData:"Bytes"},ContractExecResultSuccessTo255:{status:"u8",data:"Raw"},ContractExecResultTo255:{_enum:{Success:"ContractExecResultSuccessTo255",Error:"Null"}},ContractExecResultSuccessTo260:{flags:"ContractReturnFlags",data:"Bytes",gasConsumed:"u64"},ContractExecResultTo260:{_enum:{Success:"ContractExecResultSuccessTo260",Error:"Null"}},ContractExecResultOk:{flags:"ContractReturnFlags",data:"Bytes"},ContractExecResultResult:"Result",ContractExecResultTo267:{gasConsumed:"u64",debugMessage:"Text",result:"ContractExecResultResult"},ContractExecResult:{gasConsumed:"Weight",gasRequired:"Weight",storageDeposit:"StorageDeposit",debugMessage:"Text",result:"ContractExecResultResult"},ContractExecResultU64:{gasConsumed:"u64",gasRequired:"u64",storageDeposit:"StorageDeposit",debugMessage:"Text",result:"ContractExecResultResult"},ContractInfo:{_enum:{Alive:"AliveContractInfo",Tombstone:"TombstoneContractInfo"}},ContractCallFlags:{_set:{_bitLength:32,ForwardInput:1,CloneInput:2,TailCall:4,AllowReentry:8}},ContractReturnFlags:{_set:{_bitLength:32,Revert:1}},ContractStorageKey:"[u8; 32]",DeletedContract:{pairCount:"u32",trieId:"TrieId"},ExecReturnValue:{flags:"ContractReturnFlags",data:"Bytes"},Gas:"u64",HostFnWeightsTo264:{caller:"Weight",address:"Weight",gasLeft:"Weight",balance:"Weight",valueTransferred:"Weight",minimumBalance:"Weight",tombstoneDeposit:"Weight",rentAllowance:"Weight",blockNumber:"Weight",now:"Weight",weightToFee:"Weight",gas:"Weight",input:"Weight",inputPerByte:"Weight",return:"Weight",returnPerByte:"Weight",terminate:"Weight",restoreTo:"Weight",restoreToPerDelta:"Weight",random:"Weight",depositEvent:"Weight",depositEventPerTopic:"Weight",depositEventPerByte:"Weight",setRentAllowance:"Weight",setStorage:"Weight",setStoragePerByte:"Weight",clearStorage:"Weight",getStorage:"Weight",getStoragePerByte:"Weight",transfer:"Weight",call:"Weight",callTransferSurcharge:"Weight",callPerInputByte:"Weight",callPerOutputByte:"Weight",instantiate:"Weight",instantiatePerInputByte:"Weight",instantiatePerOutputByte:"Weight",hashSha2256:"Weight",hashSha2256PerByte:"Weight",hashKeccak256:"Weight",hashKeccak256PerByte:"Weight",hashBlake2256:"Weight",hashBlake2256PerByte:"Weight",hashBlake2128:"Weight",hashBlake2128PerByte:"Weight"},HostFnWeights:{caller:"Weight",address:"Weight",gasLeft:"Weight",balance:"Weight",valueTransferred:"Weight",minimumBalance:"Weight",tombstoneDeposit:"Weight",rentAllowance:"Weight",blockNumber:"Weight",now:"Weight",weightToFee:"Weight",gas:"Weight",input:"Weight",inputPerByte:"Weight",return:"Weight",returnPerByte:"Weight",terminate:"Weight",terminatePerCodeByte:"Weight",restoreTo:"Weight",restoreToPerCallerCodeByte:"Weight",restoreToPerTombstoneCodeByte:"Weight",restoreToPerDelta:"Weight",random:"Weight",depositEvent:"Weight",depositEventPerTopic:"Weight",depositEventPerByte:"Weight",setRentAllowance:"Weight",setStorage:"Weight",setStoragePerByte:"Weight",clearStorage:"Weight",getStorage:"Weight",getStoragePerByte:"Weight",transfer:"Weight",call:"Weight",callPerCodeByte:"Weight",callTransferSurcharge:"Weight",callPerInputByte:"Weight",callPerOutputByte:"Weight",instantiate:"Weight",instantiatePerCodeByte:"Weight",instantiatePerInputByte:"Weight",instantiatePerOutputByte:"Weight",instantiatePerSaltByte:"Weight",hashSha2256:"Weight",hashSha2256PerByte:"Weight",hashKeccak256:"Weight",hashKeccak256PerByte:"Weight",hashBlake2256:"Weight",hashBlake2256PerByte:"Weight",hashBlake2128:"Weight",hashBlake2128PerByte:"Weight",rentParams:"Weight"},InstantiateRequestV1:{origin:"AccountId",value:"Balance",gasLimit:"Gas",code:"Bytes",data:"Bytes",salt:"Bytes"},InstantiateRequestV2:{_fallback:"InstantiateRequestV1",origin:"AccountId",value:"Balance",gasLimit:"Gas",storageDepositLimit:"Option",code:"Bytes",data:"Bytes",salt:"Bytes"},InstantiateRequest:{_fallback:"InstantiateRequestV2",origin:"AccountId",value:"Balance",gasLimit:"Gas",storageDepositLimit:"Option",code:"CodeSource",data:"Bytes",salt:"Bytes"},ContractInstantiateResultTo267:"Result",ContractInstantiateResultTo299:"Result",ContractInstantiateResult:{gasConsumed:"WeightV2",gasRequired:"WeightV2",storageDeposit:"StorageDeposit",debugMessage:"Text",result:"InstantiateReturnValue"},ContractInstantiateResultU64:{_fallback:"ContractInstantiateResultTo299",gasConsumed:"u64",gasRequired:"u64",storageDeposit:"StorageDeposit",debugMessage:"Text",result:"InstantiateReturnValue"},InstantiateReturnValueTo267:{result:"ExecReturnValue",accountId:"AccountId",rentProjection:"Option"},InstantiateReturnValueOk:{result:"ExecReturnValue",accountId:"AccountId"},InstantiateReturnValue:"Result",InstructionWeights:{i64const:"u32",i64load:"u32",i64store:"u32",select:"u32",rIf:"u32",br:"u32",brIf:"u32",brIable:"u32",brIablePerEntry:"u32",call:"u32",callIndirect:"u32",callIndirectPerParam:"u32",localGet:"u32",localSet:"u32",local_tee:"u32",globalGet:"u32",globalSet:"u32",memoryCurrent:"u32",memoryGrow:"u32",i64clz:"u32",i64ctz:"u32",i64popcnt:"u32",i64eqz:"u32",i64extendsi32:"u32",i64extendui32:"u32",i32wrapi64:"u32",i64eq:"u32",i64ne:"u32",i64lts:"u32",i64ltu:"u32",i64gts:"u32",i64gtu:"u32",i64les:"u32",i64leu:"u32",i64ges:"u32",i64geu:"u32",i64add:"u32",i64sub:"u32",i64mul:"u32",i64divs:"u32",i64divu:"u32",i64rems:"u32",i64remu:"u32",i64and:"u32",i64or:"u32",i64xor:"u32",i64shl:"u32",i64shrs:"u32",i64shru:"u32",i64rotl:"u32",i64rotr:"u32"},LimitsTo264:{eventTopics:"u32",stackHeight:"u32",globals:"u32",parameters:"u32",memoryPages:"u32",tableSize:"u32",brTableSize:"u32",subjectLen:"u32",codeSize:"u32"},Limits:{eventTopics:"u32",stackHeight:"u32",globals:"u32",parameters:"u32",memoryPages:"u32",tableSize:"u32",brTableSize:"u32",subjectLen:"u32"},PrefabWasmModule:{scheduleVersion:"Compact",initial:"Compact",maximum:"Compact",refcount:"Compact",_reserved:"Option",code:"Bytes",originalCodeLen:"u32"},RentProjection:{_enum:{EvictionAt:"BlockNumber",NoEviction:"Null"}},ScheduleTo212:{version:"u32",putCodePerByteCost:"Gas",growMemCost:"Gas",regularOpCost:"Gas",returnDataPerByteCost:"Gas",eventDataPerByteCost:"Gas",eventPerTopicCost:"Gas",eventBaseCost:"Gas",sandboxDataReadCost:"Gas",sandboxDataWriteCost:"Gas",maxEventTopics:"u32",maxStackHeight:"u32",maxMemoryPages:"u32",enablePrintln:"bool",maxSubjectLen:"u32"},ScheduleTo258:{version:"u32",putCodePerByteCost:"Gas",growMemCost:"Gas",regularOpCost:"Gas",returnDataPerByteCost:"Gas",eventDataPerByteCost:"Gas",eventPerTopicCost:"Gas",eventBaseCost:"Gas",sandboxDataReadCost:"Gas",sandboxDataWriteCost:"Gas",transferCost:"Gas",maxEventTopics:"u32",maxStackHeight:"u32",maxMemoryPages:"u32",enablePrintln:"bool",maxSubjectLen:"u32"},ScheduleTo264:{version:"u32",enablePrintln:"bool",limits:"LimitsTo264",instructionWeights:"InstructionWeights",hostFnWeights:"HostFnWeightsTo264"},Schedule:{version:"u32",enablePrintln:"bool",limits:"Limits",instructionWeights:"InstructionWeights",hostFnWeights:"HostFnWeights"},SeedOf:"Hash",StorageDeposit:{_enum:{Refund:"Balance",Charge:"Balance"}},TombstoneContractInfo:"Hash",TrieId:"Bytes"}},Zu={rpc:{},types:{AccountVote:{_enum:{Standard:"AccountVoteStandard",Split:"AccountVoteSplit"}},AccountVoteSplit:{aye:"Balance",nay:"Balance"},AccountVoteStandard:{vote:"Vote",balance:"Balance"},Conviction:{_enum:["None","Locked1x","Locked2x","Locked3x","Locked4x","Locked5x","Locked6x"]},Delegations:{votes:"Balance",capital:"Balance"},PreimageStatus:{_enum:{Missing:"BlockNumber",Available:"PreimageStatusAvailable"}},PreimageStatusAvailable:{data:"Bytes",provider:"AccountId",deposit:"Balance",since:"BlockNumber",expiry:"Option"},PriorLock:"(BlockNumber, Balance)",PropIndex:"u32",Proposal:"Call",ProxyState:{_enum:{Open:"AccountId",Active:"AccountId"}},ReferendumIndex:"u32",ReferendumInfoTo239:{end:"BlockNumber",proposalHash:"Hash",threshold:"VoteThreshold",delay:"BlockNumber"},ReferendumInfo:{_enum:{Ongoing:"ReferendumStatus",Finished:"ReferendumInfoFinished"}},ReferendumInfoFinished:{approved:"bool",end:"BlockNumber"},ReferendumStatus:{end:"BlockNumber",proposalHash:"Hash",threshold:"VoteThreshold",delay:"BlockNumber",tally:"Tally"},Tally:{ayes:"Balance",nays:"Balance",turnout:"Balance"},Voting:{_enum:{Direct:"VotingDirect",Delegating:"VotingDelegating"}},VotingDirect:{votes:"Vec",delegations:"Delegations",prior:"PriorLock"},VotingDirectVote:"(ReferendumIndex, AccountVote)",VotingDelegating:{balance:"Balance",target:"AccountId",conviction:"Conviction",delegations:"Delegations",prior:"PriorLock"}}},Gu={rpc:{getBlockStats:{description:"Reexecute the specified `block_hash` and gather statistics while doing so",isUnsafe:!0,params:[{isHistoric:!0,name:"at",type:"Hash"}],type:"Option"}},types:{BlockStats:{witnessLen:"u64",witnessCompactLen:"u64",blockLen:"u64",blockNumExtrinsics:"u64"}}},Ku={rpc:{},runtime:{AuthorityDiscoveryApi:[{methods:{authorities:{description:"Retrieve authority identifiers of the current and next authority set.",params:[],type:"Vec"}},version:1}]},types:{}},Ju={rpc:{},types:{ApprovalFlag:"u32",DefunctVoter:{who:"AccountId",voteCount:"Compact",candidateCount:"Compact"},Renouncing:{_enum:{Member:"Null",RunnerUp:"Null",Candidate:"Compact"}},SetIndex:"u32",Vote:"GenericVote",VoteIndex:"u32",VoterInfo:{lastActive:"VoteIndex",lastWin:"VoteIndex",pot:"Balance",stake:"Balance"},VoteThreshold:{_enum:["Super Majority Approve","Super Majority Against","Simple Majority"]}}},Yu={rpc:{createBlock:{description:"Instructs the manual-seal authorship task to create a new block",params:[{name:"createEmpty",type:"bool"},{name:"finalize",type:"bool"},{isOptional:!0,name:"parentHash",type:"BlockHash"}],type:"CreatedBlock"},finalizeBlock:{description:"Instructs the manual-seal authorship task to finalize a block",params:[{name:"hash",type:"BlockHash"},{isOptional:!0,name:"justification",type:"Justification"}],type:"bool"}},types:{CreatedBlock:{_alias:{blockHash:"hash"},blockHash:"BlockHash",aux:"ImportedAux"},ImportedAux:{headerOnly:"bool",clearJustificationRequests:"bool",needsJustification:"bool",badJustification:"bool",needsFinalityProof:"bool",isNewBest:"bool"}}},Qu={rpc:{},types:{EvmAccount:{nonce:"u256",balance:"u256"},EvmCallInfo:{exitReason:"ExitReason",value:"Bytes",usedGas:"U256",logs:"Vec"},EvmCreateInfo:{exitReason:"ExitReason",value:"H160",usedGas:"U256",logs:"Vec"},EvmCallInfoV2:{exitReason:"ExitReason",value:"Bytes",usedGas:"U256",weightInfo:"Option",logs:"Vec"},EvmCreateInfoV2:{exitReason:"ExitReason",value:"H160",usedGas:"U256",weightInfo:"Option",logs:"Vec"},EvmLog:{address:"H160",topics:"Vec",data:"Bytes"},EvmVicinity:{gasPrice:"u256",origin:"H160"},EvmWeightInfo:{refTimeLimit:"Option",proofSizeLimit:"Option",refTimeUsage:"Option",proofSizeUsage:"Option"},ExitError:{_enum:{StackUnderflow:"Null",StackOverflow:"Null",InvalidJump:"Null",InvalidRange:"Null",DesignatedInvalid:"Null",CallTooDeep:"Null",CreateCollision:"Null",CreateContractLimit:"Null",OutOfOffset:"Null",OutOfGas:"Null",OutOfFund:"Null",PCUnderflow:"Null",CreateEmpty:"Null",Other:"Text"}},ExitFatal:{_enum:{NotSupported:"Null",UnhandledInterrupt:"Null",CallErrorAsFatal:"ExitError",Other:"Text"}},ExitReason:{_enum:{Succeed:"ExitSucceed",Error:"ExitError",Revert:"ExitRevert",Fatal:"ExitFatal"}},ExitRevert:{_enum:["Reverted"]},ExitSucceed:{_enum:["Stopped","Returned","Suicided"]}}},$u={rpc:{},types:{Extrinsic:"GenericExtrinsic",ExtrinsicEra:"GenericExtrinsicEra",ExtrinsicPayload:"GenericExtrinsicPayload",ExtrinsicSignature:"MultiSignature",ExtrinsicV4:"GenericExtrinsicV4",ExtrinsicPayloadV4:"GenericExtrinsicPayloadV4",ExtrinsicSignatureV4:"GenericExtrinsicSignatureV4",ExtrinsicUnknown:"GenericExtrinsicUnknown",ExtrinsicPayloadUnknown:"GenericExtrinsicPayloadUnknown",ExtrinsicV5:"GenericExtrinsicV5",ExtrinsicPayloadV5:"GenericExtrinsicPayloadV5",ExtrinsicSignatureV5:"GenericExtrinsicSignatureV5",Era:"ExtrinsicEra",ImmortalEra:"GenericImmortalEra",MortalEra:"GenericMortalEra",AnySignature:"H512",MultiSignature:{_enum:{Ed25519:"Ed25519Signature",Sr25519:"Sr25519Signature",Ecdsa:"EcdsaSignature"}},Signature:"H512",SignerPayload:"GenericSignerPayload",EcdsaSignature:"[u8; 65]",Ed25519Signature:"H512",Sr25519Signature:"H512"}},el={rpc:{},runtime:{FungiblesApi:[{methods:{query_account_balances:{description:"Returns the list of all `MultiAsset` that an `AccountId` has",params:[{name:"account",type:"AccountId"}],type:"Result, FungiblesAccessError>"}},version:1},{methods:{query_account_balances:{description:"Returns the list of all `MultiAsset` that an `AccountId` has",params:[{name:"account",type:"AccountId"}],type:"Result"}},version:2}]},types:{FungiblesAccessError:{_enum:["AssetIdConversionFailed","AmountToBalanceConversionFailed"]}}},tl={rpc:{},types:{AssetOptions:{initalIssuance:"Compact",permissions:"PermissionLatest"},Owner:{_enum:{None:"Null",Address:"AccountId"}},PermissionsV1:{update:"Owner",mint:"Owner",burn:"Owner"},PermissionVersions:{_enum:{V1:"PermissionsV1"}},PermissionLatest:"PermissionsV1"}},nl={rpc:{},runtime:{GenesisBuilder:[{methods:{build_config:{description:"Build `RuntimeGenesisConfig` from a JSON blob not using any defaults and store it in the storage.",params:[{name:"json",type:"Vec"}],type:"Result<(), GenesisBuildErr>"},create_default_config:{description:"Creates the default `RuntimeGenesisConfig` and returns it as a JSON blob.",params:[],type:"Vec"}},version:1}]},types:{GenesisBuildErr:"Text"}},rl={rpc:{},types:{ActiveGilt:{proportion:"Perquintill",amount:"Balance",who:"AccountId",expiry:"BlockNumber"},ActiveGiltsTotal:{frozen:"Balance",proportion:"Perquintill",index:"ActiveIndex",target:"Perquintill"},ActiveIndex:"u32",GiltBid:{amount:"Balance",who:"AccountId"}}},al={generate_key_ownership_proof:{description:"Generates a proof of key ownership for the given authority in the given set.",params:[{name:"setId",type:"SetId"},{name:"authorityId",type:"AuthorityId"}],type:"Option"},grandpa_authorities:{description:"Get the current GRANDPA authorities and weights. This should not change except for when changes are scheduled and the corresponding delay has passed.",params:[],type:"AuthorityList"},submit_report_equivocation_unsigned_extrinsic:{description:"Submits an unsigned extrinsic to report an equivocation.",params:[{name:"equivocationProof",type:"GrandpaEquivocationProof"},{name:"keyOwnerProof",type:"OpaqueKeyOwnershipProof"}],type:"Option"}},il={rpc:{proveFinality:{description:"Prove finality for the given block number, returning the Justification for the last block in the set.",params:[{name:"blockNumber",type:"BlockNumber"}],type:"Option"},roundState:{description:"Returns the state of the current best round state as well as the ongoing background rounds",params:[],type:"ReportedRoundStates"},subscribeJustifications:{description:"Subscribes to grandpa justifications",params:[],pubsub:["justifications","subscribeJustifications","unsubscribeJustifications"],type:"JustificationNotification"}},runtime:{GrandpaApi:[{methods:{current_set_id:{description:"Get current GRANDPA authority set id.",params:[],type:"SetId"},...al},version:3},{methods:al,version:2}]},types:{AuthorityIndex:"u64",AuthorityList:"Vec",AuthoritySet:{currentAuthorities:"AuthorityList",setId:"u64",pendingStandardChanges:"ForkTreePendingChange",pendingForcedChanges:"Vec",authoritySetChanges:"AuthoritySetChanges"},ForkTreePendingChange:{roots:"Vec",bestFinalizedNumber:"Option"},ForkTreePendingChangeNode:{hash:"BlockHash",number:"BlockNumber",data:"PendingChange",children:"Vec"},AuthoritySetChange:"(U64, BlockNumber)",AuthoritySetChanges:"Vec",AuthorityWeight:"u64",DelayKind:{_enum:{Finalized:"Null",Best:"DelayKindBest"}},DelayKindBest:{medianLastFinalized:"BlockNumber"},EncodedFinalityProofs:"Bytes",GrandpaEquivocation:{_enum:{Prevote:"GrandpaEquivocationValue",Precommit:"GrandpaEquivocationValue"}},GrandpaEquivocationProof:{setId:"SetId",equivocation:"GrandpaEquivocation"},GrandpaEquivocationValue:{roundNumber:"u64",identity:"AuthorityId",first:"(GrandpaPrevote, AuthoritySignature)",second:"(GrandpaPrevote, AuthoritySignature)"},GrandpaPrevote:{targetHash:"Hash",targetNumber:"BlockNumber"},GrandpaCommit:{targetHash:"BlockHash",targetNumber:"BlockNumber",precommits:"Vec"},GrandpaPrecommit:{targetHash:"BlockHash",targetNumber:"BlockNumber"},GrandpaSignedPrecommit:{precommit:"GrandpaPrecommit",signature:"AuthoritySignature",id:"AuthorityId"},GrandpaJustification:{round:"u64",commit:"GrandpaCommit",votesAncestries:"Vec
"},JustificationNotification:"Bytes",KeyOwnerProof:"MembershipProof",NextAuthority:"(AuthorityId, AuthorityWeight)",PendingChange:{nextAuthorities:"AuthorityList",delay:"BlockNumber",canonHeight:"BlockNumber",canonHash:"BlockHash",delayKind:"DelayKind"},PendingPause:{scheduledAt:"BlockNumber",delay:"BlockNumber"},PendingResume:{scheduledAt:"BlockNumber",delay:"BlockNumber"},Precommits:{currentWeight:"u32",missing:"BTreeSet"},Prevotes:{currentWeight:"u32",missing:"BTreeSet"},ReportedRoundStates:{setId:"u32",best:"RoundState",background:"Vec"},RoundState:{round:"u32",totalWeight:"u32",thresholdWeight:"u32",prevotes:"Prevotes",precommits:"Precommits"},SetId:"u64",StoredPendingChange:{scheduledAt:"BlockNumber",delay:"BlockNumber",nextAuthorities:"AuthorityList"},StoredState:{_enum:{Live:"Null",PendingPause:"PendingPause",Paused:"Null",PendingResume:"PendingResume"}}}},sl={rpc:{},types:{IdentityFields:{_set:{_bitLength:64,Display:1,Legal:2,Web:4,Riot:8,Email:16,PgpFingerprint:32,Image:64,Twitter:128}},IdentityInfoAdditional:"(Data, Data)",IdentityInfoTo198:{additional:"Vec",display:"Data",legal:"Data",web:"Data",riot:"Data",email:"Data",pgpFingerprint:"Option",image:"Data"},IdentityInfo:{_fallback:"IdentityInfoTo198",additional:"Vec",display:"Data",legal:"Data",web:"Data",riot:"Data",email:"Data",pgpFingerprint:"Option",image:"Data",twitter:"Data"},IdentityJudgement:{_enum:{Unknown:"Null",FeePaid:"Balance",Reasonable:"Null",KnownGood:"Null",OutOfDate:"Null",LowQuality:"Null",Erroneous:"Null"}},RegistrationJudgement:"(RegistrarIndex, IdentityJudgement)",RegistrationTo198:{judgements:"Vec",deposit:"Balance",info:"IdentityInfoTo198"},Registration:{_fallback:"RegistrationTo198",judgements:"Vec",deposit:"Balance",info:"IdentityInfo"},RegistrarIndex:"u32",RegistrarInfo:{account:"AccountId",fee:"Balance",fields:"IdentityFields"}}},ol={rpc:{},types:{AuthIndex:"u32",AuthoritySignature:"Signature",Heartbeat:{blockNumber:"BlockNumber",networkState:"OpaqueNetworkState",sessionIndex:"SessionIndex",authorityIndex:"AuthIndex",validatorsLen:"u32"},HeartbeatTo244:{blockNumber:"BlockNumber",networkState:"OpaqueNetworkState",sessionIndex:"SessionIndex",authorityIndex:"AuthIndex"},OpaqueMultiaddr:"Opaque",OpaquePeerId:"Opaque",OpaqueNetworkState:{peerId:"OpaquePeerId",externalAddresses:"Vec"}}},cl={rpc:{},types:{CallIndex:"(u8, u8)",LotteryConfig:{price:"Balance",start:"BlockNumber",length:"BlockNumber",delay:"BlockNumber",repeat:"bool"}}},dl={rpc:{},runtime:{MixnetApi:[{methods:{current_mixnodes:{description:"Get the index and phase of the current session.",params:[],type:"Result"},maybe_register:{description:"Try to register a mixnode for the next session.",params:[{name:"session_index",type:"u32"},{name:"mixnode",type:"Mixnode"}],type:"bool"},prev_mixnodes:{description:"Get the index and phase of the current session.",params:[],type:"Result"},session_status:{description:"Get the index and phase of the current session.",params:[],type:"SessionStatus"}},version:1}]},types:{Mixnode:{externalAddresses:"Vec",kxPublic:"[u8; 32]",peerId:"[u8; 32]"},MixnodesErr:{_enum:{InsufficientRegistrations:{min:"u32",num:"u32"}}},SessionPhase:{_enum:["CoverToCurrent","RequestsToCurrent","CoverToPrev","DisconnectFromPrev"]},SessionStatus:{currentIndex:"u32",phase:"SessionPhase"}}},ul={rpc:{generateProof:{description:"Generate MMR proof for the given block numbers.",params:[{name:"blockNumbers",type:"Vec"},{isOptional:!0,name:"bestKnownBlockNumber",type:"u64"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"MmrLeafBatchProof"},root:{description:"Get the MMR root hash for the current best block.",params:[{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"MmrHash"},verifyProof:{description:"Verify an MMR proof",params:[{name:"proof",type:"MmrLeafBatchProof"}],type:"bool"},verifyProofStateless:{description:"Verify an MMR proof statelessly given an mmr_root",params:[{name:"root",type:"MmrHash"},{name:"proof",type:"MmrLeafBatchProof"}],type:"bool"}},runtime:{MmrApi:[{methods:{generate_proof:{description:"Generate MMR proof for the given block numbers.",params:[{name:"blockNumbers",type:"Vec"},{name:"bestKnownBlockNumber",type:"Option"}],type:"Result<(Vec, MmrBatchProof), MmrError>"},mmr_leaf_count:{description:"Return the number of MMR blocks in the chain.",params:[],type:"Result"},mmr_root:{description:"Return the on-chain MMR root hash.",params:[],type:"Result"},verify_proof:{description:"Verify MMR proof against on-chain MMR.",params:[{name:"leaves",type:"Vec"},{name:"proof",type:"MmrBatchProof"}],type:"Result<(), MmrError>"},verify_proof_stateless:{description:"Verify MMR proof against given root hash.",params:[{name:"root",type:"Hash"},{name:"leaves",type:"Vec"},{name:"proof",type:"MmrBatchProof"}],type:"Result<(), MmrError>"}},version:2},{methods:{generate_batch_proof:{description:"Generate MMR proof for a series of leaves under given indices.",params:[{name:"leafIndices",type:"Vec"}],type:"Result<(Vec, MmrBatchProof), MmrError>"},generate_proof:{description:"Generate MMR proof for a leaf under given index.",params:[{name:"leafIndex",type:"MmrLeafIndex"}],type:"Result<(MmrEncodableOpaqueLeaf, MmrProof), MmrError>"},mmr_root:{description:"Return the on-chain MMR root hash.",params:[],type:"Result"},verify_batch_proof:{description:"Verify MMR proof against on-chain MMR for a batch of leaves.",params:[{name:"leaves",type:"Vec"},{name:"proof",type:"MmrBatchProof"}],type:"Result<(), MmrError>"},verify_batch_proof_stateless:{description:"Verify MMR proof against given root hash or a batch of leaves.",params:[{name:"root",type:"Hash"},{name:"leaves",type:"Vec"},{name:"proof",type:"MmrBatchProof"}],type:"Result<(), MmrError>"},verify_proof:{description:"Verify MMR proof against on-chain MMR.",params:[{name:"leaf",type:"MmrEncodableOpaqueLeaf"},{name:"proof",type:"MmrProof"}],type:"Result<(), MmrError>"},verify_proof_stateless:{description:"Verify MMR proof against given root hash.",params:[{name:"root",type:"Hash"},{name:"leaf",type:"MmrEncodableOpaqueLeaf"},{name:"proof",type:"MmrProof"}],type:"Result<(), MmrError>"}},version:1}]},types:{MmrBatchProof:{leafIndices:"Vec",leafCount:"MmrNodeIndex",items:"Vec"},MmrEncodableOpaqueLeaf:"Bytes",MmrError:{_enum:["InvalidNumericOp","Push","GetRoot","Commit","GenerateProof","Verify","LeafNotFound"," PalletNotIncluded","InvalidLeafIndex","InvalidBestKnownBlock"]},MmrHash:"Hash",MmrLeafBatchProof:{blockHash:"BlockHash",leaves:"Bytes",proof:"Bytes"},MmrLeafIndex:"u64",MmrLeafProof:{blockHash:"BlockHash",leaf:"Bytes",proof:"Bytes"},MmrNodeIndex:"u64",MmrProof:{leafIndex:"MmrLeafIndex",leafCount:"MmrNodeIndex",items:"Vec"}}},ll={rpc:{},runtime:{NftsApi:[{methods:{attribute:{description:"An attribute",params:[{name:"collection",type:"NftCollectionId"},{name:"item",type:"NftItemId"},{name:"key",type:"Bytes"}],type:"Option"},collection_attribute:{description:"A collection attribute",params:[{name:"collection",type:"NftCollectionId"},{name:"key",type:"Bytes"}],type:"Option"},collection_owner:{description:"A collection owner",params:[{name:"collection",type:"NftCollectionId"}],type:"Option"},custom_attribute:{description:"A custom attribute",params:[{name:"account",type:"AccountId"},{name:"collection",type:"NftCollectionId"},{name:"item",type:"NftItemId"},{name:"key",type:"Bytes"}],type:"Option"},owner:{description:"Collection owner",params:[{name:"collection",type:"NftCollectionId"},{name:"item",type:"NftItemId"}],type:"Option"},system_attribute:{description:"System attribute",params:[{name:"collection",type:"NftCollectionId"},{name:"item",type:"NftItemId"},{name:"key",type:"Bytes"}],type:"Option"}},version:1}]},types:{NftCollectionId:"u32",NftItemId:"u32"}},fl={rpc:{},runtime:{NominationPoolsApi:[{methods:{balance_to_points:{description:"Returns the equivalent points of `new_funds` for a given pool.",params:[{name:"poolId",type:"NpPoolId"},{name:"newFunds",type:"Balance"}],type:"Balance"},pending_rewards:{description:"Returns the pending rewards for the given member.",params:[{name:"member",type:"AccountId"}],type:"Balance"},points_to_balance:{description:"Returns the equivalent balance of `points` for a given pool.",params:[{name:"poolId",type:"NpPoolId"},{name:"points",type:"Balance"}],type:"Balance"}},version:1}]},types:{NpApiError:{_enum:["MemberNotFound","OverflowInPendingRewards"]},NpPoolId:"u32"}},pl={rpc:{},types:{DeferredOffenceOf:"(Vec, Vec, SessionIndex)",Kind:"[u8; 16]",OffenceDetails:{offender:"Offender",reporters:"Vec"},Offender:"IdentificationTuple",OpaqueTimeSlot:"Bytes",ReportIdOf:"Hash",Reporter:"AccountId"}},hl={rpc:{},runtime:{DifficultyApi:[{methods:{difficulty:{description:"Return the target difficulty of the next block.",params:[],type:"Raw"}},version:1}],TimestampApi:[{methods:{timestamp:{description:"API necessary for timestamp-based difficulty adjustment algorithms.",params:[],type:"Moment"}},version:1}]},types:{}},bl={rpc:{},types:{ProxyDefinition:{delegate:"AccountId",proxyType:"ProxyType",delay:"BlockNumber"},ProxyType:{_enum:["Any","NonTransfer","Governance","Staking"]},ProxyAnnouncement:{real:"AccountId",callHash:"Hash",height:"BlockNumber"}}},ml={rpc:{},types:{ActiveRecovery:{created:"BlockNumber",deposit:"Balance",friends:"Vec"},RecoveryConfig:{delayPeriod:"BlockNumber",deposit:"Balance",friends:"Vec",threshold:"u16"}}},yl={rpc:{},types:{Period:"(BlockNumber, u32)",Priority:"u8",SchedulePeriod:"Period",SchedulePriority:"Priority",Scheduled:{maybeId:"Option",priority:"SchedulePriority",call:"Call",maybePeriodic:"Option",origin:"PalletsOrigin"},ScheduledTo254:{maybeId:"Option",priority:"SchedulePriority",call:"Call",maybePeriodic:"Option"},TaskAddress:"(BlockNumber, u32)"}},xl={rpc:{},runtime:{SessionKeys:[{methods:{decode_session_keys:{description:"Decode the given public session keys.",params:[{name:"encoded",type:"Bytes"}],type:"Option>"},generate_session_keys:{description:"Generate a set of session keys with optionally using the given seed.",params:[{name:"seed",type:"Option"}],type:"Bytes"}},version:1}]},types:{BeefyKey:"[u8; 33]",Keys:"SessionKeys4",SessionKeys1:"(AccountId)",SessionKeys2:"(AccountId, AccountId)",SessionKeys3:"(AccountId, AccountId, AccountId)",SessionKeys4:"(AccountId, AccountId, AccountId, AccountId)",SessionKeys5:"(AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys6:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys6B:"(AccountId, AccountId, AccountId, AccountId, AccountId, BeefyKey)",SessionKeys7:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys7B:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, BeefyKey)",SessionKeys8:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys8B:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, BeefyKey)",SessionKeys9:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys9B:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, BeefyKey)",SessionKeys10:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys10B:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, BeefyKey)",FullIdentification:"Exposure",IdentificationTuple:"(ValidatorId, FullIdentification)",MembershipProof:{session:"SessionIndex",trieNodes:"Vec",validatorCount:"ValidatorCount"},SessionIndex:"u32",ValidatorCount:"u32"}},gl={rpc:{},types:{Bid:{who:"AccountId",kind:"BidKind",value:"Balance"},BidKind:{_enum:{Deposit:"Balance",Vouch:"(AccountId, Balance)"}},SocietyJudgement:{_enum:["Rebid","Reject","Approve"]},SocietyVote:{_enum:["Skeptic","Reject","Approve"]},StrikeCount:"u32",VouchingStatus:{_enum:["Vouching","Banned"]}}},vl={rpc:{},runtime:{StakingApi:[{methods:{nominations_quota:{description:"Returns the nominations quota for a nominator with a given balance.",params:[{name:"balance",type:"Balance"}],type:"u32"}},version:1}]},types:{Points:"u32",EraPoints:{total:"Points",individual:"Vec"},CompactAssignments:"CompactAssignmentsWith16",CompactAssignmentsWith16:{votes1:"Vec<(NominatorIndexCompact, ValidatorIndexCompact)>",votes2:"Vec<(NominatorIndexCompact, CompactScoreCompact, ValidatorIndexCompact)>",votes3:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 2], ValidatorIndexCompact)>",votes4:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 3], ValidatorIndexCompact)>",votes5:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 4], ValidatorIndexCompact)>",votes6:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 5], ValidatorIndexCompact)>",votes7:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 6], ValidatorIndexCompact)>",votes8:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 7], ValidatorIndexCompact)>",votes9:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 8], ValidatorIndexCompact)>",votes10:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 9], ValidatorIndexCompact)>",votes11:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 10], ValidatorIndexCompact)>",votes12:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 11], ValidatorIndexCompact)>",votes13:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 12], ValidatorIndexCompact)>",votes14:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 13], ValidatorIndexCompact)>",votes15:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 14], ValidatorIndexCompact)>",votes16:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 15], ValidatorIndexCompact)>"},CompactAssignmentsWith24:{votes1:"Vec<(NominatorIndexCompact, ValidatorIndexCompact)>",votes2:"Vec<(NominatorIndexCompact, CompactScoreCompact, ValidatorIndexCompact)>",votes3:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 2], ValidatorIndexCompact)>",votes4:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 3], ValidatorIndexCompact)>",votes5:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 4], ValidatorIndexCompact)>",votes6:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 5], ValidatorIndexCompact)>",votes7:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 6], ValidatorIndexCompact)>",votes8:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 7], ValidatorIndexCompact)>",votes9:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 8], ValidatorIndexCompact)>",votes10:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 9], ValidatorIndexCompact)>",votes11:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 10], ValidatorIndexCompact)>",votes12:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 11], ValidatorIndexCompact)>",votes13:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 12], ValidatorIndexCompact)>",votes14:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 13], ValidatorIndexCompact)>",votes15:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 14], ValidatorIndexCompact)>",votes16:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 15], ValidatorIndexCompact)>",votes17:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 16], ValidatorIndexCompact)>",votes18:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 17], ValidatorIndexCompact)>",votes19:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 18], ValidatorIndexCompact)>",votes20:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 19], ValidatorIndexCompact)>",votes21:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 20], ValidatorIndexCompact)>",votes22:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 21], ValidatorIndexCompact)>",votes23:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 22], ValidatorIndexCompact)>",votes24:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 23], ValidatorIndexCompact)>"},CompactAssignmentsTo265:"CompactAssignmentsWith16",CompactAssignmentsTo257:{votes1:"Vec<(NominatorIndex, [CompactScore; 0], ValidatorIndex)>",votes2:"Vec<(NominatorIndex, [CompactScore; 1], ValidatorIndex)>",votes3:"Vec<(NominatorIndex, [CompactScore; 2], ValidatorIndex)>",votes4:"Vec<(NominatorIndex, [CompactScore; 3], ValidatorIndex)>",votes5:"Vec<(NominatorIndex, [CompactScore; 4], ValidatorIndex)>",votes6:"Vec<(NominatorIndex, [CompactScore; 5], ValidatorIndex)>",votes7:"Vec<(NominatorIndex, [CompactScore; 6], ValidatorIndex)>",votes8:"Vec<(NominatorIndex, [CompactScore; 7], ValidatorIndex)>",votes9:"Vec<(NominatorIndex, [CompactScore; 8], ValidatorIndex)>",votes10:"Vec<(NominatorIndex, [CompactScore; 9], ValidatorIndex)>",votes11:"Vec<(NominatorIndex, [CompactScore; 10], ValidatorIndex)>",votes12:"Vec<(NominatorIndex, [CompactScore; 11], ValidatorIndex)>",votes13:"Vec<(NominatorIndex, [CompactScore; 12], ValidatorIndex)>",votes14:"Vec<(NominatorIndex, [CompactScore; 13], ValidatorIndex)>",votes15:"Vec<(NominatorIndex, [CompactScore; 14], ValidatorIndex)>",votes16:"Vec<(NominatorIndex, [CompactScore; 15], ValidatorIndex)>"},CompactScore:"(ValidatorIndex, OffchainAccuracy)",CompactScoreCompact:"(ValidatorIndexCompact, OffchainAccuracyCompact)",ElectionCompute:{_enum:["OnChain","Signed","Unsigned"]},ElectionPhase:{_enum:{Off:null,Signed:null,Unsigned:"(bool, BlockNumber)",Emergency:null}},ElectionResult:{compute:"ElectionCompute",slotStake:"Balance",electedStashes:"Vec",exposures:"Vec<(AccountId, Exposure)>"},ElectionScore:"[u128; 3]",ElectionSize:{validators:"Compact",nominators:"Compact"},ElectionStatus:{_enum:{Close:"Null",Open:"BlockNumber"}},ExtendedBalance:"u128",RawSolution:"RawSolutionWith16",RawSolutionWith16:{compact:"CompactAssignmentsWith16",score:"ElectionScore",round:"u32"},RawSolutionWith24:{compact:"CompactAssignmentsWith24",score:"ElectionScore",round:"u32"},RawSolutionTo265:"RawSolutionWith16",ReadySolution:{supports:"SolutionSupports",score:"ElectionScore",compute:"ElectionCompute"},RoundSnapshot:{voters:"Vec<(AccountId, VoteWeight, Vec)>",targets:"Vec"},SeatHolder:{who:"AccountId",stake:"Balance",deposit:"Balance"},SignedSubmission:{_fallback:"SignedSubmissionTo276",who:"AccountId",deposit:"Balance",solution:"RawSolution",reward:"Balance"},SignedSubmissionTo276:{who:"AccountId",deposit:"Balance",solution:"RawSolution"},SignedSubmissionOf:"SignedSubmission",SolutionOrSnapshotSize:{voters:"Compact",targets:"Compact"},SolutionSupport:{total:"ExtendedBalance",voters:"Vec<(AccountId, ExtendedBalance)>"},SolutionSupports:"Vec<(AccountId, SolutionSupport)>",Supports:"SolutionSupports",SubmissionIndicesOf:"BTreeMap",Voter:{votes:"Vec",stake:"Balance",deposit:"Balance"},VoteWeight:"u64",ActiveEraInfo:{index:"EraIndex",start:"Option"},EraIndex:"u32",EraRewardPoints:{total:"RewardPoint",individual:"BTreeMap"},EraRewards:{total:"u32",rewards:"Vec"},Exposure:{total:"Compact",own:"Compact",others:"Vec"},Forcing:{_enum:["NotForcing","ForceNew","ForceNone","ForceAlways"]},IndividualExposure:{who:"AccountId",value:"Compact"},KeyType:"AccountId",MomentOf:"Moment",Nominations:{targets:"Vec",submittedIn:"EraIndex",suppressed:"bool"},NominatorIndex:"u32",NominatorIndexCompact:"Compact",OffchainAccuracy:"PerU16",OffchainAccuracyCompact:"Compact",PhragmenScore:"[u128; 3]",Points:"u32",RewardDestination:{_enum:{Staked:"Null",Stash:"Null",Controller:"Null",Account:"AccountId",None:"Null"}},RewardPoint:"u32",SlashJournalEntry:{who:"AccountId",amount:"Balance",ownSlash:"Balance"},SlashingSpansTo204:{spanIndex:"SpanIndex",lastStart:"EraIndex",prior:"Vec"},SlashingSpans:{spanIndex:"SpanIndex",lastStart:"EraIndex",lastNonzeroSlash:"EraIndex",prior:"Vec"},SpanIndex:"u32",SpanRecord:{slashed:"Balance",paidOut:"Balance"},StakingLedgerTo223:{stash:"AccountId",total:"Compact",active:"Compact",unlocking:"Vec"},StakingLedgerTo240:{_fallback:"StakingLedgerTo223",stash:"AccountId",total:"Compact",active:"Compact",unlocking:"Vec",lastReward:"Option"},StakingLedger:{stash:"AccountId",total:"Compact",active:"Compact",unlocking:"Vec",claimedRewards:"Vec"},UnappliedSlashOther:"(AccountId, Balance)",UnappliedSlash:{validator:"AccountId",own:"Balance",others:"Vec",reporters:"Vec",payout:"Balance"},UnlockChunk:{value:"Compact",era:"Compact"},ValidatorIndex:"u16",ValidatorIndexCompact:"Compact",ValidatorPrefs:"ValidatorPrefsWithBlocked",ValidatorPrefsWithCommission:{commission:"Compact"},ValidatorPrefsWithBlocked:{commission:"Compact",blocked:"bool"},ValidatorPrefsTo196:{validatorPayment:"Compact"},ValidatorPrefsTo145:{unstakeThreshold:"Compact",validatorPayment:"Compact"}}},wl={rpc:{},runtime:{ValidateStatement:[{methods:{valdate_statement:{description:"Validate the statement.",params:[{name:"source",type:"StatementStoreStatementSource"},{name:"statement",type:"SpStatementStoreStatement"}],type:"Result"}},version:1}]},types:{StatementStoreStatementSource:{_enum:["Chain","Network","Local"]},StatementStoreValidStatement:{maxCount:"u32",maxSize:"u32"},StatementStoreInvalidStatement:{_enum:["BadProof","NoProof","InternalError"]}}},Vl={rpc:{},types:{WeightToFeeCoefficient:{coeffInteger:"Balance",coeffFrac:"Perbill",negative:"bool",degree:"u8"}}},Tl={rpc:{genSyncSpec:{description:"Returns the json-serialized chainspec running the node, with a sync state.",endpoint:"sync_state_genSyncSpec",params:[{name:"raw",type:"bool"}],type:"Json"}},types:{}},Sl={rpc:{accountNextIndex:{alias:["account_nextIndex"],description:"Retrieves the next accountIndex as available on the node",params:[{name:"accountId",type:"AccountId"}],type:"Index"},addLogFilter:{description:"Adds the supplied directives to the current log filter",isUnsafe:!0,params:[{name:"directives",type:"Text"}],type:"Null"},addReservedPeer:{description:"Adds a reserved peer",isUnsafe:!0,params:[{name:"peer",type:"Text"}],type:"Text"},chain:{description:"Retrieves the chain",params:[],type:"Text"},chainType:{description:"Retrieves the chain type",params:[],type:"ChainType"},dryRun:{alias:["system_dryRunAt"],description:"Dry run an extrinsic at a given block",isUnsafe:!0,params:[{name:"extrinsic",type:"Bytes"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"ApplyExtrinsicResult"},health:{description:"Return health status of the node",noErrorLog:!0,params:[],type:"Health"},localListenAddresses:{description:"The addresses include a trailing /p2p/ with the local PeerId, and are thus suitable to be passed to addReservedPeer or as a bootnode address for example",params:[],type:"Vec"},localPeerId:{description:"Returns the base58-encoded PeerId of the node",params:[],type:"Text"},name:{description:"Retrieves the node name",params:[],type:"Text"},networkState:{alias:["system_unstable_networkState"],description:"Returns current state of the network",isUnsafe:!0,params:[],type:"NetworkState"},nodeRoles:{description:"Returns the roles the node is running as",params:[],type:"Vec"},peers:{description:"Returns the currently connected peers",isUnsafe:!0,params:[],type:"Vec"},properties:{description:"Get a custom set of properties as a JSON object, defined in the chain spec",params:[],type:"ChainProperties"},removeReservedPeer:{description:"Remove a reserved peer",isUnsafe:!0,params:[{name:"peerId",type:"Text"}],type:"Text"},reservedPeers:{description:"Returns the list of reserved peers",params:[],type:"Vec"},resetLogFilter:{description:"Resets the log filter to Substrate defaults",isUnsafe:!0,params:[],type:"Null"},syncState:{description:"Returns the state of the syncing of the node",params:[],type:"SyncState"},version:{description:"Retrieves the version of the node",params:[],type:"Text"}},runtime:{AccountNonceApi:[{methods:{account_nonce:{description:"The API to query account nonce (aka transaction index)",params:[{name:"accountId",type:"AccountId"}],type:"Index"}},version:1}]},types:{AccountInfo:"AccountInfoWithTripleRefCount",AccountInfoWithRefCountU8:{nonce:"Index",refcount:"u8",data:"AccountData"},AccountInfoWithRefCount:{_fallback:"AccountInfoWithRefCountU8",nonce:"Index",refcount:"RefCount",data:"AccountData"},AccountInfoWithDualRefCount:{_fallback:"AccountInfoWithRefCount",nonce:"Index",consumers:"RefCount",providers:"RefCount",data:"AccountData"},AccountInfoWithProviders:"AccountInfoWithDualRefCount",AccountInfoWithTripleRefCount:{_fallback:"AccountInfoWithDualRefCount",nonce:"Index",consumers:"RefCount",providers:"RefCount",sufficients:"RefCount",data:"AccountData"},ApplyExtrinsicResult:"Result",ApplyExtrinsicResultPre6:"Result",ArithmeticError:{_enum:["Underflow","Overflow","DivisionByZero"]},BlockLength:{max:"PerDispatchClassU32"},BlockWeights:{baseBlock:"Weight",maxBlock:"Weight",perClass:"PerDispatchClassWeightsPerClass"},ChainProperties:"GenericChainProperties",ChainType:{_enum:{Development:"Null",Local:"Null",Live:"Null",Custom:"Text"}},ConsumedWeight:"PerDispatchClassWeight",DigestOf:"Digest",DispatchClass:{_enum:["Normal","Operational","Mandatory"]},DispatchError:{_enum:{Other:"Null",CannotLookup:"Null",BadOrigin:"Null",Module:"DispatchErrorModule",ConsumerRemaining:"Null",NoProviders:"Null",TooManyConsumers:"Null",Token:"TokenError",Arithmetic:"ArithmeticError",Transactional:"TransactionalError",Exhausted:"Null",Corruption:"Null",Unavailable:"Null"}},DispatchErrorPre6:{_enum:{Other:"Null",CannotLookup:"Null",BadOrigin:"Null",Module:"DispatchErrorModulePre6",ConsumerRemaining:"Null",NoProviders:"Null",TooManyConsumers:"Null",Token:"TokenError",Arithmetic:"ArithmeticError",Transactional:"TransactionalError"}},DispatchErrorPre6First:{_enum:{Other:"Null",CannotLookup:"Null",BadOrigin:"Null",Module:"DispatchErrorModulePre6",ConsumerRemaining:"Null",NoProviders:"Null",Token:"TokenError",Arithmetic:"ArithmeticError",Transactional:"TransactionalError"}},DispatchErrorModuleU8:{index:"u8",error:"u8"},DispatchErrorModuleU8a:{index:"u8",error:"[u8; 4]"},DispatchErrorModule:"DispatchErrorModuleU8a",DispatchErrorModulePre6:"DispatchErrorModuleU8",DispatchErrorTo198:{module:"Option",error:"u8"},DispatchInfo:{weight:"Weight",class:"DispatchClass",paysFee:"Pays"},DispatchInfoTo190:{weight:"Weight",class:"DispatchClass"},DispatchInfoTo244:{weight:"Weight",class:"DispatchClass",paysFee:"bool"},DispatchOutcome:"Result<(), DispatchError>",DispatchOutcomePre6:"Result<(), DispatchErrorPre6>",DispatchResult:"Result<(), DispatchError>",DispatchResultOf:"DispatchResult",DispatchResultTo198:"Result<(), Text>",Event:"GenericEvent",EventId:"[u8; 2]",EventIndex:"u32",EventRecord:{phase:"Phase",event:"Event",topics:"Vec"},Health:{peers:"u64",isSyncing:"bool",shouldHavePeers:"bool"},InvalidTransaction:{_enum:{Call:"Null",Payment:"Null",Future:"Null",Stale:"Null",BadProof:"Null",AncientBirthBlock:"Null",ExhaustsResources:"Null",Custom:"u8",BadMandatory:"Null",MandatoryDispatch:"Null",BadSigner:"Null"}},Key:"Bytes",LastRuntimeUpgradeInfo:{specVersion:"Compact",specName:"Text"},NetworkState:{peerId:"Text",listenedAddresses:"Vec",externalAddresses:"Vec",connectedPeers:"HashMap",notConnectedPeers:"HashMap",averageDownloadPerSec:"u64",averageUploadPerSec:"u64",peerset:"NetworkStatePeerset"},NetworkStatePeerset:{messageQueue:"u64",nodes:"HashMap"},NetworkStatePeersetInfo:{connected:"bool",reputation:"i32"},NodeRole:{_enum:{Full:"Null",LightClient:"Null",Authority:"Null",UnknownRole:"u8"}},NotConnectedPeer:{knownAddresses:"Vec",latestPingTime:"Option",versionString:"Option"},Peer:{enabled:"bool",endpoint:"PeerEndpoint",knownAddresses:"Vec",latestPingTime:"PeerPing",open:"bool",versionString:"Text"},PeerEndpoint:{listening:"PeerEndpointAddr"},PeerEndpointAddr:{_alias:{localAddr:"local_addr",sendBackAddr:"send_back_addr"},localAddr:"Text",sendBackAddr:"Text"},PeerPing:{nanos:"u64",secs:"u64"},PeerInfo:{peerId:"Text",roles:"Text",protocolVersion:"u32",bestHash:"Hash",bestNumber:"BlockNumber"},PerDispatchClassU32:{normal:"u32",operational:"u32",mandatory:"u32"},PerDispatchClassWeight:{normal:"Weight",operational:"Weight",mandatory:"Weight"},PerDispatchClassWeightsPerClass:{normal:"WeightPerClass",operational:"WeightPerClass",mandatory:"WeightPerClass"},Phase:{_enum:{ApplyExtrinsic:"u32",Finalization:"Null",Initialization:"Null"}},RawOrigin:{_enum:{Root:"Null",Signed:"AccountId",None:"Null"}},RefCount:"u32",RefCountTo259:"u8",SyncState:{startingBlock:"BlockNumber",currentBlock:"BlockNumber",highestBlock:"Option"},SystemOrigin:"RawOrigin",TokenError:{_enum:["NoFunds","WouldDie","BelowMinimum","CannotCreate","UnknownAsset","Frozen","Unsupported","Underflow","Overflow"]},TransactionValidityError:{_enum:{Invalid:"InvalidTransaction",Unknown:"UnknownTransaction"}},TransactionalError:{_enum:["LimitReached","NoLayer"]},UnknownTransaction:{_enum:{CannotLookup:"Null",NoUnsignedValidator:"Null",Custom:"u8"}},WeightPerClass:{baseExtrinsic:"Weight",maxExtrinsic:"Option",maxTotal:"Option",reserved:"Option"}}},kl={rpc:{},types:{Bounty:{proposer:"AccountId",value:"Balance",fee:"Balance",curatorDeposit:"Balance",bond:"Balance",status:"BountyStatus"},BountyIndex:"u32",BountyStatus:{_enum:{Proposed:"Null",Approved:"Null",Funded:"Null",CuratorProposed:"BountyStatusCuratorProposed",Active:"BountyStatusActive",PendingPayout:"BountyStatusPendingPayout"}},BountyStatusActive:{curator:"AccountId",updateDue:"BlockNumber"},BountyStatusCuratorProposed:{curator:"AccountId"},BountyStatusPendingPayout:{curator:"AccountId",beneficiary:"AccountId",unlockAt:"BlockNumber"},OpenTip:{reason:"Hash",who:"AccountId",finder:"AccountId",deposit:"Balance",closes:"Option",tips:"Vec",findersFee:"bool"},OpenTipTo225:{reason:"Hash",who:"AccountId",finder:"Option",closes:"Option",tips:"Vec"},OpenTipFinderTo225:"(AccountId, Balance)",OpenTipTip:"(AccountId, Balance)",TreasuryProposal:{proposer:"AccountId",value:"Balance",beneficiary:"AccountId",bond:"Balance"}}},_l={rpc:{},types:{Multiplier:"Fixed128"}},Pl={rpc:{},runtime:{TaggedTransactionQueue:[{methods:{validate_transaction:{description:"Validate the transaction.",params:[{name:"source",type:"TransactionSource"},{name:"tx",type:"Extrinsic"},{name:"blockHash",type:"BlockHash"}],type:"TransactionValidity"}},version:3},{methods:{validate_transaction:{description:"Validate the transaction.",params:[{name:"source",type:"TransactionSource"},{name:"tx",type:"Extrinsic"}],type:"TransactionValidity"}},version:2},{methods:{validate_transaction:{description:"Validate the transaction.",params:[{name:"tx",type:"Extrinsic"}],type:"TransactionValidity"}},version:1}]},types:{TransactionSource:{_enum:["InBlock","Local","External"]},TransactionValidity:"Result",ValidTransaction:{priority:"TransactionPriority",requires:"Vec",provides:"Vec",longevity:"TransactionLongevity",propagate:"bool"}}},Ml={rpc:{},types:{ClassId:"u32",InstanceId:"u32",DepositBalance:"Balance",DepositBalanceOf:"Balance",ClassDetails:{owner:"AccountId",issuer:"AccountId",admin:"AccountId",freezer:"AccountId",totalDeposit:"DepositBalance",freeHolding:"bool",instances:"u32",instanceMetadatas:"u32",attributes:"u32",isFrozen:"bool"},DestroyWitness:{instances:"Compact",instanceMetadatas:"Compact",attributes:"Compact"},InstanceDetails:{owner:"AccountId",approved:"Option",isFrozen:"bool",deposit:"DepositBalance"},ClassMetadata:{deposit:"DepositBalance",data:"Vec",isFrozen:"bool"},InstanceMetadata:{deposit:"DepositBalance",data:"Vec",isFrozen:"bool"}}},Il={rpc:{},types:{Multisig:{when:"Timepoint",deposit:"Balance",depositor:"AccountId",approvals:"Vec"},Timepoint:{height:"BlockNumber",index:"u32"}}},Nl={rpc:{},types:{VestingInfo:{locked:"Balance",perBlock:"Balance",startingBlock:"BlockNumber"}}},El={rpc:{},types:{BlockAttestations:{receipt:"CandidateReceipt",valid:"Vec",invalid:"Vec"},IncludedBlocks:{actualNumber:"BlockNumber",session:"SessionIndex",randomSeed:"H256",activeParachains:"Vec",paraBlocks:"Vec"},MoreAttestations:{}}},Ol={rpc:{},types:{BridgedBlockHash:"H256",BridgedBlockNumber:"BlockNumber",BridgedHeader:"Header",BridgeMessageId:"(LaneId, MessageNonce)",CallOrigin:{_enum:{SourceRoot:"Null",TargetAccount:"(AccountId, MultiSigner, MultiSignature)",SourceAccount:"AccountId"}},ChainId:"[u8; 4]",DeliveredMessages:{begin:"MessageNonce",end:"MessageNonce",dispatchResults:"BitVec"},DispatchFeePayment:{_enum:["AtSourceChain","AtTargetChain"]},InboundLaneData:{relayers:"Vec",lastConfirmedNonce:"MessageNonce"},InboundRelayer:"AccountId",InitializationData:{header:"Header",authorityList:"AuthorityList",setId:"SetId",isHalted:"bool"},LaneId:"[u8; 4]",MessageData:{payload:"Bytes",fee:"Balance"},MessagesDeliveryProofOf:{bridgedHeaderHash:"BlockHash",storageProof:"Vec",lane:"LaneId"},MessageKey:{laneId:"LaneId",nonce:"MessageNonce"},MessageNonce:"u64",MessagesProofOf:{bridgedHeaderHash:"BridgedBlockHash",storageProof:"Vec",lane:"LaneId",noncesStart:"MessageNonce",noncesEnd:"MessageNonce"},OperatingMode:{_enum:["Normal","RejectingOutboundMessages","Halted"]},OutboundLaneData:{oldestUnprunedNonce:"MessageNonce",latestReceivedNonce:"MessageNonce",latestGeneratedNonce:"MessageNonce"},OutboundMessageFee:"Balance",OutboundPayload:{specVersion:"u32",weight:"Weight",origin:"CallOrigin",dispatchFeePayment:"DispatchFeePayment",call:"Bytes"},Parameter:"Null",RelayerId:"AccountId",UnrewardedRelayer:{relayer:"RelayerId",messages:"DeliveredMessages"},UnrewardedRelayersState:{unrewardedRelayer_Entries:"MessageNonce",messagesInOldestEntry:"MessageNonce",totalMessages:"MessageNonce"}}},Al={rpc:{},types:{StatementKind:{_enum:["Regular","Saft"]}}},Cl={rpc:{},types:{FundIndex:"u32",LastContribution:{_enum:{Never:"Null",PreEnding:"u32",Ending:"BlockNumber"}},FundInfo:{depositor:"AccountId",verifier:"Option",deposit:"Balance",raised:"Balance",end:"BlockNumber",cap:"Balance",lastContribution:"LastContribution",firstPeriod:"LeasePeriod",lastPeriod:"LeasePeriod",trieIndex:"TrieIndex"},TrieIndex:"u32"}},Hl={rpc:{},runtime:{AuraUnincludedSegmentApi:[{methods:{can_build_upon:{description:"Whether it is legal to extend the chain",params:[{name:"includedHash",type:"BlockHash"},{name:"slot",type:"Slot"}],type:"bool"}},version:1}],CollectCollationInfo:[{methods:{collect_collation_info:{description:"Collect information about a collation.",params:[{name:"header",type:"Header"}],type:"CollationInfo"}},version:2},{methods:{collect_collation_info:{description:"Collect information about a collation.",params:[],type:"CollationInfoV1"}},version:1}]},types:{CollationInfo:{upwardMessages:"Vec",horizontalMessages:"Vec",newValidationCode:"Option",processedDownwardMessages:"u32",hrmpWatermark:"RelayBlockNumber",headData:"HeadData"},CollationInfoV1:{upwardMessages:"Vec",horizontalMessages:"Vec",newValidationCode:"Option",processedDownwardMessages:"u32",hrmpWatermark:"RelayBlockNumber"},ConfigData:{maxIndividual:"Weight"},MessageId:"[u8; 32]",OverweightIndex:"u64",PageCounter:"u32",PageIndexData:{beginUsed:"PageCounter",endUsed:"PageCounter",overweightCount:"OverweightIndex"}}},Rl={methods:{best_finalized:{description:"Returns number and hash of the best finalized header known to the bridge module.",params:[],type:"(BlockNumber, Hash)"}},version:1},Bl={rpc:{},runtime:{KusamaFinalityApi:[Rl],PolkadotFinalityApi:[Rl],RococoFinalityApi:[Rl],WestendFinalityApi:[Rl]},types:{}},Ll={assumed_validation_data:{description:"Returns the persisted validation data for the given `ParaId` along with the corresponding validation code hash.",params:[{name:"paraId",type:"ParaId"},{name:"hash",type:"Hash"}],type:"Option<(PersistedValidationData, ValidationCodeHash)>"},availability_cores:{description:"Yields information on all availability cores as relevant to the child block.",params:[],type:"Vec"},candidate_events:{description:"Get a vector of events concerning candidates that occurred within a block.",params:[],type:"Vec"},candidate_pending_availability:{description:"Get the receipt of a candidate pending availability.",params:[{name:"paraId",type:"ParaId"}],type:"Option"},check_validation_outputs:{description:"Checks if the given validation outputs pass the acceptance criteria.",params:[{name:"paraId",type:"ParaId"},{name:"outputs",type:"CandidateCommitments"}],type:"bool"},dmq_contents:{description:"Get all the pending inbound messages in the downward message queue for a para.",params:[{name:"paraId",type:"ParaId"}],type:"Vec"},inbound_hrmp_channels_contents:{description:"Get the contents of all channels addressed to the given recipient.",params:[{name:"paraId",type:"ParaId"}],type:"Vec"},on_chain_votes:{description:"Scrape dispute relevant from on-chain, backing votes and resolved disputes.",params:[],type:"Option"},persisted_validation_data:{description:"Yields the persisted validation data for the given `ParaId` along with an assumption that should be used if the para currently occupies a core.",params:[{name:"paraId",type:"ParaId"},{name:"assumption",type:"OccupiedCoreAssumption"}],type:"Option"},session_index_for_child:{description:"Returns the session index expected at a child of the block.",params:[],type:"SessionIndex"},validation_code:{description:"Fetch the validation code used by a para, making the given `OccupiedCoreAssumption`.",params:[{name:"paraId",type:"ParaId"},{name:"assumption",type:"OccupiedCoreAssumption"}],type:"Option"},validation_code_by_hash:{description:"Get the validation code from its hash.",params:[{name:"hash",type:"ValidationCodeHash"}],type:"Option"},validator_groups:{description:"Returns the validator groups and rotation info localized based on the hypothetical child of a block whose state this is invoked on",params:[],type:"(Vec>, GroupRotationInfo)"},validators:{description:"Get the current validators.",params:[],type:"Vec"}},zl={pvfs_require_precheck:{description:"Returns code hashes of PVFs that require pre-checking by validators in the active set.",params:[],type:"Vec"},session_info:{description:"Get the session info for the given session, if stored.",params:[{name:"index",type:"SessionIndex"}],type:"Option"},submit_pvf_check_statement:{description:"Submits a PVF pre-checking statement into the transaction pool.",params:[{name:"stmt",type:"PvfCheckStatement"},{name:"signature",type:"ValidatorSignature"}],type:"Null"},validation_code_hash:{description:"Fetch the hash of the validation code used by a para, making the given `OccupiedCoreAssumption`.",params:[{name:"paraId",type:"ParaId"},{name:"assumption",type:"OccupiedCoreAssumption"}],type:"Option"}},Ul={disputes:{description:"Returns all onchain disputes.",params:[],type:"Vec<(SessionIndex, CandidateHash, DisputeState)>"}},Dl={session_executor_params:{description:"Returns execution parameters for the session.",params:[{name:"sessionIndex",type:"SessionIndex"}],type:"Option"}},ql={key_ownership_proof:{description:"Returns a merkle proof of a validator session key",params:[{name:"validatorId",type:"ValidatorId"}],type:"Option"},submit_report_dispute_lost:{description:"Submit an unsigned extrinsic to slash validators who lost a dispute about a candidate of a past session",params:[{name:"disputeProof",type:"DisputeProof"},{name:"keyOwnershipProof",type:"OpaqueKeyOwnershipProof"}],type:"Option"},unapplied_slashes:{description:"Returns a list of validators that lost a past session dispute and need to be slashed",params:[],type:"Vec<(SessionIndex, CandidateHash, PendingSlashes)>"}},jl={minimum_backing_votes:{description:"Get the minimum number of backing votes for a parachain candidate. This is a staging method! Do not use on production runtimes!",params:[],type:"u32"}},Fl={async_backing_params:{description:"Returns candidate's acceptance limitations for asynchronous backing for a relay parent",params:[],type:"AsyncBackingParams"},para_backing_state:{description:"Returns the state of parachain backing for a given para",params:[{name:"paraId",type:"ParaId"}],type:"Option"}},Xl={disabled_validators:{description:"Returns a list of all disabled validators at the given block",params:[],type:"ValidatorIndex"}},Wl={node_features:{description:"Get node features. This is a staging method! Do not use on production runtimes!",params:[],type:"NodeFeatures"}},Zl={approval_voting_params:{description:"Approval voting configuration parameters",params:[],type:"ApprovalVotingParams"}},Gl={_enum:["ZeroZero","ZeroOne","ZeroTwo","ZeroThree","OneOne","OneTwo","OneThree","TwoTwo","TwoThree","ThreeThree"]},Kl={_enum:["ZeroZero","ZeroOne","ZeroTwo","ZeroThree","ZeroFour","ZeroFive","ZeroSix","ZeroSeven","OneOne","OneTwo","OneThree","OneFour","OneFive","OneSix","OneSeven","TwoTwo","TwoThree","TwoFour","TwoFive","TwoSix","TwoSeven","ThreeThree","ThreeFour","ThreeFive","ThreeSix","ThreeSeven","FourFour","FourFive","FourSix","FourSeven","FiveFive","FiveSix","FiveSeven","SixSix","SixSeven","SevenSeven"]},Jl={rpc:{},runtime:{ParachainHost:[{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl,...Fl,...Xl,...Wl,...Zl,claim_queue:{description:"Claim queue",params:[],type:"BTreeMap>"}},version:11},{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl,...Fl,...Xl,...Wl,...Zl},version:10},{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl,...Fl,...Xl,...Wl},version:9},{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl,...Fl,...Xl},version:8},{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl,...Fl},version:7},{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl},version:6},{methods:{...Ll,...zl,...Ul,...Dl,...ql},version:5},{methods:{...Ll,...zl,...Ul,...Dl},version:4},{methods:{...Ll,...zl,...Ul},version:3},{methods:{...Ll,...zl},version:2},{methods:{session_info:{description:"Get the session info for the given session, if stored.",params:[{name:"index",type:"SessionIndex"}],type:"Option"},...Ll},version:1}]},types:{ServiceQuality:{_enum:["Ordered","Fast"]},DisputeLocation:{_enum:["Local","Remote"]},DisputeResult:{_enum:["Valid","Invalid"]},DisputeState:{validatorsFor:"BitVec",validatorsAgainst:"BitVec",start:"BlockNumber",concludedAt:"Option"},DisputeStatement:{_enum:{Valid:"ValidDisputeStatementKind",Invalid:"InvalidDisputeStatementKind"}},DisputeStatementSet:{candidateHash:"CandidateHash",session:"SessionIndex",statements:"Vec<(DisputeStatement, ParaValidatorIndex, ValidatorSignature)>"},ExecutorParam:{_enum:{Phantom:"Null",MaxMemoryPages:"u32",StackLogicalMax:"u32",StackNativeMax:"u32",PrecheckingMaxMemory:"u64",PvfPrepTimeout:"(PvfPrepTimeoutKind, u64)",PvfExecTimeout:"(PvfExecTimeoutKind, u64)"}},ExecutorParamsHash:"Hash",ExecutorParams:"Vec",ExplicitDisputeStatement:{valid:"bool",candidateHash:"CandidateHash",session:"SessionIndex"},InvalidDisputeStatementKind:{_enum:["Explicit"]},MultiDisputeStatementSet:"Vec",PvfExecTimeoutKind:{_enum:["Backing","Approval"]},PvfPrepTimeoutKind:{_enum:["Precheck","Lenient"]},ValidDisputeStatementKind:{_enum:{Explicit:"Null",BackingSeconded:"Hash",BackingValid:"Hash",ApprovalChecking:"Null"}},HrmpChannel:{maxCapacity:"u32",maxTotalSize:"u32",maxMessageSize:"u32",msgCount:"u32",totalSize:"u32",mqcHead:"Option",senderDeposit:"Balance",recipientDeposit:"Balance"},HrmpChannelId:{sender:"u32",receiver:"u32"},HrmpOpenChannelRequest:{confirmed:"bool",age:"SessionIndex",senderDeposit:"Balance",maxMessageSize:"u32",maxCapacity:"u32",maxTotalSize:"u32"},ParachainProposal:{proposer:"AccountId",genesisHead:"HeadData",validators:"Vec",name:"Bytes",balance:"Balance"},RegisteredParachainInfo:{validators:"Vec",proposer:"AccountId"},...{Bidder:{_enum:{New:"NewBidder",Existing:"ParaId"}},IncomingParachain:{_enum:{Unset:"NewBidder",Fixed:"IncomingParachainFixed",Deploy:"IncomingParachainDeploy"}},IncomingParachainDeploy:{code:"ValidationCode",initialHeadData:"HeadData"},IncomingParachainFixed:{codeHash:"Hash",codeSize:"u32",initialHeadData:"HeadData"},NewBidder:{who:"AccountId",sub:"SubId"},SubId:"u32",AuctionIndex:"u32",LeasePeriod:"BlockNumber",LeasePeriodOf:"BlockNumber",SlotRange10:Gl,SlotRange:Kl,WinningData10:`[WinningDataEntry; ${Gl._enum.length}]`,WinningData:`[WinningDataEntry; ${Kl._enum.length}]`,WinningDataEntry:"Option<(AccountId, ParaId, BalanceOf)>",WinnersData10:"Vec",WinnersData:"Vec",WinnersDataTuple10:"(AccountId, ParaId, BalanceOf, SlotRange10)",WinnersDataTuple:"(AccountId, ParaId, BalanceOf, SlotRange)"},AbridgedCandidateReceipt:{parachainIndex:"ParaId",relayParent:"Hash",headData:"HeadData",collator:"CollatorId",signature:"CollatorSignature",povBlockHash:"Hash",commitments:"CandidateCommitments"},AbridgedHostConfiguration:{maxCodeSize:"u32",maxHeadDataSize:"u32",maxUpwardQueueCount:"u32",maxUpwardQueueSize:"u32",maxUpwardMessageSize:"u32",maxUpwardMessageNumPerCandidate:"u32",hrmpMaxMessageNumPerCandidate:"u32",validationUpgradeFrequency:"BlockNumber",validationUpgradeDelay:"BlockNumber"},AbridgedHrmpChannel:{maxCapacity:"u32",maxTotalSize:"u32",maxMessageSize:"u32",msgCount:"u32",totalSize:"u32",mqcHead:"Option"},ApprovalVotingParams:{maxApprovalCoalesceCount:"u32"},AssignmentId:"AccountId",AssignmentKind:{_enum:{Parachain:"Null",Parathread:"(CollatorId, u32)"}},AsyncBackingParams:{maxCandidateDepth:"u32",allowedAncestryLen:"u32"},AttestedCandidate:{candidate:"AbridgedCandidateReceipt",validityVotes:"Vec",validatorIndices:"BitVec"},AuthorityDiscoveryId:"AccountId",AvailabilityBitfield:"BitVec",AvailabilityBitfieldRecord:{bitfield:"AvailabilityBitfield",submittedTt:"BlockNumber"},BackedCandidate:{candidate:"CommittedCandidateReceipt",validityVotes:"Vec",validatorIndices:"BitVec"},BackingState:{constraints:"Constraints",pendingAvailability:"Vec"},BufferedSessionChange:{applyAt:"BlockNumber",validators:"Vec",queued:"Vec",sessionIndex:"SessionIndex"},CandidateCommitments:{upwardMessages:"Vec",horizontalMessages:"Vec",newValidationCode:"Option",headData:"HeadData",processedDownwardMessages:"u32",hrmpWatermark:"BlockNumber"},CandidateDescriptor:{paraId:"ParaId",relayParent:"RelayChainHash",collatorId:"CollatorId",persistedValidationDataHash:"Hash",povHash:"Hash",erasureRoot:"Hash",signature:"CollatorSignature",paraHead:"Hash",validationCodeHash:"ValidationCodeHash"},CandidateEvent:{_enum:{CandidateBacked:"(CandidateReceipt, HeadData, CoreIndex, GroupIndex)",CandidateIncluded:"(CandidateReceipt, HeadData, CoreIndex, GroupIndex)",CandidateTimedOut:"(CandidateReceipt, HeadData, CoreIndex)"}},CandidateHash:"Hash",CandidateInfo:{who:"AccountId",deposit:"Balance"},CandidatePendingAvailability:{core:"CoreIndex",hash:"CandidateHash",descriptor:"CandidateDescriptor",availabilityVotes:"BitVec",backers:"BitVec",relayParentNumber:"BlockNumber",backedInNumber:"BlockNumber",backingGroup:"GroupIndex"},CandidateReceipt:{descriptor:"CandidateDescriptor",commitmentsHash:"Hash"},GlobalValidationData:{maxCodeSize:"u32",maxHeadDataSize:"u32",blockNumber:"BlockNumber"},CollatorId:"H256",CollatorSignature:"Signature",CommittedCandidateReceipt:{descriptor:"CandidateDescriptor",commitments:"CandidateCommitments"},Constraints:{minRelayParentNumber:"BlockNumber",maxPovSize:"u32",maxCodeSize:"u32",umpRemaining:"u32",umpRemainingBytes:"u32",maxUmpNumPerCandidate:"u32",dmpRemainingMessages:"Vec",hrmpInbound:"InboundHrmpLimitations",hrmpChannelsOut:"HashMap",maxHrmpNumPerCandidate:"u32",requiredParent:"HeadData",validationCodeHash:"ValidationCodeHash",upgradeRestriction:"Option",futureValidationCode:"Option<(BlockNumber, ValidationCodeHash)>"},CoreAssignment:{core:"CoreIndex",paraId:"ParaId",kind:"AssignmentKind",groupIdx:"GroupIndex"},CoreIndex:"u32",CoreOccupied:{_enum:{Parathread:"ParathreadEntry",Parachain:"Null"}},CoreState:{_enum:{Occupied:"OccupiedCore",Scheduled:"ScheduledCore",Free:"Null"}},DisputeProof:{timeSlot:"DisputesTimeSlot",kind:"SlashingOffenceKind",validatorIndex:"ValidatorIndex",validatorId:"ValidatorId"},DisputesTimeSlot:{sessionIndex:"SessionIndex",candidateHash:"CandidateHash"},DoubleVoteReport:{identity:"ValidatorId",first:"(Statement, ValidatorSignature)",second:"(Statement, ValidatorSignature)",proof:"MembershipProof",signingContext:"SigningContext"},DownwardMessage:"Bytes",GroupIndex:"u32",GroupRotationInfo:{sessionStartBlock:"BlockNumber",groupRotationFrequency:"BlockNumber",now:"BlockNumber"},GlobalValidationSchedule:{maxCodeSize:"u32",maxHeadDataSize:"u32",blockNumber:"BlockNumber"},HeadData:"Bytes",HostConfiguration:{maxCodeSize:"u32",maxHeadDataSize:"u32",maxUpwardQueueCount:"u32",maxUpwardQueueSize:"u32",maxUpwardMessageSize:"u32",maxUpwardMessageNumPerCandidate:"u32",hrmpMaxMessageNumPerCandidate:"u32",validationUpgradeFrequency:"BlockNumber",validationUpgradeDelay:"BlockNumber",maxPovSize:"u32",maxDownwardMessageSize:"u32",preferredDispatchableUpwardMessagesStepWeight:"Weight",hrmpMaxParachainOutboundChannels:"u32",hrmpMaxParathreadOutboundChannels:"u32",hrmpOpenRequestTtl:"u32",hrmpSenderDeposit:"Balance",hrmpRecipientDeposit:"Balance",hrmpChannelMaxCapacity:"u32",hrmpChannelMaxTotalSize:"u32",hrmpMaxParachainInboundChannels:"u32",hrmpMaxParathreadInboundChannels:"u32",hrmpChannelMaxMessageSize:"u32",codeRetentionPeriod:"BlockNumber",parathreadCores:"u32",parathreadRetries:"u32",groupRotationFrequency:"BlockNumber",chainAvailabilityPeriod:"BlockNumber",threadAvailabilityPeriod:"BlockNumber",schedulingLookahead:"u32",maxValidatorsPerCore:"Option",maxValidators:"Option",disputePeriod:"SessionIndex",disputePostConclusionAcceptancePeriod:"BlockNumber",disputeMaxSpamSlots:"u32",disputeConclusionByTimeOutPeriod:"BlockNumber",noShowSlots:"u32",nDelayTranches:"u32",zerothDelayTrancheWidth:"u32",neededApprovals:"u32",relayVrfModuloSamples:"u32"},InboundDownwardMessage:{pubSentAt:"BlockNumber",pubMsg:"DownwardMessage"},InboundHrmpMessage:{sentAt:"BlockNumber",data:"Bytes"},InboundHrmpLimitations:{validWatermarks:"Vec"},InboundHrmpMessages:"Vec",LocalValidationData:{parentHead:"HeadData",balance:"Balance",codeUpgradeAllowed:"Option"},MessageIngestionType:{downwardMessages:"Vec",horizontalMessages:"BTreeMap"},MessageQueueChain:"RelayChainHash",NodeFeatures:"BitVec",OccupiedCore:{nextUpOnAvailable:"Option",occupiedSince:"BlockNumber",timeOutAt:"BlockNumber",nextUpOnTimeOut:"Option",availability:"BitVec",groupResponsible:"GroupIndex",candidateHash:"CandidateHash",candidateDescriptor:"CandidateDescriptor"},OccupiedCoreAssumption:{_enum:["Included,","TimedOut","Free"]},OutboundHrmpChannelLimitations:{bytesRemaining:"u32",messagesRemaining:"u32"},OutboundHrmpMessage:{recipient:"u32",data:"Bytes"},PendingSlashes:{_alias:{slashKeys:"keys"},slashKeys:"BTreeMap",kind:"SlashingOffenceKind"},ParachainDispatchOrigin:{_enum:["Signed","Parachain","Root"]},ParachainInherentData:{validationData:"PersistedValidationData",relayChainState:"StorageProof",downwardMessages:"Vec",horizontalMessages:"BTreeMap"},ParachainsInherentData:{bitfields:"SignedAvailabilityBitfields",backedCandidates:"Vec",disputes:"MultiDisputeStatementSet",parentHeader:"Header"},ParaGenesisArgs:{genesisHead:"Bytes",validationCode:"Bytes",parachain:"bool"},ParaId:"u32",ParaInfo:{manager:"AccountId",deposit:"Balance",locked:"bool"},ParaLifecycle:{_enum:["Onboarding","Parathread","Parachain","UpgradingToParachain","DowngradingToParathread","OutgoingParathread","OutgoingParachain"]},ParaPastCodeMeta:{upgradeTimes:"Vec",lastPruned:"Option"},ParaScheduling:{_enum:["Always","Dynamic"]},ParathreadClaim:"(ParaId, CollatorId)",ParathreadClaimQueue:{queue:"Vec",nextCoreOffset:"u32"},ParathreadEntry:{claim:"ParathreadClaim",retries:"u32"},ParaValidatorIndex:"u32",PersistedValidationData:{parentHead:"HeadData",relayParentNumber:"RelayChainBlockNumber",relayParentStorageRoot:"Hash",maxPovSize:"u32"},PvfCheckStatement:{accept:"bool",subject:"ValidationCodeHash",sessionIndex:"SessionIndex",validatorIndex:"ParaValidatorIndex"},QueuedParathread:{claim:"ParathreadEntry",coreOffset:"u32"},RelayBlockNumber:"u32",RelayChainBlockNumber:"RelayBlockNumber",RelayHash:"Hash",RelayChainHash:"RelayHash",Remark:"[u8; 32]",ReplacementTimes:{expectedAt:"BlockNumber",activatedAt:"BlockNumber"},Retriable:{_enum:{Never:"Null",WithRetries:"u32"}},ScheduledCore:{paraId:"ParaId",collator:"Option"},Scheduling:{_enum:["Always","Dynamic"]},ScrapedOnChainVotes:{session:"SessionIndex",backingValidatorsPerCandidate:"Vec<(CandidateReceipt, Vec<(ParaValidatorIndex, ValidityAttestation)>)>",disputes:"MultiDisputeStatementSet"},SessionInfo:{activeValidatorIndices:"Vec",randomSeed:"[u8; 32]",disputePeriod:"SessionIndex",validators:"Vec",discoveryKeys:"Vec",assignmentKeys:"Vec",validatorGroups:"Vec>",nCores:"u32",zerothDelayTrancheWidth:"u32",relayVrfModuloSamples:"u32",nDelayTranches:"u32",noShowSlots:"u32",neededApprovals:"u32"},OldV1SessionInfo:{validators:"Vec",discoveryKeys:"Vec",assignmentKeys:"Vec",validatorGroups:"Vec>",nCores:"u32",zerothDelayTrancheWidth:"u32",relayVrfModuloSamples:"u32",nDelayTranches:"u32",noShowSlots:"u32",neededApprovals:"u32"},SessionInfoValidatorGroup:"Vec",SignedAvailabilityBitfield:{payload:"BitVec",validatorIndex:"ParaValidatorIndex",signature:"ValidatorSignature"},SignedAvailabilityBitfields:"Vec",SigningContext:{sessionIndex:"SessionIndex",parentHash:"Hash"},SlashingOffenceKind:{_enum:["ForInvalid","AgainstValid"]},Statement:{_enum:{Never:"Null",Candidate:"Hash",Valid:"Hash",Invalid:"Hash"}},TransientValidationData:{maxCodeSize:"u32",maxHeadDataSize:"u32",balance:"Balance",codeUpgradeAllowed:"Option",dmqLength:"u32"},UpgradeGoAhead:{_enum:["Abort","GoAhead"]},UpgradeRestriction:{_enum:["Present"]},UpwardMessage:"Bytes",ValidationFunctionParams:{maxCodeSize:"u32",relayChainHeight:"RelayChainBlockNumber",codeUpgradeAllowed:"Option"},ValidationCode:"Bytes",ValidationCodeHash:"Hash",ValidationData:{persisted:"PersistedValidationData",transient:"TransientValidationData"},ValidationDataType:{validationData:"ValidationData",relayChainState:"Vec"},ValidatorSignature:"Signature",ValidityAttestation:{_enum:{Never:"Null",Implicit:"ValidatorSignature",Explicit:"ValidatorSignature"}},MessagingStateSnapshot:{relayDispatchQueueSize:"(u32, u32)",egressChannels:"Vec"},MessagingStateSnapshotEgressEntry:"(ParaId, AbridgedHrmpChannel)",SystemInherentData:"ParachainInherentData",VecInboundHrmpMessage:"Vec"}},Yl={rpc:{},types:{Approvals:"[bool; 4]"}},Ql={rpc:{},types:{AccountStatus:{validity:"AccountValidity",freeBalance:"Balance",lockedBalance:"Balance",signature:"Vec",vat:"Permill"},AccountValidity:{_enum:["Invalid","Initiated","Pending","ValidLow","ValidHigh","Completed"]}}},$l={rpc:{},runtime:{DryRunApi:[{methods:{dry_run_call:{description:"Dry run call",params:[{name:"origin",type:"OriginCaller"},{name:"call",type:"RuntimeCall"}],type:"Result"},dry_run_xcm:{description:"Dry run XCM program",params:[{name:"originLocation",type:"VersionedMultiLocation"},{name:"xcm",type:"VersionedXcm"}],type:"Result"}},version:1}]},types:{PostDispatchInfo:{actualWeight:"Option",paysFee:"Pays"},DispatchResultWithPostInfo:"Result",CallDryRunEffects:{executionResult:"DispatchResultWithPostInfo",emittedEvents:"Vec",localXcm:"Option",forwardedXcms:"Vec<(VersionedMultiLocation, Vec)>"},XcmDryRunEffects:{executionResult:"OutcomeV4",emittedEvents:"Vec",forwardedXcms:"Vec<(VersionedMultiLocation, Vec)>"},XcmDryRunApiError:{_enum:["Unimplemented","VersionedConversionFailed"]}}},ef=["AssetInstance","Fungibility","Junction","Junctions","MultiAsset","MultiAssetFilter","MultiLocation","Response","WildFungibility","WildMultiAsset","Xcm","XcmError"];function tf(e){return ef.reduce(((t,n)=>(0,M.b)(t,{[n]:`${n}${e}`})),{})}const nf={rpc:{},types:{BodyId:{_enum:{Unit:"Null",Named:"Vec",Index:"Compact",Executive:"Null",Technical:"Null",Legislative:"Null",Judicial:"Null"}},BodyPart:{_enum:{Voice:"Null",Members:"Compact",Fraction:{nom:"Compact",denom:"Compact"},AtLeastProportion:{nom:"Compact",denom:"Compact"},MoreThanProportion:{nom:"Compact",denom:"Compact"}}},InteriorMultiLocation:"Junctions",NetworkId:{_enum:{Any:"Null",Named:"Vec",Polkadot:"Null",Kusama:"Null"}},XcmOrigin:{_enum:{Xcm:"MultiLocation"}},XcmpMessageFormat:{_enum:["ConcatenatedVersionedXcm","ConcatenatedEncodedBlob","Signals"]},XcmAssetId:{_enum:{Concrete:"MultiLocation",Abstract:"Bytes"}},InboundStatus:{_enum:["Ok","Suspended"]},OutboundStatus:{_enum:["Ok","Suspended"]},MultiAssets:"Vec",FungibilityV0:"FungibilityV1",WildFungibilityV0:"WildFungibilityV1",AssetInstanceV0:{_enum:{Undefined:"Null",Index8:"u8",Index16:"Compact",Index32:"Compact",Index64:"Compact",Index128:"Compact",Array4:"[u8; 4]",Array8:"[u8; 8]",Array16:"[u8; 16]",Array32:"[u8; 32]",Blob:"Vec"}},JunctionV0:{_enum:{Parent:"Null",Parachain:"Compact",AccountId32:{network:"NetworkId",id:"AccountId"},AccountIndex64:{network:"NetworkId",index:"Compact"},AccountKey20:{network:"NetworkId",key:"[u8; 20]"},PalletInstance:"u8",GeneralIndex:"Compact",GeneralKey:"Vec",OnlyChild:"Null",Plurality:{id:"BodyId",part:"BodyPart"}}},MultiAssetV0:{_enum:{None:"Null",All:"Null",AllFungible:"Null",AllNonFungible:"Null",AllAbstractFungible:"Vec",AllAbstractNonFungible:"Vec",AllConcreteFungible:"MultiLocationV0",AllConcreteNonFungible:"MultiLocationV0",AbstractFungible:{id:"Vec",instance:"Compact"},AbstractNonFungible:{class:"Vec",instance:"AssetInstanceV0"},ConcreteFungible:{id:"MultiLocationV0",amount:"Compact"},ConcreteNonFungible:{class:"MultiLocationV0",instance:"AssetInstanceV0"}}},MultiLocationV0:{_enum:{Here:"Null",X1:"JunctionV0",X2:"(JunctionV0, JunctionV0)",X3:"(JunctionV0, JunctionV0, JunctionV0)",X4:"(JunctionV0, JunctionV0, JunctionV0, JunctionV0)",X5:"(JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0)",X6:"(JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0)",X7:"(JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0)",X8:"(JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0)"}},OriginKindV0:{_enum:["Native","SovereignAccount","Superuser","Xcm"]},ResponseV0:{_enum:{Assets:"Vec"}},XcmV0:{_enum:{WithdrawAsset:{assets:"Vec",effects:"Vec"},ReserveAssetDeposit:{assets:"Vec",effects:"Vec"},ReceiveTeleportedAsset:{assets:"Vec",effects:"Vec"},QueryResponse:{queryId:"Compact",response:"ResponseV0"},TransferAsset:{assets:"Vec",dest:"MultiLocationV0"},TransferReserveAsset:{assets:"Vec",dest:"MultiLocationV0",effects:"Vec"},Transact:{originType:"XcmOriginKind",requireWeightAtMost:"u64",call:"DoubleEncodedCall"},HrmpNewChannelOpenRequest:{sender:"Compact",maxMessageSize:"Compact",maxCapacity:"Compact"},HrmpChannelAccepted:{recipient:"Compact"},HrmpChannelClosing:{initiator:"Compact",sender:"Compact",recipient:"Compact"},RelayedFrom:{who:"MultiLocationV0",message:"XcmV0"}}},XcmErrorV0:{_enum:{Undefined:"Null",Overflow:"Null",Unimplemented:"Null",UnhandledXcmVersion:"Null",UnhandledXcmMessage:"Null",UnhandledEffect:"Null",EscalationOfPrivilege:"Null",UntrustedReserveLocation:"Null",UntrustedTeleportLocation:"Null",DestinationBufferOverflow:"Null",SendFailed:"Null",CannotReachDestination:"(MultiLocation, Xcm)",MultiLocationFull:"Null",FailedToDecode:"Null",BadOrigin:"Null",ExceedsMaxMessageSize:"Null",FailedToTransactAsset:"Null",WeightLimitReached:"Weight",Wildcard:"Null",TooMuchWeightRequired:"Null",NotHoldingFees:"Null",WeightNotComputable:"Null",Barrier:"Null",NotWithdrawable:"Null",LocationCannotHold:"Null",TooExpensive:"Null",AssetNotFound:"Null",RecursionLimitReached:"Null"}},XcmOrderV0:{_enum:{Null:"Null",DepositAsset:{assets:"Vec",dest:"MultiLocationV0"},DepositReserveAsset:{assets:"Vec",dest:"MultiLocationV0",effects:"Vec"},ExchangeAsset:{give:"Vec",receive:"Vec"},InitiateReserveWithdraw:{assets:"Vec",reserve:"MultiLocationV0",effects:"Vec"},InitiateTeleport:{assets:"Vec",dest:"MultiLocationV0",effects:"Vec"},QueryHolding:{queryId:"Compact",dest:"MultiLocationV0",assets:"Vec"},BuyExecution:{fees:"MultiAssetV0",weight:"u64",debt:"u64",haltOnError:"bool",xcm:"Vec"}}},AssetInstanceV1:{_enum:{Undefined:"Null",Index:"Compact",Array4:"[u8; 4]",Array8:"[u8; 8]",Array16:"[u8; 16]",Array32:"[u8; 32]",Blob:"Bytes"}},FungibilityV1:{_enum:{Fungible:"Compact",NonFungible:"AssetInstanceV1"}},JunctionV1:{_enum:{Parachain:"Compact",AccountId32:{network:"NetworkId",id:"AccountId"},AccountIndex64:{network:"NetworkId",index:"Compact"},AccountKey20:{network:"NetworkId",key:"[u8; 20]"},PalletInstance:"u8",GeneralIndex:"Compact",GeneralKey:"Vec",OnlyChild:"Null",Plurality:{id:"BodyId",part:"BodyPart"}}},JunctionsV1:{_enum:{Here:"Null",X1:"JunctionV1",X2:"(JunctionV1, JunctionV1)",X3:"(JunctionV1, JunctionV1, JunctionV1)",X4:"(JunctionV1, JunctionV1, JunctionV1, JunctionV1)",X5:"(JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1)",X6:"(JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1)",X7:"(JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1)",X8:"(JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1)"}},MultiAssetsV1:"Vec",MultiAssetV1:{id:"XcmAssetId",fungibility:"FungibilityV1"},MultiAssetFilterV1:{_enum:{Definite:"MultiAssetsV1",Wild:"WildMultiAssetV1"}},MultiLocationV1:{parents:"u8",interior:"JunctionsV1"},OriginKindV1:"OriginKindV0",ResponseV1:{_enum:{Assets:"MultiAssetsV1"}},WildFungibilityV1:{_enum:["Fungible","NonFungible"]},WildMultiAssetV1:{_enum:{All:"Null",AllOf:{id:"XcmAssetId",fungibility:"WildFungibilityV1"}}},XcmV1:{_enum:{WithdrawAsset:{assets:"MultiAssetsV1",effects:"Vec"},ReserveAssetDeposit:{assets:"MultiAssetsV1",effects:"Vec"},ReceiveTeleportedAsset:{assets:"MultiAssetsV1",effects:"Vec"},QueryResponse:{queryId:"Compact",response:"ResponseV1"},TransferAsset:{assets:"MultiAssetsV1",dest:"MultiLocationV1"},TransferReserveAsset:{assets:"MultiAssetsV1",dest:"MultiLocationV1",effects:"Vec"},Transact:{originType:"XcmOriginKind",requireWeightAtMost:"u64",call:"DoubleEncodedCall"},HrmpNewChannelOpenRequest:{sender:"Compact",maxMessageSize:"Compact",maxCapacity:"Compact"},HrmpChannelAccepted:{recipient:"Compact"},HrmpChannelClosing:{initiator:"Compact",sender:"Compact",recipient:"Compact"},RelayedFrom:{who:"MultiLocationV1",message:"XcmV1"}}},XcmErrorV1:{_enum:{Undefined:"Null",Overflow:"Null",Unimplemented:"Null",UnhandledXcmVersion:"Null",UnhandledXcmMessage:"Null",UnhandledEffect:"Null",EscalationOfPrivilege:"Null",UntrustedReserveLocation:"Null",UntrustedTeleportLocation:"Null",DestinationBufferOverflow:"Null",SendFailed:"Null",CannotReachDestination:"(MultiLocationV1, XcmV1)",MultiLocationFull:"Null",FailedToDecode:"Null",BadOrigin:"Null",ExceedsMaxMessageSize:"Null",FailedToTransactAsset:"Null",WeightLimitReached:"Weight",Wildcard:"Null",TooMuchWeightRequired:"Null",NotHoldingFees:"Null",WeightNotComputable:"Null",Barrier:"Null",NotWithdrawable:"Null",LocationCannotHold:"Null",TooExpensive:"Null",AssetNotFound:"Null",DestinationUnsupported:"Null",RecursionLimitReached:"Null"}},XcmOrderV1:{_enum:{Noop:"Null",DepositAsset:{assets:"MultiAssetFilterV1",maxAssets:"u32",beneficiary:"MultiLocationV1"},DepositReserveAsset:{assets:"MultiAssetFilterV1",maxAssets:"u32",dest:"MultiLocationV1",effects:"Vec"},ExchangeAsset:{give:"MultiAssetFilterV1",receive:"MultiAssetsV1"},InitiateReserveWithdraw:{assets:"MultiAssetFilterV1",reserve:"MultiLocationV1",effects:"Vec"},InitiateTeleport:{assets:"MultiAssetFilterV1",dest:"MultiLocationV1",effects:"Vec"},QueryHolding:{queryId:"Compact",dest:"MultiLocationV1",assets:"MultiAssetFilterV1"},BuyExecution:{fees:"MultiAssetV1",weight:"u64",debt:"u64",haltOnError:"bool",instructions:"Vec"}}},AssetIdV2:{_enum:{Concrete:"MultiLocationV2",Abstract:"Bytes"}},AssetInstanceV2:{_enum:{Undefined:"Null",Index:"Compact",Array4:"[u8;4]",Array8:"[u8;8]",Array16:"[u8;16]",Array32:"[u8;32]",Blob:"Bytes"}},BodyIdV2:{_enum:{Unit:"Null",Named:"Bytes",Index:"Compact",Executive:"Null",Technical:"Null",Legislative:"Null",Judicial:"Null",Defense:"Null",Administration:"Null",Treasury:"Null"}},BodyPartV2:{_enum:{Voice:"Null",Members:{count:"Compact"},Fraction:{nom:"Compact",denom:"Compact"},AtLeastProportion:{nom:"Compact",denom:"Compact"},MoreThanProportion:{nom:"Compact",denom:"Compact"}}},NetworkIdV2:{_enum:{Any:"Null",Named:"Bytes",Polkadot:"Null",Kusama:"Null"}},JunctionV2:{_enum:{Parachain:"Compact",AccountId32:{network:"NetworkIdV2",id:"[u8; 32]"},AccountIndex64:{network:"NetworkIdV2",index:"Compact"},AccountKey20:{network:"NetworkIdV2",key:"[u8; 20]"},PalletInstance:"u8",GeneralIndex:"Compact",GeneralKey:"Bytes",OnlyChild:"Null",Plurality:{id:"BodyIdV2",part:"BodyPartV2"}}},JunctionsV2:{_enum:{Here:"Null",X1:"JunctionV2",X2:"(JunctionV2, JunctionV2)",X3:"(JunctionV2, JunctionV2, JunctionV2)",X4:"(JunctionV2, JunctionV2, JunctionV2, JunctionV2)",X5:"(JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2)",X6:"(JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2)",X7:"(JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2)",X8:"(JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2)"}},FungibilityV2:{_enum:{Fungible:"Compact",NonFungible:"AssetInstanceV2"}},InteriorMultiLocationV2:"JunctionsV2",MultiAssetV2:{id:"AssetIdV2",fun:"FungibilityV2"},MultiAssetsV2:"Vec",MultiAssetFilterV2:{_enum:{Definite:"MultiAssetsV2",Wild:"WildMultiAssetV2"}},MultiLocationV2:{parents:"u8",interior:"JunctionsV2"},OriginKindV2:{_enum:{Native:"Null",SovereignAccount:"Null",Superuser:"Null",Xcm:"Null"}},WildFungibilityV2:{_enum:{Fungible:"Null",NonFungible:"Null"}},ResponseV2:{_enum:{Null:"Null",Assets:"MultiAssetsV2",ExecutionResult:"Option<(u32, XcmErrorV2)>",Version:"u32"}},ResponseV2Error:"(u32, XcmErrorV2)",WeightLimitV2:{_enum:{Unlimited:"Null",Limited:"Compact"}},InstructionV2:{_enum:{WithdrawAsset:"MultiAssetsV2",ReserveAssetDeposited:"MultiAssetsV2",ReceiveTeleportedAsset:"MultiAssetsV2",QueryResponse:{queryId:"Compact",response:"ResponseV2",maxWeight:"Compact"},TransferAsset:{assets:"MultiAssetsV2",beneficiary:"MultiLocationV2"},TransferReserveAsset:{assets:"MultiAssetsV2",dest:"MultiLocationV2",xcm:"XcmV2"},Transact:{originType:"XcmOriginKind",requireWeightAtMost:"Compact",call:"DoubleEncodedCall"},HrmpNewChannelOpenRequest:{sender:"Compact",maxMessageSize:"Compact",maxCapacity:"Compact"},HrmpChannelAccepted:{recipient:"Compact"},HrmpChannelClosing:{initiator:"Compact",sender:"Compact",recipient:"Compact"},ClearOrigin:"Null",DescendOrigin:"InteriorMultiLocationV2",ReportError:{queryId:"Compact",dest:"MultiLocationV2",maxResponseWeight:"Compact"},DepositAsset:{assets:"MultiAssetFilterV2",maxAssets:"Compact",beneficiary:"MultiLocationV2"},DepositReserveAsset:{assets:"MultiAssetFilterV2",maxAssets:"Compact",dest:"MultiLocationV2",xcm:"XcmV2"},ExchangeAsset:{give:"MultiAssetFilterV2",receive:"MultiAssetsV2"},InitiateReserveWithdraw:{assets:"MultiAssetFilterV2",reserve:"MultiLocationV2",xcm:"XcmV2"},InitiateTeleport:{assets:"MultiAssetFilterV2",dest:"MultiLocationV2",xcm:"XcmV2"},QueryHolding:{queryId:"Compact",dest:"MultiLocationV2",assets:"MultiAssetFilterV2",maxResponseWeight:"Compact"},BuyExecution:{fees:"MultiAssetV2",weightLimit:"WeightLimitV2"},RefundSurplus:"Null",SetErrorHandler:"XcmV2",SetAppendix:"XcmV2",ClearError:"Null",ClaimAsset:{assets:"MultiAssetsV2",ticket:"MultiLocationV2"},Trap:"Compact",SubscribeVersion:{queryId:"Compact",maxResponseWeight:"Compact"},UnsubscribeVersion:"Null"}},WildMultiAssetV2:{_enum:{All:"Null",AllOf:{id:"AssetIdV2",fun:"WildFungibilityV2"}}},XcmV2:"Vec",XcmErrorV2:{_enum:{Overflow:"Null",Unimplemented:"Null",UntrustedReserveLocation:"Null",UntrustedTeleportLocation:"Null",MultiLocationFull:"Null",MultiLocationNotInvertible:"Null",BadOrigin:"Null",InvalidLocation:"Null",AssetNotFound:"Null",FailedToTransactAsset:"Null",NotWithdrawable:"Null",LocationCannotHold:"Null",ExceedsMaxMessageSize:"Null",DestinationUnsupported:"Null",Transport:"Null",Unroutable:"Null",UnknownClaim:"Null",FailedToDecode:"Null",MaxWeightInvalid:"Null",NotHoldingFees:"Null",TooExpensive:"Null",Trap:"u64",UnhandledXcmVersion:"Null",WeightLimitReached:"Weight",Barrier:"Null",WeightNotComputable:"Null"}},AssetIdV3:{_enum:{Concrete:"MultiLocationV3",Abstract:"Bytes"}},BodyIdV3:{_enum:{Unit:"Null",Moniker:"[u8;4]",Index:"Compact",Executive:"Null",Technical:"Null",Legislative:"Null",Judicial:"Null",Defense:"Null",Administration:"Null",Treasury:"Null"}},BodyPartV3:{_enum:{Voice:"Null",Members:{count:"Compact"},Fraction:{nom:"Compact",denom:"Compact"},AtLeastProportion:{nom:"Compact",denom:"Compact"},MoreThanProportion:{nom:"Compact",denom:"Compact"}}},AssetInstanceV3:{_enum:{Undefined:"Null",Index:"Compact",Array4:"[u8;4]",Array8:"[u8;8]",Array16:"[u8;16]",Array32:"[u8;32]"}},FungibilityV3:{_enum:{Fungible:"Compact",NonFungible:"AssetInstanceV3"}},InteriorMultiLocationV3:"JunctionsV3",JunctionV3:{_enum:{Parachain:"Compact",AccountId32:{network:"Option",id:"[u8;32]"},AccountIndex64:{network:"Option",index:"Compact"},AccountKey20:{network:"Option",key:"[u8;20]"},PalletInstance:"u8",GeneralIndex:"Compact",GeneralKey:{length:"u8",data:"[u8;32]"},OnlyChild:"Null",Plurality:{id:"BodyIdV3",part:"BodyPartV3"},GlobalConsensus:"NetworkIdV3"}},JunctionsV3:{_enum:{Here:"Null",X1:"JunctionV3",X2:"(JunctionV3, JunctionV3)",X3:"(JunctionV3, JunctionV3, JunctionV3)",X4:"(JunctionV3, JunctionV3, JunctionV3, JunctionV3)",X5:"(JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3)",X6:"(JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3)",X7:"(JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3)",X8:"(JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3)"}},MaybeErrorCodeV3:{_enum:{Success:"Null",Error:"Bytes",TruncatedError:"Bytes"}},MaxPalletsInfo:"u32",MultiAssetV3:{id:"AssetIdV3",fun:"FungibilityV3"},MultiAssetsV3:"Vec",MultiAssetFilterV3:{_enum:{Definite:"MultiAssetsV3",Wild:"WildMultiAssetV3"}},MultiLocationV3:{parents:"u8",interior:"JunctionsV3"},MaxPalletNameLen:"u32",NetworkIdV3:{_enum:{ByGenesis:"[u8;32]",ByFork:{blockNumber:"u64",blockHash:"[u8;32]"},Polkadot:"Null",Kusama:"Null",Westend:"Null",Rococo:"Null",Wococo:"Null",Ethereum:{chainId:"Compact"},BitcoinCore:"Null",BitcoinCash:"Null",PolkadotBulletin:"Null"}},OriginKindV3:"OriginKindV2",PalletInfoV3:{index:"Compact",name:"Bytes",moduleName:"Bytes",major:"Compact",minor:"Compact",patch:"Compact"},WildFungibilityV3:"WildFungibilityV2",QueryResponseInfoV3:{destination:"MultiLocationV3",queryId:"Compact",maxWeight:"WeightV2"},ResponseV3:{_enum:{Null:"Null",Assets:"MultiAssetsV3",ExecutionResult:"Option<(u32,XcmErrorV3)>",Version:"u32",PalletsInfo:"Vec",DispatchResult:"MaybeErrorCodeV3"}},XcmErrorV3:{_enum:{Overflow:"Null",Unimplemented:"Null",UntrustedReserveLocation:"Null",UntrustedTeleportLocation:"Null",LocationFull:"Null",LocationNotInvertible:"Null",BadOrigin:"Null",InvalidLocation:"Null",AssetNotFound:"Null",FailedToTransactAsset:"Null",NotWithdrawable:"Null",LocationCannotHold:"Null",ExceedsMaxMessageSize:"Null",DestinationUnsupported:"Null",Transport:"Null",Unroutable:"Null",UnknownClaim:"Null",FailedToDecode:"Null",MaxWeightInvalid:"Null",NotHoldingFees:"Null",TooExpensive:"Null",Trap:"u64",ExpectationFalse:"Null",PalletNotFound:"Null",NameMismatch:"Null",VersionIncompatible:"Null",HoldingWouldOverflow:"Null",ExportError:"Null",ReanchorFailed:"Null",NoDeal:"Null",FeesNotMet:"Null",LockError:"Null",NoPermission:"Null",Unanchored:"Null",NotDepositable:"Null",UnhandledXcmVersion:"Null",WeightLimitReached:"WeightV2",Barrier:"Null",ExceedsStackLimit:"Null"}},ResponseV3Error:"(u32, XcmErrorV3)",ResponseV3Result:"Option<(u32, ResponseV3Error)>",WeightLimitV3:{_enum:{Unlimited:"Null",Limited:"WeightV2"}},InstructionV3:{_enum:{WithdrawAsset:"MultiAssetsV3",ReserveAssetDeposited:"MultiAssetsV3",ReceiveTeleportedAsset:"MultiAssetsV3",QueryResponse:{queryId:"Compact",response:"ResponseV3",maxWeight:"WeightV2",querier:"Option"},TransferAsset:{assets:"MultiAssetsV3",beneficiary:"MultiLocationV3"},TransferReserveAsset:{assets:"MultiAssetsV3",dest:"MultiLocationV3",xcm:"XcmV3"},Transact:{originKind:"XcmOriginKind",requireWeightAtMost:"WeightV2",call:"DoubleEncodedCall"},HrmpNewChannelOpenRequest:{sender:"Compact",maxMessageSize:"Compact",maxCapacity:"Compact"},HrmpChannelAccepted:{recipient:"Compact"},HrmpChannelClosing:{initiator:"Compact",sender:"Compact",recipient:"Compact"},ClearOrigin:"Null",DescendOrigin:"JunctionsV3",ReportError:"QueryResponseInfoV3",DepositAsset:{assets:"MultiAssetFilterV3",beneficiary:"MultiLocationV3"},DepositReserveAsset:{assets:"MultiAssetFilterV3",dest:"MultiLocationV3",xcm:"XcmV3"},ExchangeAsset:{give:"MultiAssetFilterV3",want:"MultiAssetsV3",maximal:"bool"},InitiateReserveWithdraw:{assets:"MultiAssetFilterV3",reserve:"MultiLocationV3",xcm:"XcmV3"},InitiateTeleport:{assets:"MultiAssetFilterV3",dest:"MultiLocationV3",xcm:"XcmV3"},ReportHolding:{responseInfo:"QueryResponseInfoV3",assets:"MultiAssetFilterV3"},BuyExecution:{fees:"MultiAssetV3",weightLimit:"WeightLimitV3"},RefundSurplus:"Null",SetErrorHandler:"XcmV3",SetAppendix:"XcmV3",ClearError:"Null",ClaimAsset:{assets:"MultiAssetsV3",ticket:"MultiLocationV3"},Trap:"Compact",SubscribeVersion:{queryId:"Compact",maxResponseWeight:"WeightV2"},UnsubscribeVersion:"Null",BurnAsset:"MultiAssetsV3",ExpectAsset:"MultiAssetsV3",ExpectOrigin:"Option",ExpectError:"Option<(u32, XcmErrorV3)>",ExpectTransactStatus:"MaybeErrorCodeV3",QueryPallet:{moduleName:"Vec",responseInfo:"QueryResponseInfoV3"},ExpectPallet:{index:"Compact",name:"Vec",moduleName:"Vec",crateMajor:"Compact",minCrateMinor:"Compact"},ReportTransactStatus:"QueryResponseInfoV3",ClearTransactStatus:"Null",UniversalOrigin:"JunctionV3",ExportMessage:{network:"NetworkIdV3",destination:"JunctionsV3",xcm:"XcmV3"},LockAsset:{asset:"MultiAssetV3",unlocker:"MultiLocationV3"},UnlockAsset:{asset:"MultiAssetV3",target:"MultiLocationV3"},NoteUnlockable:{asset:"MultiAssetV3",owner:"MultiLocationV3"},RequestUnlock:{asset:"MultiAssetV3",locker:"MultiLocationV3"},SetFeesMode:{jitWithdraw:"bool"},SetTopic:"[u8; 32]",ClearTopic:"Null",AliasOrigin:"MultiLocationV3",UnpaidExecution:{weightLimit:"WeightLimitV3",checkOrigin:"Option"}}},WildMultiAssetV3:{_enum:{All:"Null",AllOf:{id:"AssetIdV3",fun:"WildFungibilityV2"},AllCounted:"Compact",AllOfCounted:{id:"AssetIdV3",fun:"WildFungibilityV2",count:"Compact"}}},VersionV3:"u32",XcmV3:"Vec",AssetIdV4:"MultiLocationV4",AssetInstanceV4:{_enum:{Undefined:"Null",Index:"Compact",Array4:"[u8;4]",Array8:"[u8;8]",Array16:"[u8;16]",Array32:"[u8;32]"}},FungibilityV4:{_enum:{Fungible:"Compact",NonFungible:"AssetInstanceV4"}},UncheckedFungibilityV4:{_enum:{Fungible:"Compact",NonFungible:"AssetInstanceV4"}},JunctionV4:{_enum:{Parachain:"Compact",AccountId32:{network:"Option",id:"[u8;32]"},AccountIndex64:{network:"Option",index:"Compact"},AccountKey20:{network:"Option",key:"[u8;20]"},PalletInstance:"u8",GeneralIndex:"Compact",GeneralKey:{length:"u8",data:"[u8;32]"},OnlyChild:"Null",Plurality:{id:"BodyIdV3",part:"BodyPartV3"},GlobalConsensus:"NetworkIdV4"}},JunctionsV4:{_enum:{Here:"Null",X1:"[JunctionV4;1]",X2:"[JunctionV4;2]",X3:"[JunctionV4;3]",X4:"[JunctionV4;4]",X5:"[JunctionV4;5]",X6:"[JunctionV4;6]",X7:"[JunctionV4;7]",X8:"[JunctionV4;8]"}},MaxPalletsInfo:"u32",NetworkIdV4:"NetworkIdV3",MultiAssetV4:{id:"AssetIdV4",fun:"FungibilityV4"},MultiAssetsV4:"Vec",MultiAssetFilterV4:{_enum:{Definite:"MultiAssetsV4",Wild:"WildMultiAssetV4"}},MultiLocationV4:{parents:"u8",interior:"JunctionsV4"},OriginKindV4:"XcmOriginKind",PalletInfoV4:"PalletInfoV3",WildFungibilityV4:"WildFungibilityV2",QueryResponseInfoV4:{destination:"MultiLocationV4",queryId:"Compact",maxWeight:"WeightV2"},ResponseV4:{_enum:{Null:"Null",Assets:"MultiAssetsV4",ExecutionResult:"Option<(u32, XcmErrorV3)>",Version:"u32",PalletsInfo:"Vec",DispatchResult:"MaybeErrorCodeV3"}},InstructionV4:{_enum:{WithdrawAsset:"MultiAssetsV4",ReserveAssetDeposited:"MultiAssetsV4",ReceiveTeleportedAsset:"MultiAssetsV4",QueryResponse:{queryId:"Compact",response:"ResponseV4",maxWeight:"WeightV2",querier:"Option"},TransferAsset:{assets:"MultiAssetsV4",beneficiary:"MultiLocationV4"},TransferReserveAsset:{assets:"MultiAssetsV4",dest:"MultiLocationV4",xcm:"XcmV4"},Transact:{originKind:"OriginKindV4",requireWeightAtMost:"WeightV2",call:"DoubleEncodedCall"},HrmpNewChannelOpenRequest:{sender:"Compact",maxMessageSize:"Compact",maxCapacity:"Compact"},HrmpChannelAccepted:{recipient:"Compact"},HrmpChannelClosing:{initiator:"Compact",sender:"Compact",recipient:"Compact"},ClearOrigin:"Null",DescendOrigin:"JunctionsV4",ReportError:"QueryResponseInfoV4",DepositAsset:{assets:"MultiAssetFilterV4",beneficiary:"MultiLocationV4"},DepositReserveAsset:{assets:"MultiAssetFilterV4",dest:"MultiLocationV4",xcm:"XcmV4"},ExchangeAsset:{give:"MultiAssetFilterV4",want:"MultiAssetsV4",maximal:"bool"},InitiateReserveWithdraw:{assets:"MultiAssetFilterV4",reserve:"MultiLocationV4",xcm:"XcmV4"},InitiateTeleport:{assets:"MultiAssetFilterV4",dest:"MultiLocationV4",xcm:"XcmV4"},ReportHolding:{responseInfo:"QueryResponseInfoV4",assets:"MultiAssetFilterV4"},BuyExecution:{fees:"MultiAssetV4",weightLimit:"WeightLimitV3"},RefundSurplus:"Null",SetErrorHandler:"XcmV4",SetAppendix:"XcmV4",ClearError:"Null",ClaimAsset:{assets:"MultiAssetsV4",ticket:"MultiLocationV4"},Trap:"Compact",SubscribeVersion:{queryId:"Compact",maxResponseWeight:"WeightV2"},UnsubscribeVersion:"Null",BurnAsset:"MultiAssetsV4",ExpectAsset:"MultiAssetsV4",ExpectOrigin:"Option",ExpectError:"Option<(u32, XcmErrorV3)>",ExpectTransactStatus:"MaybeErrorCodeV3",QueryPallet:{moduleName:"Vec",responseInfo:"QueryResponseInfoV4"},ExpectPallet:{index:"Compact",name:"Vec",moduleName:"Vec",crateMajor:"Compact",minCrateMinor:"Compact"},ReportTransactStatus:"QueryResponseInfoV4",ClearTransactStatus:"Null",UniversalOrigin:"JunctionV4",ExportMessage:{network:"NetworkIdV4",destination:"JunctionsV4",xcm:"XcmV4"},LockAsset:{asset:"MultiAssetV4",unlocker:"MultiLocationV4"},UnlockAsset:{asset:"MultiAssetV4",target:"MultiLocationV4"},NoteUnlockable:{asset:"MultiAssetV4",owner:"MultiLocationV4"},RequestUnlock:{asset:"MultiAssetV4",locker:"MultiLocationV4"},SetFeesMode:{jitWithdraw:"bool"},SetTopic:"[u8;32]",ClearTopic:"Null",AliasOrigin:"MultiLocationV4",UnpaidExecution:{weightLimit:"WeightLimitV3",checkOrigin:"Option"}}},OutcomeV4:{_enum:{Complete:{used:"WeightV2"},Incomplete:{used:"WeightV2",error:"XcmErrorV3"},Error:{error:"XcmErrorV3"}}},WildMultiAssetV4:{_enum:{All:"Null",AllOf:{id:"AssetIdV4",fun:"WildFungibilityV4"},AllCounted:"Compact",AllOfCounted:{id:"AssetIdV4",fun:"WildFungibilityV4",count:"Compact"}}},VersionV4:"u32",XcmV4:"Vec",XcmErrorV4:"XcmErrorV3",...tf("V4"),DoubleEncodedCall:{encoded:"Bytes"},XcmOriginKind:{_enum:["Native","SovereignAccount","Superuser","Xcm"]},Outcome:{_enum:{Complete:"Weight",Incomplete:"(Weight, XcmErrorV0)",Error:"XcmErrorV0"}},QueryId:"u64",QueryStatus:{_enum:{Pending:{responder:"VersionedMultiLocation",maybeNotify:"Option<(u8, u8)>",timeout:"BlockNumber"},Ready:{response:"VersionedResponse",at:"BlockNumber"}}},QueueConfigData:{suspendThreshold:"u32",dropThreshold:"u32",resumeThreshold:"u32",thresholdWeight:"Weight",weightRestrictDecay:"Weight"},VersionMigrationStage:{_enum:{MigrateSupportedVersion:"Null",MigrateVersionNotifiers:"Null",NotifyCurrentTargets:"Option",MigrateAndNotifyOldTargets:"Null"}},VersionedMultiAsset:{_enum:{V0:"MultiAssetV0",V1:"MultiAssetV1",V2:"MultiAssetV2",V3:"MultiAssetV3",V4:"MultiAssetV4"}},VersionedMultiAssets:{_enum:{V0:"Vec",V1:"MultiAssetsV1",V2:"MultiAssetsV2",V3:"MultiAssetsV3",V4:"MultiAssetsV4"}},VersionedMultiLocation:{_enum:{V0:"MultiLocationV0",V1:"MultiLocationV1",V2:"MultiLocationV2",V3:"MultiLocationV3",V4:"MultiLocationV4"}},VersionedResponse:{V0:"ResponseV0",V1:"ResponseV1",V2:"ResponseV2",V3:"ResponseV3",V4:"ResponseV4"},VersionedXcm:{_enum:{V0:"XcmV0",V1:"XcmV1",V2:"XcmV2",V3:"XcmV3",V4:"XcmV4"}},XcmVersion:"u32"}},rf={rpc:{},runtime:{XcmPaymentApi:[{methods:{query_acceptable_payment_assets:{description:"The API to query acceptable payment assets",params:[{name:"version",type:"u32"}],type:"Result, XcmPaymentApiError>"},query_weight_to_asset_fee:{description:"",params:[{name:"weight",type:"WeightV2"},{name:"asset",type:"XcmVersionedAssetId"}],type:"Result"},query_xcm_weight:{description:"",params:[{name:"message",type:"XcmVersionedXcm"}],type:"Result"}},version:1}]},types:{XcmPaymentApiError:{_enum:["Unimplemented","VersionedConversionFailed","WeightNotComputable","UnhandledXcmVersion","AssetNotFound"]}}},af={rpc:{},runtime:{LocationToAccountApi:[{methods:{convert_location:{description:"Converts `Location` to `AccountId`",params:[{name:"location",type:"XcmVersionedLocation"}],type:"Result"}},version:1}]},types:{Error:{_enum:["Unsupported","VersionedConversionFailed"]}}},sf={rpc:{},types:{ContractCryptoHasher:{_enum:["Blake2x256","Sha2x256","Keccak256"]},ContractDiscriminant:"u32",ContractLayoutArray:{offset:"ContractLayoutKey",len:"u32",cellsPerElem:"u64",layout:"ContractStorageLayout"},ContractLayoutCell:{key:"ContractLayoutKey",ty:"SiLookupTypeId"},ContractLayoutEnum:{dispatchKey:"ContractLayoutKey",variants:"BTreeMap"},ContractLayoutHash:{offset:"ContractLayoutKey",strategy:"ContractLayoutHashingStrategy",layout:"ContractStorageLayout"},ContractLayoutHashingStrategy:{hasher:"ContractCryptoHasher",postfix:"Vec",prefix:"Vec"},ContractLayoutKey:"[u8; 32]",ContractLayoutStruct:{fields:"Vec"},ContractLayoutStructField:{layout:"ContractStorageLayout",name:"Text"},ContractStorageLayout:{_enum:{Cell:"ContractLayoutCell",Hash:"ContractLayoutHash",Array:"ContractLayoutArray",Struct:"ContractLayoutStruct",Enum:"ContractLayoutEnum"}},ContractConstructorSpecV0:{name:"Text",selector:"ContractSelector",args:"Vec",docs:"Vec"},ContractConstructorSpecV1:{name:"Vec",selector:"ContractSelector",args:"Vec",docs:"Vec"},ContractConstructorSpecV2:{label:"Text",selector:"ContractSelector",args:"Vec",docs:"Vec"},ContractConstructorSpecV3:{label:"Text",selector:"ContractSelector",payable:"bool",args:"Vec",docs:"Vec"},ContractConstructorSpecV4:{label:"Text",selector:"ContractSelector",payable:"bool",args:"Vec",docs:"Vec",default:"bool",returnType:"Option"},ContractContractSpecV0:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec"},ContractContractSpecV1:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec"},ContractContractSpecV2:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec"},ContractContractSpecV3:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec"},ContractContractSpecV4:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec",environment:"ContractEnvironmentV4"},ContractContractSpecV5:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec",environment:"ContractEnvironmentV4"},ContractDisplayName:"SiPath",ContractEventParamSpecV0:{name:"Text",indexed:"bool",type:"ContractTypeSpec",docs:"Vec"},ContractEventParamSpecV2:{label:"Text",indexed:"bool",type:"ContractTypeSpec",docs:"Vec"},ContractEventSpecV0:{name:"Text",args:"Vec",docs:"Vec"},ContractEventSpecV1:{name:"Text",args:"Vec",docs:"Vec"},ContractEventSpecV2:{label:"Text",args:"Vec",docs:"Vec"},ContractEventSpecV3:{label:"Text",args:"Vec",docs:"Vec",module_path:"Text",signature_topic:"Option<[u8; 32]>"},ContractMessageParamSpecV0:{name:"Text",type:"ContractTypeSpec"},ContractMessageParamSpecV2:{label:"Text",type:"ContractTypeSpec"},ContractMessageSpecV0:{name:"Text",selector:"ContractSelector",mutates:"bool",payable:"bool",args:"Vec",returnType:"Option",docs:"Vec"},ContractMessageSpecV1:{name:"Vec",selector:"ContractSelector",mutates:"bool",payable:"bool",args:"Vec",returnType:"Option",docs:"Vec"},ContractMessageSpecV2:{label:"Text",selector:"ContractSelector",mutates:"bool",payable:"bool",args:"Vec",returnType:"Option",docs:"Vec"},ContractMessageSpecV3:{label:"Text",selector:"ContractSelector",mutates:"bool",payable:"bool",args:"Vec",returnType:"Option",docs:"Vec",default:"bool"},ContractSelector:"[u8; 4]",ContractTypeSpec:{type:"SiLookupTypeId",displayName:"ContractDisplayName"},ContractConstructorSpecLatest:"ContractConstructorSpecV4",ContractEventSpecLatest:"ContractEventSpecV3",ContractEventParamSpecLatest:"ContractEventParamSpecV2",ContractMessageParamSpecLatest:"ContractMessageParamSpecV2",ContractMessageSpecLatest:"ContractMessageSpecV3",ContractMetadataLatest:"ContractMetadataV5",ContractProjectInfo:{source:"ContractProjectSource",contract:"ContractProjectContract"},ContractMetadataV0:{metadataVersion:"Text",types:"Vec",spec:"ContractContractSpecV0"},ContractMetadataV1:{types:"Vec",spec:"ContractContractSpecV1"},ContractMetadataV2:{types:"Vec",spec:"ContractContractSpecV2"},ContractMetadataV3:{types:"Vec",spec:"ContractContractSpecV3"},ContractMetadataV4:{types:"Vec",spec:"ContractContractSpecV4",version:"Text"},ContractMetadataV5:{types:"Vec",spec:"ContractContractSpecV5",version:"u64"},ContractMetadata:{_enum:{V0:"ContractMetadataV0",V1:"ContractMetadataV1",V2:"ContractMetadataV2",V3:"ContractMetadataV3",V4:"ContractMetadataV4",V5:"ContractMetadataV5"}},ContractProjectV0:{metadataVersion:"Text",source:"ContractProjectSource",contract:"ContractProjectContract",types:"Vec",spec:"ContractContractSpecV0"},ContractProject:"(ContractProjectInfo, ContractMetadata)",ContractProjectContract:{_alias:{docs:"documentation"},name:"Text",version:"Text",authors:"Vec",description:"Option",docs:"Option",repository:"Option",homepage:"Option",license:"Option"},ContractProjectSource:{_alias:{wasmHash:"hash"},wasmHash:"[u8; 32]",language:"Text",compiler:"Text",wasm:"Raw"},ContractEnvironmentV4:{_alias:{hashType:"hash"},accountId:"Option",balance:"Option",blockNumber:"Option",hashType:"Option",timestamp:"Option",maxEventTopics:"Option"}}},of={account_basic:{description:"Returns pallet_evm::Accounts by address.",params:[{name:"address",type:"H160"}],type:"EvmAccount"},account_code_at:{description:"For a given account address, returns pallet_evm::AccountCodes.",params:[{name:"address",type:"H160"}],type:"Bytes"},author:{description:"Returns the converted FindAuthor::find_author authority id.",params:[],type:"H160"},call:{description:"Returns a frame_ethereum::call response. If `estimate` is true,",params:[{name:"from",type:"H160"},{name:"to",type:"H160"},{name:"data",type:"Vec"},{name:"value",type:"U256"},{name:"gasLimit",type:"U256"},{name:"maxFeePerGas",type:"Option"},{name:"maxPriorityFeePerGas",type:"Option"},{name:"nonce",type:"Option"},{name:"estimate",type:"bool"},{name:"accessList",type:"Option)>>"}],type:"Result"},chain_id:{description:"Returns runtime defined pallet_evm::ChainId.",params:[],type:"u64"},create:{description:"Returns a frame_ethereum::call response. If `estimate` is true,",params:[{name:"from",type:"H160"},{name:"data",type:"Vec"},{name:"value",type:"U256"},{name:"gasLimit",type:"U256"},{name:"maxFeePerGas",type:"Option"},{name:"maxPriorityFeePerGas",type:"Option"},{name:"nonce",type:"Option"},{name:"estimate",type:"bool"},{name:"accessList",type:"Option)>>"}],type:"Result"},current_all:{description:"Return all the current data for a block in a single runtime call.",params:[],type:"(Option, Option>, Option>)"},current_block:{description:"Return the current block.",params:[],type:"BlockV2"},current_receipts:{description:"Return the current receipt.",params:[],type:"Option>"},current_transaction_statuses:{description:"Return the current transaction status.",params:[],type:"Option>"},elasticity:{description:"Return the elasticity multiplier.",params:[],type:"Option"},extrinsic_filter:{description:"Receives a `Vec` and filters all the ethereum transactions.",params:[{name:"xts",type:"Vec"}],type:"Vec"},gas_price:{description:"Returns FixedGasPrice::min_gas_price",params:[],type:"u256"},storage_at:{description:"For a given account address and index, returns pallet_evm::AccountStorages.",params:[{name:"address",type:"H160"},{name:"index",type:"u256"}],type:"H256"}},cf={rpc:{listening:{aliasSection:"net",description:"Returns true if client is actively listening for network connections. Otherwise false.",params:[],type:"bool"},peerCount:{aliasSection:"net",description:"Returns number of peers connected to node.",params:[],type:"Text"},version:{aliasSection:"net",description:"Returns protocol version.",params:[],type:"Text"},clientVersion:{aliasSection:"web3",description:"Returns current client version.",params:[],type:"Text"},sha3:{aliasSection:"web3",description:"Returns sha3 of the given data",params:[{name:"data",type:"Bytes"}],type:"H256"},accounts:{description:"Returns accounts list.",params:[],type:"Vec"},blockNumber:{description:"Returns the blockNumber",params:[],type:"U256"},call:{description:"Call contract, returning the output data.",params:[{name:"request",type:"EthCallRequest"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"Bytes"},chainId:{description:"Returns the chain ID used for transaction signing at the current best block. None is returned if not available.",params:[],type:"U64"},coinbase:{description:"Returns block author.",params:[],type:"H160"},estimateGas:{description:"Estimate gas needed for execution of given contract.",params:[{name:"request",type:"EthCallRequest"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"U256"},feeHistory:{description:"Returns fee history for given block count & reward percentiles",params:[{name:"blockCount",type:"U256"},{name:"newestBlock",type:"BlockNumber"},{name:"rewardPercentiles",type:"Option>"}],type:"EthFeeHistory"},gasPrice:{description:"Returns current gas price.",params:[],type:"U256"},getBalance:{description:"Returns balance of the given account.",params:[{name:"address",type:"H160"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"U256"},getBlockByHash:{description:"Returns block with given hash.",params:[{name:"hash",type:"H256"},{name:"full",type:"bool"}],type:"Option"},getBlockByNumber:{description:"Returns block with given number.",params:[{name:"block",type:"BlockNumber"},{name:"full",type:"bool"}],type:"Option"},getBlockTransactionCountByHash:{description:"Returns the number of transactions in a block with given hash.",params:[{name:"hash",type:"H256"}],type:"U256"},getBlockTransactionCountByNumber:{description:"Returns the number of transactions in a block with given block number.",params:[{name:"block",type:"BlockNumber"}],type:"U256"},getCode:{description:"Returns the code at given address at given time (block number).",params:[{name:"address",type:"H160"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"Bytes"},getFilterChanges:{description:"Returns filter changes since last poll.",params:[{name:"index",type:"U256"}],type:"EthFilterChanges"},getFilterLogs:{description:"Returns all logs matching given filter (in a range 'from' - 'to').",params:[{name:"index",type:"U256"}],type:"Vec"},getLogs:{description:"Returns logs matching given filter object.",params:[{name:"filter",type:"EthFilter"}],type:"Vec"},getProof:{description:"Returns proof for account and storage.",params:[{name:"address",type:"H160"},{name:"storageKeys",type:"Vec"},{name:"number",type:"BlockNumber"}],type:"EthAccount"},getStorageAt:{description:"Returns content of the storage at given address.",params:[{name:"address",type:"H160"},{name:"index",type:"U256"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"H256"},getTransactionByBlockHashAndIndex:{description:"Returns transaction at given block hash and index.",params:[{name:"hash",type:"H256"},{name:"index",type:"U256"}],type:"EthTransaction"},getTransactionByBlockNumberAndIndex:{description:"Returns transaction by given block number and index.",params:[{name:"number",type:"BlockNumber"},{name:"index",type:"U256"}],type:"EthTransaction"},getTransactionByHash:{description:"Get transaction by its hash.",params:[{name:"hash",type:"H256"}],type:"EthTransaction"},getTransactionCount:{description:"Returns the number of transactions sent from given address at given time (block number).",params:[{name:"address",type:"H160"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"U256"},getTransactionReceipt:{description:"Returns transaction receipt by transaction hash.",params:[{name:"hash",type:"H256"}],type:"EthReceipt"},getUncleByBlockHashAndIndex:{description:"Returns an uncles at given block and index.",params:[{name:"hash",type:"H256"},{name:"index",type:"U256"}],type:"EthRichBlock"},getUncleByBlockNumberAndIndex:{description:"Returns an uncles at given block and index.",params:[{name:"number",type:"BlockNumber"},{name:"index",type:"U256"}],type:"EthRichBlock"},getUncleCountByBlockHash:{description:"Returns the number of uncles in a block with given hash.",params:[{name:"hash",type:"H256"}],type:"U256"},getUncleCountByBlockNumber:{description:"Returns the number of uncles in a block with given block number.",params:[{name:"number",type:"BlockNumber"}],type:"U256"},getWork:{description:"Returns the hash of the current block, the seedHash, and the boundary condition to be met.",params:[],type:"EthWork"},hashrate:{description:"Returns the number of hashes per second that the node is mining with.",params:[],type:"U256"},maxPriorityFeePerGas:{description:"Returns max priority fee per gas",params:[],type:"U256"},mining:{description:"Returns true if client is actively mining new blocks.",params:[],type:"bool"},newBlockFilter:{description:"Returns id of new block filter.",params:[],type:"U256"},newFilter:{description:"Returns id of new filter.",params:[{name:"filter",type:"EthFilter"}],type:"U256"},newPendingTransactionFilter:{description:"Returns id of new block filter.",params:[],type:"U256"},protocolVersion:{description:"Returns protocol version encoded as a string (quotes are necessary).",params:[],type:"u64"},sendRawTransaction:{description:"Sends signed transaction, returning its hash.",params:[{name:"bytes",type:"Bytes"}],type:"H256"},sendTransaction:{description:"Sends transaction; will block waiting for signer to return the transaction hash",params:[{name:"tx",type:"EthTransactionRequest"}],type:"H256"},submitHashrate:{description:"Used for submitting mining hashrate.",params:[{name:"index",type:"U256"},{name:"hash",type:"H256"}],type:"bool"},submitWork:{description:"Used for submitting a proof-of-work solution.",params:[{name:"nonce",type:"H64"},{name:"headerHash",type:"H256"},{name:"mixDigest",type:"H256"}],type:"bool"},subscribe:{description:"Subscribe to Eth subscription.",params:[{name:"kind",type:"EthSubKind"},{isOptional:!0,name:"params",type:"EthSubParams"}],pubsub:["subscription","subscribe","unsubscribe"],type:"Null"},syncing:{description:"Returns an object with data about the sync status or false.",params:[],type:"EthSyncStatus"},uninstallFilter:{description:"Uninstalls filter.",params:[{name:"index",type:"U256"}],type:"bool"}},runtime:{ConvertTransactionRuntimeApi:[{methods:{convert_transaction:{description:"Converts an Ethereum-style transaction to Extrinsic",params:[{name:"transaction",type:"TransactionV2"}],type:"Extrinsic"}},version:2}],DebugRuntimeApi:[{methods:{trace_block:{description:"Trace all block extrinsics",params:[{name:"extrinsics",type:"Vec"},{name:"knownTransactions",type:"Vec"}],type:"Result<(), DispatchError>"},trace_transaction:{description:"Trace transaction extrinsics",params:[{name:"extrinsics",type:"Vec"},{name:"transaction",type:"EthTransaction"}],type:"Result<(), DispatchError>"}},version:4}],EthereumRuntimeRPCApi:[{methods:{...of},version:4},{methods:{...of,call:{description:"Returns a frame_ethereum::call response. If `estimate` is true,",params:[{name:"from",type:"H160"},{name:"to",type:"H160"},{name:"data",type:"Vec"},{name:"value",type:"U256"},{name:"gasLimit",type:"U256"},{name:"maxFeePerGas",type:"Option"},{name:"maxPriorityFeePerGas",type:"Option"},{name:"nonce",type:"Option"},{name:"estimate",type:"bool"},{name:"accessList",type:"Option)>>"}],type:"Result"},create:{description:"Returns a frame_ethereum::call response. If `estimate` is true,",params:[{name:"from",type:"H160"},{name:"data",type:"Vec"},{name:"value",type:"U256"},{name:"gasLimit",type:"U256"},{name:"maxFeePerGas",type:"Option"},{name:"maxPriorityFeePerGas",type:"Option"},{name:"nonce",type:"Option"},{name:"estimate",type:"bool"},{name:"accessList",type:"Option)>>"}],type:"Result"}},version:5}]},types:{BlockV0:{header:"EthHeader",transactions:"Vec",ommers:"Vec"},LegacyTransaction:{nonce:"U256",gasPrice:"U256",gasLimit:"U256",action:"EthTransactionAction",value:"U256",input:"Bytes",signature:"EthTransactionSignature"},TransactionV0:"LegacyTransaction",BlockV1:{header:"EthHeader",transactions:"Vec",ommers:"Vec"},EIP2930Transaction:{chainId:"u64",nonce:"U256",gasPrice:"U256",gasLimit:"U256",action:"EthTransactionAction",value:"U256",input:"Bytes",accessList:"EthAccessList",oddYParity:"bool",r:"H256",s:"H256"},TransactionV1:{_enum:{Legacy:"LegacyTransaction",EIP2930:"EIP2930Transaction"}},BlockV2:{header:"EthHeader",transactions:"Vec",ommers:"Vec"},EIP1559Transaction:{chainId:"u64",nonce:"U256",maxPriorityFeePerGas:"U256",maxFeePerGas:"U256",gasLimit:"U256",action:"EthTransactionAction",value:"U256",input:"Bytes",accessList:"EthAccessList",oddYParity:"bool",r:"H256",s:"H256"},TransactionV2:{_enum:{Legacy:"LegacyTransaction",EIP2930:"EIP2930Transaction",EIP1559:"EIP1559Transaction"}},EthereumAccountId:"GenericEthereumAccountId",EthereumAddress:"GenericEthereumAccountId",EthereumLookupSource:"GenericEthereumLookupSource",EthereumSignature:"[u8; 65]",EthAccessListItem:{address:"EthAddress",slots:"Vec"},EthAccessList:"Vec",EthAccount:{address:"EthAddress",balance:"U256",nonce:"U256",codeHash:"H256",storageHash:"H256",accountProof:"Vec",storageProof:"Vec"},EthAddress:"H160",EthBlock:{header:"EthHeader",transactions:"Vec",ommers:"Vec"},EthHeader:{parentHash:"H256",ommersHash:"H256",beneficiary:"EthAddress",stateRoot:"H256",transactionsRoot:"H256",receiptsRoot:"H256",logsBloom:"EthBloom",difficulty:"U256",number:"U256",gasLimit:"U256",gasUsed:"U256",timestamp:"u64",extraData:"Bytes",mixMash:"H256",nonce:"H64"},EthRichBlock:{_alias:{blockHash:"hash",blockSize:"size"},blockHash:"Option",parentHash:"H256",sha3Uncles:"H256",author:"EthAddress",miner:"EthAddress",stateRoot:"H256",transactionsRoot:"H256",receiptsRoot:"H256",number:"Option",gasUsed:"U256",gasLimit:"U256",extraData:"Bytes",logsBloom:"EthBloom",timestamp:"U256",difficulty:"U256",totalDifficulty:"Option",sealFields:"Vec",uncles:"Vec",transactions:"Vec",blockSize:"Option"},EthBloom:"H2048",EthCallRequest:{from:"Option",to:"Option",gasPrice:"Option",gas:"Option",value:"Option",data:"Option",nonce:"Option"},EthFeeHistory:{oldestBlock:"U256",baseFeePerGas:"Vec",gasUsedRatio:"Vec",reward:"Option>>"},EthFilter:{fromBlock:"Option",toBlock:"Option",blockHash:"Option",address:"Option",topics:"Option"},EthFilterAddress:{_enum:{Single:"EthAddress",Multiple:"Vec",Null:"Null"}},EthFilterChanges:{_enum:{Logs:"Vec",Hashes:"Vec",Empty:"Null"}},EthFilterTopic:{_enum:{Single:"EthFilterTopicInner",Multiple:"Vec",Null:"Null"}},EthFilterTopicEntry:"Option",EthFilterTopicInner:{_enum:{Single:"EthFilterTopicEntry",Multiple:"Vec",Null:"Null"}},EthRichHeader:{_alias:{blockHash:"hash",blockSize:"size"},blockHash:"Option",parentHash:"H256",sha3Uncles:"H256",author:"EthAddress",miner:"EthAddress",stateRoot:"H256",transactionsRoot:"H256",receiptsRoot:"H256",number:"Option",gasUsed:"U256",gasLimit:"U256",extraData:"Bytes",logsBloom:"EthBloom",timestamp:"U256",difficulty:"U256",sealFields:"Vec",blockSize:"Option"},EthLog:{address:"EthAddress",topics:"Vec",data:"Bytes",blockHash:"Option",blockNumber:"Option",transactionHash:"Option",transactionIndex:"Option",logIndex:"Option",transactionLogIndex:"Option",removed:"bool"},EthReceipt:{transactionHash:"Option",transactionIndex:"Option",blockHash:"Option",from:"Option",to:"Option",blockNumber:"Option",cumulativeGasUsed:"U256",gasUsed:"Option",contractAddress:"Option",logs:"Vec",root:"Option",logsBloom:"EthBloom",statusCode:"Option"},EthReceiptV0:"EthReceipt",EthReceiptV3:"EthReceipt",EthStorageProof:{key:"U256",value:"U256",proof:"Vec"},EthSubKind:{_enum:["newHeads","logs","newPendingTransactions","syncing"]},EthSubParams:{_enum:{None:"Null",Logs:"EthFilter"}},EthSubResult:{_enum:{Header:"EthRichHeader",Log:"EthLog",TransactionHash:"H256",SyncState:"EthSyncStatus"}},EthSyncInfo:{startingBlock:"U256",currentBlock:"U256",highestBlock:"U256",warpChunksAmount:"Option",warpChunksProcessed:"Option"},EthSyncStatus:{_enum:{Info:"EthSyncInfo",None:"Null"}},EthTransaction:{hash:"H256",nonce:"U256",blockHash:"Option",blockNumber:"Option",transactionIndex:"Option",from:"H160",to:"Option",value:"U256",gasPrice:"Option",maxFeePerGas:"Option",maxPriorityFeePerGas:"Option",gas:"U256",input:"Bytes",creates:"Option",raw:"Bytes",publicKey:"Option",chainId:"Option",standardV:"U256",v:"U256",r:"U256",s:"U256",accessList:"Option>",transactionType:"Option"},EthTransactionSignature:{v:"u64",r:"H256",s:"H256"},EthTransactionAction:{_enum:{Call:"H160",Create:"Null"}},EthTransactionCondition:{_enum:{block:"u64",time:"u64"}},EthTransactionRequest:{from:"Option",to:"Option",gasPrice:"Option",gas:"Option",value:"Option",data:"Option",nonce:"Option"},EthTransactionStatus:{transactionHash:"H256",transactionIndex:"u32",from:"EthAddress",to:"Option",contractAddress:"Option",logs:"Vec",logsBloom:"EthBloom"},EthWork:{powHash:"H256",seedHash:"H256",target:"H256",number:"Option"}}},df={rpc:{},runtime:{AuthorFilterAPI:[{methods:{can_author:{description:"The runtime api used to predict whether an author will be eligible in the given slot",params:[{name:"author",type:"AccountId"},{name:"relayParent",type:"u32"},{name:"parentHeader",type:"Header"}],type:"bool"}},version:2},{methods:{can_author:{description:"The runtime api used to predict whether an author will be eligible in the given slot",params:[{name:"author",type:"AccountId"},{name:"relayParent",type:"u32"}],type:"bool"}},version:1}],NimbusApi:[{methods:{can_author:{description:"The runtime api used to predict whether a Nimbus author will be eligible in the given slot",params:[{name:"author",type:"AccountId"},{name:"relayParent",type:"u32"},{name:"parentHeader",type:"Header"}],type:"bool"}},version:1}]},types:{}},uf={rpc:{},runtime:{OracleApi:[{methods:{get_all_values:{description:"Retrieves all values",params:[{name:"providerId",type:"Raw"}],type:"Raw"},get_value:{description:"Retrieves a single value",params:[{name:"providerId",type:"Raw"},{name:"key",type:"Raw"}],type:"Option"}},version:1}]},types:{}},lf={rpc:{},runtime:{TokensApi:[{methods:{query_existential_deposit:{description:"Query the existential amount for a specific currency",params:[{name:"currencyId",type:"Raw"}],type:"u128"}},version:1}]},types:{}},ff={rpc:{methods:{description:"Retrieves the list of RPC methods that are exposed by the node",params:[],type:"RpcMethods"}},types:{RpcMethods:{version:"u32",methods:"Vec"}}},pf={rpc:{hasKey:{description:"Returns true if the keystore has private keys for the given public key and key type.",isUnsafe:!0,params:[{name:"publicKey",type:"Bytes"},{name:"keyType",type:"Text"}],type:"bool"},hasSessionKeys:{description:"Returns true if the keystore has private keys for the given session public keys.",isUnsafe:!0,params:[{name:"sessionKeys",type:"Bytes"}],type:"bool"},insertKey:{description:"Insert a key into the keystore.",isUnsafe:!0,params:[{name:"keyType",type:"Text"},{name:"suri",type:"Text"},{name:"publicKey",type:"Bytes"}],type:"Bytes"},pendingExtrinsics:{description:"Returns all pending extrinsics, potentially grouped by sender",params:[],type:"Vec"},removeExtrinsic:{description:"Remove given extrinsic from the pool and temporarily ban it to prevent reimporting",isUnsafe:!0,params:[{name:"bytesOrHash",type:"Vec"}],type:"Vec"},rotateKeys:{description:"Generate new session keys and returns the corresponding public keys",isUnsafe:!0,params:[],type:"Bytes"},submitAndWatchExtrinsic:{description:"Submit and subscribe to watch an extrinsic until unsubscribed",isSigned:!0,params:[{name:"extrinsic",type:"Extrinsic"}],pubsub:["extrinsicUpdate","submitAndWatchExtrinsic","unwatchExtrinsic"],type:"ExtrinsicStatus"},submitExtrinsic:{description:"Submit a fully formatted extrinsic for block inclusion",isSigned:!0,params:[{name:"extrinsic",type:"Extrinsic"}],type:"Hash"}},types:{ExtrinsicOrHash:{_enum:{Hash:"Hash",Extrinsic:"Bytes"}},ExtrinsicStatus:{_enum:{Future:"Null",Ready:"Null",Broadcast:"Vec",InBlock:"Hash",Retracted:"Hash",FinalityTimeout:"Hash",Finalized:"Hash",Usurped:"Hash",Dropped:"Null",Invalid:"Null"}}}},hf={rpc:{getBlock:{description:"Get header and body of a relay chain block",params:[{isHistoric:!0,isOptional:!0,name:"hash",type:"BlockHash"}],type:"SignedBlock"},getBlockHash:{description:"Get the block hash for a specific block",params:[{isOptional:!0,name:"blockNumber",type:"BlockNumber"}],type:"BlockHash"},getFinalizedHead:{alias:["chain_getFinalisedHead"],description:"Get hash of the last finalized block in the canon chain",params:[],type:"BlockHash"},getHeader:{alias:["chain_getHead"],description:"Retrieves the header for a specific block",params:[{isHistoric:!0,isOptional:!0,name:"hash",type:"BlockHash"}],type:"Header"},subscribeAllHeads:{description:"Retrieves the newest header via subscription",params:[],pubsub:["allHead","subscribeAllHeads","unsubscribeAllHeads"],type:"Header"},subscribeFinalizedHeads:{alias:["chain_subscribeFinalisedHeads","chain_unsubscribeFinalisedHeads"],description:"Retrieves the best finalized header via subscription",params:[],pubsub:["finalizedHead","subscribeFinalizedHeads","unsubscribeFinalizedHeads"],type:"Header"},subscribeNewHeads:{alias:["chain_unsubscribeNewHeads","subscribe_newHead","unsubscribe_newHead"],description:"Retrieves the best header via subscription",params:[],pubsub:["newHead","subscribeNewHead","unsubscribeNewHead"],type:"Header"}},types:{BlockHash:"Hash"}},bf={rpc:{getKeys:{description:"Returns the keys with prefix from a child storage, leave empty to get all the keys",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"prefix",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Vec"},getKeysPaged:{alias:["childstate_getKeysPagedAt"],description:"Returns the keys with prefix from a child storage with pagination support",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"prefix",type:"StorageKey"},{name:"count",type:"u32"},{isOptional:!0,name:"startKey",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Vec"},getStorage:{description:"Returns a child storage entry at a specific block state",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Option"},getStorageEntries:{description:"Returns child storage entries for multiple keys at a specific block state",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"keys",type:"Vec"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Vec>"},getStorageHash:{description:"Returns the hash of a child storage entry at a block state",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Option"},getStorageSize:{description:"Returns the size of a child storage entry at a block state",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Option"}},types:{PrefixedStorageKey:"StorageKey"}},mf={rpc:{localStorageGet:{description:"Get offchain local storage under given key and prefix",isUnsafe:!0,params:[{name:"kind",type:"StorageKind"},{name:"key",type:"Bytes"}],type:"Option"},localStorageSet:{description:"Set offchain local storage under given key and prefix",isUnsafe:!0,params:[{name:"kind",type:"StorageKind"},{name:"key",type:"Bytes"},{name:"value",type:"Bytes"}],type:"Null"}},runtime:{OffchainWorkerApi:[{methods:{offchain_worker:{description:"Starts the off-chain task for given block header.",params:[{name:"header",type:"Header"}],type:"Null"}},version:2},{methods:{offchain_worker:{description:"Starts the off-chain task for given block header.",params:[{name:"number",type:"BlockNumber"}],type:"Null"}},version:1}]},types:{StorageKind:{_enum:{PERSISTENT:1,LOCAL:2}}}},yf={query_fee_details:{description:"The transaction fee details",params:[{name:"uxt",type:"Extrinsic"},{name:"len",type:"u32"}],type:"FeeDetails"}},xf={query_call_fee_details:{description:"The call fee details",params:[{name:"call",type:"Call"},{name:"len",type:"u32"}],type:"FeeDetails"}},gf={query_info:{description:"The transaction info",params:[{name:"uxt",type:"Extrinsic"},{name:"len",type:"u32"}],type:"RuntimeDispatchInfo"}},vf={query_call_info:{description:"The call info",params:[{name:"call",type:"Call"},{name:"len",type:"u32"}],type:"RuntimeDispatchInfo"}},wf={query_length_to_fee:{description:"Query the output of the current LengthToFee given some input",params:[{name:"length",type:"u32"}],type:"Balance"},query_weight_to_fee:{description:"Query the output of the current WeightToFee given some input",params:[{name:"weight",type:"Weight"}],type:"Balance"}},Vf={rpc:{queryFeeDetails:{deprecated:"Use `api.call.transactionPaymentApi.queryFeeDetails` instead",description:"Query the detailed fee of a given encoded extrinsic",params:[{name:"extrinsic",type:"Bytes"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"FeeDetails"},queryInfo:{deprecated:"Use `api.call.transactionPaymentApi.queryInfo` instead",description:"Retrieves the fee information for an encoded extrinsic",params:[{name:"extrinsic",type:"Bytes"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"RuntimeDispatchInfoV1"}},runtime:{TransactionPaymentApi:[{methods:{...wf,...gf,...yf},version:4},{methods:{...wf,...gf,...yf},version:3},{methods:{...gf,...yf},version:2},{methods:{query_info:{description:"The transaction info",params:[{name:"uxt",type:"Extrinsic"},{name:"len",type:"u32"}],type:"RuntimeDispatchInfo"},...yf},version:1}],TransactionPaymentCallApi:[{methods:{...wf,...vf,...xf},version:3},{methods:{...vf,...xf},version:2},{methods:{CALL:{description:"The call info",params:[{name:"call",type:"Call"},{name:"len",type:"u32"}],type:"RuntimeDispatchInfo"},...xf},version:1}]},types:{FeeDetails:{inclusionFee:"Option"},InclusionFee:{baseFee:"Balance",lenFee:"Balance",adjustedWeightFee:"Balance"},RuntimeDispatchInfo:{weight:"Weight",class:"DispatchClass",partialFee:"Balance"},RuntimeDispatchInfoV1:{weight:"WeightV1",class:"DispatchClass",partialFee:"Balance"},RuntimeDispatchInfoV2:{weight:"WeightV2",class:"DispatchClass",partialFee:"Balance"}}},Tf={rpc:{call:{alias:["state_callAt"],description:"Perform a call to a builtin on the chain",params:[{name:"method",type:"Text"},{name:"data",type:"Bytes"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Bytes"},getChildKeys:{description:"Retrieves the keys with prefix of a specific child storage",params:[{name:"childStorageKey",type:"StorageKey"},{name:"childDefinition",type:"StorageKey"},{name:"childType",type:"u32"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Vec"},getChildReadProof:{description:"Returns proof of storage for child key entries at a specific block state.",params:[{name:"childStorageKey",type:"PrefixedStorageKey"},{name:"keys",type:"Vec"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"ReadProof"},getChildStorage:{description:"Retrieves the child storage for a key",params:[{name:"childStorageKey",type:"StorageKey"},{name:"childDefinition",type:"StorageKey"},{name:"childType",type:"u32"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"StorageData"},getChildStorageHash:{description:"Retrieves the child storage hash",params:[{name:"childStorageKey",type:"StorageKey"},{name:"childDefinition",type:"StorageKey"},{name:"childType",type:"u32"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Hash"},getChildStorageSize:{description:"Retrieves the child storage size",params:[{name:"childStorageKey",type:"StorageKey"},{name:"childDefinition",type:"StorageKey"},{name:"childType",type:"u32"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"u64"},getKeys:{deprecated:"Use `api.rpc.state.getKeysPaged` to retrieve keys",description:"Retrieves the keys with a certain prefix",params:[{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Vec"},getKeysPaged:{alias:["state_getKeysPagedAt"],description:"Returns the keys with prefix with pagination support.",params:[{name:"key",type:"StorageKey"},{name:"count",type:"u32"},{isOptional:!0,name:"startKey",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Vec"},getMetadata:{description:"Returns the runtime metadata",params:[{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Metadata"},getPairs:{deprecated:"Use `api.rpc.state.getKeysPaged` to retrieve keys",description:"Returns the keys with prefix, leave empty to get all the keys (deprecated: Use getKeysPaged)",isUnsafe:!0,params:[{name:"prefix",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Vec"},getReadProof:{description:"Returns proof of storage entries at a specific block state",params:[{name:"keys",type:"Vec"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"ReadProof"},getRuntimeVersion:{alias:["chain_getRuntimeVersion"],description:"Get the runtime version",params:[{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"RuntimeVersion"},getStorage:{alias:["state_getStorageAt"],description:"Retrieves the storage for a key",params:[{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"StorageData"},getStorageHash:{alias:["state_getStorageHashAt"],description:"Retrieves the storage hash",params:[{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Hash"},getStorageSize:{alias:["state_getStorageSizeAt"],description:"Retrieves the storage size",params:[{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"u64"},queryStorage:{description:"Query historical storage entries (by key) starting from a start block",isUnsafe:!0,params:[{name:"keys",type:"Vec"},{name:"fromBlock",type:"Hash"},{isOptional:!0,name:"toBlock",type:"BlockHash"}],type:"Vec"},queryStorageAt:{description:"Query storage entries (by key) starting at block hash given as the second parameter",params:[{name:"keys",type:"Vec"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Vec"},subscribeRuntimeVersion:{alias:["chain_subscribeRuntimeVersion","chain_unsubscribeRuntimeVersion"],description:"Retrieves the runtime version via subscription",params:[],pubsub:["runtimeVersion","subscribeRuntimeVersion","unsubscribeRuntimeVersion"],type:"RuntimeVersion"},subscribeStorage:{description:"Subscribes to storage changes for the provided keys",params:[{isOptional:!0,name:"keys",type:"Vec"}],pubsub:["storage","subscribeStorage","unsubscribeStorage"],type:"StorageChangeSet"},traceBlock:{description:"Provides a way to trace the re-execution of a single block",isUnsafe:!0,params:[{name:"block",type:"Hash"},{name:"targets",type:"Option"},{name:"storageKeys",type:"Option"},{name:"methods",type:"Option"}],type:"TraceBlockResponse"},trieMigrationStatus:{description:"Check current migration state",isUnsafe:!0,params:[{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"MigrationStatusResult"}},types:{ApiId:"[u8; 8]",BlockTrace:{blockHash:"Text",parentHash:"Text",tracingTargets:"Text",storageKeys:"Text",spans:"Vec",events:"Vec"},BlockTraceEvent:{target:"Text",data:"BlockTraceEventData",parentId:"Option"},BlockTraceEventData:{stringValues:"HashMap"},BlockTraceSpan:{id:"u64",parentId:"Option",name:"Text",target:"Text",wasm:"bool"},KeyValueOption:"(StorageKey, Option)",MigrationStatusResult:{topRemainingToMigrate:"u64",childRemainingToMigrate:"u64"},ReadProof:{at:"Hash",proof:"Vec"},RuntimeVersionApi:"(ApiId, u32)",RuntimeVersion:{specName:"Text",implName:"Text",authoringVersion:"u32",specVersion:"u32",implVersion:"u32",apis:"Vec",transactionVersion:"u32",stateVersion:"u8"},RuntimeVersionPre4:{specName:"Text",implName:"Text",authoringVersion:"u32",specVersion:"u32",implVersion:"u32",apis:"Vec",transactionVersion:"u32"},RuntimeVersionPre3:{specName:"Text",implName:"Text",authoringVersion:"u32",specVersion:"u32",implVersion:"u32",apis:"Vec"},RuntimeVersionPartial:{specName:"Text",specVersion:"u32",apis:"Vec"},SpecVersion:"u32",StorageChangeSet:{block:"Hash",changes:"Vec"},TraceBlockResponse:{_enum:{TraceError:"TraceError",BlockTrace:"BlockTrace"}},TraceError:{error:"Text"}}};function Sf(e,{type:t},n,r){const a={},i=e.getSiType(t).def.asVariant.variants;for(let s=0,o=i.length;se(t)}const _f=kf(jt),Pf=kf((e=>e.toString()));function Mf({calls:e}){return e.isSome}function If(e,t,n,r,a){const{fields:i,index:s}=n,o=i.length,c=new Array(o);for(let d=0;d{if(a.length!==s.length)throw new Error(`Extrinsic ${t}.${i} expects ${a.length} arguments, got ${s.length}.`);return e.createTypeUnsafe("Call",[{args:s,callIndex:n},r])};return s.is=e=>function(e,t){return e.callIndex[0]===t[0]&&e.callIndex[1]===t[1]}(e,n),s.callIndex=n,s.meta=r,s.method=i,s.section=t,s.toJSON=()=>r.toJSON(),s}(e,r,new Uint8Array([a,s.toNumber()]),e.createTypeUnsafe("FunctionMetadataLatest",[(0,M.b)({args:c},n)]))}function Nf(e,{lookup:t,pallets:n},r){const a={},i=n.filter(Mf);for(let s=0,o=i.length;s=12?o.toNumber():s;Qr(a,d,(()=>Sf(t,n.unwrap(),_f,(n=>If(e,t,n,d,u)))))}return a}function Ef(e,t){return(0,M.b)({args:t.fields.map((({type:t})=>e.getTypeDef(t).type))},t)}function Of(e,{lookup:t,pallets:n},r){const a={};for(let i=0,s=n.length;i=12?o.toNumber():i;Qr(a,jt(c),(()=>Sf(t,s.unwrap(),Pf,(r=>({is:e=>fn(e)&&fn(e.index)&&e.index.eq(n)&&((0,ut.b)(e.error)?e.error[0]===r.index.toNumber():fn(e.error)&&e.error.eq(r.index)),meta:e.createTypeUnsafe("ErrorMetadataLatest",[Ef(t,r)])})))))}}return a}function Af({events:e}){return e.isSome}function Cf(e,{lookup:t,pallets:n},r){const a={},i=n.filter(Af);for(let s=0,o=i.length;s=12?o.toNumber():s;Qr(a,jt(c),(()=>Sf(t,n.unwrap(),Pf,(n=>({is:e=>fn(e)&&(0,ut.b)(e.index)&&d===e.index[0]&&n.index.eq(e.index[1]),meta:e.createTypeUnsafe("EventMetadataLatest",[Ef(t,n)])})))))}return a}function Hf(e,{pallets:t},n){const r={};for(let a=0,i=t.length;a$r({},n,(t=>{const n=e.createTypeUnsafe(e.createLookupType(t.type),[(0,es.V)(t.value.toHex())]);return n.meta=t,n}),_f)))}return r}function Rf(e){const t=e.map((e=>e.toString().trim())),n=t.findIndex((e=>!e.length));return-1===n?t:t.slice(0,n)}function Bf(e,{extrinsic:t,lookup:n,pallets:r}){return e.createTypeUnsafe("MetadataLatest",[{extrinsic:t,lookup:{types:n.types.map((({id:t,type:n})=>e.createTypeUnsafe("PortableType",[{id:t,type:(0,M.b)({},n,{docs:Rf(n.docs)})}])))},pallets:r.map((({calls:t,index:n,name:r})=>({calls:e.createTypeUnsafe("Option",[t.unwrapOr(null)]),index:n,name:r})))}]).toJSON()}function Lf(e,t=[]){for(let n=0,r=e.length;ne||t)))}function Df(e,{info:t}){throw new Error(`Unhandled: Unable to create and validate type from ${e} (info=${mr[t]})`)}const qf={[mr.BTreeMap]:Uf,[mr.BTreeSet]:zf,[mr.Compact]:zf,[mr.DoNotConstruct]:Df,[mr.Enum]:Uf,[mr.HashMap]:Uf,[mr.Int]:Df,[mr.Linkage]:zf,[mr.Null]:Df,[mr.Option]:zf,[mr.Plain]:(e,t)=>t.lookupName||t.type,[mr.Range]:zf,[mr.RangeInclusive]:zf,[mr.Result]:Uf,[mr.Set]:Uf,[mr.Si]:Df,[mr.Struct]:Uf,[mr.Tuple]:Uf,[mr.UInt]:Df,[mr.Vec]:zf,[mr.VecFixed]:zf,[mr.WrapperKeepOpaque]:zf,[mr.WrapperOpaque]:zf};function jf(e){const t=e.length,n=new Array(t);for(let r=0;re.getTypeDef(t).type))}function Wf(e,t){return e.getSiType(t).def.asVariant.variants.map((({fields:t})=>Xf(e,t)))}function Zf(e,t,n){return function(e,t,n){const r=Lf(jf(n)).filter((t=>!e.hasType(t)&&!e.isLookupType(t))).sort();if(0!==r.length){const e=`Unknown types found, no types for ${r.join(", ")}`;if(t)throw new Error(e);Ff.warn(e)}return n}(e,n,Lf(function({lookup:e,pallets:t}){return t.reduce(((t,{calls:n,constants:r,events:a,storage:i})=>(t.push([Xf(e,r)]),n.isSome&&t.push(Wf(e,n.unwrap().type)),a.isSome&&t.push(Wf(e,a.unwrap().type)),i.isSome&&t.push(i.unwrap().items.map((({type:t})=>{if(t.isPlain)return[e.getTypeDef(t.asPlain).type];const{hashers:n,key:r,value:a}=t.asMap;return 1===n.length?[e.getTypeDef(a).type,e.getTypeDef(r).type]:[e.getTypeDef(a).type,...e.getSiType(r).def.asTuple.map((t=>e.getTypeDef(t).type))]}))),t)),[])}(t)))}function Gf(e,t){return t.toNumber()>=2?e.createTypeUnsafe("StorageHasherV10",[t.toNumber()+1]):e.createTypeUnsafe("StorageHasherV10",[t])}function Kf(e,t){return t.isMap?[(0,M.b)({},t.asMap,{hasher:Gf(e,t.asMap.hasher)}),1]:t.isDoubleMap?[(0,M.b)({},t.asDoubleMap,{hasher:Gf(e,t.asDoubleMap.hasher),key2Hasher:Gf(e,t.asDoubleMap.key2Hasher)}),2]:[t.asPlain,0]}function Jf(e,{modules:t}){return e.createTypeUnsafe("MetadataV10",[{modules:t.map((t=>function(e,t){const n=t.storage.unwrapOr(null);return e.createTypeUnsafe("ModuleMetadataV10",[(0,M.b)({},t,{storage:n?(0,M.b)({},n,{items:n.items.map((t=>(0,M.b)({},t,{type:e.createTypeUnsafe("StorageEntryTypeV10",Kf(e,t.type))})))}):null})])}(e,t)))}])}function Yf(e,{modules:t}){return e.createTypeUnsafe("MetadataV11",[{extrinsic:{signedExtensions:[],version:0},modules:t}])}function Qf(e,{extrinsic:t,modules:n}){return e.createTypeUnsafe("MetadataV12",[{extrinsic:t,modules:n.map((t=>e.createTypeUnsafe("ModuleMetadataV12",[(0,M.b)({},t,{index:255})])))}])}function $f(e,t){return e.createTypeUnsafe("MetadataV13",[t])}const ep={assets:{Approval:"AssetApproval",ApprovalKey:"AssetApprovalKey",Balance:"TAssetBalance",DestroyWitness:"AssetDestroyWitness"},babe:{EquivocationProof:"BabeEquivocationProof"},balances:{Status:"BalanceStatus"},beefy:{AuthorityId:"BeefyId"},contracts:{StorageKey:"ContractStorageKey"},electionProviderMultiPhase:{Phase:"ElectionPhase"},ethereum:{Block:"EthBlock",Header:"EthHeader",Receipt:"EthReceipt",Transaction:"EthTransaction",TransactionStatus:"EthTransactionStatus"},evm:{Account:"EvmAccount",Log:"EvmLog",Vicinity:"EvmVicinity"},grandpa:{Equivocation:"GrandpaEquivocation",EquivocationProof:"GrandpaEquivocationProof"},identity:{Judgement:"IdentityJudgement"},inclusion:{ValidatorIndex:"ParaValidatorIndex"},paraDisputes:{ValidatorIndex:"ParaValidatorIndex"},paraInclusion:{ValidatorIndex:"ParaValidatorIndex"},paraScheduler:{ValidatorIndex:"ParaValidatorIndex"},paraShared:{ValidatorIndex:"ParaValidatorIndex"},parachains:{Id:"ParaId"},parasDisputes:{ValidatorIndex:"ParaValidatorIndex"},parasInclusion:{ValidatorIndex:"ParaValidatorIndex"},parasScheduler:{ValidatorIndex:"ParaValidatorIndex"},parasShared:{ValidatorIndex:"ParaValidatorIndex"},proposeParachain:{Proposal:"ParachainProposal"},proxy:{Announcement:"ProxyAnnouncement"},scheduler:{ValidatorIndex:"ParaValidatorIndex"},shared:{ValidatorIndex:"ParaValidatorIndex"},society:{Judgement:"SocietyJudgement",Vote:"SocietyVote"},staking:{Compact:"CompactAssignments"},treasury:{Proposal:"TreasuryProposal"},xcm:{AssetId:"XcmAssetId"},xcmPallet:{AssetId:"XcmAssetId"}};const tp=[["<",">"],["<",","],[",",">"],["(",")"],["(",","],[",",","],[",",")"]];function np(e,t){const n=t.toString(),r=e.findIndex((({def:e})=>e.HistoricMetaCompat===n));return-1!==r?r:e.push({def:{HistoricMetaCompat:n}})-1}function rp(e,t){return e.push({def:{Tuple:t}})-1}function ap(e,t,n,r){return n.push({def:{Variant:{variants:r}},path:[`pallet_${e.toString()}`,"pallet",t]})-1}function ip(e,t){t.forEach((t=>{const n=Object.keys(e).find((e=>t.eq(e)));if(n)t.setOverride(e[n]);else{const n=t.toString(),r=Object.entries(e).reduce(((e,[t,n])=>tp.reduce(((e,[r,a])=>e.replace(`${r}${t}${a}`,`${r}${n}${a}`)),e)),n);n!==r&&t.setOverride(r)}}))}function sp(e,t,n,r,a){const i=r.map((({args:n,docs:r,name:i},s)=>(ip(a,n.map((({type:e})=>e))),t.createTypeUnsafe("SiVariant",[{docs:r,fields:n.map((({name:n,type:r})=>t.createTypeUnsafe("SiField",[{name:n,type:np(e,r)}]))),index:s,name:i}]))));return t.createTypeUnsafe("PalletCallMetadataV14",[{type:ap(n,"Call",e,i)}])}function op(e,t,n,r){return n.map((({docs:n,name:a,type:i,value:s})=>(ip(r,[i]),t.createTypeUnsafe("PalletConstantMetadataV14",[{docs:n,name:a,type:np(e,i),value:s}]))))}function cp(e,t,n,r,a){const i=r.map((({docs:e,name:n},r)=>t.createTypeUnsafe("SiVariant",[{docs:e,fields:[],index:r,name:n}])));return t.createTypeUnsafe("PalletErrorMetadataV14",[{type:ap(n,"Error",e,i)}])}function dp(e,t,n,r,a){const i=r.map((({args:n,docs:r,name:i},s)=>(ip(a,n),t.createTypeUnsafe("SiVariant",[{docs:r,fields:n.map((n=>t.createTypeUnsafe("SiField",[{type:np(e,n)}]))),index:s,name:i}]))));return t.createTypeUnsafe("PalletEventMetadataV14",[{type:ap(n,"Event",e,i)}])}function up(e,t,n,{hashers:r,isLinked:a,isOptional:i,keys:s,value:o}){return ip(n,[o,...Array.isArray(s)?s:[s]]),t.createTypeUnsafe("StorageEntryTypeV14",[{Map:{hashers:r,key:1===r.length?np(e,s[0]):rp(e,s.map((t=>np(e,t)))),value:np(e,a?`(${i?`Option<${o.toString()}>`:o.toString()}, Linkage<${s[0].toString()}>)`:o)}}])}function lp(e,t,{items:n,prefix:r},a){return t.createTypeUnsafe("PalletStorageMetadataV14",[{items:n.map((({docs:n,fallback:r,modifier:i,name:s,type:o})=>{let c;if(o.isPlain){const n=o.asPlain;ip(a,[n]),c=t.createTypeUnsafe("StorageEntryTypeV14",[{Plain:np(e,n)}])}else if(o.isMap){const n=o.asMap;c=up(e,t,a,{hashers:[n.hasher],isLinked:n.linked.isTrue,isOptional:i.isOptional,keys:[n.key],value:n.value})}else if(o.isDoubleMap){const n=o.asDoubleMap;c=up(e,t,a,{hashers:[n.hasher,n.key2Hasher],isLinked:!1,isOptional:i.isOptional,keys:[n.key1,n.key2],value:n.value})}else{const n=o.asNMap;c=up(e,t,a,{hashers:n.hashers,isLinked:!1,isOptional:i.isOptional,keys:n.keyVec,value:n.value})}return t.createTypeUnsafe("StorageEntryMetadataV14",[{docs:n,fallback:r,modifier:i,name:s,type:c}])})),prefix:r}])}function fp(e,t,n,{calls:r,constants:a,errors:i,events:s,storage:o}){const c=function({knownTypes:e},t){return{...ep[t]??{},...e.typesAlias?.[t]??{}}}(t,jt(n.name));return t.createTypeUnsafe("PalletMetadataV14",[{calls:r&&sp(e,t,n.name,r,c),constants:op(e,t,a,c),errors:i&&cp(e,t,n.name,i),events:s&&dp(e,t,n.name,s,c),index:n.index,name:n.name,storage:o&&lp(e,t,o,c)}])}function pp(e,t,n){const r=[];!function(e,...t){for(let n=0,r=t.length;n[e.name.toString(),n>=12?e.index.toNumber():t])).sort(((e,t)=>e[1]-t[1])).reduce(((e,[t,n])=>{for(let r=Object.keys(e).length;r({identifier:e,type:0}))),type:0,version:n}])}(e,t.extrinsic),i=t.modules.map((t=>fp(r,e,t,{calls:t.calls.unwrapOr(null),constants:t.constants,errors:t.errors.length?t.errors:null,events:t.events.unwrapOr(null),storage:t.storage.unwrapOr(null)})));return e.createTypeUnsafe("MetadataV14",[{extrinsic:a,lookup:{types:r.map(((t,n)=>e.createTypeUnsafe("PortableType",[{id:n,type:t}])))},pallets:i}])}function hp(e,t,n){const r=t.lookup.paramTypes.SpRuntimeUncheckedExtrinsic;return e.createTypeUnsafe("MetadataV15",[(0,M.b)({},t,{extrinsic:e.createTypeUnsafe("ExtrinsicMetadataV15",[(0,M.b)({},t.extrinsic,{addressType:r?.[0].type.unwrapOr(0),callType:r?.[1].type.unwrapOr(0),extraType:r?.[3].type.unwrapOr(0),signatureType:r?.[2].type.unwrapOr(0)})]),outerEnums:e.createTypeUnsafe("OuterEnums15",[{callType:r?.[1].type.unwrapOr(0),eventType:t.lookup.paramTypes.FrameSystemEventRecord?.[0].type.unwrapOr(0)}])})])}function bp(e,t,n){return t}const mp=1635018093;class yp extends bo{constructor(e,t){if(super(e,t),!this.isEmpty&&!this.eq(mp))throw new Error(`MagicNumber mismatch: expected ${e.createTypeUnsafe("u32",[mp]).toHex()}, found ${this.toHex()}`)}}class xp extends dn{__internal__converted=new Map;constructor(e,t){super(e,{magicNumber:yp,metadata:"MetadataAll"},t)}__internal__assertVersion=e=>{if(this.version>e)throw new Error(`Cannot convert metadata from version ${this.version} to ${e}`);return this.version===e};__internal__getVersion=(e,t)=>{if("latest"!==e&&this.__internal__assertVersion(e)){const t=`asV${e}`;return this.__internal__metadata()[t]}if(!this.__internal__converted.has(e)){const n="latest"===e?"asV15":"asV"+(e-1);this.__internal__converted.set(e,t(this.registry,this[n],this.version))}return this.__internal__converted.get(e)};__internal__metadata=()=>this.getT("metadata");get asCallsOnly(){return new xp(this.registry,{magicNumber:this.magicNumber,metadata:this.registry.createTypeUnsafe("MetadataAll",[Bf(this.registry,this.asLatest),14])})}get asV9(){return this.__internal__assertVersion(9),this.__internal__metadata().asV9}get asV10(){return this.__internal__getVersion(10,Jf)}get asV11(){return this.__internal__getVersion(11,Yf)}get asV12(){return this.__internal__getVersion(12,Qf)}get asV13(){return this.__internal__getVersion(13,$f)}get asV14(){return this.__internal__getVersion(14,pp)}get asV15(){return this.__internal__getVersion(15,hp)}get asLatest(){return this.__internal__getVersion("latest",bp)}get magicNumber(){return this.getT("magicNumber")}get version(){return this.__internal__metadata().index}getUniqTypes(e){return Zf(this.registry,this.asLatest,e)}toJSON(){return this.asLatest,super.toJSON()}}const gp=new Uint8Array([109,101,116,97,9]),vp=gp.length-1;class wp extends xp{constructor(e,t){super(e,(0,ut.b)(t)||(0,I.K)(t)?function(e,t){if(0===t.length)return gp;if(9===t[vp])try{return new xp(e,t)}catch{t[vp]=10}return t}(e,(0,E.e)(t)):t)}}const Vp=e=>e.toString(),Tp=["BTreeMap","BTreeSet","Compact","HashMap","Option","Result","Vec"];function Sp(e,t,n){const{info:r,sub:a}=t;switch(r){case mr.BTreeMap:case mr.BTreeSet:case mr.Compact:case mr.HashMap:case mr.Linkage:case mr.Option:case mr.Range:case mr.RangeInclusive:case mr.Result:case mr.Vec:case mr.WrapperKeepOpaque:case mr.WrapperOpaque:return function(e,t,n=Vp){return`${e}${t?`<${(Array.isArray(t)?t:[t]).map(n).join(", ")}>`:""}`}(n,a,(t=>Mp(e,t)))}throw new Error(`Unable to encode ${(0,je.A)(t)} with params`)}function kp(e,t,n,r){const a=t.map((({name:e})=>e));if(!a.every((e=>!!e)))throw new Error(`Subtypes does not have consistent names, ${a.join(", ")}`);const i=(0,M.b)({},r);for(let s=0,o=t.length;sSp(e,t,"BTreeMap"),[mr.BTreeSet]:(e,t)=>Sp(e,t,"BTreeSet"),[mr.Compact]:(e,t)=>Sp(e,t,"Compact"),[mr.DoNotConstruct]:(e,{displayName:t,lookupIndex:n,lookupName:r})=>`DoNotConstruct<${r||t||((0,Fe.b)(n)?"Unknown":e.createLookupType(n))}>`,[mr.Enum]:(e,{sub:t})=>{if(!Array.isArray(t))throw new Error("Unable to encode Enum type");return t.every((({type:e})=>"Null"===e))?(0,je.A)({_enum:t.map((({name:e},t)=>`${e||`Empty${t}`}`))}):kp(e,t,!0)},[mr.HashMap]:(e,t)=>Sp(e,t,"HashMap"),[mr.Int]:(e,{length:t=32})=>`Int<${t}>`,[mr.Linkage]:(e,t)=>Sp(e,t,"Linkage"),[mr.Null]:(e,t)=>"Null",[mr.Option]:(e,t)=>Sp(e,t,"Option"),[mr.Plain]:(e,{displayName:t,type:n})=>t||n,[mr.Range]:(e,t)=>Sp(e,t,"Range"),[mr.RangeInclusive]:(e,t)=>Sp(e,t,"RangeInclusive"),[mr.Result]:(e,t)=>Sp(e,t,"Result"),[mr.Set]:(e,{length:t=8,sub:n})=>{if(!Array.isArray(n))throw new Error("Unable to encode Set type");return(0,je.A)({_set:n.reduce(((e,{index:t,name:n},r)=>(0,M.b)(e,{[`${n||`Unknown${t||r}`}`]:t||r})),{_bitLength:t||8})})},[mr.Si]:(e,{lookupName:t,type:n})=>t||n,[mr.Struct]:(e,{alias:t,sub:n})=>{if(!Array.isArray(n))throw new Error("Unable to encode Struct type");return kp(e,n,!1,t?{_alias:[...t.entries()].reduce(((e,[t,n])=>(0,M.b)(e,{[t]:n})),{})}:{})},[mr.Tuple]:(e,{sub:t})=>{if(!Array.isArray(t))throw new Error("Unable to encode Tuple type");return`(${t.map((t=>Mp(e,t))).join(",")})`},[mr.UInt]:(e,{length:t=32})=>`UInt<${t}>`,[mr.Vec]:(e,t)=>Sp(e,t,"Vec"),[mr.VecFixed]:(e,{length:t,sub:n})=>{if(!(0,Lt.E)(t)||!n||Array.isArray(n))throw new Error("Unable to encode VecFixed type");return`[${n.type};${t}]`},[mr.WrapperKeepOpaque]:(e,t)=>Sp(e,t,"WrapperKeepOpaque"),[mr.WrapperOpaque]:(e,t)=>Sp(e,t,"WrapperOpaque")};function Pp(e,t,n=!0){return n&&t.lookupName?t.lookupName:_p[t.info](e,t)}function Mp(e,t){return t.displayName&&!Tp.some((e=>t.displayName===e))?t.displayName:Pp(e,t)}function Ip(e,t){return(0,M.b)({},t,{type:Pp(e,t,!1)})}const Np=(0,it.v)("PortableRegistry"),Ep={toNumber:()=>-1},Op={Char:"u32",Str:"Text"},Ap=Dp(["sp_core::crypto::AccountId32","sp_runtime::generic::era::Era","sp_runtime::multiaddress::MultiAddress","fp_account::AccountId20","account::AccountId20","polkadot_runtime_common::claims::EthereumAddress","frame_support::weights::weight_v2::Weight","sp_weights::weight_v2::Weight","*_democracy::vote::Vote","*_conviction_voting::vote::Vote","*_identity::types::Data","sp_core::OpaqueMetadata","sp_core::OpaquePeerId","sp_core::offchain::OpaqueMultiaddr","primitive_types::*","sp_arithmetic::per_things::*","*_runtime::RuntimeCall","*_runtime::RuntimeEvent","ink::env::types::*","ink::primitives::types::*","ink_env::types::*","ink_primitives::types::*"]),Cp=Dp(["pallet_identity::types::BitFlags"]),Hp=["bitvec::order::Lsb0","BitOrderLsb0"],Rp=[...Hp,"bitvec::order::Msb0","BitOrderMsb0"],Bp=["BoundedBTreeMap","BoundedBTreeSet","BoundedVec","Box","BTreeMap","BTreeSet","Cow","Option","Range","RangeInclusive","Result","WeakBoundedVec","WrapperKeepOpaque","WrapperOpaque"],Lp=["entries","keys","new","size","hash","registry"],zp=["generic","misc","pallet","traits","types"];function Up(e){const t=e.length,n=new Array(t);for(let r=0;r{const r=t[n].toString();if("*"===e||e===r)return!0;if(e.includes("*")&&e.includes("_")&&r.includes("_")){let t=e.split("_"),n=r.split("_");if("*"===t[0]){const e=n.indexOf(t[1]);-1!==e&&(t=t.slice(1),n=n.slice(e))}return 2===t.length&&"*"===t[1]&&t[0]===n[0]||qp(t,n)}return!1}))}function jp(e,t,n,r,a=!1){const i=r.length;if(0===i||Bp.includes(r[i-1].toString()))return null;const s=new Array(i),o=new Array(i);for(let d=0;d{const{lookupIndex:s,name:o,params:c}=a;if(!o)return null;if(r[s])return a;const d=function(e,t,n){const r=[n[t]];for(let a=t+1,i=n.length;ac.length!==e.params.length||c.some(((t,n)=>!t.name.eq(e.params[n].name)||t.type.unwrapOr(Ep).toNumber()!==e.params[n].type.unwrapOr(Ep).toNumber())))))return a;const u=c.findIndex((({type:e},t)=>d.every((({params:n},r)=>n[t].type.isSome&&(0===r||!n[t].type.eq(e))))));if(-1===u)return a;const l=d.length,f=new Array(l);for(let t=0;t!!e)).map((({lookupIndex:e,name:t,params:n})=>({lookupIndex:e,name:r[e]||t,params:n})))}(e,t,n);for(let c=0,d=o.length;c"},t);const{lookups:r,names:a,params:i,types:s}=Wp(this,this.types);this.__internal__alias=function(e,t){const n=Object.keys(e).some((e=>!e.startsWith("Pallet"))),r={};if(e.SpRuntimeUncheckedExtrinsic){const[,{type:t}]=e.SpRuntimeUncheckedExtrinsic;r[t.unwrap().toNumber()]="Call"}else n&&!t&&Np.warn("Unable to determine runtime Call type, cannot inspect sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic");if(e.FrameSystemEventRecord){const[{type:t}]=e.FrameSystemEventRecord;r[t.unwrap().toNumber()]="Event"}else n&&!t&&Np.warn("Unable to determine runtime Event type, cannot inspect frame_system::EventRecord");return r}(i,n),this.__internal__lookups=r,this.__internal__names=a,this.__internal__params=i,this.__internal__types=s}get names(){return Object.values(this.__internal__names).sort()}get paramTypes(){return this.__internal__params}get types(){return this.getT("types")}register(){!function(e,t,n,r){if(e.registry.register(t),r.SpRuntimeUncheckedExtrinsic){const[t,,a]=r.SpRuntimeUncheckedExtrinsic,i=e.getSiType(t.type.unwrap()),s=e.getSiType(a.type.unwrap()).path.join("::");let o=i.path.join("::");const c="sp_runtime::multiaddress::MultiAddress"===o;if(c){const[t]=i.params;o=e.getSiType(t.type.unwrap()).path.join("::")}e.registry.register({AccountId:o.endsWith("::AccountId20")||o.endsWith("::H160")?"AccountId20":"AccountId32",Address:c?"MultiAddress":"AccountId",ExtrinsicSignature:["sp_runtime::MultiSignature"].includes(s)?"MultiSignature":n[a.type.unwrap().toNumber()]||"MultiSignature"})}}(this,this.__internal__lookups,this.__internal__names,this.__internal__params)}getName(e){return this.__internal__names[this.__internal__getLookupId(e)]}getSiType(e){const t=(this.__internal__types||this.types)[this.__internal__getLookupId(e)];if(!t)throw new Error(`PortableRegistry: Unable to find type with lookupId ${e.toString()}`);return t.type}getTypeDef(e){const t=this.__internal__getLookupId(e);if(!this.__internal__typeDefs[t]){const n=this.__internal__names[t],r={info:mr.DoNotConstruct,lookupIndex:t,lookupName:n,type:this.registry.createLookupType(t)};n&&(this.__internal__typeDefs[t]=r);const a=this.__internal__extract(this.getSiType(e),t);n||(this.__internal__typeDefs[t]=r),Object.keys(a).forEach((e=>{("lookupName"!==e||a[e])&&(this.__internal__typeDefs[t][e]=a[e])})),a.info===mr.Plain&&(this.__internal__typeDefs[t].lookupNameRoot=this.__internal__typeDefs[t].lookupName,delete this.__internal__typeDefs[t].lookupName)}return this.__internal__typeDefs[t]}sanitizeField(e){let t=null,n=null;return e.isSome&&(t=jt(e.unwrap()),t.includes("#")?(n=t,t=n.replace(/#/g,"_")):Lp.includes(t)&&(n=t,t=`${t}_`)),[t,n]}__internal__createSiDef(e){const t=this.getTypeDef(e),n=e.toNumber();return[mr.DoNotConstruct,mr.Enum,mr.Struct].includes(t.info)&&t.lookupName?{docs:t.docs,info:mr.Si,lookupIndex:n,lookupName:this.__internal__names[n],type:this.registry.createLookupType(e)}:t}__internal__getLookupId(e){if((0,I.K)(e)){if(!this.registry.isLookupType(e))throw new Error(`PortableRegistry: Expected a lookup string type, found ${e}`);return parseInt(e.replace("Lookup",""),10)}return(0,Lt.E)(e)?e:e.toNumber()}__internal__extract(e,t){const n=e.path.join("::");let r;const a=this.__internal__alias[t]||function({def:e,path:t}){return["frame_support::weights::weight_v2::Weight","sp_weights::weight_v2::Weight"].includes(t.join("::"))?e.isComposite&&1!==e.asComposite.fields.length?null:"WeightV1":t.length&&Ap.some((e=>qp(e,t)))?t[t.length-1].toString():null}(e);try{if(a)r=this.__internal__extractAliasPath(t,a);else switch(e.def.type){case"Array":r=this.__internal__extractArray(t,e.def.asArray);break;case"BitSequence":r=this.__internal__extractBitSequence(t,e.def.asBitSequence);break;case"Compact":r=this.__internal__extractCompact(t,e.def.asCompact);break;case"Composite":r=this.__internal__extractComposite(t,e,e.def.asComposite);break;case"HistoricMetaCompat":r=this.__internal__extractHistoric(t,e.def.asHistoricMetaCompat);break;case"Primitive":r=this.__internal__extractPrimitive(t,e);break;case"Sequence":r=this.__internal__extractSequence(t,e.def.asSequence);break;case"Tuple":r=this.__internal__extractTuple(t,e.def.asTuple);break;case"Variant":r=this.__internal__extractVariant(t,e,e.def.asVariant);break;default:!function(e){throw new Error(`This codepath should be unreachable. Unhandled input: ${e}`)}(e.def.type)}}catch(i){throw new Error(`PortableRegistry: ${t}${n?` (${n})`:""}: Error extracting ${(0,je.A)(e)}: ${i.message}`)}return(0,M.b)({docs:Up(e.docs),namespace:n},r)}__internal__extractArray(e,{len:t,type:n}){const r=t.toNumber();if(r>2048)throw new Error("Only support for [Type; ], where length <= 2048");return Ip(this.registry,{info:mr.VecFixed,length:r,sub:this.__internal__createSiDef(n)})}__internal__extractBitSequence(e,{bitOrderType:t,bitStoreType:n}){const r=this.__internal__createSiDef(t),a=this.__internal__createSiDef(n),[i,s]=Rp.includes(r.namespace||"")?[r,a]:[a,r];if(!i.namespace||!Rp.includes(i.namespace))throw new Error(`Unexpected bitOrder found as ${i.namespace||""}`);if(s.info!==mr.Plain||"u8"!==s.type)throw new Error(`Only u8 bitStore is currently supported, found ${s.type}`);Hp.includes(i.namespace);return{info:mr.Plain,type:"BitVec"}}__internal__extractCompact(e,{type:t}){return Ip(this.registry,{info:mr.Compact,sub:this.__internal__createSiDef(t)})}__internal__extractComposite(e,{params:t,path:n},{fields:r}){if(n.length){const e=n[0].toString(),r=n[n.length-1].toString();if(1===n.length&&"BTreeMap"===e){if(2!==t.length)throw new Error(`BTreeMap requires 2 parameters, found ${t.length}`);return Ip(this.registry,{info:mr.BTreeMap,sub:t.map((({type:e})=>this.__internal__createSiDef(e.unwrap())))})}if(1===n.length&&"BTreeSet"===e){if(1!==t.length)throw new Error(`BTreeSet requires 1 parameter, found ${t.length}`);return Ip(this.registry,{info:mr.BTreeSet,sub:this.__internal__createSiDef(t[0].type.unwrap())})}if(["Range","RangeInclusive"].includes(e)){if(1!==t.length)throw new Error(`Range requires 1 parameter, found ${t.length}`);return Ip(this.registry,{info:"Range"===e?mr.Range:mr.RangeInclusive,sub:this.__internal__createSiDef(t[0].type.unwrap()),type:e})}if(["WrapperKeepOpaque","WrapperOpaque"].includes(r)){if(1!==t.length)throw new Error(`WrapperOpaque requires 1 parameter, found ${t.length}`);return Ip(this.registry,{info:"WrapperKeepOpaque"===r?mr.WrapperKeepOpaque:mr.WrapperOpaque,sub:this.__internal__createSiDef(t[0].type.unwrap()),type:r})}}return Cp.some((e=>qp(e,n)))?this.__internal__extractCompositeSet(e,t,r):this.__internal__extractFields(e,r)}__internal__extractCompositeSet(e,t,n){if(1!==t.length||1!==n.length)throw new Error("Set handling expects param/field as single entries");return Ip(this.registry,{info:mr.Set,length:this.registry.createTypeUnsafe(this.registry.createLookupType(n[0].type),[]).bitLength(),sub:this.getSiType(t[0].type.unwrap()).def.asVariant.variants.map((({index:e,name:t})=>({index:e.toNumber(),info:mr.Plain,name:t.toString(),type:"Null"})))})}__internal__extractFields(e,t){let n=!0,r=!0;const a=t.length;for(let o=0;othis.__internal__createSiDef(e)));return Ip(this.registry,{info:mr.Tuple,lookupIndex:e,lookupName:this.__internal__names[e],sub:n})}__internal__extractVariant(e,{params:t,path:n},{variants:r}){if(n.length){const e=n[0].toString();if("Option"===e){if(1!==t.length)throw new Error(`Option requires 1 parameter, found ${t.length}`);return Ip(this.registry,{info:mr.Option,sub:this.__internal__createSiDef(t[0].type.unwrap())})}if("Result"===e){if(2!==t.length)throw new Error(`Result requires 2 parameters, found ${t.length}`);return Ip(this.registry,{info:mr.Result,sub:t.map((({type:e},t)=>(0,M.b)({name:["Ok","Error"][t]},this.__internal__createSiDef(e.unwrap()))))})}}return 0===r.length?{info:mr.Null,type:"Null"}:this.__internal__extractVariantEnum(e,r)}__internal__extractVariantEnum(e,t){const n=[];return t.slice().sort(((e,t)=>e.index.cmp(t.index))).forEach((({fields:e,index:t,name:r})=>{const a=t.toNumber();for(;n.length!==a;)n.push({index:n.length,info:mr.Null,name:`__Unused${n.length}`,type:"Null"});n.push((0,M.b)(this.__internal__extractFields(-1,e),{index:a,name:r.toString()}))})),Ip(this.registry,{info:mr.Enum,lookupIndex:e,lookupName:this.__internal__names[e],sub:n})}}const Gp=new Uint8Array(2),Kp=(0,it.v)("registry");function Jp(e,t){return parseInt(e,10)-parseInt(t,10)}function Yp(e){return e.toString()}function Qp(e,t){const n=t.length,r=new Array(n);for(let a=0;ae.toNumber()))}return[12]}get chainIsEthereum(){return this.__internal__chainProperties?.isEthereum.isTrue||!1}get chainSS58(){return this.__internal__chainProperties?.ss58Format.isSome?this.__internal__chainProperties.ss58Format.unwrap().toNumber():void 0}get chainTokens(){if(this.__internal__chainProperties?.tokenSymbol.isSome){const e=this.__internal__chainProperties.tokenSymbol.unwrap();if(e.length)return e.map(Yp)}return[Un.getDefaults().unit]}get firstCallIndex(){return this.__internal__firstCallIndex||Gp}isLookupType(e){return/Lookup\d+$/.test(e)}createLookupType(e){return`Lookup${"number"==typeof e?e:e.toNumber()}`}get knownTypes(){return this.__internal__knownTypes}get lookup(){return ea(this.__internal__lookup,"PortableRegistry has not been set on this registry")}get metadata(){return ea(this.__internal__metadata,"Metadata has not been set on this registry")}get unknownTypes(){return[...this.__internal__unknownTypes.keys()]}get signedExtensions(){return this.__internal__signedExtensions}clearCache(){this.__internal__classes=new Map}createClass(e){return Zr(this,e)}createClassUnsafe(e){return Zr(this,e)}createType(e,...t){return Yr(this,e,t)}createTypeUnsafe(e,t,n){return Yr(this,e,t,n)}findMetaCall(e){const[t,n]=[e[0],e[1]];return ea(this.__internal__metadataCalls[`${t}`]&&this.__internal__metadataCalls[`${t}`][`${n}`],(()=>`findMetaCall: Unable to find Call with index [${t}, ${n}]/[${e.toString()}]`))}findMetaError(e){const[t,n]=(0,ut.b)(e)?[e[0],e[1]]:[e.index.toNumber(),(0,ut.b)(e.error)?e.error[0]:e.error.toNumber()];return ea(this.__internal__metadataErrors[`${t}`]&&this.__internal__metadataErrors[`${t}`][`${n}`],(()=>`findMetaError: Unable to find Error with index [${t}, ${n}]/[${e.toString()}]`))}findMetaEvent(e){const[t,n]=[e[0],e[1]];return ea(this.__internal__metadataEvents[`${t}`]&&this.__internal__metadataEvents[`${t}`][`${n}`],(()=>`findMetaEvent: Unable to find Event with index [${t}, ${n}]/[${e.toString()}]`))}get(e,t,n){return this.getUnsafe(e,t,n)}getUnsafe(e,t,n){let r=this.__internal__classes.get(e)||this.__internal__knownDefaults[e];if(!r){const a=this.__internal__definitions.get(e);let i;a?i=Zr(this,a):n?i=function(e,t){try{const n=Xr[t.info](e,t);if(!n)throw new Error("No class created");return!n.__fallbackType&&t.fallbackType&&(n.__fallbackType=t.fallbackType),n}catch(n){throw new Error(`Unable to construct class from ${(0,je.A)(t)}: ${n.message}`)}}(this,n):t&&(Kp.warn(`Unable to resolve type ${e}, it will fail on construction`),this.__internal__unknownTypes.set(e,!0),i=at.with(e)),i&&(r=class extends i{},this.__internal__classes.set(e,r),n&&(0,Lt.E)(n.lookupIndex)&&this.__internal__classes.set(this.createLookupType(n.lookupIndex),r))}return r}getChainProperties(){return this.__internal__chainProperties}getClassName(e){const t=[];for(const[n,r]of this.__internal__knownDefaultsEntries)e===r&&t.push(n);for(const[n,r]of this.__internal__classes.entries())e===r&&t.push(n);return t.length?t.sort().reverse()[0]:void 0}getDefinition(e){return this.__internal__definitions.get(e)}getModuleInstances(e,t){return this.__internal__knownTypes?.typesBundle?.spec?.[e.toString()]?.instances?.[t]||this.__internal__moduleMap[t]}getOrThrow(e){const t=this.get(e);if(!t)throw new Error(`type ${e} not found`);return t}getOrUnknown(e){return this.get(e,!0)}getTransactionExtensionVersion(){return 0}getSignedExtensionExtra(){return Bi(this.__internal__signedExtensions,"payload",this.__internal__userExtensions)}getSignedExtensionTypes(){return Bi(this.__internal__signedExtensions,"extrinsic",this.__internal__userExtensions)}hasClass(e){return this.__internal__classes.has(e)||!!this.__internal__knownDefaults[e]}hasDef(e){return this.__internal__definitions.has(e)}hasType(e){return!this.__internal__unknownTypes.get(e)&&(this.hasClass(e)||this.hasDef(e))}hash(e){return this.createType("CodecHash",this.__internal__hasher(e))}register(e,t){if((0,qe.T)(e))this.__internal__classes.set(e.name,e);else if((0,I.K)(e)){if(!(0,qe.T)(t))throw new Error(`Expected class definition passed to '${e}' registration`);if(e===t.toString())throw new Error(`Unable to register circular ${e} === ${e}`);this.__internal__classes.set(e,t)}else this.__internal__registerObject(e)}__internal__registerObject=e=>{const t=Object.entries(e);for(let n=0,r=t.length;n{this.setLookup(e);let t=null;if(this.hasType("SpWeightsWeightV2Weight")){const e=this.createType("SpWeightsWeightV2Weight");t=e.refTime&&e.proofSize?"SpWeightsWeightV2Weight":"WeightV1"}else(0,pn.f)(this.createType("Weight"))||(t="WeightV1");t&&this.register({Weight:t})};setMetadata(e,t,n,r){this.__internal__metadata=e.asLatest,this.__internal__metadataVersion=e.version,this.__internal__firstCallIndex=null,this.__internal__registerLookup(this.__internal__metadata.lookup),function(e,{lookup:t,pallets:n},r,a,i){const s=n.filter(Mf);$p(a),$p(i);for(let o=0,c=s.length;o=12?c.toNumber():o,l=jt(d),f=n.unwrap();Qr(a,u,(()=>Sf(t,f,eh,(n=>If(e,t,n,l,u)))));const{path:p}=e.lookup.getSiType(f.type),h=p.findIndex((e=>e.eq("pallet")));if(-1!==h){const e=jt(p.slice(0,h).map(((e,t)=>0===t?e.replace(/^(frame|pallet)_/,""):e)).join(" "));i[e]?i[e].push(l):i[e]=[l]}}}(this,this.__internal__metadata,this.__internal__metadataVersion,this.__internal__metadataCalls,this.__internal__moduleMap),function(e,{lookup:t,pallets:n},r,a){$p(a);for(let i=0,s=n.length;i=12?s.toNumber():i,(()=>Sf(t,e.unwrap(),eh,(({docs:e,fields:r,index:a,name:i})=>({args:Qp(t,r),docs:e.map(Yp),fields:r,index:a.toNumber(),method:i.toString(),name:i.toString(),section:n})))))}}}(0,this.__internal__metadata,this.__internal__metadataVersion,this.__internal__metadataErrors),function(e,{lookup:t,pallets:n},r,a){const i=n.filter(Af);$p(a);for(let s=0,o=i.length;s=12?o.toNumber():s,(()=>Sf(t,n.unwrap(),eh,(n=>{const r=e.createType("EventMetadataLatest",(0,M.b)({},n,{args:Qp(t,n.fields)}));return class extends Li{constructor(e,t){super(e,t,r,jt(c),n.name.toString())}}}))))}}(this,this.__internal__metadata,this.__internal__metadataVersion,this.__internal__metadataEvents);const[a]=Object.keys(this.__internal__metadataCalls).sort(Jp);if(a){const[e]=Object.keys(this.__internal__metadataCalls[a]).sort(Jp);e&&(this.__internal__firstCallIndex=new Uint8Array([parseInt(a,10),parseInt(e,10)]))}this.setSignedExtensions(t||(this.__internal__metadata.extrinsic.version.gt(lt)?this.__internal__metadata.extrinsic.signedExtensions.map((({identifier:e})=>e.toString())):Ri),n,r),this.setChainProperties(function(e,t){const n=e.getChainProperties(),r=Hf(e,t.asLatest,t.version),a=r.system&&(r.system.sS58Prefix||r.system.ss58Prefix);if(!a)return n;const{isEthereum:i,tokenDecimals:s,tokenSymbol:o}=n||{};return e.createTypeUnsafe("ChainProperties",[{isEthereum:i,ss58Format:a,tokenDecimals:s,tokenSymbol:o}])}(this,e))}setSignedExtensions(e=Ri,t,n){if(this.__internal__signedExtensions=e,this.__internal__userExtensions=t,!n){const e=function(e,t={}){const n=[...Object.keys(Hi),...Object.keys(t)];return e.filter((e=>!n.includes(e)))}(this.__internal__signedExtensions,this.__internal__userExtensions);e.length&&Kp.warn(`Unknown signed extensions ${e.join(", ")} found, treating them as no-effect`)}}}const nh={},rh={AnchorData:{anchoredBlock:"u64",docRoot:"H256",id:"H256"},DispatchErrorModule:"DispatchErrorModuleU8",PreCommitData:{expirationBlock:"u64",identity:"H256",signingRoot:"H256"},Fee:{key:"Hash",price:"Balance"},MultiAccountData:{deposit:"Balance",depositor:"AccountId",signatories:"Vec",threshold:"u16"},ChainId:"u8",DepositNonce:"u64",ResourceId:"[u8; 32]","chainbridge::ChainId":"u8",RegistryId:"H160",TokenId:"U256",AssetId:{registryId:"RegistryId",tokenId:"TokenId"},AssetInfo:{metadata:"Bytes"},MintInfo:{anchorId:"Hash",proofs:"Vec",staticHashes:"[Hash; 3]"},Proof:{leafHash:"H256",sortedHashes:"H256"},ProofMint:{hashes:"Vec",property:"Bytes",salt:"[u8; 32]",value:"Bytes"},RegistryInfo:{fields:"Vec",ownerCanBurn:"bool"},ProxyType:{_enum:["Any","NonTransfer","Governance","Staking","NonProxy"]}},ah={...rh,AccountInfo:"AccountInfoWithRefCount",Address:"LookupSource",LookupSource:"IndicesLookupSource",Multiplier:"Fixed64",RefCount:"RefCountTo259"},ih={CompactAssignments:"CompactAssignmentsWith24",DispatchErrorModule:"DispatchErrorModuleU8",RawSolution:"RawSolutionWith24",Keys:"SessionKeys6",ProxyType:{_enum:["Any","NonTransfer","Governance","Staking","IdentityJudgement","CancelProxy","Auction"]},Weight:"WeightV1"},sh={AccountInfo:"AccountInfoWithRefCount",Address:"LookupSource",CompactAssignments:"CompactAssignmentsWith16",DispatchErrorModule:"DispatchErrorModuleU8",RawSolution:"RawSolutionWith16",Keys:"SessionKeys5",LookupSource:"IndicesLookupSource",ValidatorPrefs:"ValidatorPrefsWithCommission"},oh={AccountInfo:"AccountInfoWithRefCount",Address:"AccountId",CompactAssignments:"CompactAssignmentsWith16",DispatchErrorModule:"DispatchErrorModuleU8",RawSolution:"RawSolutionWith16",Keys:"SessionKeys5",LookupSource:"AccountId",ValidatorPrefs:"ValidatorPrefsWithCommission"},ch={CompactAssignments:"CompactAssignmentsWith16",DispatchErrorModule:"DispatchErrorModuleU8",RawSolution:"RawSolutionWith16",Keys:"SessionKeys6",ProxyType:{_enum:{Any:0,NonTransfer:1,Governance:2,Staking:3,UnusedSudoBalances:4,IdentityJudgement:5,CancelProxy:6,Auction:7}},Weight:"WeightV1"},dh={AccountInfo:"AccountInfoWithRefCount",Address:"AccountId",DispatchErrorModule:"DispatchErrorModuleU8",Keys:"SessionKeys5",LookupSource:"AccountId",ValidatorPrefs:"ValidatorPrefsWithCommission"},uh={DispatchErrorModule:"DispatchErrorModuleU8",FullIdentification:"()",Keys:"SessionKeys7B",Weight:"WeightV1"},lh={DispatchErrorModule:"DispatchErrorModuleU8",TAssetBalance:"u128",ProxyType:{_enum:["Any","NonTransfer","CancelProxy","Assets","AssetOwner","AssetManager","Staking"]},Weight:"WeightV1"},fh={DispatchErrorModule:"DispatchErrorModuleU8",TAssetBalance:"u128",ProxyType:{_enum:["Any","NonTransfer","CancelProxy","Assets","AssetOwner","AssetManager","Staking"]},Weight:"WeightV1"},ph={CompactAssignments:"CompactAssignmentsWith16",DispatchErrorModule:"DispatchErrorModuleU8",RawSolution:"RawSolutionWith16",Keys:"SessionKeys6",ProxyType:{_enum:["Any","NonTransfer","Staking","SudoBalances","IdentityJudgement","CancelProxy"]},Weight:"WeightV1"},hh={AccountInfo:"AccountInfoWithRefCount",Address:"AccountId",CompactAssignments:"CompactAssignmentsWith16",DispatchErrorModule:"DispatchErrorModuleU8",LookupSource:"AccountId",Keys:"SessionKeys5",RawSolution:"RawSolutionWith16",ValidatorPrefs:"ValidatorPrefsWithCommission"},bh={DispatchErrorModule:"DispatchErrorModuleU8",TAssetBalance:"u128",ProxyType:{_enum:["Any","NonTransfer","CancelProxy","Assets","AssetOwner","AssetManager","Staking"]},Weight:"WeightV1"},mh={"centrifuge-chain":[{minmax:[240,243],types:{...ah,ProxyType:{_enum:["Any","NonTransfer","Governance","Staking","Vesting"]}}},{minmax:[244,999],types:{...ah}},{minmax:[1e3,void 0],types:{...rh}}],kusama:[{minmax:[1019,1031],types:{...sh,BalanceLock:"BalanceLockTo212",CompactAssignments:"CompactAssignmentsTo257",DispatchError:"DispatchErrorTo198",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",IdentityInfo:"IdentityInfoTo198",Keys:"SessionKeys5",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",ReferendumInfo:"ReferendumInfoTo239",Scheduled:"ScheduledTo254",SlashingSpans:"SlashingSpansTo204",StakingLedger:"StakingLedgerTo223",Votes:"VotesTo230",Weight:"u32"}},{minmax:[1032,1042],types:{...sh,BalanceLock:"BalanceLockTo212",CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Keys:"SessionKeys5",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",ReferendumInfo:"ReferendumInfoTo239",Scheduled:"ScheduledTo254",SlashingSpans:"SlashingSpansTo204",StakingLedger:"StakingLedgerTo223",Votes:"VotesTo230",Weight:"u32"}},{minmax:[1043,1045],types:{...sh,BalanceLock:"BalanceLockTo212",CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Keys:"SessionKeys5",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",ReferendumInfo:"ReferendumInfoTo239",Scheduled:"ScheduledTo254",StakingLedger:"StakingLedgerTo223",Votes:"VotesTo230",Weight:"u32"}},{minmax:[1046,1049],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",ReferendumInfo:"ReferendumInfoTo239",Scheduled:"ScheduledTo254",StakingLedger:"StakingLedgerTo223",Weight:"u32"}},{minmax:[1050,1054],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",ReferendumInfo:"ReferendumInfoTo239",Scheduled:"ScheduledTo254",StakingLedger:"StakingLedgerTo240",Weight:"u32"}},{minmax:[1055,1056],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",Scheduled:"ScheduledTo254",StakingLedger:"StakingLedgerTo240",Weight:"u32"}},{minmax:[1057,1061],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",Scheduled:"ScheduledTo254"}},{minmax:[1062,2012],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259"}},{minmax:[2013,2022],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",RefCount:"RefCountTo259"}},{minmax:[2023,2024],types:{...ih,...oh,RefCount:"RefCountTo259"}},{minmax:[2025,2027],types:{...ih,...oh}},{minmax:[2028,2029],types:{...ih,AccountInfo:"AccountInfoWithDualRefCount",CompactAssignments:"CompactAssignmentsWith16",RawSolution:"RawSolutionWith16"}},{minmax:[2030,9e3],types:{...ih,CompactAssignments:"CompactAssignmentsWith16",RawSolution:"RawSolutionWith16"}},{minmax:[9010,9099],types:{...ih,...tf("V0")}},{minmax:[9100,9105],types:{...ih,...tf("V1")}},{minmax:[9106,void 0],types:{Weight:"WeightV1"}}],node:[{minmax:[0,void 0],types:{Weight:"WeightV2"}}],"node-template":[{minmax:[0,void 0],types:{Weight:"WeightV2"}}],polkadot:[{minmax:[0,12],types:{...ch,...dh,CompactAssignments:"CompactAssignmentsTo257",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259"}},{minmax:[13,22],types:{...ch,...dh,CompactAssignments:"CompactAssignmentsTo257",RefCount:"RefCountTo259"}},{minmax:[23,24],types:{...ch,...dh,RefCount:"RefCountTo259"}},{minmax:[25,27],types:{...ch,...dh}},{minmax:[28,29],types:{...ch,AccountInfo:"AccountInfoWithDualRefCount"}},{minmax:[30,9109],types:{...ch}},{minmax:[9110,void 0],types:{Weight:"WeightV1"}}],rococo:[{minmax:[0,200],types:{...uh,AccountInfo:"AccountInfoWithDualRefCount",Address:"AccountId",LookupSource:"AccountId"}},{minmax:[201,214],types:{...uh,AccountInfo:"AccountInfoWithDualRefCount"}},{minmax:[215,228],types:{...uh,Keys:"SessionKeys6"}},{minmax:[229,9099],types:{...uh,...tf("V0")}},{minmax:[9100,9105],types:{...uh,...tf("V1")}},{minmax:[9106,void 0],types:{Weight:"WeightV1"}}],shell:[{minmax:[0,void 0],types:{}}],statemine:[{minmax:[0,3],types:{DispatchError:"DispatchErrorPre6First",...lh,...tf("V0")}},{minmax:[4,5],types:{DispatchError:"DispatchErrorPre6First",...lh,...tf("V1")}},{minmax:[500,9999],types:{Weight:"WeightV1",TAssetConversion:"Option"}},{minmax:[1e4,void 0],types:{Weight:"WeightV1"}}],statemint:[{minmax:[0,3],types:{DispatchError:"DispatchErrorPre6First",...fh,...tf("V0")}},{minmax:[4,5],types:{DispatchError:"DispatchErrorPre6First",...fh,...tf("V1")}},{minmax:[500,1001003],types:{Weight:"WeightV1",TAssetConversion:"Option"}},{minmax:[1002e3,void 0],types:{Weight:"WeightV1"}}],westend:[{minmax:[1,2],types:{...ph,...hh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",Weight:"u32"}},{minmax:[3,22],types:{...ph,...hh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259"}},{minmax:[23,42],types:{...ph,...hh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",RefCount:"RefCountTo259"}},{minmax:[43,44],types:{...ph,...hh,DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",RefCount:"RefCountTo259"}},{minmax:[45,47],types:{...ph,...hh}},{minmax:[48,49],types:{...ph,AccountInfo:"AccountInfoWithDualRefCount"}},{minmax:[50,9099],types:{...ph,...tf("V0")}},{minmax:[9100,9105],types:{...ph,...tf("V1")}},{minmax:[9106,void 0],types:{Weight:"WeightV1"}}],westmint:[{minmax:[0,3],types:{DispatchError:"DispatchErrorPre6First",...bh,...tf("V0")}},{minmax:[4,5],types:{DispatchError:"DispatchErrorPre6First",...bh,...tf("V1")}},{minmax:[500,9434],types:{Weight:"WeightV1",TAssetConversion:"Option"}},{minmax:[9435,void 0],types:{Weight:"WeightV1"}}]},yh=[[0,1020,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[26669,1021,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[38245,1022,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[54248,1023,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[59659,1024,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[67651,1025,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[82191,1027,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[83238,1028,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[101503,1029,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[203466,1030,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[295787,1031,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[461692,1032,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[504329,1033,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[569327,1038,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[587687,1039,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[653183,1040,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[693488,1042,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[901442,1045,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1375086,1050,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1445458,1051,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1472960,1052,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1475648,1053,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1491596,1054,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1574408,1055,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2064961,1058,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2201991,1062,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2671528,2005,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2704202,2007,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2728002,2008,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2832534,2011,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2962294,2012,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[324e4,2013,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3274408,2015,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3323565,2019,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3534175,2022,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3860281,2023,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4143129,2024,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4401242,2025,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4841367,2026,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5961600,2027,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6137912,2028,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6561855,2029,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7100891,2030,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7468792,9010,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7668600,9030,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7812476,9040,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8010981,9050,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8073833,9070,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8555825,9080,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8945245,9090,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9611377,9100,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9625129,9111,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9866422,9122,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10403784,9130,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10960765,9150,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11006614,9151,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11404482,9160,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11601803,9170,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[12008022,9180,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[12405451,9190,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[12665416,9200,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[12909508,9220,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[13109752,9230,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[13555777,9250,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[13727747,9260,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[14248044,9271,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0x17a6bc0d0062aeb3",1]]],[14433840,9280,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[14645900,9291,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[15048375,9300,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[15426015,9320,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[15680713,9340,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[15756296,9350,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[15912007,9360,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[16356547,9370,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[17335450,9381,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",3],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1]]],[18062739,9420,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[18625e3,9430,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[20465806,1e6,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",5],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[2157e4,1001e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",7],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[21786291,1001002,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",7],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[22515962,1001003,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",7],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[2279e4,1002e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[23176015,1002001,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[23450253,1002004,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[23565293,1002005,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[23780224,1002006,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[24786390,1003e3,[["0xc51ff1fa3f5d0cca",1],["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x91b1c8b16328eb92",1],["0x9ffb505aa738d69c",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]]],xh=[[0,0,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[29231,1,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[188836,5,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[199405,6,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[214264,7,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[244358,8,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[303079,9,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[314201,10,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[342400,11,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[443963,12,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[528470,13,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[687751,14,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[746085,15,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[787923,16,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[799302,17,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1205128,18,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1603423,23,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1733218,24,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2005673,25,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2436698,26,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3613564,27,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3899547,28,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4345767,29,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4876134,30,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5661442,9050,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6321619,9080,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6713249,9090,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7217907,9100,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7229126,9110,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7560558,9122,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8115869,9140,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8638103,9151,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9280179,9170,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9738717,9180,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10156856,9190,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10458576,9200,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10655116,9220,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10879371,9230,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11328884,9250,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11532856,9260,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11933818,9270,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[12217535,9280,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1]]],[12245277,9281,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1]]],[12532644,9291,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1]]],[12876189,9300,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1]]],[13800015,9340,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2]]],[14188833,9360,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2]]],[14543918,9370,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2]]],[15978362,9420,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3]]],[1645e4,9430,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3]]],[1784e4,9431,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3]]],[18407475,1000001,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",5],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3]]],[19551e3,1001002,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",5],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[20181758,1001003,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",5],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[20438530,1002e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[21169168,1002004,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[21455374,1002005,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[21558004,1002006,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[21800141,1002007,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]]],gh=[[214356,4,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[392764,7,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[409740,8,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[809976,20,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[877581,24,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[879238,25,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[889472,26,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[902937,27,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[932751,28,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[991142,29,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1030162,31,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1119657,32,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1199282,33,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1342534,34,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1392263,35,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1431703,36,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1433369,37,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1490972,41,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2087397,43,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2316688,44,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2549864,45,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3925782,46,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3925843,47,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4207800,48,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4627944,49,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5124076,50,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5478664,900,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5482450,9e3,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5584305,9010,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5784566,9030,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5879822,9031,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5896856,9032,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5897316,9033,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6117927,9050,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6210274,9070,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6379314,9080,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6979141,9090,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7568453,9100,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7766394,9111,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7911691,9120,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7968866,9121,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7982889,9122,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8514322,9130,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9091726,9140,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9091774,9150,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9406726,9160,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9921066,9170,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10007115,9180,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10480973,9190,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10578091,9200,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10678509,9210,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10811001,9220,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11096116,9230,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11409279,9250,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11584820,9251,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11716837,9260,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11876919,9261,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11987927,9270,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0x17a6bc0d0062aeb3",1]]],[12077324,9271,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0x17a6bc0d0062aeb3",1]]],[12301871,9280,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[12604343,9290,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[12841034,9300,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[13128237,9310,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[13272363,9320,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[13483497,9330,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[13649433,9340,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[13761100,9350,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[13847400,9360,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[14249200,9370,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[14576855,9380,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",3],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1]]],[14849830,9390,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",3],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[15146832,9400,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",3],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[15332317,9401,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",3],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[15661793,9420,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[16165469,9430,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[18293984,102e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",7],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[18293991,103e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",8],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[18451783,104e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",9],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[18679741,1005e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",9],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[19166695,1006e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[19234157,1006001,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[19542944,1007e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[19621258,1007001,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[19761406,1008e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[20056997,1009e3,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[20368318,101e4,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[20649086,1011e3,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[21217837,1011001,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[21300429,1013e3,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x91b1c8b16328eb92",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[21460051,1014e3,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x91b1c8b16328eb92",1],["0x9ffb505aa738d69c",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[21925427,1015e3,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",4],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x91b1c8b16328eb92",1],["0x9ffb505aa738d69c",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]]],vh={westend:{genesisHash:["0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e"]}};const wh=Object.entries(s).map((function([e,t]){const n=so.find((t=>t.network===e))||vh[e];if(!n)throw new Error(`Unable to find info for chain ${e}`);return{genesisHash:(0,es.V)(n.genesisHash[0]),network:e,versions:t.map((([e,t,n])=>({apis:n,blockNumber:new st(e),specVersion:new st(t)})))}}));function Vh(e,t,n){return n(e.toString(),t.toString())}function Th(e=[],t){return e.filter((({minmax:[e,n]})=>(null==e||t>=e)&&(null==n||t<=n))).reduce(((e,{types:t})=>({...e,...t})),{})}function Sh({knownTypes:e},t,n){return Vh(t,n,((t,n)=>({...e.typesBundle?.spec?.[n]?.rpc??{},...e.typesBundle?.chain?.[t]?.rpc??{}})))}var kh=R((function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})),_h=function(e){function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return(0,L.__extends)(t,e),t.prototype.lift=function(e){var t=new Ph(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new kh},t.prototype.next=function(e){var t=this;$((function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||(t.currentObservers=Array.from(t.observers));try{for(var a=(0,L.__values)(t.currentObservers),i=a.next();!i.done;i=a.next()){i.value.next(e)}}catch(s){n={error:s}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}}}))},t.prototype.error=function(e){var t=this;$((function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}}))},t.prototype.complete=function(){var e=this;$((function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}}))},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,a=n.isStopped,i=n.observers;return r||a?j:(this.currentObservers=null,i.push(e),new q((function(){t.currentObservers=null,D(i,e)})))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,a=t.isStopped;n?e.error(r):a&&e.complete()},t.prototype.asObservable=function(){var e=new he;return e.source=this,e},t.create=function(e,t){return new Ph(e,t)},t}(he),Ph=function(e){function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return(0,L.__extends)(t,e),t.prototype.next=function(e){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===n||n.call(t,e)},t.prototype.error=function(e){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===n||n.call(t,e)},t.prototype.complete=function(){var e,t;null===(t=null===(e=this.destination)||void 0===e?void 0:e.complete)||void 0===t||t.call(e)},t.prototype._subscribe=function(e){var t,n;return null!==(n=null===(t=this.source)||void 0===t?void 0:t.subscribe(e))&&void 0!==n?n:j},t}(_h),Mh=function(e){function t(t){var n=e.call(this)||this;return n._value=t,n}return(0,L.__extends)(t,e),Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return!n.closed&&t.next(this._value),n},t.prototype.getValue=function(){var e=this,t=e.hasError,n=e.thrownError,r=e._value;if(t)throw n;return this._throwIfClosed(),r},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(_h),Ih=Array.isArray,Nh=Object.getPrototypeOf,Eh=Object.prototype,Oh=Object.keys;function Ah(e){if(1===e.length){var t=e[0];if(Ih(t))return{args:t,keys:null};if((r=t)&&"object"==typeof r&&Nh(r)===Eh){var n=Oh(t);return{args:n.map((function(e){return t[e]})),keys:n}}}var r;return{args:e,keys:null}}var Ch=Array.isArray;function Hh(e){return ze((function(t){return function(e,t){return Ch(t)?e.apply(void 0,(0,L.__spreadArray)([],(0,L.__read)(t))):e(t)}(e,t)}))}function Rh(){for(var e=[],t=0;t=2,!1,!0))}var Uh=function(e,t){return e.push(t),e};function Dh(){return _e((function(e,t){zh(Uh,[])(e).subscribe(t)}))}function qh(e,t,n,r){Qr(e,t,(()=>$r({},n(t),(e=>r(t,e)))))}function jh(){return"none"}function Fh(e,{getInstanceId:t=jh}={}){const n={},r=(...r)=>{const a=(0,je.A)(r),i=t();return n[i]||(n[i]={}),void 0===n[i][a]&&(n[i][a]=e(...r)),n[i][a]};return r.unmemoize=(...e)=>{const r=(0,je.A)(e),a=t();void 0!==n[a]?.[r]&&delete n[a][r]},r}function Xh(e){return _e((function(t,n){var r,a=null,i=!1;a=t.subscribe(Pe(n,void 0,void 0,(function(s){r=Te(e(s,Xh(e)(t))),a?(a.unsubscribe(),a=null,r.subscribe(n)):i=!0}))),i&&(a.unsubscribe(),a=null,r.subscribe(n))}))}function Wh(e,t){return e===t}var Zh={now:function(){return(Zh.delegate||Date).now()},delegate:void 0},Gh=function(e){function t(t,n,r){void 0===t&&(t=1/0),void 0===n&&(n=1/0),void 0===r&&(r=Zh);var a=e.call(this)||this;return a._bufferSize=t,a._windowTime=n,a._timestampProvider=r,a._buffer=[],a._infiniteTimeWindow=!0,a._infiniteTimeWindow=n===1/0,a._bufferSize=Math.max(1,t),a._windowTime=Math.max(1,n),a}return(0,L.__extends)(t,e),t.prototype.next=function(t){var n=this,r=n.isStopped,a=n._buffer,i=n._infiniteTimeWindow,s=n._timestampProvider,o=n._windowTime;r||(a.push(t),!i&&a.push(s.now()+o)),this._trimBuffer(),e.prototype.next.call(this,t)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var t=this._innerSubscribe(e),n=this._infiniteTimeWindow,r=this._buffer.slice(),a=0;a0?e.prototype.requestAsyncId.call(this,t,n,r):(t.actions.push(this),t._scheduled||(t._scheduled=db.setImmediate(t.flush.bind(t,void 0))))},t.prototype.recycleAsyncId=function(t,n,r){var a;if(void 0===r&&(r=0),null!=r?r>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,t,n,r);var i=t.actions;null!=n&&(null===(a=i[i.length-1])||void 0===a?void 0:a.id)!==n&&(db.clearImmediate(n),t._scheduled===n&&(t._scheduled=void 0))},t}(rb),lb=function(){function e(t,n){void 0===n&&(n=e.now),this.schedulerActionCtor=t,this.now=n}return e.prototype.schedule=function(e,t,n){return void 0===t&&(t=0),new this.schedulerActionCtor(this,e).schedule(n,t)},e.now=Zh.now,e}(),fb=new(function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,L.__extends)(t,e),t.prototype.flush=function(e){this._active=!0;var t=this._scheduled;this._scheduled=void 0;var n,r=this.actions;e=e||r.shift();do{if(n=e.execute(e.state,e.delay))break}while((e=r[0])&&e.id===t&&r.shift());if(this._active=!1,n){for(;(e=r[0])&&e.id===t&&r.shift();)e.unsubscribe();throw n}},t}(function(e){function t(t,n){void 0===n&&(n=lb.now);var r=e.call(this,t,n)||this;return r.actions=[],r._active=!1,r}return(0,L.__extends)(t,e),t.prototype.flush=function(e){var t=this.actions;if(this._active)t.push(e);else{var n;this._active=!0;do{if(n=e.execute(e.state,e.delay))break}while(e=t.shift());if(this._active=!1,n){for(;e=t.shift();)e.unsubscribe();throw n}}},t}(lb)))(ub);function pb(e=1750){return t=>{let[n,r,a,i]=[0,0,q.EMPTY,q.EMPTY];return new he((s=>(t.subscribe(s),0==r++&&(1===n?i.unsubscribe():a=t.connect(),n=3),()=>{0==--r&&(2===n?(n=0,i.unsubscribe()):(n=1,i=fb.schedule((()=>{n=0,a.unsubscribe()}),e)))})))}}function hb(e,t){return(0,je.A)({t:e})===(0,je.A)({t:t})}function bb(e){throw e}function mb(){}function yb({delay:e,skipChange:t=!1,skipTimeout:n=!1}={}){return r=>{return r.pipe(Xh(bb),t?Lh(mb):(void 0===i&&(i=fe),a=null!=(a=hb)?a:Wh,_e((function(e,t){var n,r=!0;e.subscribe(Pe(t,(function(e){var s=i(e);!r&&a(n,s)||(r=!1,n=s,t.next(e))})))}))),$h(1),n?Kh():pb(e));var a,i}}function xb(e,t){const n=Fh(((...e)=>new he((r=>{const a=t(...e).subscribe(r);return()=>{n.unmemoize(...e),a.unsubscribe()}})).pipe(yb())),{getInstanceId:()=>e});return n}function gb(e,t){return xb(e,(e=>{const n=(0,ut.b)(e)?e:co((e||"").toString());if(n.length>8)return Le(t.registry.createType(20===n.length?"AccountId20":"AccountId",n));const r=t.registry.createType("AccountIndex",n);return t.derive.accounts.indexToId(r.toString()).pipe(ze((e=>ea(e,"Unable to retrieve accountId"))))}))}function vb(e,t){return xb(e,(()=>{const e=[void 0,[],[],[],void 0],n=[(t.query.elections||t.query.phragmenElection||t.query.electionsPhragmen)?.members,t.query.council?.members,t.query.technicalCommittee?.members,t.query.society?.members,t.query.sudo?.key],r=n.filter((e=>e));return r.length?t.queryMulti(r).pipe(ze((t=>{let r=-1;for(let a=0,i=n.length;at.derive.accounts._flags().pipe(ze((t=>function(e,[t,n,r,a,i]){const s=e?.toString(),o=e=>e.toString()===s;return{isCouncil:(t?.map((e=>Array.isArray(e)?e[0]:e.who))||n||[]).some(o),isSociety:(a||[]).some(o),isSudo:i?.toString()===s,isTechCommittee:(r||[]).some(o)}}(e,t))))))}function Vb(e,t){return xb(e,(e=>{try{const n=(0,ut.b)(e)?e:co((e||"").toString());if(n.length>8){const e=t.registry.createType(20===n.length?"AccountId20":"AccountId",n);return t.derive.accounts.idToIndex(e).pipe(ze((t=>[e,t])))}const r=t.registry.createType("AccountIndex",n);return t.derive.accounts.indexToId(r.toString()).pipe(ze((e=>[e,r])))}catch{return Le([void 0,void 0])}}))}function Tb(e){return e.pipe(ze((([e])=>e)))}function Sb(e){return(t,n)=>xb(t,((...t)=>Tb(e(n,...t))))}const kb={toHex:()=>{}};function _b(e){return e?e.isRaw?nt(e.asRaw.toU8a(!0)):e.isNone?void 0:e.toHex():e}function Pb(e){const t=e.unwrap();return Array.isArray(t)?t[0]:t}function Mb(e,t){return xb(e,(e=>e&&t.query.identity?.identityOf?Rh([t.query.identity.identityOf(e),t.query.identity.superOf(e)]):Le([void 0,void 0])))}function Ib(e,t){return xb(e,(e=>t.derive.accounts._identity(e).pipe(Ie((([e,n])=>function(e,t,n){if(t?.isSome)return Le([t,void 0]);if(n?.isSome){const t=n.unwrap();return Rh([e.derive.accounts._identity(t[0]).pipe(ze((([e])=>e))),Le(t)])}return Le([void 0,void 0])}(t,e,n))),ze((([e,t])=>function(e,t){if(!e?.isSome)return{judgements:[]};const{info:n,judgements:r}=Pb(e),a=_b(n.display);return{discord:_b(n.discord),display:t&&_b(t[1])||a,displayParent:t&&a,email:_b(n.email),github:_b(n.github),image:_b(n.image),judgements:r,legal:_b(n.legal),matrix:_b(n.matrix),other:n.additional?(i=n.additional,i.reduce(((e,[t,n])=>{const r=_b(t),a=_b(n);return r&&a&&(e[r]=a),e}),{})):{},parent:t?.[0],pgp:n.pgpFingerprint.unwrapOr(kb).toHex(),riot:_b(n.riot),twitter:_b(n.twitter),web:_b(n.web)};var i}(e,t))))))}const Nb=Sb(((e,t)=>e.derive.accounts.hasIdentityMulti([t])));function Eb(e,t){return xb(e,(e=>t.query.identity?.identityOf?Rh([t.query.identity.identityOf.multi(e),t.query.identity.superOf.multi(e)]).pipe(ze((([e,t])=>e.map(((e,n)=>{const r=t[n],a=r&&r.isSome?r.unwrap()[0].toString():void 0;let i;if(e&&e.isSome){const t=_b(Pb(e).info.display);t&&!(0,Je.qv)(t)&&(i=t)}return{display:i,hasIdentity:!(!i&&!a),parentId:a}}))))):Le(e.map((()=>({hasIdentity:!1}))))))}function Ob(e,t){return xb(e,(e=>t.derive.accounts.indexes().pipe(ze((t=>t[e.toString()])))))}function Ab(e,t,n){return void 0===n&&(n=1/0),z(t)?Ab((function(n,r){return ze((function(e,a){return t(n,e,r,a)}))(Te(e(n,r)))}),n):("number"==typeof t&&(n=t),_e((function(t,r){return function(e,t,n,r,a,i,s,o){var c=[],d=0,u=0,l=!1,f=function(){!l||c.length||d||t.complete()},p=function(e){return dBb?Le(Bb):(t.query.indices?function(e){return e.query.indices.accounts.entries().pipe(ze((t=>t.reduce(((t,[n,r])=>(r.isSome&&(t[r.unwrap()[0].toString()]=e.registry.createType("AccountIndex",n.args[0])),t)),{}))))}(t).pipe(Rb({})):Le({})).pipe(ze((e=>(Bb=e,e))))))}function zb(e,t){return xb(e,(e=>t.query.indices?t.query.indices.accounts(e).pipe(ze((e=>e.unwrapOr([])[0]))):Le(void 0)))}function Ub(e,t){return(t&&e.query.nicks?.nameOf?e.query.nicks.nameOf(t):Le(void 0)).pipe(ze((t=>t?.isSome?nt(t.unwrap()[0]).substring(0,e.consts.nicks.maxLength.toNumber()):void 0)))}function Db(e,t){return xb(e,(e=>t.derive.accounts.idAndIndex(e).pipe(Ie((([e,n])=>Rh([Le({accountId:e,accountIndex:n}),t.derive.accounts.identity(e),Ub(t,e)]))),ze((([{accountId:e,accountIndex:t},n,r])=>({accountId:e,accountIndex:t,identity:n,nickname:r}))))))}function qb(e,t){return(n,r)=>xb(n,t(function(e,t){const n=e.registry.getModuleInstances(e.runtimeVersion.specName,t),r=n?.length?n[0]:t;return e.query[r]}(r,e),r,n))}function jb(e,t){return n=>qb(n,(n=>()=>(0,qe.T)(n?.[e])?n[e]():Le(t)))}const Fb=jb("members",[]);function Xb(e,t,n){return((0,qe.T)(t?.proposals)&&n.length?Rh([Le(n),t.proposalOf.multi(n).pipe(Xh((()=>Le(n.map((()=>null)))))),t.voting.multi(n)]):Le([[],[],[]])).pipe(ze((t=>function(e,[t,n,r]){return n.map(((n,a)=>({hash:e.registry.createType("Hash",t[a]),proposal:n&&n.isSome?n.unwrap():null,votes:r[a].unwrapOr(null)})))}(e,t))))}function Wb(e){return qb(e,(e=>()=>Le((0,qe.T)(e?.proposals))))}function Zb(e){return qb(e,((t,n)=>()=>n.derive[e].proposalHashes().pipe(Ie((e=>Xb(n,t,e))))))}function Gb(e){return qb(e,((e,t)=>n=>(0,qe.T)(e?.proposals)?Tb(Xb(t,e,[n])):Le(null)))}const Kb=jb("proposalCount",null),Jb=jb("proposals",[]);function Yb(e){return qb(e,(e=>()=>(0,qe.T)(e?.prime)?e.prime().pipe(ze((e=>e.unwrapOr(null)))):Le(null)))}const Qb=Fb("allianceMotion"),$b=Wb("allianceMotion"),em=Gb("allianceMotion"),tm=Kb("allianceMotion"),nm=Jb("allianceMotion"),rm=Zb("allianceMotion"),am=Yb("allianceMotion");function im(e){return e.query.voterList||e.query.voterBagsList||e.query.bagsList}function sm(e,t){const n=im(t);return xb(e,(e=>{const t=e.map((e=>kt(e)));return t.length?n.listBags.multi(t).pipe(ze((e=>function(e,t){const n=e.map(((e,n)=>({bag:t[n].unwrapOr(null),id:e,key:e.toString()}))).sort(((e,t)=>t.id.cmp(e.id))),r=n.length-1;return n.map(((e,t)=>(0,M.b)(e,{bagLower:t===r?lt:n[t+1].id,bagUpper:e.id,index:t})))}(t,e)))):Le([])}))}function om(e,t){const n=im(t);return xb(e,(()=>n.listBags.keys().pipe(Ie((e=>t.derive.bagsList._getIds(e.map((({args:[e]})=>e))))),ze((e=>e.filter((({bag:e})=>e)))))))}function cm(e,t){return xb(e,(e=>t.derive.bagsList._getIds([kt(e)]).pipe(ze((e=>e[0])))))}function dm(e,t){return xb(e,(e=>t.derive.bagsList.listNodes(e.bag).pipe(ze((t=>(0,M.b)({nodes:t},e))))))}function um(e,t){return xb(e,(e=>t.derive.bagsList.get(e).pipe(Ie((e=>t.derive.bagsList.expand(e))))))}function lm(e,t){setTimeout((()=>{Promise.resolve().then((()=>{e()})).catch((e=>{t?t(e):console.error(e)}))}),0)}function fm(e,t){return xb(e,(e=>e&&e.head.isSome?function(e,t){const n=new Mh(t),r=im(e);return n.pipe(Ie((e=>r.listNodes(e))),Lh((e=>{lm((()=>{e.isSome&&e.value.next.isSome?n.next(e.unwrap().next.unwrap()):n.complete()}))})),Dh(),ze((e=>e.map((e=>e.unwrap())))))}(t,e.head.unwrap()):Le([])))}function pm(e){return(...t)=>{const n=t.length;if(0===n)throw new Error("Must provide one or more arguments");let r=t[0];for(let a=1;ae.gt(t))),bm=pm(((e,t)=>e.lt(t))),mm="0x76657374696e6720";function ym(e,t,n,r){const{allLocked:a,lockedBalance:i,lockedBreakdown:s,vestingLocked:o}=function(e,t,n){let r=e.registry.createType("Balance"),a=[],i=e.registry.createType("Balance"),s=!1;if(Array.isArray(n)){a=n.filter((({until:e})=>!e||t&&e.gt(t))),s=a.some((({amount:e})=>e&&e.isMax())),i=e.registry.createType("Balance",a.filter((({id:e})=>e.eq(mm))).reduce(((e,{amount:t})=>e.iadd(t)),new st(0)));const o=a.filter((({amount:e})=>e&&!e.isMax()));o.length&&(r=e.registry.createType("Balance",hm(...o.map((({amount:e})=>e)))))}return{allLocked:s,lockedBalance:r,lockedBreakdown:a,vestingLocked:i}}(e,t,r);let c=null;if(n?.frameSystemAccountInfo?.frozen){const{frameSystemAccountInfo:t,freeBalance:r,reservedBalance:i}=n,s=t.frozen.isZero()&&i.isZero(),o=e.consts.balances.existentialDeposit,d=s?new st(0):o,u=t.frozen.sub(i);c=e.registry.createType("Balance",a?0:r.sub(hm(d,u)))}return(0,M.b)({},n,{availableBalance:e.registry.createType("Balance",a?0:hm(new st(0),n?.freeBalance?n.freeBalance.sub(i):new st(0))),lockedBalance:i,lockedBreakdown:s,transferable:c,vestingLocked:o})}function xm(e,t){const[n,[r,a,i],s]=t,o=ym(e,s,n,a[0]);return(0,M.b)(o,function(e,t,n){const r=n||[],a=!t.vestingLocked.isZero(),i=r.map((({locked:t,perBlock:n,startingBlock:r})=>e.gt(r)?bm(t,n.mul(e.sub(r))):lt)),s=i.reduce(((e,t)=>e.iadd(t)),new st(0)),o=r.reduce(((e,{locked:t})=>e.iadd(t)),new st(0));return{isVesting:a,vestedBalance:s,vestedClaimable:a?t.vestingLocked.sub(o.sub(s)):lt,vesting:r.map((({locked:e,perBlock:t,startingBlock:n},r)=>({endBlock:e.div(t).iadd(n),locked:e,perBlock:t,startingBlock:n,vested:i[r]}))).filter((({locked:e})=>!e.isZero())),vestingTotal:o}}(s,o,r),{accountId:n.accountId,accountNonce:n.accountNonce,additional:a.slice(1).map(((t,r)=>ym(e,s,n.additional[r],t))),namedReserves:i})}function gm(e,t){return Rh([e.query.balances.locks(t),e.query.balances.vesting(t)]).pipe(ze((([t,n])=>{let r=null;if(n.isSome){const{offset:t,perBlock:a,startingBlock:i}=n.unwrap();r=e.registry.createType("VestingInfo",{locked:t,perBlock:a,startingBlock:i})}return[r?[r]:null,[t],[]]})))}const vm=e=>!!e;function wm(e){return[e.map((e=>!e)),e.filter(vm)]}function Vm(e,t,n=["balances"]){const[r,a]=wm(n.map((t=>e.derive[t]?.customLocks||e.query[t]?.locks))),[i,s]=wm(n.map((t=>e.query[t]?.reserves)));return Rh([e.query.vesting?.vesting?e.query.vesting.vesting(t):Le(e.registry.createType("Option")),a.length?Rh(a.map((e=>e(t)))):Le([]),s.length?Rh(s.map((e=>e(t)))):Le([])]).pipe(ze((([t,n,a])=>{let s=-1,o=-1;const c=t.unwrapOr(null);return[c?Array.isArray(c)?c:[c]:null,r.map((t=>t?e.registry.createType("Vec"):n[++s])),i.map((t=>t?e.registry.createType("Vec"):a[++o]))]})))}function Tm(e,t){const n=t.registry.getModuleInstances(t.runtimeVersion.specName,"balances");return xb(e,(e=>Rh([t.derive.balances.account(e),(0,qe.T)(t.query.system?.account)||(0,qe.T)(t.query.balances?.account)?Vm(t,e,n):gm(t,e)]).pipe(Ie((([e,n])=>Rh([Le(e),Le(n),t.derive.chain.bestNumber()]))),ze((e=>xm(t,e))))))}function Sm(e){return e.registry.createType("Balance")}function km(e,[t,n,r,a],i){const s=e.registry.createType("Balance",t.toBn());return i.isFrameAccountData?{frameSystemAccountInfo:{flags:a,frozen:r},freeBalance:t,frozenFee:e.registry.createType("Balance",0),frozenMisc:e.registry.createType("Balance",0),reservedBalance:n,votingBalance:s}:{freeBalance:t,frozenFee:r,frozenMisc:a,reservedBalance:n,votingBalance:s}}function _m(e,t){return Rh([e.query.balances.freeBalance(t),e.query.balances.reservedBalance(t),e.query.system.accountNonce(t)]).pipe(ze((([t,n,r])=>[r,[[t,n,Sm(e),Sm(e)]],{isFrameAccountData:!1}])))}function Pm(e,t){const n=t=>[t,[[Sm(e),Sm(e),Sm(e),Sm(e)]],{isFrameAccountData:!1}];return(0,qe.T)(e.query.system.account)?e.query.system.account(t).pipe(ze((({nonce:e})=>n(e)))):(0,qe.T)(e.query.system.accountNonce)?e.query.system.accountNonce(t).pipe(ze((e=>n(e)))):Le(n(e.registry.createType("Index")))}function Mm(e,t,n=["balances"]){const r=n.map((t=>e.derive[t]?.customAccount||e.query[t]?.account)).filter((e=>(0,qe.T)(e))),a=(e,t)=>[e,t.map((({feeFrozen:e,free:t,miscFrozen:n,reserved:r})=>[t,r,e,n])),{isFrameAccountData:!1}];return r.length?(0,qe.T)(e.query.system.account)?Rh([e.query.system.account(t),...r.map((e=>e(t)))]).pipe(ze((([{nonce:e},...t])=>a(e,t)))):Rh([e.query.system.accountNonce(t),...r.map((e=>e(t)))]).pipe(ze((([e,...t])=>a(e,t)))):Pm(e,t)}function Im(e,t){return e.query.system.account(t).pipe(ze((t=>{const n=t.nonce?t.data:t[1],r=t.nonce||t[0];if(!n||n.isEmpty)return[r,[[Sm(e),Sm(e),Sm(e),Sm(e)]],{isFrameAccountData:!1}];if(!!t.data.frozen){const{flags:e,free:t,frozen:a,reserved:i}=n;return[r,[[t,i,a,e]],{isFrameAccountData:!0}]}{const{feeFrozen:e,free:t,miscFrozen:a,reserved:i}=n;return[r,[[t,i,e,a]],{isFrameAccountData:!1}]}})))}function Nm(e,t){const n=t.registry.getModuleInstances(t.runtimeVersion.specName,"balances"),r=n&&"balances"!==n[0];return xb(e,(e=>t.derive.accounts.accountId(e).pipe(Ie((e=>e?Rh([Le(e),r?Mm(t,e,n):(0,qe.T)(t.query.system?.account)?Im(t,e):(0,qe.T)(t.query.balances?.account)?Mm(t,e):(0,qe.T)(t.query.balances?.freeBalance)?_m(t,e):Pm(t,e)]):Le([t.registry.createType("AccountId"),[t.registry.createType("Index"),[[Sm(t),Sm(t),Sm(t),Sm(t)]],{isFrameAccountData:!1}]]))),ze((e=>function(e,[t,[n,[r,...a],i]]){return(0,M.b)({accountId:t,accountNonce:n,additional:a.map((t=>km(e,t,i)))},km(e,r,i))}(t,e))))))}function Em(e,t){return xb(e,(e=>e?.length?Rh(e.map((e=>t.derive.balances.account(e)))):Le([])))}const Om=Tm;function Am(e,t){const n=e.tx.bounties?e.tx.bounties:e.tx.treasury,r=[n.approveBounty,n.closeBounty,n.proposeCurator,n.unassignCurator];return t.filter((e=>r.find((t=>e.proposal&&t.is(e.proposal)))))}function Cm([e,t,n,r]){const a=[];return e.forEach(((e,i)=>{e.isSome&&a.push({bounty:e.unwrap(),description:t[i].unwrapOrDefault().toUtf8(),index:n[i],proposals:r.filter((e=>e.proposal&&n[i].eq(e.proposal.args[0])))})})),a}function Hm(e,t){const n=t.query.bounties||t.query.treasury;return xb(e,(()=>n.bounties?Rh([n.bountyCount(),t.query.council?t.query.council.proposalCount():Le(0)]).pipe(Ie((()=>Rh([n.bounties.keys(),t.derive.council?t.derive.council.proposals():Le([])]))),Ie((([e,r])=>{const a=e.map((({args:[e]})=>e));return Rh([n.bounties.multi(a),n.bountyDescriptions.multi(a),Le(a),Le(Am(t,r))])})),ze(Cm)):Le(Cm([[],[],[],[]]))))}const Rm=(0,Vt.D8)("toBigInt","toBn","toNumber","unwrap");function Bm(e){return Rm(e.number)?e.number.unwrap():e.number}function Lm(e){return(t,n)=>xb(t,(()=>e(n).pipe(ze(Bm))))}function zm(e,t,n){return e.queryAt(t.parentHash.isEmpty?n||t.hash:t.parentHash).pipe(Ie((e=>function(e,t){const n=t.session?.validators?t.session.validators():Le(null),{logs:[r]}=e.digest,a=r&&(r.isConsensus&&r.asConsensus[0].isNimbus&&r.asConsensus[1]||r.isPreRuntime&&r.asPreRuntime[0].isNimbus&&r.asPreRuntime[1]);if(a){if(t.authorMapping?.mappingWithDeposit)return Rh([Le(e),n,t.authorMapping.mappingWithDeposit(a).pipe(ze((e=>e.unwrapOr({account:null}).account)))]);if(t.parachainStaking?.selectedCandidates&&t.session?.nextKeys){const r=a.toHex();return Rh([Le(e),n,t.parachainStaking.selectedCandidates().pipe(Ab((e=>Rh([Le(e),t.session.nextKeys.multi(e).pipe(ze((e=>e.findIndex((e=>e.unwrapOrDefault().nimbus.toHex()===r)))))]))),ze((([e,t])=>-1===t?null:e[t])))])}}return Rh([Le(e),n,Le(null)])}(t,e))))}const Um=Lm((e=>e.rpc.chain.subscribeNewHeads())),Dm=Lm((e=>e.rpc.chain.subscribeFinalizedHeads()));function qm(e,t){return xb(e,(()=>Rh([t.derive.chain.bestNumber(),t.derive.chain.bestNumberFinalized()]).pipe(ze((([e,n])=>t.registry.createType("BlockNumber",e.sub(n)))))))}function jm(e,t){const[n]=e.logs.filter((e=>e.isConsensus)),[r]=e.logs.filter((e=>e.isPreRuntime)),[a]=e.logs.filter((e=>e.isSeal));let i;try{if(r){const[e,n]=r.asPreRuntime;i=e.extractAuthor(n,t)}if(!i&&n){const[e,r]=n.asConsensus;i=e.extractAuthor(r,t)}if(!i&&a){const[e,n]=a.asSeal;i=e.extractAuthor(n,t)}}catch{}return i}function Fm(e,t){return xb(e,(e=>Rh([t.rpc.chain.getBlock(e),t.queryAt(e)]).pipe(Ie((([n,r])=>Rh([Le(n),r.system.events(),zm(t,n.block.header,e)]))),ze((([e,t,[,n,r]])=>function(e,t,n,r,a){const i=e.createClass("SignedBlock");return new class extends i{__internal__author;__internal__events;__internal__extrinsics;constructor(e,t,n,r,a){var i,s;super(e,t),this.__internal__author=a||jm(this.block.header.digest,r||[]),this.__internal__events=n||[],this.__internal__extrinsics=(i=this.block.extrinsics,s=this.__internal__events,i.map(((e,t)=>{let n,r;const a=s.filter((({phase:e})=>e.isApplyExtrinsic&&e.asApplyExtrinsic.eq(t))).map((({event:e})=>("system"===e.section&&("ExtrinsicSuccess"===e.method?r=e.data[0]:"ExtrinsicFailed"===e.method&&(n=e.data[0],r=e.data[1])),e)));return{dispatchError:n,dispatchInfo:r,events:a,extrinsic:e}}))),this.createdAtHash=t?.createdAtHash}get author(){return this.__internal__author}get events(){return this.__internal__events}get extrinsics(){return this.__internal__extrinsics}}(e,t,n,r,a)}(t.registry,e,t,n,r))))))}function Xm(e,t){return xb(e,(e=>t.rpc.chain.getBlockHash(e).pipe(Ie((e=>t.derive.chain.getBlock(e))))))}function Wm(e,t,n,r){const a=e.createClass("Header");return new class extends a{__internal__author;constructor(e,t,n,r){super(e,t),this.__internal__author=r||jm(this.digest,n||[]),this.createdAtHash=t?.createdAtHash}get author(){return this.__internal__author}}(e,t,n,r)}function Zm(e,t){return xb(e,(e=>t.rpc.chain.getHeader(e).pipe(Ie((n=>zm(t,n,e))),ze((([e,t,n])=>Wm((t||e).registry,e,t,n))))))}function Gm(e,t){return xb(e,(()=>t.derive.chain.subscribeFinalizedHeads().pipe(Ie((e=>t.derive.chain.getBlock(e.createdAtHash||e.hash))))))}function Km(e,t){return xb(e,((e,n,r=[])=>t.rpc.chain.getHeader(e).pipe(Ie((e=>e.parentHash.eq(n)?Le([e,...r]):t.derive.chain._getHeaderRange(e.parentHash,n,[e,...r]))))))}function Jm(e,t){return xb(e,(()=>{let e=null;return t.rpc.chain.subscribeFinalizedHeads().pipe(Ie((n=>{const r=e,a=n.parentHash;return e=n.createdAtHash=n.hash,null===r||a.eq(r)?Le(n):t.derive.chain._getHeaderRange(a,r,[n]).pipe(Ie((e=>Be(e))))})))}))}function Ym(e,t){return xb(e,(()=>t.derive.chain.subscribeNewHeads().pipe(Ie((e=>t.derive.chain.getBlock(e.createdAtHash||e.hash))))))}function Qm(e,t){return xb(e,(()=>t.rpc.chain.subscribeNewHeads().pipe(Ie((e=>zm(t,e))),ze((([e,t,n])=>(e.createdAtHash=e.hash,Wm(e.registry,e,t,n)))))))}function $m(e,t){return xb(e,(()=>function(e){return Le([e.consts.contracts.callBaseFee||e.registry.createType("Balance"),e.consts.contracts.contractFee||e.registry.createType("Balance"),e.consts.contracts.creationFee||e.registry.createType("Balance"),e.consts.contracts.transactionBaseFee||e.registry.createType("Balance"),e.consts.contracts.transactionByteFee||e.registry.createType("Balance"),e.consts.contracts.transferFee||e.registry.createType("Balance"),e.consts.contracts.rentByteFee||e.registry.createType("Balance"),e.consts.contracts.rentDepositOffset||e.registry.createType("Balance"),e.consts.contracts.surchargeReward||e.registry.createType("Balance"),e.consts.contracts.tombstoneDeposit||e.registry.createType("Balance")])}(t).pipe(ze((([e,t,n,r,a,i,s,o,c,d])=>({callBaseFee:e,contractFee:t,creationFee:n,rentByteFee:s,rentDepositOffset:o,surchargeReward:c,tombstoneDeposit:d,transactionBaseFee:r,transactionByteFee:a,transferFee:i}))))))}function ey(e){return!Array.isArray(e)}function ty(e){return e.stakeOf.entries().pipe(ze((e=>e.map((([{args:[e]},t])=>[e,t])))))}function ny(e){return e.votesOf.entries().pipe(ze((e=>e.map((([{args:[e]},t])=>[e,t])))))}function ry(e,t){const n=t.query.elections||t.query.phragmenElection||t.query.electionsPhragmen;return xb(e,(()=>n?n.stakeOf?function(e,t){return Rh([ty(t),ny(t)]).pipe(ze((([t,n])=>{const r=[];return n.forEach((([t,n])=>{r.push([t,{stake:e.registry.createType("Balance"),votes:n}])})),t.forEach((([e,t])=>{const n=r.find((([t])=>t.eq(e)));n?n[1].stake=t:r.push([e,{stake:t,votes:[]}])})),r})))}(t,n):function(e){return e.voting.entries().pipe(ze((e=>e.map((([{args:[e]},t])=>[e,ey(t)?{stake:t.stake,votes:t.votes}:{stake:t[0],votes:t[1]}])))))}(n):Le([])))}function ay(e,t){return xb(e,(e=>t.derive.council.votes().pipe(ze((n=>(n.find((([t])=>t.eq(e)))||[null,{stake:t.registry.createType("Balance"),votes:[]}])[1])))))}const iy=Fb("council"),sy=Wb("council"),oy=Gb("council"),cy=Kb("council"),dy=Jb("council"),uy=Zb("council"),ly=Yb("council");function fy(e,t){return xb(e,(e=>t.query.crowdloan.funds(e).pipe(ze((e=>e.isSome?function(e){return(0,N.X)(Mt(":child_storage:default:",Pi(Mt("crowdloan",(e.fundIndex||e.trieIndex).toU8a()))))}(e.unwrap()):null)))))}var py=new he((function(e){return e.complete()}));function hy(e){const t=e.length;if(0===t)return[];if(1===t)return e[0];let n=0;for(let i=0;i"crowdloan"===r&&["Contributed","Withdrew"].includes(n)&&t.eq(e))).reduce(((e,{event:{data:[t],method:n}})=>("Contributed"===n?e.added.push(t.toHex()):e.removed.push(t.toHex()),e)),{added:[],blockHash:t.createdAtHash?.toHex()||"-",removed:[]})}const my=1e3;function yy(e,t){let n=[],r=[];return e.query.system.events().pipe(Ie((e=>{const a=by(t,e);return a.added.length||a.removed.length?(n=n.concat(...a.added),r=r.concat(...a.removed),Le({added:n,addedDelta:a.added,blockHash:e.createdAtHash?.toHex()||"-",removed:r,removedDelta:a.removed})):py})),Rb({added:n,addedDelta:[],blockHash:"-",removed:r,removedDelta:[]}))}function xy(e,t,n){return function(e,t){return e.query.system.events().pipe(Ie((e=>{const n=e.filter((({event:{data:[e],method:n,section:r}})=>"crowdloan"===r&&["AllRefunded","Dissolved","PartiallyRefunded"].includes(n)&&e.eq(t)));return n.length?Le(e.createdAtHash?.toHex()||"-"):py})),Rb("-"))}(e,t).pipe(Ie((()=>(0,qe.T)(e.rpc.childstate.getKeysPaged)?function(e,t){const n=new Mh(void 0);return n.pipe(Ie((n=>e.rpc.childstate.getKeysPaged(t,"0x",my,n))),Lh((e=>{lm((()=>{e.length===my?n.next(e[my-1].toHex()):n.complete()}))})),Dh(),ze((e=>hy(e))))}(e,n):e.rpc.childstate.getKeys(n,"0x"))),ze((e=>e.map((e=>e.toHex())))))}function gy(e,t){return xb(e,(e=>t.derive.crowdloan.childKey(e).pipe(Ie((n=>n?function(e,t,n){return Rh([xy(e,t,n),yy(e,t)]).pipe(ze((([e,{added:t,blockHash:n,removed:r}])=>{const a={};return e.forEach((e=>{a[e]=!0})),t.forEach((e=>{a[e]=!0})),r.forEach((e=>{delete a[e]})),{blockHash:n,contributorsHex:Object.keys(a)}})))}(t,e,n):Le({blockHash:"-",contributorsHex:[]}))))))}function vy(e,t,n){return Rh(n.map((n=>e.rpc.childstate.getStorage(t,n)))).pipe(ze((t=>t.map((t=>e.registry.createType("Option",t))).map((t=>t.isSome?e.registry.createType("Balance",t.unwrap()):e.registry.createType("Balance"))).reduce(((e,t,r)=>(0,M.b)(e,{[n[r]]:t})),{}))))}function wy(e,t,n,r){return e.query.system.events().pipe(Ie((a=>{const i=by(t,a),s=r.filter((e=>i.added.includes(e)||i.removed.includes(e)));return s.length?vy(e,n,s):py})),Rb({}))}function Vy(e,t){return xb(e,((e,n)=>t.derive.crowdloan.childKey(e).pipe(Ie((r=>r&&n.length?function(e,t,n,r){return Rh([vy(e,n,r),wy(e,t,n,r)]).pipe(ze((([e,t])=>(0,M.b)({},e,t))))}(t,e,r,n):Le({}))))))}function Ty(e){return(0,N.X)((0,La.j)(e))}function Sy(e){const t=kt(e);if(t.isNeg())throw new Error("square root of negative numbers is not supported");if(t.lte(xt))return new st(~~Math.sqrt(t.toNumber()));let n=gt.clone();for(;;){const e=t.div(n).iadd(n).ishrn(1);if(n.eq(e)||n.eq(e.sub(ft)))return n;n=e}}function ky(e,t,n,r){for(;;){const a=e.div(t),i=n.div(r);if(a.lt(i))return!0;if(i.lt(a))return!1;const s=e.mod(t),o=n.mod(r);if(o.isZero())return!1;if(s.isZero())return!0;e=r,n=t,t=o,r=s}}function _y(e,t,n){return e.isSimpleMajority?n.votedAye.gt(n.votedNay):function(e,t,{votedAye:n,votedNay:r,votedTotal:a}){const i=Sy(a);return!i.isZero()&&(e.isSuperMajorityApprove?ky(r,i,n,t):ky(r,t,n,i))}(e,t,n)}function Py(e,t,n){const r=t.status.tally?function(e,t){const n=[],r=[];return t.forEach((e=>{e.vote.isAye?n.push(e):r.push(e)})),{allAye:n,allNay:r,voteCount:n.length+r.length,voteCountAye:n.length,voteCountNay:r.length,votedAye:e.ayes,votedNay:e.nays,votedTotal:e.turnout}}(t.status.tally,n):n.reduce(((e,t)=>{const{balance:n,vote:r}=t,a=0===r.conviction.index,i=n.muln(a?1:r.conviction.index).divn(a?10:1);return r.isAye?(e.allAye.push(t),e.voteCountAye++,e.votedAye.iadd(i)):(e.allNay.push(t),e.voteCountNay++,e.votedNay.iadd(i)),e.voteCount++,e.votedTotal.iadd(i),e}),{allAye:[],allNay:[],voteCount:0,voteCountAye:0,voteCountNay:0,votedAye:new st(0),votedNay:new st(0),votedTotal:new st(0)});return(0,M.b)({},r,{isPassing:_y(t.status.threshold,e,r),votes:n})}function My(e){return e.isLegacy?e.asLegacy.hash_.toHex():e.isLookup?e.asLookup.hash_.toHex():e.isInline?e.asInline.hash.toHex():(0,I.K)(e)?(0,Je.qv)(e)?e:Ty(e):(0,ut.b)(e)?(0,N.X)(e):e.toHex()}function Iy(e){return My(e.proposal||e.proposalHash)}const Ny=Ty("democrac");function Ey(e){return function(e){return e.derive.democracy.referendumsFinished().pipe(Ie((()=>e.query.scheduler.agenda.keys())),Ie((t=>{const n=t.map((({args:[e]})=>e));return n.length?Rh([Le(n),e.query.scheduler.agenda.multi(n).pipe(Xh((()=>Le(n.map((()=>[]))))))]):Le([[],[]])})))}(e).pipe(Ie((([t,n])=>{const r=[];return t.forEach(((t,a)=>{(n[a]||[]).filter((e=>e.isSome)).forEach((n=>{const a=n.unwrap();if(a.maybeId.isSome){const n=a.maybeId.unwrap().toHex();if(n.startsWith(Ny)){const i=a.call instanceof nn?function(e){return e.isInline||e.isLegacy||e.isLookup}(a.call)?My(a.call):a.call.isHash?a.call.asHash.toHex():a.call.asValue.args[0].toHex():a.call.args[0].toHex();r.push({at:t,imageHash:i,index:e.registry.createType("(u64, ReferendumIndex)",n)[1]})}}}))})),Rh([Le(r),r.length?e.derive.democracy.preimages(r.map((({imageHash:e})=>e))):Le([])])})),ze((([e,t])=>e.map(((e,n)=>(0,M.b)({image:t[n]},e))))))}function Oy(e,t){return xb(e,(()=>(0,qe.T)(t.query.scheduler?.agenda)?Ey(t):t.query.democracy.dispatchQueue?function(e){return e.query.democracy.dispatchQueue().pipe(Ie((t=>Rh([Le(t),e.derive.democracy.preimages(t.map((([,e])=>e)))]))),ze((([e,t])=>e.map((([e,n,r],a)=>({at:e,image:t[a],imageHash:My(n),index:r}))))))}(t):Le([])))}const Ay=[0,1,2,4,8,16,32];function Cy(e,[t,n],r){const{balance:a,vote:i}=n.asStandard,[s,o]=r.isFinished?function(e,t,{approved:n,end:r}){return[r,n.isTrue&&t.isAye||n.isFalse&&t.isNay?r.add((e.consts.democracy.voteLockingPeriod||e.consts.democracy.enactmentPeriod).muln(Ay[t.conviction.index])):lt]}(e,i,r.asFinished):[lt,lt];return{balance:a,isDelegated:!1,isFinished:r.isFinished,referendumEnd:s,referendumId:t,unlockAt:o,vote:i}}function Hy(e,t){return xb(e,(e=>t.query.democracy.votingOf?t.query.democracy.votingOf(e).pipe(Ie((e=>e.isDirect?function(e,{votes:t}){return t.length?e.query.democracy.referendumInfoOf.multi(t.map((([e])=>e))).pipe(ze((n=>t.map(((e,t)=>[e,n[t].unwrapOr(null)])).filter((e=>!!e[1]&&(0,Fe.b)(e[1].end)&&e[0][1].isStandard)).map((([t,n])=>Cy(e,t,n)))))):Le([])}(t,e.asDirect):e.isDelegating?function(e,{balance:t,conviction:n,target:r}){return e.derive.democracy.locks(r).pipe(ze((r=>r.map((({isFinished:r,referendumEnd:a,referendumId:i,unlockAt:s,vote:o})=>({balance:t,isDelegated:!0,isFinished:r,referendumEnd:a,referendumId:i,unlockAt:s.isZero()?s:a.add((e.consts.democracy.voteLockingPeriod||e.consts.democracy.enactmentPeriod).muln(Ay[n.index])),vote:e.registry.createType("Vote",{aye:o.isAye,conviction:n})}))))))}(t,e.asDelegating):Le([])))):Le([])))}function Ry(e,t){return xb(e,(()=>t.query.democracy?.nextExternal?t.query.democracy.nextExternal().pipe(Ie((e=>function(e,t){if(t.isNone)return Le(null);const[n,r]=t.unwrap();return e.derive.democracy.preimage(n).pipe(ze((e=>({image:e,imageHash:My(n),threshold:r}))))}(t,e)))):Le(null)))}function By(e,[t,n,r,a]){let i;try{i=e.registry.createType("Call",t.toU8a(!0))}catch(s){console.error(s)}return{at:a,balance:r,proposal:i,proposer:n}}function Ly(e,t){const n=t.map((e=>My(e)));return e.query.democracy.preimages.multi(n).pipe(ze((t=>t.map((t=>function(e,t){if(!t.isNone){if(function(e,t){return!!t&&!e.query.democracy.dispatchQueue}(e,t)){const n=t.unwrap();if(n.isMissing)return;const{data:r,deposit:a,provider:i,since:s}=n.asAvailable;return By(e,[r,i,a,s])}return By(e,t.unwrap())}}(e,t))))))}function zy(e,t){const n=t.map((e=>My(e))),r=e.registry.lookup.getTypeDef(e.query.preimage.preimageFor.creator.meta.type.asMap.key).type;return e.query.preimage.statusFor.multi(n).pipe(Ie((t=>{const a=t.map((e=>e.unwrapOr(null))),i=a.map(((e,t)=>e?"H256"===r?n[t]:e.isRequested?[n[t],e.asRequested.len.unwrapOr(0)]:[n[t],e.asUnrequested.len]:null)).filter((e=>!!e));return e.query.preimage.preimageFor.multi(i).pipe(ze((t=>{let r=-1;return a.map(((e,a)=>e?[n[a],e,t[++r].unwrapOr(null)]:[n[a],null,null])).map((t=>function(e,[t,n,r]){if(!n)return;const[a,i]=n.isUnrequested?function(e){return e.ticket||e.deposit}(n.asUnrequested):function(e){return(e.maybeTicket||e.deposit).unwrapOrDefault()}(n.asRequested);let s;if(r)try{s=e.registry.createType("Call",r.toU8a(!0))}catch(o){console.error(o)}return{at:lt,balance:i,proposal:s,proposalHash:t,proposer:a}}(e,t)))})))})))}function Uy(e,t){return xb(e,(e=>e.length?(0,qe.T)(t.query.democracy.preimages)?Ly(t,e):(0,qe.T)(t.query.preimage.preimageFor)?zy(t,e):Le([]):Le([])))}const Dy=Sb(((e,t)=>e.derive.democracy.preimages([t])));function qy([e,t,n]){return e.filter((([,,e],t)=>!!n[t]?.isSome&&!e.isEmpty)).map((([e,r,a],i)=>{const s=n[i].unwrap();return(0,M.b)({image:t[i],imageHash:My(r),index:e,proposer:a},function(e){return(0,qe.T)(e[1].mul)}(s)?{balance:s[1],seconds:s[0]}:{balance:s[0],seconds:s[1]})}))}function jy(e,t){return xb(e,(()=>(0,qe.T)(t.query.democracy?.publicProps)?t.query.democracy.publicProps().pipe(Ie((e=>e.length?Rh([Le(e),t.derive.democracy.preimages(e.map((([,e])=>e))),t.query.democracy.depositOf.multi(e.map((([e])=>e)))]):Le([[],[],[]]))),ze(qy)):Le([])))}function Fy(e,t){return xb(e,(()=>t.query.democracy?.lowestUnbaked?t.queryMulti([t.query.democracy.lowestUnbaked,t.query.democracy.referendumCount]).pipe(ze((([e,t])=>t.gt(e)?[...Array(t.sub(e).toNumber())].map(((t,n)=>e.addn(n))):[]))):Le([])))}function Xy(e,t){return xb(e,(()=>t.derive.democracy.referendumsActive().pipe(Ie((e=>e.length?Rh([Le(e),t.derive.democracy._referendumsVotes(e)]):Le([[],[]]))),ze((([e,t])=>e.map(((e,n)=>(0,M.b)({},e,t[n]))))))))}function Wy(e,t){return xb(e,(()=>t.derive.democracy.referendumIds().pipe(Ie((e=>e.length?t.derive.democracy.referendumsInfo(e):Le([]))))))}function Zy(e,t){return xb(e,(()=>t.derive.democracy.referendumIds().pipe(Ie((e=>t.query.democracy.referendumInfoOf.multi(e))),ze((e=>e.map((e=>e.unwrapOr(null))).filter((e=>!!e&&e.isFinished)).map((e=>e.asFinished)))))))}function Gy(e,t){return e.query.democracy.votersFor(t).pipe(Ie((n=>Rh([Le(n),n.length?e.query.democracy.voteOf.multi(n.map((e=>[t,e]))):Le([]),e.derive.balances.votingBalances(n)]))),ze((([t,n,r])=>t.map(((t,a)=>({accountId:t,balance:r[a].votingBalance||e.registry.createType("Balance"),isDelegating:!1,vote:n[a]||e.registry.createType("Vote")}))))))}function Ky(e,t){return e.query.democracy.votingOf.entries().pipe(ze((n=>{const r=n.map((([{args:[e]},t])=>[e,t])),a=function(e,t){return e.filter((([,e])=>e.isDirect)).map((([e,n])=>[e,n.asDirect.votes.filter((([e])=>e.eq(t)))])).filter((([,e])=>!!e.length)).reduce(((e,[t,n])=>n.reduce(((e,[,n])=>(n.isStandard&&e.push((0,M.b)({accountId:t,isDelegating:!1},n.asStandard)),e)),e)),[])}(r,t),i=r.filter((([,e])=>e.isDelegating)).map((([e,t])=>[e,t.asDelegating]));return i.forEach((([t,{balance:n,conviction:r,target:s}])=>{const o=i.find((([e])=>e.eq(s))),c=a.find((({accountId:e})=>e.eq(o?o[0]:s)));c&&a.push({accountId:t,balance:n,isDelegating:!0,vote:e.registry.createType("Vote",{aye:c.vote.isAye,conviction:r})})})),a})))}function Jy(e,t){return xb(e,(e=>Rh([t.derive.democracy.sqrtElectorate(),(0,qe.T)(t.query.democracy.votingOf)?Ky(t,e.index):Gy(t,e.index)]).pipe(ze((([t,n])=>Py(t,e,n))))))}function Yy(e,t){return xb(e,(e=>e.length?Rh(e.map((e=>t.derive.democracy._referendumVotes(e)))):Le([])))}function Qy(e,t){return xb(e,((e,n)=>{const r=function(e){if(e.isNone)return null;const t=e.unwrap();return function(e){return!!e.proposalHash}(t)?t:t.isOngoing?t.asOngoing:null}(n);return r?t.derive.democracy.preimage(r.proposal||r.proposalHash).pipe(ze((n=>({image:n,imageHash:Iy(r),index:t.registry.createType("ReferendumIndex",e),status:r})))):Le(null)}))}function $y(e,t){return xb(e,(e=>e.length?t.query.democracy.referendumInfoOf.multi(e).pipe(Ie((n=>Rh(e.map(((e,r)=>t.derive.democracy._referendumInfo(e,n[r])))))),ze((e=>e.filter((e=>!!e))))):Le([])))}function ex(e,t){return xb(e,(()=>t.query.balances.totalIssuance().pipe(ze(Sy))))}function tx(e){return function(e){return!Array.isArray(e)}(e)?[e.who,e.stake]:e}function nx(e){return function(e){return Array.isArray(e)}(e)?e[0]:e}function rx([,e],[,t]){return t.cmp(e)}function ax(e,t){return xb(e,(()=>{const[e,n]=function(e){const[t]=e.registry.getModuleInstances(e.runtimeVersion.specName,"council")||["council"],n=e.query.phragmenElection?"phragmenElection":e.query.electionsPhragmen?"electionsPhragmen":e.query.elections?"elections":null;return[e.query[t]?t:"council",n]}(t);return(n?function(e,t,n){return e.queryMulti([e.query[t].members,e.query[n].candidates,e.query[n].members,e.query[n].runnersUp])}(t,e,n):function(e,t){return Rh([e.query[t].members(),Le([]),Le([]),Le([])])}(t,e)).pipe(ze((([e,r,a,i])=>(0,M.b)({},function(e,t){return t?{candidacyBond:e.consts[t].candidacyBond,desiredRunnersUp:e.consts[t].desiredRunnersUp,desiredSeats:e.consts[t].desiredMembers,termDuration:e.consts[t].termDuration,votingBond:e.consts[t].votingBond,votingBondBase:e.consts[t].votingBondBase,votingBondFactor:e.consts[t].votingBondFactor}:{}}(t,n),{candidateCount:t.registry.createType("u32",r.length),candidates:r.map(nx),members:a.length?a.map(tx).sort(rx):e.map((e=>[e,t.registry.createType("Balance")])),runnersUp:i.map(tx).sort(rx)}))))}))}function ix([e,t,n,r]){return t.forEach(((t,a)=>{const i=t.toString(),s=r[a],o=!n[a].isEmpty,c=e[i];c&&c.hasMessage===o&&c.blockCount.eq(s)||(e[i]={blockCount:s,hasMessage:o,isOnline:o||s.gt(lt)})})),e}function sx(e,t){return xb(e,(()=>t.query.imOnline?.receivedHeartbeats?t.derive.staking.overview().pipe(Ie((({currentIndex:e,validators:n})=>Rh([Le({}),Le(n),t.query.imOnline.receivedHeartbeats.multi(n.map(((t,n)=>[e,n]))),t.query.imOnline.authoredBlocks.multi(n.map((t=>[e,t])))]))),ze(ix)):Le({})))}const ox=Fb("membership"),cx=Wb("membership"),dx=Gb("membership"),ux=Kb("membership"),lx=Jb("membership"),fx=Zb("membership"),px=Yb("membership");function hx(e,t){return!!e.isSome&&e.unwrap().some((e=>e.eq(t)))}function bx(e,t){const n=t.find((([t])=>t===e));if(n&&n[1].isSome){const[e,t]=n[1].unwrap();return(0,M.b)({collatorId:e},t.isWithRetries?{isRetriable:!0,retries:t.asWithRetries.toNumber()}:{isRetriable:!1,retries:0})}return null}function mx(e,t){return t.map((t=>{const n=t.find((([t])=>t===e));return n?n[1]:null}))}function yx(e,t){return xb(e,(e=>t.query.registrar&&t.query.parachains?t.queryMulti([t.query.registrar.active,t.query.registrar.retryQueue,t.query.registrar.selectedThreads,t.query.parachains.didUpdate,[t.query.registrar.paras,e],[t.query.registrar.pendingSwap,e],[t.query.parachains.heads,e],[t.query.parachains.relayDispatchQueue,e]]).pipe(ze((n=>function(e,[t,n,r,a,i,s,o,c]){return i.isNone?null:{active:bx(e,t),didUpdate:hx(a,e),heads:o,id:e,info:(0,M.b)({id:e},i.unwrap()),pendingSwapId:s.unwrapOr(null),relayDispatchQueue:c,retryCollators:mx(e,n),selectedCollators:mx(e,r)}}(t.registry.createType("ParaId",e),n)))):Le(null)))}function xx([e,t,n,r,a]){return e.map(((e,i)=>({didUpdate:hx(t,e),id:e,info:(0,M.b)({id:e},r[i].unwrapOr(null)),pendingSwapId:a[i].unwrapOr(null),relayDispatchQueueSize:n[i][0].toNumber()})))}function gx(e,t){return xb(e,(()=>t.query.registrar?.parachains&&t.query.parachains?t.query.registrar.parachains().pipe(Ie((e=>Rh([Le(e),t.query.parachains.didUpdate(),t.query.parachains.relayDispatchQueueSize.multi(e),t.query.registrar.paras.multi(e),t.query.registrar.pendingSwap.multi(e)]))),ze(xx)):Le([])))}function vx([e,t,n,r,a]){return{activeEra:t,activeEraStart:n,currentEra:r,currentIndex:e,validatorCount:a}}function wx(e,t){return xb(e,(()=>t.query.session?t.query.staking?function(e){return e.queryMulti([e.query.session.currentIndex,e.query.staking.activeEra,e.query.staking.currentEra,e.query.staking.validatorCount]).pipe(ze((([e,t,n,r])=>{const{index:a,start:i}=t.unwrapOrDefault();return vx([e,a,i,n.unwrapOrDefault(),r])})))}(t):function(e){return e.query.session.currentIndex().pipe(ze((t=>vx([t,e.registry.createType("EraIndex"),e.registry.createType("Option"),e.registry.createType("EraIndex"),e.registry.createType("u32")]))))}(t):function(e){return Le(vx([e.registry.createType("SessionIndex",1),e.registry.createType("EraIndex"),e.registry.createType("Option"),e.registry.createType("EraIndex"),e.registry.createType("u32")]))}(t)))}function Vx(e,t){return xb(e,(()=>t.derive.session.indexes().pipe(ze((e=>{const n=t.consts?.babe?.epochDuration||t.registry.createType("u64",1),r=t.consts?.staking?.sessionsPerEra||t.registry.createType("SessionIndex",1);return(0,M.b)({eraLength:t.registry.createType("BlockNumber",r.mul(n)),isEpoch:!!t.query.babe,sessionLength:n,sessionsPerEra:r},e)})))))}function Tx(e){return(t,n)=>xb(t,(()=>n.derive.session.progress().pipe(ze((t=>t[e])))))}function Sx(e,t){return xb(e,(()=>t.query.babe?function(e){return e.derive.session.info().pipe(Ie((t=>Rh([Le(t),e.query.staking?.erasStartSessionIndex?e.queryMulti([e.query.babe.currentSlot,e.query.babe.epochIndex,e.query.babe.genesisSlot,[e.query.staking.erasStartSessionIndex,t.activeEra]]):e.queryMulti([e.query.babe.currentSlot,e.query.babe.epochIndex,e.query.babe.genesisSlot])]))),ze((([t,[n,r,a,i]])=>[t,[n,r,a,i&&i.isSome?i.unwrap():e.registry.createType("SessionIndex",1)]])))}(t).pipe(ze((([e,n])=>function(e,t,[n,r,a,i]){const s=r.mul(t.sessionLength).iadd(a),o=n.sub(s),c=t.currentIndex.sub(i).imul(t.sessionLength).iadd(o);return(0,M.b)({eraProgress:e.registry.createType("BlockNumber",c),sessionProgress:e.registry.createType("BlockNumber",o)},t)}(t,e,n)))):function(e){return e.derive.session.info().pipe(ze((t=>(0,M.b)({eraProgress:e.registry.createType("BlockNumber"),sessionProgress:e.registry.createType("BlockNumber")},t))))}(t)))}const kx=Tx("eraLength"),_x=Tx("eraProgress"),Px=Tx("sessionProgress");function Mx(e,t){return xb(e,(()=>t.query.society.suspendedCandidates&&t.query.society.candidates.creator.meta.type.isPlain?function(e){return e.query.society.candidates().pipe(Ie((t=>Rh([Le(t),e.query.society.suspendedCandidates.multi(t.map((({who:e})=>e)))]))),ze((([e,t])=>e.map((({kind:e,value:n,who:r},a)=>({accountId:r,isSuspended:t[a].isSome,kind:e,value:n}))))))}(t):function(e){return e.query.society.candidates.entries().pipe(ze((e=>e.filter((([,e])=>e.isSome)).map((([{args:[e]},t])=>[e,t.unwrap()])).map((([e,{bid:t,kind:n}])=>({accountId:e,isSuspended:!1,kind:n,value:t}))))))}(t)))}function Ix(e,t){return xb(e,(()=>Rh([t.query.society.bids(),t.query.society.defender?t.query.society.defender():Le(void 0),t.query.society.founder(),t.query.society.head(),t.query.society.maxMembers?t.query.society.maxMembers():Le(void 0),t.query.society.pot()]).pipe(ze((([e,t,n,r,a,i])=>({bids:e,defender:t?.unwrapOr(void 0),founder:n.unwrapOr(void 0),hasDefender:t?.isSome&&r.isSome&&!r.eq(t)||!1,head:r.unwrapOr(void 0),maxMembers:a,pot:i}))))))}function Nx(e,t){return xb(e,(e=>t.derive.society._members([e]).pipe(ze((([e])=>e)))))}function Ex(e,t){return xb(e,(e=>t.query.society.members.creator.meta.type.isMap?function(e,t){return Rh([Le(t),e.query.society.members.multi(t),e.query.society.payouts.multi(t),e.query.society.challengeRoundCount().pipe(Ie((n=>e.query.society.defenderVotes.multi(t.map((e=>[n,e])))))),e.query.society.suspendedMembers.multi(t)]).pipe(ze((([e,t,n,r,a])=>e.map(((e,i)=>t[i].isSome?{accountId:e,isDefenderVoter:r[i].isSome,isSuspended:a[i].isSome,member:t[i].unwrap(),payouts:n[i].payouts}:null)).filter((e=>!!e)).map((({accountId:e,isDefenderVoter:t,isSuspended:n,member:r,payouts:a})=>({accountId:e,isDefenderVoter:t,isSuspended:n,payouts:a,strikes:r.strikes,vouching:r.vouching.unwrapOr(void 0)}))))))}(t,e):function(e,t){return Rh([Le(t),e.query.society.payouts.multi(t),e.query.society.strikes.multi(t),e.query.society.defenderVotes.multi(t),e.query.society.suspendedMembers.multi(t),e.query.society.vouching.multi(t)]).pipe(ze((([e,t,n,r,a,i])=>e.map(((e,s)=>({accountId:e,isDefenderVoter:r[s].isSome,isSuspended:a[s].isTrue,payouts:t[s],strikes:n[s],vote:r[s].unwrapOr(void 0),vouching:i[s].unwrapOr(void 0)}))))))}(t,e)))}function Ox(e,t){return xb(e,(()=>t.query.society.members.creator.meta.type.isMap?t.query.society.members.keys().pipe(Ie((e=>t.derive.society._members(e.map((({args:[e]})=>e)))))):t.query.society.members().pipe(Ie((e=>t.derive.society._members(e))))))}const Ax={withDestination:!0,withLedger:!0,withNominations:!0,withPrefs:!0};function Cx(e,t,n){const r=Object.entries((a=(t?.unlocking||[]).filter((({era:e})=>e.unwrap().gt(n.activeEra))),a.reduce(((e,{era:t,value:n})=>{const r=t.toString();return e[r]=(e[r]||lt).add(n.unwrap()),e}),{}))).map((([t,r])=>({remainingEras:new st(t).isub(n.activeEra),value:e.registry.createType("Balance",r)})));var a;return r.length?r:void 0}function Hx(e,t,n){return e.registry.createType("Balance",(t?.unlocking||[]).reduce(((e,{era:t,value:r})=>t.unwrap().gt(n.currentEra)?e:e.iadd(r.unwrap())),new st(0)))}function Rx(e,t){return xb(e,((e,n=Ax)=>t.derive.session.info().pipe(Ie((r=>Rh([t.derive.staking.keysMulti(e),t.derive.staking.queryMulti(e,n)]).pipe(ze((([e,n])=>n.map(((n,a)=>function(e,t,n,r){return(0,M.b)({},n,r,{redeemable:Hx(e,r.stakingLedger,t),unlocking:Cx(e,r.stakingLedger,t)})}(t,r,e[a],n)))))))))))}const Bx=Sb(((e,t,n)=>e.derive.staking.accounts([t],n)));function Lx(e,t){return xb(e,(()=>t.derive.session.indexes().pipe(Ie((({activeEra:e})=>t.query.staking.erasRewardPoints(e))))))}const zx={withController:!0,withExposure:!0,withPrefs:!0};function Ux(e,t){return xb(e,((e=zx,n=0)=>t.derive.staking.validators().pipe(Ie((({nextElected:r,validators:a})=>t.derive.staking.queryMulti(function(e,t){return hy([e,t.filter((t=>!e.find((e=>e.eq(t)))))])}(r,a),e,n).pipe(ze((e=>({info:e,nextElected:r,validators:a})))))))))}new Map;const Dx={del:()=>{},forEach:()=>{},get:()=>{},set:(e,t)=>t};let qx;function jx(e,t,n){const r=`${e}-${t.toString()}`;return[r,n?void 0:qx.get(r)]}function Fx(e,t,n){return n?[]:t.map((t=>qx.get(`${e}-${t.toString()}`))).filter((e=>!!e))}function Xx(e,t,n){return!t&&qx.set(e,n),n}function Wx(e,t,n){return!t&&n.forEach((t=>qx.set(`${e}-${t.era.toString()}`,t))),n}function Zx(e,t,n){return e.map((e=>t.find((({era:t})=>e.eq(t)))||n.find((({era:t})=>e.eq(t))))).filter((e=>!!e))}function Gx(e,t){const n=Math.ceil(e.length/t);if(1===n)return[e];const r=Array(n);for(let a=0;at.del(`${e}${n}`),forEach:t.forEach,get:n=>{const r=`${e}${n}`,a=t.get(r);if(a)return a.x=Date.now(),t.set(r,a),a.v},set:(n,r)=>{t.set(`${e}${n}`,{v:r,x:Date.now()})}}}(`derive:${e}:`,t):Dx,t&&function(e){const t=Date.now(),n=[];e.forEach(((e,{x:r})=>{t-r>6048e5&&n.push(e)})),n.forEach((t=>e.del(t)))}(t)}();function Kx(e,t){return e.filter((e=>!t.some((({era:t})=>e.eq(t)))))}function Jx(e){return(t,n)=>xb(t,((t=!1)=>n.derive.staking.erasHistoric(t).pipe(Ie((r=>n.derive.staking[e](r,t))))))}function Yx(e){return(t,n)=>xb(t,((t,r=!1,a)=>n.derive.staking.erasHistoric(r).pipe(Ie((i=>n.derive.staking[e](t,i,r,a||0))))))}function Qx(e){return(t,n)=>xb(t,(t=>n.derive.staking[e](t,!0)))}function $x(e){return(t,n)=>xb(t,((t,r)=>t.length?function(e,t){const n=Gx(e,14);let r=0;const a=new Mh(n[r]);return a.pipe(Ie(t),Lh((()=>{lm((()=>{r++,r===n.length?a.complete():a.next(n[r])}))})),Dh(),ze(hy))}(t,(t=>Rh(t.map((t=>n.derive.staking[e](t,r)))))):Le([])))}const eg="eraExposure";function tg(e,t){return xb(e,((e,n=!1)=>{const[r,a]=jx(eg,e,n);return a?Le(a):t.query.staking.erasStakersPaged?t.query.staking.erasStakersPaged.entries(e).pipe(ze((t=>Xx(r,n,function(e,t){const n={},r={};return t.forEach((([e,t])=>{if(t.isSome){const a=e.args[1].toString(),i=t.unwrap();r[a]=i,i.others.forEach((({who:e},t)=>{const r=e.toString();n[r]=n[r]||[],n[r].push({validatorId:a,validatorIndex:t})}))}})),{era:e,nominators:n,validators:r}}(e,t))))):t.query.staking.erasStakersClipped.entries(e).pipe(ze((t=>Xx(r,n,function(e,t){const n={},r={};return t.forEach((([e,t])=>{const a=e.args[1].toString();r[a]=t,t.others.forEach((({who:e},t)=>{const r=e.toString();n[r]=n[r]||[],n[r].push({validatorId:a,validatorIndex:t})}))})),{era:e,nominators:n,validators:r}}(e,t)))))}))}const ng=Qx("_eraExposure"),rg=$x("_eraExposure"),ag=Jx("_erasExposure");function ig(e,t){return xb(e,(e=>Rh([t.query.staking.activeEra(),t.consts.staking.historyDepth?Le(t.consts.staking.historyDepth):t.query.staking.historyDepth()]).pipe(ze((([n,r])=>{const a=[],i=r.toNumber(),s=n.unwrapOrDefault().index;let o=s;for(;o.gte(lt)&&a.lengthe.gt(lt))).reduce(((e,[t,n])=>(e[t.toString()]=n,e)),{})}function cg(e,t){return xb(e,((e,n)=>{if(!e.length)return Le([]);const r=Fx(sg,e,n),a=Kx(e,r);return a.length?t.query.staking.erasRewardPoints.multi(a).pipe(ze((t=>Zx(e,r,Wx(sg,n,function(e,t){return e.map(((e,n)=>({era:e,eraPoints:t[n].total,validators:og(t[n])})))}(a,t)))))):Le(r)}))}const dg=Jx("_erasPoints"),ug="eraPrefs";function lg(e,t){return xb(e,((e,n)=>{const[r,a]=jx(ug,e,n);return a?Le(a):t.query.staking.erasValidatorPrefs.entries(e).pipe(ze((t=>Xx(r,n,function(e,t){const n={};return t.forEach((([e,t])=>{n[e.args[1].toString()]=t})),{era:e,validators:n}}(e,t)))))}))}const fg=Qx("_eraPrefs"),pg=$x("_eraPrefs"),hg=Jx("_erasPrefs"),bg="eraRewards";function mg(e,t){return xb(e,((e,n)=>{if(!e.length)return Le([]);const r=Fx(bg,e,n),a=Kx(e,r);return a.length?t.query.staking.erasValidatorReward.multi(a).pipe(ze((t=>Zx(e,r,Wx(bg,n,function(e,t){return e.map(((e,n)=>({era:e,eraReward:t[n].unwrapOrDefault()})))}(a,t)))))):Le(r)}))}const yg=Jx("_erasRewards"),xg="eraSlashes";function gg(e,t){return xb(e,((e,n)=>{const[r,a]=jx(xg,e,n);return a?Le(a):Rh([t.query.staking.nominatorSlashInEra.entries(e),t.query.staking.validatorSlashInEra.entries(e)]).pipe(ze((([t,a])=>Xx(r,n,function(e,t,n){const r={},a={};return t.forEach((([e,t])=>{r[e.args[1].toString()]=t.unwrap()})),n.forEach((([e,t])=>{a[e.args[1].toString()]=t.unwrapOrDefault()[1]})),{era:e,nominators:r,validators:a}}(e,t,a)))))}))}const vg=Qx("_eraSlashes"),wg=$x("_eraSlashes"),Vg=Jx("_erasSlashes");const Tg=Sb(((e,t)=>e.derive.staking.keysMulti([t])));function Sg(e,t){return xb(e,(e=>e.length?t.query.session.queuedKeys().pipe(Ie((n=>Rh([Le(n),t.consts.session?.dedupKeyPrefix?t.query.session.nextKeys.multi(e.map((e=>[t.consts.session.dedupKeyPrefix,e]))):Rh(e.map((e=>t.query.session.nextKeys(e))))]))),ze((([t,n])=>e.map(((e,r)=>function(e,t,n){const r=(t.find((([t])=>t.eq(e)))||[void 0,[]])[1],a=n.unwrapOr([]);return{nextSessionIds:Array.isArray(a)?a:[...a.values()],sessionIds:Array.isArray(r)?r:[...r.values()]}}(e,t,n[r])))))):Le([])))}function kg(e,t){return xb(e,(()=>Rh([t.derive.session.indexes(),t.derive.staking.validators()]).pipe(ze((([e,{nextElected:t,validators:n}])=>(0,M.b)({},e,{nextElected:t,validators:n}))))))}function _g(e,t){return xb(e,((e,n,r,a)=>{const i=t.registry.createType("Exposure"),s=t.registry.createType("Option"),o=t.registry.createType("Option");return n.length?Rh([t.query.staking.erasStakersClipped?Rh(n.map((n=>t.query.staking.erasStakersClipped(n,e)))):Le(n.map((e=>i))),t.query.staking.erasStakers?Rh(n.map((n=>t.query.staking.erasStakers(n,e)))):Le(n.map((e=>i))),t.query.staking.erasStakersPaged?Rh(n.map((n=>t.query.staking.erasStakersPaged(n,e,a)))):Le(n.map((e=>s))),t.query.staking.erasStakersOverview?Rh(n.map((n=>t.query.staking.erasStakersOverview(n,e)))):Le(n.map((e=>o)))]).pipe(ze((([e,t,r,a])=>n.map(((n,i)=>({clipped:e[i],era:n,exposure:t[i],exposureMeta:a[i],exposurePaged:r[i]})))))):Le([])}))}const Pg=Sb(((e,t,n,r)=>e.derive.staking._ownExposures(t,[n],!0,r||0))),Mg=Yx("_ownExposures");function Ig(e,t){return xb(e,((e,n,r)=>n.length?Rh([Rh(n.map((n=>t.query.staking.validatorSlashInEra(n,e)))),Rh(n.map((n=>t.query.staking.nominatorSlashInEra(n,e))))]).pipe(ze((([e,t])=>n.map(((n,r)=>({era:n,total:e[r].isSome?e[r].unwrap()[1]:t[r].unwrapOrDefault()})))))):Le([])))}const Ng=Sb(((e,t,n)=>e.derive.staking._ownSlashes(t,[n],!0))),Eg=Yx("_ownSlashes");function Og(e,t){return e.registry.createType("Vec",t.filter((e=>-1!==e)))}function Ag(e,t,n,{withClaimedRewardsEras:r,withController:a,withDestination:i,withExposure:s,withExposureErasStakersLegacy:o,withExposureMeta:c,withLedger:d,withNominations:u,withPrefs:l},f){const p=e.registry.createType("Option"),h=e.registry.createType("RewardDestination"),b=e.registry.createType("Exposure"),m=e.registry.createType("ValidatorPrefs"),y=e.registry.createType("Option"),x=e.registry.createType("Option"),g=[-1],v=Number(e.consts.staking.historyDepth.toNumber()),w=new Array(v).fill(0).map(((e,t)=>0===t?n.toNumber()-1:n.toNumber()-t-1));return Rh([a||d?Rh(t.map((t=>e.query.staking.bonded(t)))):Le(t.map((()=>null))),u?Rh(t.map((t=>e.query.staking.nominators(t)))):Le(t.map((()=>p))),i?Rh(t.map((t=>e.query.staking.payee(t)))):Le(t.map((()=>h))),l?Rh(t.map((t=>e.query.staking.validators(t)))):Le(t.map((()=>m))),s&&e.query.staking.erasStakersPaged?Rh(t.map((t=>e.query.staking.erasStakersPaged(n,t,f)))):Le(t.map((()=>y))),c&&e.query.staking.erasStakersOverview?Rh(t.map((t=>e.query.staking.erasStakersOverview(n,t)))):Le(t.map((()=>x))),r&&e.query.staking.claimedRewards?Rh([e.query.staking.claimedRewards.entries(),e.query.staking.erasStakersOverview.entries()]).pipe(ze((([e,n])=>function(e,t,n,r){const a={},i={},s=e.map((e=>e.toString()));return n.forEach((([e,t])=>{const n=e.args[1].toString(),r=e.args[0].toNumber();s.includes(n)&&(a[n]||(a[n]=new Map),a[n].set(r,t.toArray()))})),r.forEach((([e,t])=>{const n=e.args[1].toString(),r=e.args[0].toNumber();s.includes(n)&&t.isSome&&(i[n]||(i[n]=new Map),i[n].set(r,t.unwrap().pageCount))})),e.map((e=>{const n=a[e.toString()],r=i[e.toString()];return t.map((e=>{if(n&&n.has(e)&&r&&r.has(e)){const t=n.get(e),a=r.get(e);return t.length===a.toNumber()?e:-1}return-1}))}))}(t,w,e,n)))):Le(t.map((()=>g))),o&&e.query.staking.erasStakers?Rh(t.map((t=>e.query.staking.erasStakers(n,t)))):Le(t.map((()=>b)))])}function Cg(e,t,n,r,a){return Ag(e,n,t,r,a).pipe(Ie((([t,a,i,s,o,c,d,u])=>function(e,t,{withLedger:n=!1}){const r=t.filter((e=>n&&!!e&&e.isSome)).map((e=>e.unwrap())),a=e.registry.createType("Option");return(r.length?Rh(r.map((t=>e.query.staking.ledger(t)))):Le([])).pipe(ze((e=>{let n=-1;return t.map((t=>t&&t.isSome&&e[++n]||a))})))}(e,t,r).pipe(ze((r=>n.map(((n,l)=>function(e,t,n,r,a,i,s,o,c,d,u){return{accountId:t,claimedRewardsEras:Og(e,d),controllerId:n?.unwrapOr(null)||null,exposureEraStakers:u,exposureMeta:c,exposurePaged:s,nominators:r.isSome?r.unwrap().targets:[],rewardDestination:(l=a,"boolean"==typeof l.isSome?l.unwrapOr(null):l),stakingLedger:o.unwrapOrDefault(),stashId:t,validatorPrefs:i};var l}(e,n,t[l],a[l],i[l],s[l],o[l],r[l],c[l],d[l],u[l])))))))))}const Hg=Sb(((e,t,n,r)=>e.derive.staking.queryMulti([t],n,r)));function Rg(e,t){return xb(e,((e,n,r)=>t.derive.session.indexes().pipe(Ie((({activeEra:a})=>{const i=e.map((e=>t.registry.createType("AccountId",e))),s=r||0;return i.length?Cg(t,a,i,n,s):Le([])})))))}function Bg(e,t){return xb(e,((e,n,r=!1)=>{const a=e.map((e=>t.registry.createType("AccountId",e).toString()));return t.derive.staking._erasExposure(n,r).pipe(ze((e=>a.map((t=>e.map((({era:e,nominators:n,validators:r})=>{const a=!!r[t],i={},s=n[t]||[];return a?i[t]=r[t]:s&&s.forEach((({validatorId:e})=>{i[e]=r[e]})),{era:e,isEmpty:!Object.keys(i).length,isValidator:a,nominating:s,validators:i}})))))))}))}function Lg(e,t){return xb(e,((e,n=!1)=>t.derive.staking.erasHistoric(n).pipe(Ie((r=>t.derive.staking._stakerExposures(e,r,n))))))}const zg=Sb(((e,t,n)=>e.derive.staking.stakerExposures([t],n)));function Ug(e,t){return xb(e,((e,n,r)=>{const a=t.registry.createType("AccountId",e).toString();return t.derive.staking._erasPoints(n,r).pipe(ze((e=>e.map((({era:e,eraPoints:n,validators:r})=>({era:e,eraPoints:n,points:r[a]||t.registry.createType("RewardPoint")}))))))}))}const Dg=Yx("_stakerPoints");function qg(e,t){return xb(e,((e,n,r)=>t.query.staking.erasValidatorPrefs.multi(n.map((t=>[t,e]))).pipe(ze((e=>e.map(((e,t)=>({era:n[t],validatorPrefs:e}))))))))}const jg=Yx("_stakerPrefs");function Fg(e,t){const n=t?(t.legacyClaimedRewards||t.claimedRewards).toArray():[];return e.toArray().concat(n)}function Xg(e,t,{claimedRewardsEras:n,rewards:r,stakingLedger:a}){const i=e.filter((e=>!Fg(n,a).some((t=>t.eq(e))))),s=t.map((([e])=>e)),o=t.map((([,e])=>e));return r.filter((({isEmpty:e})=>!e)).filter((e=>!!i.some((t=>e.era.eq(t)))&&(function(e,t,n,r){const a=[];Object.keys(n.validators).forEach((i=>{const s=e.indexOf(i);if(-1!==s){const e=t[s].stakingLedger;Fg(r,e).some((e=>n.era.eq(e)))&&a.push(i)}})),a.forEach((e=>{delete n.validators[e]}))}(s,o,e,n),!0))).filter((({validators:e})=>0!==Object.keys(e).length)).map((e=>{let t=e.isClaimed;const n=Object.keys(e.validators);if(!e.isClaimed&&n.length)for(const r of n){const n=o.find((e=>e.accountId.toString()===r));if(n){t=n.claimedRewardsEras.toArray().some((t=>t.eq(e.era)));break}}return(0,M.b)({},e,{isClaimed:t,nominators:e.nominating.filter((t=>e.validators[t.validatorId]))})}))}function Wg(e,t){return xb(e,((e,n=!1)=>Rh([t.derive.staking._erasPoints(e,n),t.derive.staking._erasPrefs(e,n),t.derive.staking._erasRewards(e,n)])))}function Zg(e,t){return xb(e,((e,n,r=!1)=>{const a=n.map((e=>"number"==typeof e||"string"==typeof e?t.registry.createType("u32",e):e));return Rh([t.derive.staking.queryMulti(e,{withClaimedRewardsEras:!0,withLedger:!0}),t.derive.staking._stakerExposures(e,a,r),t.derive.staking._stakerRewardsEras(a,r)]).pipe(Ie((([e,a,i])=>{const s=e.map((({claimedRewardsEras:e,stakingLedger:n,stashId:r},s)=>r&&(n||e)?function(e,t,[n,r,a],i,s){return i.map((({era:i,isEmpty:o,isValidator:c,nominating:d,validators:u})=>{const{eraPoints:l,validators:f}=n.find((e=>e.era.eq(i)))||{eraPoints:lt,validators:{}},{eraReward:p}=a.find((e=>e.era.eq(i)))||{eraReward:e.registry.createType("Balance")},{validators:h}=r.find((e=>e.era.eq(i)))||{validators:{}},b={},m=t.toString();return Object.entries(u).forEach((([t,n])=>{const r=f[t]||lt,a=h[t]?.commission.unwrap()||lt,i=n.total?n.total?.unwrap():n.pageTotal?n.pageTotal?.unwrap():lt;let s,o=lt;if(!(i.isZero()||r.isZero()||l.isZero())){o=p.mul(r).div(l);const e=a.mul(o).div(mt);let c;if(t===m)if(n.own)c=n.own.unwrap();else{const e=n.others.find((({who:e})=>e.eq(t)));c=e?e.value.unwrap():lt}else{const e=n.others.find((({who:e})=>e.eq(m)));c=e?e.value.unwrap():lt}s=o.sub(e).imul(c).div(i).iadd(t===m?e:lt)}b[t]={total:e.registry.createType("Balance",o),value:e.registry.createType("Balance",s)}})),{era:i,eraReward:p,isClaimed:s.some((e=>e.eq(i))),isEmpty:o,isValidator:c,nominating:d,validators:b}}))}(t,r,i,a[s],e):[]));if(r)return Le(s);const[o,c]=s.reduce((([e,t],n)=>{const r=[];return t.push(r),n.forEach((({validators:t})=>Object.keys(t).forEach((t=>{r.includes(t)||(r.push(t),e.includes(t)||e.push(t))})))),[e,t]}),[[],[]]);return t.derive.staking.queryMulti(o,{withClaimedRewardsEras:!0,withLedger:!0}).pipe(ze((t=>e.map((({claimedRewardsEras:e,stakingLedger:r},a)=>Xg(n,c[a].map((e=>[e,t.find((t=>t.accountId.eq(e)))])).filter((e=>!!e[1])),{claimedRewardsEras:e,rewards:s[a],stakingLedger:r}))))))})))}))}const Gg=Sb(((e,t,n)=>e.derive.staking.erasHistoric(n).pipe(Ie((r=>e.derive.staking._stakerRewards([t],r,n))))));function Kg(e,t){return xb(e,((e,n)=>e.length&&n.length?t.derive.staking._stakerRewards(e,n,!1):Le([])))}function Jg(e,t){return xb(e,((e,n=!1)=>t.derive.staking.erasHistoric(n).pipe(Ie((n=>t.derive.staking.stakerRewardsMultiEras(e,n))))))}function Yg(e,t){return xb(e,((e,n,r)=>{const a=t.registry.createType("AccountId",e).toString();return t.derive.staking._erasSlashes(n,r).pipe(ze((e=>e.map((({era:e,nominators:n,validators:r})=>({era:e,total:n[a]||r[a]||t.registry.createType("Balance")}))))))}))}const Qg=Yx("_stakerSlashes");function $g(e,t){return xb(e,(()=>function(e){let t=Date.now();return e.query.system.events().pipe(ze((e=>(t=e.filter((({event:e,phase:t})=>{try{return t.isApplyExtrinsic&&"staking"===e.section&&"Bonded"===e.method}catch{return!1}}))?Date.now():t,t))),Rb(t),yb({skipTimeout:!0}))}(t).pipe(Ie((()=>t.query.staking.validators.keys())),ze((e=>e.map((({args:[e]})=>e)).filter((e=>e)))))))}function ev(e,t){return xb(e,(()=>t.query.staking.erasStakersOverview?t.derive.session.indexes().pipe(Ie((({currentEra:e})=>t.query.staking.erasStakersOverview.keys(e))),ze((e=>[...new Set(e.map((({args:[,e]})=>e.toString())))].map((e=>t.registry.createType("AccountId",e)))))):t.query.staking.erasStakers?t.derive.session.indexes().pipe(Ie((({currentEra:e})=>t.query.staking.erasStakers.keys(e))),ze((e=>[...new Set(e.map((({args:[,e]})=>e.toString())))].map((e=>t.registry.createType("AccountId",e)))))):t.query.staking.currentElected()))}function tv(e,t){return xb(e,(()=>Rh([t.query.session?t.query.session.validators():Le([]),t.query.staking?t.derive.staking.nextElected():Le([])]).pipe(ze((([e,t])=>({nextElected:t.length?t:e,validators:e}))))))}const nv={withController:!0,withPrefs:!0};function rv(e,t){return xb(e,((e=nv)=>Rh([t.derive.staking.validators(),t.derive.staking.stashes()]).pipe(Ie((([{nextElected:n},r])=>{const a=n.map((e=>e.toString())),i=r.filter((e=>!a.includes(e.toString())));return t.derive.staking.queryMulti(i,e).pipe(ze((e=>({info:e,waiting:i}))))})))))}const av=Fb("technicalCommittee"),iv=Wb("technicalCommittee"),sv=Gb("technicalCommittee"),ov=Kb("technicalCommittee"),cv=Jb("technicalCommittee"),dv=Zb("technicalCommittee"),uv=Yb("technicalCommittee");function lv(e,t){return xb(e,(()=>t.query.treasury?Rh([t.query.treasury.proposalCount(),t.query.treasury.approvals()]).pipe(Ie((([e,n])=>function(e,t,n){const r=[],a=t.toNumber();for(let s=0;se.eqn(s)))||r.push(e.registry.createType("ProposalIndex",s));const i=[...r,...n];return Rh([e.query.treasury.proposals.multi(i),e.derive.council?e.derive.council.proposals():Le([])]).pipe(ze((([r,a])=>function(e,{allIds:t,allProposals:n,approvalIds:r,councilProposals:a,proposalCount:i}){const s=[],o=[],c=a.filter((({proposal:t})=>t&&(e.tx.treasury.approveProposal&&e.tx.treasury.approveProposal.is(t)||e.tx.treasury.rejectProposal&&e.tx.treasury.rejectProposal.is(t))));return t.forEach(((e,t)=>{if(n[t].isSome){const a=c.filter((({proposal:t})=>t&&e.eq(t.args[0]))).sort(((e,t)=>e.proposal&&t.proposal?e.proposal.method.localeCompare(t.proposal.method):e.proposal?-1:1)),i=r.some((t=>t.eq(e))),d={council:a,id:e,proposal:n[t].unwrap()};i?s.push(d):o.push(d)}})),{approvals:s,proposalCount:i,proposals:o}}(e,{allIds:i,allProposals:r,approvalIds:n,councilProposals:a,proposalCount:t}))))}(t,e,n)))):Le({approvals:[],proposalCount:t.registry.createType("ProposalIndex"),proposals:[]})))}function fv(e,t){return xb(e,(e=>Rh([t.rpc.chain.getBlock(e),t.queryAt(e).pipe(Ie((e=>e.system.events())))]).pipe(ze((([e,t])=>({block:e,events:t}))))))}const pv=250,hv=new st(6e3),bv=new st(5),mv=new st(3e5);function yv(e,t){return e.derive.balances.account(t).pipe(ze((({accountNonce:e})=>e)))}function xv(e,t){return e.call.accountNonceApi?e.call.accountNonceApi.accountNonce(t):e.rpc.system?.accountNextIndex?e.rpc.system.accountNextIndex(t):yv(e,t)}function gv(e){return Rh([e.rpc.chain.getHeader().pipe(Ie((t=>t.parentHash.isEmpty?Le(t):e.rpc.chain.getHeader(t.parentHash).pipe(Xh((()=>Le(t))))))),e.rpc.chain.getFinalizedHead().pipe(Ie((t=>e.rpc.chain.getHeader(t).pipe(Xh((()=>Le(null)))))))]).pipe(ze((([e,t])=>!t||Bm(e).sub(Bm(t)).gt(bv)?e:t)))}function vv(e){const t=e.consts.babe?.expectedBlockTime||e.consts.aura?.slotDuration||e.consts.timestamp?.minimumPeriod.muln(2);return t&&t.isZero&&!t.isZero()?t:void 0}function wv(e,t){return(e,n,r)=>Rh([(0,Fe.b)(n)?yv(t,e):-1===n?xv(t,e):Le(t.registry.createType("Index",n)),(0,Fe.b)(r)||(0,Lt.E)(r)&&r>0?gv(t):Le(null)]).pipe(ze((([e,n])=>({header:n,mortalLength:Math.min(t.consts.system?.blockHashCount?.toNumber()||pv,mv.div(vv(t)||hv).iadd(bv).toNumber()),nonce:e}))))}const Vv={accounts:o,alliance:c,bagsList:d,balances:u,bounties:l,chain:f,contracts:p,council:h,crowdloan:b,democracy:m,elections:y,imOnline:x,membership:g,parachains:v,session:w,society:V,staking:T,technicalCommittee:S,treasury:k,tx:_},Tv={allianceMotion:{instances:["allianceMotion"],methods:[]},bagsList:{instances:["voterBagsList","voterList","bagsList"],methods:[],withDetect:!0},contracts:{instances:["contracts"],methods:[]},council:{instances:["council"],methods:[],withDetect:!0},crowdloan:{instances:["crowdloan"],methods:[]},democracy:{instances:["democracy"],methods:[]},elections:{instances:["phragmenElection","electionsPhragmen","elections","council"],methods:[],withDetect:!0},imOnline:{instances:["imOnline"],methods:[]},membership:{instances:["membership"],methods:[]},parachains:{instances:["parachains","registrar"],methods:[]},session:{instances:["session"],methods:[]},society:{instances:["society"],methods:[]},staking:{instances:["staking"],methods:["erasRewardPoints"]},technicalCommittee:{instances:["technicalCommittee"],methods:[],withDetect:!0},treasury:{instances:["treasury"],methods:[]}};function Sv(e,t,n){const r={},a=Object.keys(n),i=Object.keys(t.query),s=t.runtimeVersion.specName,o=e=>i.includes(e),c=e=>function(e,t,n){return e.registry.getModuleInstances(t,n)||[]}(t,s,e).some(o),d=e=>Object.keys(n[e]),u=(r,a)=>n[r][a](e,t),l=e=>{return!Tv[e]||Tv[e].instances.some(o)&&(!Tv[e].methods.length||Tv[e].methods.every((n=Tv[e].instances,e=>n.some((n=>i.includes(n)&&t.query[n][e])))))||Tv[e].withDetect&&Tv[e].instances.some(c);var n};for(let f=0,p=a.length;fObject.entries(i[e].rpc||{}).forEach((([t,n])=>{const r=n.aliasSection||e;_v[r]||(_v[r]={}),_v[r][t]=(0,M.b)({},n,{isSubscription:!!n.pubsub,jsonrpc:`${r}_${t}`,method:t,section:r})}))));const Pv=_v,Mv=(0,it.v)("rpc-core"),Iv={fallback:void 0,modifier:{isOptional:!0},type:{asMap:{linked:{isTrue:!1}},isMap:!1}};function Nv(e,{noErrorLog:t,params:n,type:r},a){t||Mv.error(`${e}(${n.map((({isOptional:e,name:t,type:n})=>`${t}${e?"?":""}: ${n}`)).join(", ")}): ${r}:: ${a.message}`)}function Ev(e){return["0x3a636f6465"].includes(e.toHex())}class Ov{__internal__instanceId;__internal__isPedantic;__internal__registryDefault;__internal__storageCache;__internal__storageCacheHits=0;__internal__getBlockRegistry;__internal__getBlockHash;mapping=new Map;provider;sections=[];constructor(e,t,{isPedantic:n=!0,provider:r,rpcCacheCapacity:a,userRpc:i={}}){if(!r||!(0,qe.T)(r.send))throw new Error("Expected Provider to API create");this.__internal__instanceId=e,this.__internal__isPedantic=n,this.__internal__registryDefault=t,this.provider=r;const s=Object.keys(Pv);this.sections.push(...s),this.__internal__storageCache=new kv.q(a||102400),this.addUserInterfaces(i)}get isConnected(){return this.provider.isConnected}connect(){return this.provider.connect()}async disconnect(){return this.provider.disconnect()}get stats(){const e=this.provider.stats;return e?{...e,core:{cacheHits:this.__internal__storageCacheHits,cacheSize:this.__internal__storageCache.length}}:void 0}setRegistrySwap(e){this.__internal__getBlockRegistry=Fh(e,{getInstanceId:()=>this.__internal__instanceId})}setResolveBlockHash(e){this.__internal__getBlockHash=Fh(e,{getInstanceId:()=>this.__internal__instanceId})}addUserInterfaces(e){this.sections.push(...Object.keys(e).filter((e=>!this.sections.includes(e))));for(let t=0,n=this.sections.length;te?this._createMethodSubscribe(n,t,i):this._createMethodSend(n,t,i)))}}}}_memomize(e,t){const n={getInstanceId:()=>this.__internal__instanceId},r=Fh(e(!0),n);return r.raw=Fh(e(!1),n),r.meta=t,r}_formatResult(e,t,n,r,a,i,s){return e?this._formatOutput(t,n,r,a,i,s):s}_createMethodSend(e,t,n){const r=n.endpoint||`${e}_${t}`,a=n.params.findIndex((({isHistoric:e})=>e));let i=null;const s=async(e,i)=>{const s=-1===a?null:i[a],o=s&&"BlockNumber"===n.params[a].type?await(this.__internal__getBlockHash?.(s)):s,{registry:c}=e&&o&&this.__internal__getBlockRegistry?await this.__internal__getBlockRegistry((0,E.e)(o)):{registry:this.__internal__registryDefault},d=this._formatParams(c,null,n,i),u=await this.provider.send(r,d.map((e=>e.toJSON())),!!o);return this._formatResult(e,c,o,t,n,d,u)};return i=this._memomize((e=>(...r)=>{const o=e&&-1!==a&&!!r[a];return new he((a=>(s(e,r).then((e=>{a.next(e),a.complete()})).catch((e=>{Nv(t,n,e),a.error(e),a.complete()})),()=>{e?i?.unmemoize(...r):i?.raw.unmemoize(...r)}))).pipe($h(1),o?pb():Kh())}),n),i}_createSubscriber({paramsJson:e,subName:t,subType:n,update:r},a){return new Promise(((i,s)=>{this.provider.subscribe(n,t,e,r).then(i).catch((e=>{a(e),s(e)}))}))}_createMethodSubscribe(e,t,n){const[r,a,i]=n.pubsub,s=`${e}_${a}`,o=`${e}_${i}`,c=`${e}_${r}`;let d=null;return d=this._memomize((e=>(...r)=>new he((a=>{let i=Promise.resolve(null);const u=this.__internal__registryDefault,l=e=>{Nv(t,n,e),a.error(e)};try{const o=this._formatParams(u,null,n,r),d=(r,i)=>{if(r)Nv(t,n,r);else try{a.next(this._formatResult(e,u,null,t,n,o,i))}catch(r){a.error(r)}};i=this._createSubscriber({paramsJson:o.map((e=>e.toJSON())),subName:s,subType:c,update:d},l)}catch(f){l(f)}return()=>{e?d?.unmemoize(...r):d?.raw.unmemoize(...r),i.then((e=>(0,Kt.k)(e)?Promise.resolve(!1):this.provider.unsubscribe(c,o,e))).catch((e=>Nv(t,n,e)))}})).pipe(yb())),n),d}_formatParams(e,t,n,r){const a=r.length,i=n.params.filter((({isOptional:e})=>!e)).length;if(an.params.length)throw new Error(`Expected ${n.params.length} parameters${i===n.params.length?"":` (${n.params.length-i} optional)`}, ${a} found instead`);const s=new Array(a);for(let o=0;o"===r.type){const t=i,r=t.length,s=new Array(r);for(let n=0;ne===s)),c=(0,Fe.b)(o);if(c&&a){const e=this.__internal__storageCache.get(s);if(e)return this.__internal__storageCacheHits++,e}const d=c?null:o[1],u=(0,Kt.k)(d),l=u||Ev(n)?d:(0,E.e)(d),f=this._newType(e,t,n,l,u,i);return this._setToCache(s,f),f}_setToCache(e,t){this.__internal__storageCache.set(e,t)}_newType(e,t,n,r,a,i=-1){const s=n.outputType||"Raw",o=n.meta||Iv,c=-1===i?"":` entry ${i}:`;try{return e.createTypeUnsafe(s,[a?o.fallback?s.includes("Linkage<")?Mt((0,es.V)(o.fallback.toHex()),new Uint8Array(2)):(0,es.V)(o.fallback.toHex()):void 0:o.modifier.isOptional?e.createTypeUnsafe(s,[r],{blockHash:t,isPedantic:this.__internal__isPedantic}):r],{blockHash:t,isFallback:a&&!!o.fallback,isOptional:o.modifier.isOptional,isPedantic:this.__internal__isPedantic&&!o.modifier.isOptional})}catch(d){throw new Error(`Unable to decode storage ${n.section||"unknown"}.${n.method||"unknown"}:${c}: ${d.message}`)}}}var Av=n(19588),Cv=n(98967);const Hv=(0,Cv.Q)(0),Rv=(0,Cv.Q)(1),Bv=(Number.MAX_SAFE_INTEGER,(0,Cv.Q)("11400714785074694791")),Lv=(0,Cv.Q)("14029467366897019727"),zv=(0,Cv.Q)("1609587929392839161"),Uv=(0,Cv.Q)("9650029242287828579"),Dv=(0,Cv.Q)("2870177450012600261"),qv=(0,Cv.Q)("0xffffffffffffffff"),jv=(0,Cv.Q)(7),Fv=(0,Cv.Q)(11),Xv=(0,Cv.Q)(12),Wv=(0,Cv.Q)(16),Zv=(0,Cv.Q)(18),Gv=(0,Cv.Q)(23),Kv=(0,Cv.Q)(27),Jv=(0,Cv.Q)(29),Yv=(0,Cv.Q)(31),Qv=(0,Cv.Q)(32),$v=(0,Cv.Q)(33),ew=(0,Cv.Q)(64),tw=(0,Cv.Q)(256);function nw(e,t){const n=e&qv;return(n<>ew-t)&qv}function rw(e,t,n){const r=new Array(n);let a=0;for(let s=0;s=0;s--)i=(i<=0){const e=e=>Bv*nw(e+Lv*rw(t,a,4),Yv);do{n.v1=e(n.v1),a+=8,n.v2=e(n.v2),a+=8,n.v3=e(n.v3),a+=8,n.v4=e(n.v4),a+=8}while(a<=r)}return a=32?((((nw(i,Rv)+nw(s,jv)+nw(o,Xv)+nw(c,Zv)^Bv*nw(i*Lv,Yv))*Bv+Uv^Bv*nw(s*Lv,Yv))*Bv+Uv^Bv*nw(o*Lv,Yv))*Bv+Uv^Bv*nw(c*Lv,Yv))*Bv+Uv:n+Dv);for(;d<=a-8;)u=qv&Uv+Bv*nw(u^Bv*nw(Lv*rw(r,d,4),Yv),Kv),d+=8;for(d+4<=a&&(u=qv&zv+Lv*nw(u^Bv*rw(r,d,2),Gv),d+=4);d>$v),u=qv&zv*(u^u>>Jv),u=qv&(u^u>>Qv);const l=new Uint8Array(8);for(let f=7;f>=0;f--)l[f]=Number(u%tw),u/=tw;return l}function iw(e,t=64,n){const r=Math.ceil(t/64),a=(0,E.e)(e);if(!Ba.CW||!n&&Ti())return Vi(a,r);const i=new Uint8Array(8*r);for(let s=0;siw(e,128),ow={Blake2_128:e=>Pi(e,128),Blake2_128Concat:e=>Mt(Pi(e,128),(0,E.e)(e)),Blake2_256:e=>Pi(e,256),Identity:e=>(0,E.e)(e),Twox128:e=>iw(e,128),Twox256:e=>iw(e,256),Twox64Concat:e=>Mt(iw(e,64),(0,E.e)(e))};const cw={args:[],hashers:[],keys:[]};function dw(e){return!(0,Fe.b)(e)}function uw({method:e,section:t},{args:n,keys:r}){if(!Array.isArray(n))throw new Error(`Call to ${jt(t||"unknown")}.${jt(e||"unknown")} needs ${r.length} arguments`);if(n.filter(dw).length!==r.length)throw new Error(`Call to ${jt(t||"unknown")}.${jt(e||"unknown")} needs ${r.length} arguments, found [${n.join(", ")}]`)}function lw(e,t,{args:n,hashers:r,keys:a}){const i=a.length,s=new Array(i);for(let c=0;c`${t[r].type}(${du(e.lookup,n)})`))}const o=["module","method"].concat(...n.args.map(((e,t)=>s[t])));return{inner:a.concat(...i).map(((e,t)=>({name:o[t],outer:[e]})))}}function pw(e,t,n){const[r,a]=lw(e,t,n);return Mt(...r,...a)}function hw(e,t,n){return uw(t,n),ar(pw(e,t,n))}function bw(e,t,n){const{meta:r,method:a,prefix:i,section:s}=t,o=function(e,t,n){const{meta:{type:r}}=t;let a=null;return(...i)=>{if(r.isPlain)return a||(a=n.skipHashing?ar((0,E.e)(n.key)):hw(e,t,cw)),a;const{hashers:s,key:o}=r.asMap;return 1===s.length?hw(e,t,{args:i,hashers:s,keys:[o]}):hw(e,t,{args:i,hashers:s,keys:e.lookup.getSiType(o).def.asTuple})}}(e,t,n);return o.inspect=function(e,t,n){const{meta:{type:r}}=t;return(...a)=>{if(r.isPlain)return n.skipHashing?{inner:[],name:"wellKnown",outer:[(0,E.e)(n.key)]}:fw(e,t,cw);const{hashers:i,key:s}=r.asMap;return 1===i.length?fw(e,t,{args:a,hashers:i,keys:[s]}):fw(e,t,{args:a,hashers:i,keys:e.lookup.getSiType(s).def.asTuple})}}(e,t,n),o.meta=r,o.method=jt(a),o.prefix=i,o.section=s,o.toJSON=()=>(0,M.b)({storage:{method:a,prefix:i,section:s}},r.toJSON()),o}function mw(e,t,n){const{meta:{type:r}}=t,a=bw(e,t,n);return r.isMap&&function(e,t,n){const{meta:{type:r},method:a,section:i}=t;n.iterKey=function(e,{meta:{docs:t,name:n,type:r},section:a},{method:i},s){const o=e.createTypeUnsafe("StorageEntryMetadataLatest",[{docs:t,fallback:e.createTypeUnsafe("Bytes",[]),modifier:e.createTypeUnsafe("StorageEntryModifierLatest",[1]),name:n,type:e.createTypeUnsafe("StorageEntryTypeLatest",[r.asMap.key,0])}]);s.meta=o;const c=(...t)=>e.createTypeUnsafe("StorageKey",[s(...t),{method:i,section:a}]);return c.meta=o,c}(e,t,n,((...n)=>{if(n.length&&(r.isPlain||n.length>=r.asMap.hashers.length))throw new Error(`Iteration of ${jt(i||"unknown")}.${jt(a||"unknown")} needs arguments to be at least one less than the full arguments, found [${n.join(", ")}]`);if(n.length&&r.isMap){const{hashers:a,key:i}=r.asMap,s=1===a.length?[i]:e.lookup.getSiType(i).def.asTuple;return new rt(e,pw(e,t,{args:n,hashers:a.slice(0,n.length),keys:s.slice(0,n.length)}))}return new rt(e,pw(e,t,cw))}))}(e,t,a),a.keyPrefix=(...e)=>a.iterKey&&a.iterKey(...e)||pr(a())[1],a}function yw(e,t){const n=t.toLowerCase();return e.lookup.types.find((e=>e.type.def.isPrimitive&&e.type.def.asPrimitive.toString().toLowerCase()===n||e.type.def.isHistoricMetaCompat&&e.type.def.asHistoricMetaCompat.toString().toLowerCase()===n))}function xw(e,t){let n=yw(e,t);if(!n&&("Bytes"===t||t.startsWith("[u8;"))){const r=yw(e,"u8");if(r)if("Bytes"===t)n=e.lookup.types.find((e=>e.type.def.isSequence&&e.type.def.asSequence.type.eq(r.id)||e.type.def.isHistoricMetaCompat&&e.type.def.asHistoricMetaCompat.eq(t)));else{const a=Rr(t);n=e.lookup.types.find((e=>e.type.def.isArray&&e.type.def.asArray.eq({len:a.length,type:r.id})||e.type.def.isHistoricMetaCompat&&e.type.def.asHistoricMetaCompat.eq(t)))}}return n||console.warn(`Unable to map ${t} to a lookup index`),n}function gw({method:e,prefix:t,section:n},r,{docs:a,type:i}){return s=>mw(s,{meta:s.createTypeUnsafe("StorageEntryMetadataLatest",[{docs:s.createTypeUnsafe("Vec",[[a]]),modifier:s.createTypeUnsafe("StorageEntryModifierLatest",["Required"]),name:s.createTypeUnsafe("Text",[e]),toJSON:()=>r,type:s.createTypeUnsafe("StorageEntryTypeLatest",[{Plain:xw(s,i)?.id||0}])}]),method:e,prefix:t,section:n},{key:r,skipHashing:!0})}function vw(e,t,n){return gw({method:e,prefix:"Substrate",section:"substrate"},t,n)}const ww={changesTrieConfig:vw("changesTrieConfig",":changes_trie",{docs:"Changes trie configuration is stored under this key.",type:"u32"}),childStorageKeyPrefix:vw("childStorageKeyPrefix",":child_storage:",{docs:"Prefix of child storage keys.",type:"u32"}),code:vw("code",":code",{docs:"Wasm code of the runtime.",type:"Bytes"}),extrinsicIndex:vw("extrinsicIndex",":extrinsic_index",{docs:"Current extrinsic index (u32) is stored under this key.",type:"u32"}),heapPages:vw("heapPages",":heappages",{docs:"Number of wasm linear memory pages required for execution of the runtime.",type:"u64"}),intrablockEntropy:vw("intrablockEntropy",":intrablock_entropy",{docs:"Current intra-block entropy (a universally unique `[u8; 32]` value) is stored here.",type:"[u8; 32]"})};const Vw={docs:"Returns the current pallet version from storage",type:"u16"};function Tw(e,{pallets:t},n){const r=function(e){const t={},n=Object.entries(ww);for(let r=0,a=n.length;r$r({palletVersion:gw({method:"palletVersion",prefix:o,section:t},pw(e,{method:":__STORAGE_VERSION__:",prefix:n.toString()},cw),Vw)(e)},a,(n=>mw(e,{meta:n,method:n.name.toString(),prefix:o,section:t},{})),_f)))}}return r}function Sw(e){return t=>t?e[t.charCodeAt(0)]+t.slice(1):""}const kw=Sw(zt);function _w(){return new B}function Pw(e,t){var n=arguments.length>=2;return function(r){return r.pipe(e?function(e,t){return _e((function(n,r){var a=0;n.subscribe(Pe(r,(function(n){return e.call(t,n,a++)&&r.next(n)})))}))}((function(t,n){return e(t,n,r)})):fe,(i=1)<=0?function(){return py}:_e((function(e,t){var n=0;e.subscribe(Pe(t,(function(e){++n<=i&&(t.next(e),i<=n&&t.complete())})))})),n?function(e){return _e((function(t,n){var r=!1;t.subscribe(Pe(n,(function(e){r=!0,n.next(e)}),(function(){r||n.next(e),n.complete()})))}))}(t):(void 0===(a=function(){return new B})&&(a=_w),_e((function(e,t){var n=!1;e.subscribe(Pe(t,(function(e){n=!0,t.next(e)}),(function(){return n?t.complete():t.error(a())})))}))));var a,i}}function Mw(e){return(0,qe.T)(e.sign)}const Iw=(0,it.v)("api/util");function Nw(e,{block:{extrinsics:t,header:n}},r,a){for(const[i,s]of t.entries())if(s.hash.eq(e))return{blockNumber:Rm(n.number)?n.number.unwrap():n.number,events:r.filter((({phase:e})=>e.isApplyExtrinsic&&e.asApplyExtrinsic.eqn(i))),txIndex:i};if(a.isInBlock){const r=t.map((e=>e.hash.toHex()));Iw.warn(`block ${n.hash.toHex()}: Unable to find extrinsic ${e.toHex()} inside ${r.join(", ")}`)}return{}}const Ew=e=>e;function Ow(e,t,n,r){return e.filter((({event:e})=>t===e.section&&n.includes(e.method))).map((e=>r(e)))}function Aw({event:{data:[e]}}){return e}function Cw({event:{data:e,method:t}}){return"ExtrinsicSuccess"===t?e[0]:e[1]}class Hw{dispatchError;dispatchInfo;internalError;events;status;txHash;txIndex;blockNumber;constructor({blockNumber:e,dispatchError:t,dispatchInfo:n,events:r,internalError:a,status:i,txHash:s,txIndex:o}){this.dispatchError=t||function(e=[]){return Ow(e,"system",["ExtrinsicFailed"],Aw)[0]}(r),this.dispatchInfo=n||function(e=[]){return Ow(e,"system",["ExtrinsicFailed","ExtrinsicSuccess"],Cw)[0]}(r),this.events=r||[],this.internalError=a,this.status=i,this.txHash=s,this.txIndex=o,this.blockNumber=e}get isCompleted(){return this.isError||this.status.isInBlock||this.status.isFinalized}get isError(){return this.status.isDropped||this.status.isFinalityTimeout||this.status.isInvalid||this.status.isUsurped}get isFinalized(){return this.status.isFinalized}get isInBlock(){return this.status.isInBlock}get isWarning(){return this.status.isRetracted}filterRecords(e,t){return Ow(this.events,e,Array.isArray(t)?t:[t],Ew)}findRecord(e,t){return this.filterRecords(e,t)[0]}toHuman(e){return{dispatchError:this.dispatchError?.toHuman(),dispatchInfo:this.dispatchInfo?.toHuman(),events:this.events.map((t=>t.toHuman(e))),internalError:this.internalError?.message.toString(),status:this.status.toHuman(e)}}}function Rw(e,t,n,{header:r,mortalLength:a,nonce:i}){if(!r){if(n.era&&!n.blockHash)throw new Error("Expected blockHash to be passed alongside non-immortal era options");return(0,Lt.E)(n.era)&&(delete n.era,delete n.blockHash),Lw(e,n,{nonce:i})}return Lw(e,n,{blockHash:r.hash,era:t.createTypeUnsafe("ExtrinsicEra",[{current:r.number,period:n.era||a}]),nonce:i})}function Bw(e,t){let n={};return(0,qe.T)(e)?t=e:n=(0,M.b)({},e),[n,t]}function Lw(e,t,n){return(0,M.b)({blockHash:e.genesisHash,genesisHash:e.genesisHash},t,n,{runtimeVersion:e.runtimeVersion,signedExtensions:e.registry.signedExtensions,version:e.extrinsicType})}function zw({api:e,apiType:t,blockHash:n,decorateMethod:r}){const a=e.registry.createClass("Extrinsic");return class extends a{__internal__ignoreStatusCb;__internal__transformResult=P.D;constructor(n,r){super(n,r,{version:e.extrinsicType}),this.__internal__ignoreStatusCb="rxjs"===t}get hasDryRun(){return(0,qe.T)(e.rpc.system?.dryRun)}get hasPaymentInfo(){return(0,qe.T)(e.call.transactionPaymentApi?.queryInfo)}dryRun(t,a){if(!this.hasDryRun)throw new Error("The system.dryRun RPC call is not available in your environment");return n||(0,I.K)(a)||(0,ut.b)(a)?r((()=>e.rpc.system.dryRun(this.toHex(),n||a))):r((()=>this.__internal__observeSign(t,a).pipe(Ie((()=>e.rpc.system.dryRun(this.toHex()))))))()}paymentInfo(t,a){if(!this.hasPaymentInfo)throw new Error("The transactionPaymentApi.queryInfo runtime call is not available in your environment");if(n||(0,I.K)(a)||(0,ut.b)(a))return r((()=>e.callAt(n||a).pipe(Ie((e=>{const t=this.toU8a();return e.transactionPaymentApi.queryInfo(t,t.length)})))));const[i]=Bw(a),s=Mw(t)?t.address:t.toString();return r((()=>e.derive.tx.signingInfo(s,i.nonce,i.era).pipe(Pw(),Ie((t=>{const n=Rw(e,this.registry,i,t),r=Lw(e,n,{}),a=e.tx(this.toU8a()).signFake(s,r).toU8a();return e.call.transactionPaymentApi.queryInfo(a,a.length)})))))()}send(t){const n=e.hasSubscriptions&&(this.__internal__ignoreStatusCb||!!t);return r(n?this.__internal__observeSubscribe:this.__internal__observeSend)(t)}signAsync(e,t){return r((()=>this.__internal__observeSign(e,t).pipe(ze((()=>this)))))()}signAndSend(t,n,a){const[i,s]=Bw(n,a),o=e.hasSubscriptions&&(this.__internal__ignoreStatusCb||!!s);return r((()=>this.__internal__observeSign(t,i).pipe(Ie((e=>o?this.__internal__observeSubscribe(e):this.__internal__observeSend(e))))))(s)}withResultTransform(e){return this.__internal__transformResult=e,this}__internal__observeSign=(t,n)=>{const r=Mw(t)?t.address:t.toString(),a=function(e={}){return(0,pn.f)(e)||(0,Lt.E)(e)?{nonce:e}:e}(n);return e.derive.tx.signingInfo(r,a.nonce,a.era).pipe(Pw(),Ab((async n=>{const i=Rw(e,this.registry,a,n);let s=-1,o=null;if(Mw(t))this.sign(t,i);else{const e=await this.__internal__signViaSigner(r,i,n.header);s=e.id,e.signedTransaction&&(o=e.signedTransaction)}return{options:i,signedTransaction:o,updateId:s}})))};__internal__observeStatus=(t,n)=>{if(!n.isFinalized&&!n.isInBlock)return Le(this.__internal__transformResult(new Hw({status:n,txHash:t})));const r=n.isInBlock?n.asInBlock:n.asFinalized;return e.derive.tx.events(r).pipe(ze((({block:e,events:r})=>this.__internal__transformResult(new Hw({...Nw(t,e,r,n),status:n,txHash:t})))),Xh((e=>Le(this.__internal__transformResult(new Hw({internalError:e,status:n,txHash:t}))))))};__internal__observeSend=t=>e.rpc.author.submitExtrinsic(t?.signedTransaction||this).pipe(Lh((e=>{this.__internal__updateSigner(e,t)})));__internal__observeSubscribe=t=>{const n=this.hash;return e.rpc.author.submitAndWatchExtrinsic(t?.signedTransaction||this).pipe(Ie((e=>this.__internal__observeStatus(n,e))),Lh((e=>{this.__internal__updateSigner(e,t)})))};__internal__signViaSigner=async(t,n,r)=>{const a=n.signer||e.signer,i=n.allowCallDataAlteration??!0;if(!a)throw new Error("No signer specified, either via api.setSigner or via sign options. You possibly need to pass through an explicit keypair for the origin so it can be used for signing.");const s=this.registry.createTypeUnsafe("SignerPayload",[(0,M.b)({},n,{address:t,blockNumber:r?r.number:0,method:this.method})]);let o;if((0,qe.T)(a.signPayload)){if(o=await a.signPayload(s.toPayload()),o.signedTransaction&&!n.withSignedTransaction)throw new Error("The `signedTransaction` field may not be submitted when `withSignedTransaction` is disabled");if(o.signedTransaction&&n.withSignedTransaction){const e=this.registry.createTypeUnsafe("Extrinsic",[o.signedTransaction]),n=this.registry.createTypeUnsafe("SignerPayload",[(0,M.b)({},{address:t,assetId:e.assetId&&e.assetId.isSome?e.assetId.toHex():null,blockHash:s.blockHash,blockNumber:r?r.number:0,era:e.era.toHex(),genesisHash:s.genesisHash,metadataHash:e.metadataHash?e.metadataHash.toHex():null,method:e.method.toHex(),mode:e.mode?e.mode.toHex():null,nonce:e.nonce.toHex(),runtimeVersion:s.runtimeVersion,signedExtensions:s.signedExtensions,tip:e.tip?e.tip.toHex():null,version:s.version})]);if(!e.isSigned)throw new Error(`When using the signedTransaction field, the transaction must be signed. Recieved isSigned: ${e.isSigned}`);return i||this.__internal__validateSignedTransaction(s,e),super.addSignature(t,o.signature,n.toPayload()),{id:o.id,signedTransaction:o.signedTransaction}}}else{if(!(0,qe.T)(a.signRaw))throw new Error("Invalid signer interface, it should implement either signPayload or signRaw (or both)");o=await a.signRaw(s.toRaw())}return super.addSignature(t,o.signature,s.toPayload()),{id:o.id}};__internal__updateSigner=(t,n)=>{if(n&&-1!==n.updateId){const{options:r,updateId:a}=n,i=r.signer||e.signer;i&&(0,qe.T)(i.update)&&i.update(a,t)}};__internal__validateSignedTransaction=(e,t)=>{if(e.toPayload().method!==t.method.toHex())throw new Error(`signAndSend: ${"call data"} does not match the original payload`)}}}function Uw(e,t,n,r,a){const i=zw({api:t,apiType:e,blockHash:a,decorateMethod:n});return e=>new i(r||t.registry,e)}const Dw=(0,it.v)("api/augment");function qw(e,t,n=[]){return t.length?` ${t.length} ${e}${n.length?" and":""}`:""}function jw(e,t){return t.length?`\n\t${e.padStart(7)}: ${t.sort().join(", ")}`:""}function Fw(e,t,[n,r]){(n.length||r.length)&&Dw.warn(`api.${e}: Found${qw("added",n,r)}${qw("removed",r)} ${t}:${jw("added",n)}${jw("removed",r)}`)}function Xw(e,t){return e.filter((e=>!t.includes(e)))}function Ww(e,t){const n=Object.keys(e),r=(a=Object.keys(t),i=n,a.filter((e=>i.includes(e))));var a,i;const s=[];for(let o=0,c=r.length;or[e]))}return n}function Gw(e,t){const n=e=>Object.keys(t[e]),r=(n,r)=>e(t[n][r]),a={},i=Object.keys(t);for(let s=0,o=i.length;se.getTypeDef(t).type)).join(", ")})`}function Jw(e,t,n){const r=n.filter((e=>!(0,Fe.b)(e)));if(t.meta.type.isPlain){if(0!==r.length)throw new Error(`${Kw(e,t,[])} does not take any arguments, ${r.length} found`)}else{const{hashers:n,key:a}=t.meta.type.asMap,i=1===n.length?[a]:e.lookup.getSiType(a).def.asTuple.map((e=>e));if(r.length!==i.length)throw new Error(`${Kw(e,t,i)} is a map, requiring ${i.length} arguments, ${r.length} found`)}return[t,r]}var Yw=n(74486);class Qw{__internal__eventemitter=new Yw.b;emit(e,...t){return this.__internal__eventemitter.emit(e,...t)}on(e,t){return this.__internal__eventemitter.on(e,t),this}off(e,t){return this.__internal__eventemitter.removeListener(e,t),this}once(e,t){return this.__internal__eventemitter.once(e,t),this}}const $w=1e3,eV=(0,it.v)("api/init");let tV=0;function nV(e,{method:t,section:n}){return ea(e.rx.query[n]&&e.rx.query[n][t],(()=>`query.${n}.${t} is not available in this version of the metadata`))}class rV extends Qw{__internal__instanceId;__internal__runtimeLog={};__internal__registry;__internal__storageGetQ=[];__internal__storageSubQ=[];__phantom=new st(0);_type;_call={};_consts={};_derive;_errors={};_events={};_extrinsics;_extrinsicType=Qi.LATEST_EXTRINSIC_VERSION;_genesisHash;_isConnected;_isReady=!1;_query={};_queryMulti;_rpc;_rpcCore;_runtimeMap={};_runtimeChain;_runtimeMetadata;_runtimeVersion;_rx={call:{},consts:{},query:{},tx:{}};_options;_decorateMethod;constructor(e,t,n){super(),this.__internal__instanceId=""+ ++tV,this.__internal__registry=e.source?.registry||e.registry||new th,this._rx.callAt=(e,t)=>Be(this.at(e,t)).pipe(ze((e=>e.rx.call))),this._rx.queryAt=(e,t)=>Be(this.at(e,t)).pipe(ze((e=>e.rx.query))),this._rx.registry=this.__internal__registry,this._decorateMethod=n,this._options=e,this._type=t;const r=e.source?e.source._rpcCore.provider.isClonable?e.source._rpcCore.provider.clone():e.source._rpcCore.provider:e.provider||new Av.E;this._rpcCore=new Ov(this.__internal__instanceId,this.__internal__registry,{isPedantic:this._options.isPedantic,provider:r,rpcCacheCapacity:this._options.rpcCacheCapacity,userRpc:this._options.rpc}),this._isConnected=new Mh(this._rpcCore.provider.isConnected),this._rx.hasSubscriptions=this._rpcCore.provider.hasSubscriptions}get registry(){return this.__internal__registry}createType(e,...t){return this.__internal__registry.createType(e,...t)}registerTypes(e){e&&this.__internal__registry.register(e)}get hasSubscriptions(){return this._rpcCore.provider.hasSubscriptions}get supportMulti(){return this._rpcCore.provider.hasSubscriptions||!!this._rpcCore.state.queryStorageAt}_emptyDecorated(e,t){return{call:{},consts:{},errors:{},events:{},query:{},registry:e,rx:{call:{},query:{}},tx:Uw(this._type,this._rx,this._decorateMethod,e,t)}}_createDecorated(e,t,n,r){n||(n=this._emptyDecorated(e.registry,r)),!t&&e.decoratedMeta||(e.decoratedMeta=function(e,t){if(!(t instanceof wp))throw new Error("You need to pass a valid Metadata instance to Decorated");const n=t.asLatest,r=t.version;return{consts:Hf(e,n),errors:Of(e,n,r),events:Cf(e,n,r),query:Tw(e,n),registry:e,tx:Nf(e,n,r)}}(e.registry,e.metadata));const a=this._decorateCalls(e,this._decorateMethod,r),i=this._decorateCalls(e,this._rxDecorateMethod,r),s=this._decorateStorage(e.decoratedMeta,this._decorateMethod,r),o=this._decorateStorage(e.decoratedMeta,this._rxDecorateMethod,r);return Zw("consts",e.decoratedMeta.consts,n.consts,t),Zw("errors",e.decoratedMeta.errors,n.errors,t),Zw("events",e.decoratedMeta.events,n.events,t),Zw("query",s,n.query,t),Zw("query",o,n.rx.query,t),Zw("call",a,n.call,t),Zw("call",i,n.rx.call,t),n.findCall=t=>C(e.registry,t),n.findError=t=>H(e.registry,t),n.queryMulti=r?this._decorateMultiAt(n,this._decorateMethod,r):this._decorateMulti(this._decorateMethod),n.runtimeVersion=e.runtimeVersion,{createdAt:r,decoratedApi:n,decoratedMeta:e.decoratedMeta}}_injectMetadata(e,t=!1){!t&&e.decoratedApi||(e.decoratedApi=this._emptyDecorated(e.registry));const{decoratedApi:n,decoratedMeta:r}=this._createDecorated(e,t,e.decoratedApi);this._call=n.call,this._consts=n.consts,this._errors=n.errors,this._events=n.events,this._query=n.query,this._rx.call=n.rx.call,this._rx.query=n.rx.query;const a=this._decorateExtrinsics(r,this._decorateMethod),i=this._decorateExtrinsics(r,this._rxDecorateMethod);t||!this._extrinsics?(this._extrinsics=a,this._rx.tx=i):(Zw("tx",a,this._extrinsics,!1),Zw(null,i,this._rx.tx,!1)),Zw(null,r.consts,this._rx.consts,t),this.emit("decorated")}injectMetadata(e,t,n){this._injectMetadata({counter:0,metadata:e,registry:n||this.__internal__registry,runtimeVersion:this.__internal__registry.createType("RuntimeVersionPartial")},t)}_decorateFunctionMeta(e,t){return t.meta=e.meta,t.method=e.method,t.section=e.section,t.toJSON=e.toJSON,e.callIndex&&(t.callIndex=e.callIndex),t}_filterRpc(e,t){0!==Object.keys(t).length&&(this._rpcCore.addUserInterfaces(t),this._decorateRpc(this._rpcCore,this._decorateMethod,this._rpc),this._decorateRpc(this._rpcCore,this._rxDecorateMethod,this._rx.rpc));const n={};for(let a=0,i=e.length;a!r.includes(e)&&!e.includes("_unstable_")));i.length&&!this._options.noInitWarn&&eV.warn(`RPC methods not decorated: ${i.join(", ")}`);for(let s=0;sBe(this._rpcCore.provider.send(e,t))))}_decorateRpc(e,t,n=this._rpcSubmitter(t)){const r=n,a=(n,r)=>{const a=e[n][r],i=t(a,{methodName:r});return i.meta=a.meta,i.raw=t(a.raw,{methodName:r}),i};for(let i=0,s=e.sections.length;ia(t,e);for(let e=0,a=n.length;er.version===e));i?(0,M.b)(i.methods,r.methods):e[t].push(r)}else e[t]=a}}_getRuntimeDefs(e,t,n=""){const r={},a=Object.values(i);for(let i=0,s=a.length;i({...e.typesBundle?.spec?.[n]?.runtime??{},...e.typesBundle?.chain?.[t]?.runtime??{}})))}(e,n,t)),this._addRuntimeDef(r,this._options.runtime),Object.entries(r)}_getMethods(e,t){const n={};return t.forEach((t=>{const{docs:r,inputs:a,name:i,output:s}=t;n[i.toString()]={description:r.map((e=>e.toString())).join(),params:a.map((({name:t,type:n})=>({name:t.toString(),type:e.lookup.getName(n)||e.lookup.getTypeDef(n).type}))),type:e.lookup.getName(s)||e.lookup.getTypeDef(s).type}})),n}_getRuntimeDefsViaMetadata(e){const t={},{apis:n}=e.metadata;for(let r=0,a=n.length;r0,u=d?this._getRuntimeDefsViaMetadata(e):this._getRuntimeDefs(e,n,this._runtimeChain),l=[],f=`${n.toString()}/${r.toString()}`,p=this.__internal__runtimeLog[f]||!1;if(this.__internal__runtimeLog[f]=!0,d)for(let y=0,x=u.length;ye.eq(a)));if(c[a]=!0,i){const t=r.map((({version:e})=>e)).sort(),n=r.find((({version:e})=>i[1].eq(e)));if(n){const t=jt(e),r=Object.entries(n.methods);if(r.length){o[t]||(o[t]={});for(let n=0,i=r.length;n[e.toHex(),t.toString()])).filter((([e])=>!c[e])).map((([e,t])=>`${this._runtimeMap[e]||e}/${t}`));this._options.noInitWarn||p||(l.length&&eV.warn(`${f}: Not decorating runtime apis without matching versions: ${l.join(", ")}`),e.length&&eV.warn(`${f}: Not decorating unknown runtime apis: ${e.join(", ")}`))}const h=i?(e,t)=>this._rpcCore.state.call(e,t,i):(e,t)=>this._rpcCore.state.call(e,t),b=t=>$r({},Object.keys(o[t]),(n=>this._decorateCall(e,o[t][n],h,a))),m=Object.keys(o);for(let y=0,x=m.length;y{if(r.length!==t.params.length)throw new Error(`${t.name}:: Expected ${t.params.length} arguments, found ${r.length}`);const a=e.createType("Raw",It(r.map(((n,r)=>e.createTypeUnsafe(t.params[r].type,[n]).toU8a()))));return n(t.name,a).pipe(ze((n=>e.createTypeUnsafe(t.type,[n]))))}));return a.meta=t,a}_decorateMulti(e){return e((e=>e.length?(this.hasSubscriptions?this._rpcCore.state.subscribeStorage:this._rpcCore.state.queryStorageAt)(e.map((e=>Array.isArray(e)?e[0].creator.meta.type.isPlain?[e[0].creator]:1===e[0].creator.meta.type.asMap.hashers.length?[e[0].creator,e.slice(1)]:[e[0].creator,...e.slice(1)]:[e.creator]))):Le([])))}_decorateMultiAt(e,t,n){return t((t=>t.length?this._rpcCore.state.queryStorageAt(t.map((t=>{if(Array.isArray(t)){const{creator:n}=nV(e,t[0].creator);return n.meta.type.isPlain?[n]:1===n.meta.type.asMap.hashers.length?[n,t.slice(1)]:[n,...t.slice(1)]}return[nV(e,t.creator).creator]})),n):Le([])))}_decorateExtrinsics({tx:e},t){const n=Uw(this._type,this._rx,t),r=t=>$r({},Object.keys(e[t]),(r=>r.startsWith("$")?e[t][r]:this._decorateExtrinsicEntry(e[t][r],n))),a=Object.keys(e);for(let i=0,s=a.length;it(e(...n));return n.is=t=>e.is(t),this._decorateFunctionMeta(e,n)}_decorateStorage({query:e,registry:t},n,r){const a={},i=a=>$r({},Object.keys(e[a]),(i=>r?this._decorateStorageEntryAt(t,e[a][i],n,r):this._decorateStorageEntry(e[a][i],n))),s=Object.keys(e);for(let o=0,c=s.length;oJw(n||this.__internal__registry,e,t),r=t=>Be(this.at(t)).pipe(ze((t=>nV(t,e)))),a=this._decorateStorageCall(e,t);return a.creator=e,a.at=t(((e,...t)=>r(e).pipe(Ie((e=>e(...t)))))),a.hash=t(((...e)=>this._rpcCore.state.getStorageHash(n(e)))),a.is=t=>t.section===e.section&&t.method===e.method,a.key=(...t)=>(0,N.X)(pr(e(...t))[1]),a.keyPrefix=(...t)=>(0,N.X)(e.keyPrefix(...t)),a.size=t(((...e)=>this._rpcCore.state.getStorageSize(n(e)))),a.sizeAt=t(((e,...t)=>r(e).pipe(Ie((r=>this._rpcCore.state.getStorageSize(n(t,r.creator.meta.registry),e)))))),e.iterKey&&e.meta.type.isMap&&(a.entries=t(xb(this.__internal__instanceId,((...t)=>this._retrieveMapEntries(e,null,t)))),a.entriesAt=t(xb(this.__internal__instanceId,((e,...t)=>r(e).pipe(Ie((n=>this._retrieveMapEntries(n.creator,e,t))))))),a.entriesPaged=t(xb(this.__internal__instanceId,(t=>this._retrieveMapEntriesPaged(e,void 0,t)))),a.keys=t(xb(this.__internal__instanceId,((...t)=>this._retrieveMapKeys(e,null,t)))),a.keysAt=t(xb(this.__internal__instanceId,((e,...t)=>r(e).pipe(Ie((n=>this._retrieveMapKeys(n.creator,e,t))))))),a.keysPaged=t(xb(this.__internal__instanceId,(t=>this._retrieveMapKeysPaged(e,void 0,t))))),this.supportMulti&&e.meta.type.isMap&&(a.multi=t((t=>1===e.meta.type.asMap.hashers.length?this._retrieveMulti(t.map((t=>[e,[t]]))):this._retrieveMulti(t.map((t=>[e,t])))))),this._decorateFunctionMeta(e,a)}_decorateStorageEntryAt(e,t,n,r){const a=n=>Jw(e,t,n),i=n(((...e)=>this._rpcCore.state.getStorage(a(e),r)));return i.creator=t,i.hash=n(((...e)=>this._rpcCore.state.getStorageHash(a(e),r))),i.is=e=>e.section===t.section&&e.method===t.method,i.key=(...e)=>(0,N.X)(pr(t(...e))[1]),i.keyPrefix=(...e)=>(0,N.X)(t.keyPrefix(...e)),i.size=n(((...e)=>this._rpcCore.state.getStorageSize(a(e),r))),t.iterKey&&t.meta.type.isMap&&(i.entries=n(xb(this.__internal__instanceId,((...e)=>this._retrieveMapEntries(t,r,e)))),i.entriesPaged=n(xb(this.__internal__instanceId,(e=>this._retrieveMapEntriesPaged(t,r,e)))),i.keys=n(xb(this.__internal__instanceId,((...e)=>this._retrieveMapKeys(t,r,e)))),i.keysPaged=n(xb(this.__internal__instanceId,(e=>this._retrieveMapKeysPaged(t,r,e))))),this.supportMulti&&t.meta.type.isMap&&(i.multi=n((e=>1===t.meta.type.asMap.hashers.length?this._retrieveMulti(e.map((e=>[t,[e]])),r):this._retrieveMulti(e.map((e=>[t,e])),r)))),this._decorateFunctionMeta(t,i)}_queueStorage(e,t){const n=t===this.__internal__storageSubQ?this._rpcCore.state.subscribeStorage:this._rpcCore.state.queryStorageAt;let r,a=t.length-1,i=0;return-1!==a&&t[a]&&50!==t[a][1].length?(r=t[a][0],i=t[a][1].length,t[a][1].push(e)):(a++,r=Be(new Promise((e=>{lm((()=>{const n=t[a][1];delete t[a],e(n)}))}))).pipe(Ie((e=>n(e)))),t.push([r,[e]])),r.pipe(ze((e=>e[i])))}_decorateStorageCall(e,t){return t(xb(this.__internal__instanceId,((...t)=>{const n=Jw(this.__internal__registry,e,t);return this.hasSubscriptions?this._queueStorage(n,this.__internal__storageSubQ):this._rpcCore.state.getStorage(n)})),{methodName:e.method,overrideNoSub:(...t)=>this._queueStorage(Jw(this.__internal__registry,e,t),this.__internal__storageGetQ)})}_retrieveMulti(e,t){if(!e.length)return Le([]);const n=this.hasSubscriptions&&!t?this._rpcCore.state.subscribeStorage:this._rpcCore.state.queryStorageAt;return e.length<=250?t?n(e,t):n(e):Rh(Gx(e,250).map((e=>t?n(e,t):n(e)))).pipe(ze(hy))}_retrieveMapKeys({iterKey:e,meta:t,method:n,section:r},a,i){if(!e||!t.type.isMap)throw new Error("keys can only be retrieved on maps");const s=e(...i).toHex(),o=new Mh(s),c=a?e=>this._rpcCore.state.getKeysPaged(s,$w,e,a):e=>this._rpcCore.state.getKeysPaged(s,$w,e),d=e=>e.setMeta(t,r,n);return o.pipe(Ie(c),ze((e=>e.map(d))),Lh((e=>lm((()=>{e.length===$w?o.next(e[999].toHex()):o.complete()})))),Dh(),ze(hy))}_retrieveMapKeysPaged({iterKey:e,meta:t,method:n,section:r},a,i){if(!e||!t.type.isMap)throw new Error("keys can only be retrieved on maps");const s=e=>e.setMeta(t,r,n);return(a?e=>this._rpcCore.state.getKeysPaged(e,i.pageSize,i.startKey||e,a):e=>this._rpcCore.state.getKeysPaged(e,i.pageSize,i.startKey||e))(e(...i.args).toHex()).pipe(ze((e=>e.map(s))))}_retrieveMapEntries(e,t,n){const r=t?e=>this._rpcCore.state.queryStorageAt(e,t):e=>this._rpcCore.state.queryStorageAt(e);return this._retrieveMapKeys(e,t,n).pipe(Ie((e=>e.length?Rh(Gx(e,250).map(r)).pipe(ze((t=>hy(t).map(((t,n)=>[e[n],t]))))):Le([]))))}_retrieveMapEntriesPaged(e,t,n){const r=t?e=>this._rpcCore.state.queryStorageAt(e,t):e=>this._rpcCore.state.queryStorageAt(e);return this._retrieveMapKeysPaged(e,t,n).pipe(Ie((e=>e.length?r(e).pipe(ze((t=>t.map(((t,n)=>[e[n],t]))))):Le([]))))}_decorateDeriveRx(e){const t=this._runtimeVersion?.specName.toString();return Gw(e,function(e,t,n={}){return{...Sv(e,t,Vv),...Sv(e,t,n)}}(this.__internal__instanceId,this._rx,(0,M.b)({},this._options.derives,this._options.typesBundle?.spec?.[t||""]?.derives)))}_decorateDerive(e){return Gw(e,this._rx.derive)}_rxDecorateMethod=e=>e}const aV=[15,14],iV=(0,it.v)("api/init");function sV(e){return e.toString()}class oV extends rV{__internal__atLast=null;__internal__healthTimer=null;__internal__registries=[];__internal__updateSub=null;__internal__waitingRegistries={};constructor(e,t,n){super(e,t,n),this.registry.setKnownTypes(e),e.source?this.__internal__registries=e.source.__internal__registries:this.registerTypes(e.types),this._rpc=this._decorateRpc(this._rpcCore,this._decorateMethod),this._rx.rpc=this._decorateRpc(this._rpcCore,this._rxDecorateMethod),this.supportMulti&&(this._queryMulti=this._decorateMulti(this._decorateMethod),this._rx.queryMulti=this._decorateMulti(this._rxDecorateMethod)),this._rx.signer=e.signer,this._rpcCore.setRegistrySwap((e=>this.getBlockRegistry(e))),this._rpcCore.setResolveBlockHash((e=>ce(this._rpcCore.chain.getBlockHash(e)))),this.hasSubscriptions?(this._rpcCore.provider.on("disconnected",(()=>this.__internal__onProviderDisconnect())),this._rpcCore.provider.on("error",(e=>this.__internal__onProviderError(e))),this._rpcCore.provider.on("connected",(()=>this.__internal__onProviderConnect()))):this._options.noInitWarn||iV.warn("Api will be available in a limited mode since the provider does not support subscriptions"),this._rpcCore.provider.isConnected&&this.__internal__onProviderConnect().catch(P.l)}_initRegistry(e,t,n,r,a){e.clearCache(),e.setChainProperties(a||this.registry.getChainProperties()),e.setKnownTypes(this._options),e.register(function({knownTypes:e},t,n,r){const a=kt(r).toNumber();return Vh(t,n,((t,n)=>({...Th(mh[n],a),...Th(nh[t],a),...Th(e.typesBundle?.spec?.[n]?.types,a),...Th(e.typesBundle?.chain?.[t]?.types,a),...e.typesSpec?.[n]??{},...e.typesChain?.[t]??{},...e.types??{}})))}(e,t,n.specName,n.specVersion)),e.setHasher(function({knownTypes:e},t,n){return Vh(t,n,((t,n)=>e.hasher||e.typesBundle?.chain?.[t]?.hasher||e.typesBundle?.spec?.[n]?.hasher||null))}(e,t,n.specName)),e.knownTypes.typesBundle&&(e.knownTypes.typesAlias=function({knownTypes:e},t,n){return Vh(t,n,((t,n)=>({...e.typesBundle?.spec?.[n]?.alias??{},...e.typesBundle?.chain?.[t]?.alias??{},...e.typesAlias??{}})))}(e,t,n.specName)),e.setMetadata(r,void 0,(0,M.b)({},function({knownTypes:e},t,n){return Vh(t,n,((t,n)=>({...e.typesBundle?.spec?.[n]?.signedExtensions??{},...e.typesBundle?.chain?.[t]?.signedExtensions??{}})))}(e,t,n.specName),this._options.signedExtensions),this._options.noInitWarn)}_getDefaultRegistry(){return ea(this.__internal__registries.find((({isDefault:e})=>e)),"Initialization error, cannot find the default registry")}async at(e,t){const n=(0,E.e)(e),r=(0,N.X)(n),a=await this.getBlockRegistry(n,t);return this.__internal__atLast&&this.__internal__atLast[0]===r||(this.__internal__atLast=[r,this._createDecorated(a,!0,null,n).decoratedApi]),this.__internal__atLast[1]}async _createBlockRegistry(e,t,n){const r=new th(e),a=await this._retrieveMetadata(n.apis,t.parentHash,r),i=this._runtimeChain;if(!i)throw new Error("Invalid initializion order, runtimeChain is not available");this._initRegistry(r,i,n,a);const s={counter:0,lastBlockHash:e,metadata:a,registry:r,runtimeVersion:n};return this.__internal__registries.push(s),s}_cacheBlockRegistryProgress(e,t){let n=this.__internal__waitingRegistries[e];return(0,Fe.b)(n)&&(n=this.__internal__waitingRegistries[e]=new Promise(((n,r)=>{t().then((t=>{delete this.__internal__waitingRegistries[e],n(t)})).catch((t=>{delete this.__internal__waitingRegistries[e],r(t)}))}))),n}_getBlockRegistryViaVersion(e,t){if(t){const n=this.__internal__registries.find((({runtimeVersion:{specName:e,specVersion:n}})=>e.eq(t.specName)&&n.eq(t.specVersion)));if(n)return n.counter++,n.lastBlockHash=e,n}return null}async _getBlockRegistryViaHash(e){if(!this._genesisHash||!this._runtimeVersion)throw new Error("Cannot retrieve data on an uninitialized chain");const t=this.registry.createType("HeaderPartial",this._genesisHash.eq(e)?{number:lt,parentHash:this._genesisHash}:await ce(this._rpcCore.chain.getHeader.raw(e)));if(t.parentHash.isEmpty)throw new Error("Unable to retrieve header and parent from supplied hash");const[n,r]=function(e,t){const n=wh.find((t=>e.eq(t.genesisHash)));return n?[n.versions.reduce(((e,n)=>t.gt(n.blockNumber)?n:e),void 0),n.versions.find((e=>t.lte(e.blockNumber)))]:[void 0,void 0]}(this._genesisHash,t.number),a=this.registry.createType("RuntimeVersionPartial",await ce(this._rpcCore.state.getRuntimeVersion.raw(t.parentHash)));return this._getBlockRegistryViaVersion(e,a)||await this._cacheBlockRegistryProgress(a.toHex(),(()=>this._createBlockRegistry(e,t,a)))}async getBlockRegistry(e,t){return this.__internal__registries.find((({lastBlockHash:t})=>t&&Gr(t,e)))||this._getBlockRegistryViaVersion(e,t)||await this._cacheBlockRegistryProgress((0,N.X)(e),(()=>this._getBlockRegistryViaHash(e)))}async _loadMeta(){return this._isReady?(this._options.source||this._subscribeUpdates(),!0):(this._unsubscribeUpdates(),[this._genesisHash,this._runtimeMetadata]=this._options.source?._isReady?await this._metaFromSource(this._options.source):await this._metaFromChain(this._options.metadata),this._initFromMeta(this._runtimeMetadata))}async _metaFromSource(e){this._extrinsicType=e.extrinsicVersion,this._runtimeChain=e.runtimeChain,this._runtimeVersion=e.runtimeVersion;const t=Object.keys(e.rpc),n=[];for(let r=0,a=t.length;rthis._runtimeVersion?.specVersion.eq(e.specVersion)?Le(!1):this._rpcCore.state.getMetadata().pipe(ze((t=>{iV.log(`Runtime version updated to spec=${e.specVersion.toString()}, tx=${e.transactionVersion.toString()}`),this._runtimeMetadata=t,this._runtimeVersion=e,this._rx.runtimeVersion=e;const n=this._getDefaultRegistry(),r=this._runtimeChain;if(!r)throw new Error("Invalid initializion order, runtimeChain is not available");return n.metadata=t,n.runtimeVersion=e,this._initRegistry(this.registry,r,e,t),this._injectMetadata(n,!0),!0})))))).subscribe())}async _metaFromChain(e){const[t,n,r,a,i]=await Promise.all([ce(this._rpcCore.chain.getBlockHash(0)),ce(this._rpcCore.state.getRuntimeVersion()),ce(this._rpcCore.system.chain()),ce(this._rpcCore.system.properties()),ce(this._rpcCore.rpc.methods())]);this._runtimeChain=r,this._runtimeVersion=n,this._rx.runtimeVersion=n;const s=`${t.toHex()||"0x"}-${n.specVersion.toString()}`,o=e?.[s]?new wp(this.registry,e[s]):await this._retrieveMetadata(n.apis);return this._initRegistry(this.registry,r,n,o,a),this._filterRpc(i.methods.map(sV),Sh(this.registry,r,n.specName)),this._subscribeUpdates(),this.__internal__registries.length||this.__internal__registries.push({counter:0,isDefault:!0,metadata:o,registry:this.registry,runtimeVersion:n}),o.getUniqTypes(this._options.throwOnUnknown||!1),[t,o]}_initFromMeta(e){const t=this._runtimeVersion;if(!t)throw new Error("Invalid initializion order, runtimeVersion is not available");return this._extrinsicType=e.asLatest.extrinsic.version.toNumber(),this._rx.extrinsicType=this._extrinsicType,this._rx.genesisHash=this._genesisHash,this._rx.runtimeVersion=t,this._injectMetadata(this._getDefaultRegistry(),!0),this._rx.derive=this._decorateDeriveRx(this._rxDecorateMethod),this._derive=this._decorateDerive(this._decorateMethod),!0}async _retrieveMetadata(e,t,n){let r=null;const a=e.find((([e])=>e.eq(Mi("Metadata",64)))),i=n||this.registry;if(!a||a[1].toNumber()<2)return iV.warn("MetadataApi not available, rpc::state::get_metadata will be used."),t?new wp(i,await ce(this._rpcCore.state.getMetadata.raw(t))):await ce(this._rpcCore.state.getMetadata());try{const e=t?await ce(this._rpcCore.state.call.raw("Metadata_metadata_versions","0x",t)):await ce(this._rpcCore.state.call("Metadata_metadata_versions","0x"));r=i.createType("Vec",e).reduce(((e,t)=>t.gt(e)?t:e))}catch(s){iV.debug(s.message),iV.warn("error with state_call::Metadata_metadata_versions, rpc::state::get_metadata will be used")}if(r&&!aV.includes(r.toNumber())&&(r=null),r)try{const e=t?await ce(this._rpcCore.state.call.raw("Metadata_metadata_at_version",(0,N.X)(r.toU8a()),t)):await ce(this._rpcCore.state.call("Metadata_metadata_at_version",(0,N.X)(r.toU8a()))),n=t?i.createType("Raw",e).toU8a():e,a=i.createType("Option",n).unwrapOr(null);if(a)return new wp(i,a.toHex())}catch(s){iV.debug(s.message),iV.warn("error with state_call::Metadata_metadata_at_version, rpc::state::get_metadata will be used")}return t?new wp(i,await ce(this._rpcCore.state.getMetadata.raw(t))):await ce(this._rpcCore.state.getMetadata())}_subscribeHealth(){this._unsubscribeHealth(),this.__internal__healthTimer=this.hasSubscriptions?setInterval((()=>{ce(this._rpcCore.system.health.raw()).catch(P.l)}),1e4):null}_unsubscribeHealth(){this.__internal__healthTimer&&(clearInterval(this.__internal__healthTimer),this.__internal__healthTimer=null)}_unsubscribeUpdates(){this.__internal__updateSub&&(this.__internal__updateSub.unsubscribe(),this.__internal__updateSub=null)}_unsubscribe(){this._unsubscribeHealth(),this._unsubscribeUpdates()}async __internal__onProviderConnect(){this._isConnected.next(!0),this.emit("connected");try{const e=!1===this._options.initWasm||await Si().then((()=>{if(!Ti())throw new Error("Unable to initialize @polkadot/util-crypto");return!0})).catch((()=>!1)),t=await this._loadMeta();this._subscribeHealth(),t&&!this._isReady&&e&&(this._isReady=!0,this.emit("ready",this))}catch(e){const t=new Error(`FATAL: Unable to initialize the API: ${e.message}`);iV.error(t),this.emit("error",t)}}__internal__onProviderDisconnect(){this._isConnected.next(!1),this._unsubscribe(),this.emit("disconnected")}__internal__onProviderError(e){this.emit("error",e)}}function cV(e){if(void 0===e)throw new Error("Api interfaces needs to be initialized before using, wait for 'isReady'");return e}class dV extends oV{get call(){return cV(this._call)}get consts(){return cV(this._consts)}get derive(){return cV(this._derive)}get errors(){return cV(this._errors)}get events(){return cV(this._events)}get extrinsicVersion(){return this._extrinsicType}get genesisHash(){return cV(this._genesisHash)}get isConnected(){return this._isConnected.getValue()}get libraryInfo(){return`${O} v${A}`}get query(){return cV(this._query)}get queryMulti(){return cV(this._queryMulti)}get rpc(){return cV(this._rpc)}get runtimeChain(){return cV(this._runtimeChain)}get runtimeMetadata(){return cV(this._runtimeMetadata)}get runtimeVersion(){return cV(this._runtimeVersion)}get rx(){return cV(this._rx)}get stats(){return this._rpcCore.stats}get type(){return this._type}get tx(){return cV(this._extrinsics)}findCall(e){return C(this.registry,e)}findError(e){return H(this.registry,e)}}class uV extends dV{constructor(e={},t,n){super(e,t,n)}connect(){return this._rpcCore.connect()}disconnect(){return this._unsubscribe(),this._rpcCore.disconnect()}setSigner(e){this._rx.signer=e}async sign(e,t,{signer:n}={}){if((0,I.K)(e)){const r=n||this._rx.signer;if(!r?.signRaw)throw new Error("No signer exists with a signRaw interface. You possibly need to pass through an explicit keypair for the origin so it can be used for signing.");return(await r.signRaw((0,M.b)({type:"bytes"},t,{address:e}))).signature}return(0,N.X)(e.sign((0,E.e)(t.data)))}}class lV{__internal__allHasFired=!1;__internal__callback;__internal__fired=[];__internal__fns=[];__internal__isActive=!0;__internal__results=[];__internal__subscriptions=[];constructor(e,t){this.__internal__callback=t,this.__internal__subscriptions=e.map((async(e,t)=>{const[n,...r]=Array.isArray(e)?e:[e];return this.__internal__fired.push(!1),this.__internal__fns.push(n),n(...r,this._createCallback(t))}))}_allHasFired(){return this.__internal__allHasFired||=0===this.__internal__fired.filter((e=>!e)).length,this.__internal__allHasFired}_createCallback(e){return t=>{this.__internal__fired[e]=!0,this.__internal__results[e]=t,this._triggerUpdate()}}_triggerUpdate(){if(this.__internal__isActive&&(0,qe.T)(this.__internal__callback)&&this._allHasFired())try{Promise.resolve(this.__internal__callback(this.__internal__results)).catch(P.l)}catch{}}unsubscribe(){this.__internal__isActive&&(this.__internal__isActive=!1,Promise.all(this.__internal__subscriptions.map((async e=>{try{const t=await e;(0,qe.T)(t)&&t()}catch{}}))).catch((()=>{})))}}function fV(e,t){let n=!1;return{reject:e=>(n||(n=!0,t(e)),py),resolve:t=>{n||(n=!0,e(t))}}}function pV(e,t){const n=!(!t?.methodName||!t.methodName.includes("subscribe"));return function(...r){const[a,i]=function(e,t){const n=e.slice(),r=e.length&&(0,qe.T)(e[e.length-1])?n.pop():void 0;if(t&&!(0,qe.T)(r))throw new Error("Expected a callback to be passed with subscriptions");return[n,r]}(r,n);return i?function(e,t,n){return new Promise(((r,a)=>{const i=fV(r,a),s=e(...t).pipe(Xh((e=>i.reject(e))),Lh((()=>i.resolve((()=>s.unsubscribe()))))).subscribe((e=>{lm((()=>n(e)))}))}))}(e,a,i):function(e,t){return new Promise(((n,r)=>{const a=fV(n,r),i=e(...t).pipe(Xh((e=>a.reject(e)))).subscribe((e=>{a.resolve(e),lm((()=>i.unsubscribe()))}))}))}(t?.overrideNoSub||e,a)}}class hV extends uV{__internal__isReadyPromise;__internal__isReadyOrErrorPromise;constructor(e){super(e,"promise",pV),this.__internal__isReadyPromise=new Promise((e=>{super.once("ready",(()=>e(this)))})),this.__internal__isReadyOrErrorPromise=new Promise(((e,t)=>{const n=fV(e,t);super.once("ready",(()=>n.resolve(this))),super.once("error",(e=>n.reject(e)))}))}static create(e){const t=new hV(e);return e&&e.throwOnConnect?t.isReadyOrError:(t.isReadyOrError.catch(P.l),t.isReady)}get isReady(){return this.__internal__isReadyPromise}get isReadyOrError(){return this.__internal__isReadyOrErrorPromise}clone(){return new hV((0,M.b)({},this._options,{source:this}))}async combineLatest(e,t){const n=new lV(e,t);return()=>{n.unsubscribe()}}}},94645:(e,t,n)=>{"use strict";n.d(t,{b:()=>r,q:()=>i});const r=1024;class a{key;__internal__expires;__internal__ttl;createdAt;next;prev;constructor(e,t){this.key=e,this.__internal__ttl=t,this.__internal__expires=Date.now()+t,this.createdAt=Date.now(),this.next=this.prev=this}refresh(){this.__internal__expires=Date.now()+this.__internal__ttl}get expiry(){return this.__internal__expires}}class i{capacity;__internal__data=new Map;__internal__refs=new Map;__internal__length=0;__internal__head;__internal__tail;__internal__ttl;constructor(e=r,t=3e4){this.capacity=e,this.__internal__ttl=t,this.__internal__head=this.__internal__tail=new a("",t)}get ttl(){return this.__internal__ttl}get length(){return this.__internal__length}get lengthData(){return this.__internal__data.size}get lengthRefs(){return this.__internal__refs.size}entries(){const e=this.keys(),t=e.length,n=new Array(t);for(let r=0;r0;)this.__internal__refs.delete(this.__internal__tail.key),this.__internal__data.delete(this.__internal__tail.key),this.__internal__length-=1,this.__internal__tail=this.__internal__tail.prev,this.__internal__tail.next=this.__internal__head;0===this.__internal__length&&(this.__internal__head=this.__internal__tail=new a("",this.__internal__ttl))}__internal__toHead(e){const t=this.__internal__refs.get(e);t&&t!==this.__internal__head&&(t.refresh(),t.prev.next=t.next,t.next.prev=t.prev,t.next=this.__internal__head,this.__internal__head.prev=t,this.__internal__head=t)}}},19588:(e,t,n)=>{"use strict";n.d(t,{E:()=>P});var r=n(74486),a=n(52502),i=n(56199);const s=(0,n(77389).MJ)("isPrototypeOf","hasOwnProperty");var o=n(81138),c=n(74032),d=n(48827),u=n(76284),l=n(75487);const f=l.Mn.WebSocket;var p=n(25311),h=n(55471),b=n(8514);const m=-99999;function y(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})}class x extends Error{code;data;message;name;stack;constructor(e="",t=-99999,n){if(super(),y(this,"message",String(e)),y(this,"name",this.constructor.name),y(this,"data",n),y(this,"code",t),(0,b.T)(Error.captureStackTrace))Error.captureStackTrace(this,this.constructor);else{const{stack:t}=new Error(e);t&&y(this,"stack",t)}}static CODES={ASSERT:-90009,INVALID_JSONRPC:-99998,METHOD_NOT_FOUND:-32601,UNKNOWN:m}}function g(e){if(e){const{code:t,data:n,message:r}=e;throw new x(`${t}: ${r}${function(e){if((0,c.b)(e))return"";const t=`: ${(0,p.K)(e)?e.replace(/Error\("/g,"").replace(/\("/g,"(").replace(/"\)/g,")").replace(/\(/g,", ").replace(/\)/g,""):(0,o.A)(e)}`;return t.length<=256?t:`${t.substring(0,255)}\u2026`}(n)}`,t,n)}}class v{__internal__id=0;decodeResponse(e){if(!e||"2.0"!==e.jsonrpc)throw new Error("Invalid jsonrpc field in decoded object");const t=!(0,c.b)(e.params)&&!(0,c.b)(e.method);if(!((0,h.E)(e.id)||t&&((0,h.E)(e.params.subscription)||(0,p.K)(e.params.subscription))))throw new Error("Invalid id field in decoded object");if(g(e.error),void 0===e.result&&!t)throw new Error("No result found in jsonrpc response");return t?(g(e.params.error),e.params.result):e.result}encodeJson(e,t){const[n,r]=this.encodeObject(e,t);return[n,(0,o.A)(r)]}encodeObject(e,t){const n=++this.__internal__id;return[n,{id:n,jsonrpc:"2.0",method:e,params:t}]}}const w="ws://127.0.0.1:9944";var V=n(94645);const T={1e3:"Normal Closure",1001:"Going Away",1002:"Protocol Error",1003:"Unsupported Data",1004:"(For future)",1005:"No Status Received",1006:"Abnormal Closure",1007:"Invalid frame payload data",1008:"Policy Violation",1009:"Message too big",1010:"Missing Extension",1011:"Internal Error",1012:"Service Restart",1013:"Try Again Later",1014:"Bad Gateway",1015:"TLS Handshake"};const S={chain_finalisedHead:"chain_finalizedHead",chain_subscribeFinalisedHeads:"chain_subscribeFinalizedHeads",chain_unsubscribeFinalisedHeads:"chain_unsubscribeFinalizedHeads"},k=(0,a.v)("api-ws");function _(e,t){Object.keys(e).forEach((n=>{t&&t(e[n]),delete e[n]}))}class P{__internal__callCache;__internal__coder;__internal__endpoints;__internal__headers;__internal__eventemitter;__internal__handlers={};__internal__isReadyPromise;__internal__stats;__internal__waitingForId={};__internal__cacheCapacity;__internal__autoConnectMs;__internal__endpointIndex;__internal__endpointStats;__internal__isConnected=!1;__internal__subscriptions={};__internal__timeoutId=null;__internal__websocket;__internal__timeout;constructor(e=w,t=2500,n={},a,s){const o=Array.isArray(e)?e:[e];if(0===o.length)throw new Error("WsProvider requires at least one Endpoint");o.forEach((e=>{if(!/^(wss|ws):\/\//.test(e))throw new Error(`Endpoint should start with 'ws://', received '${e}'`)})),this.__internal__callCache=new V.q(s||V.b),this.__internal__cacheCapacity=s||V.b,this.__internal__eventemitter=new r.b,this.__internal__autoConnectMs=t||0,this.__internal__coder=new v,this.__internal__endpointIndex=-1,this.__internal__endpoints=o,this.__internal__headers=n,this.__internal__websocket=null,this.__internal__stats={active:{requests:0,subscriptions:0},total:{bytesRecv:0,bytesSent:0,cached:0,errors:0,requests:0,subscriptions:0,timeout:0}},this.__internal__endpointStats={bytesRecv:0,bytesSent:0,cached:0,errors:0,requests:0,subscriptions:0,timeout:0},this.__internal__timeout=a||6e4,t&&t>0&&this.connectWithRetry().catch(i.l),this.__internal__isReadyPromise=new Promise((e=>{this.__internal__eventemitter.once("connected",(()=>{e(this)}))}))}get hasSubscriptions(){return!0}get isClonable(){return!0}get isConnected(){return this.__internal__isConnected}get isReady(){return this.__internal__isReadyPromise}get endpoint(){return this.__internal__endpoints[this.__internal__endpointIndex]}clone(){return new P(this.__internal__endpoints)}selectEndpointIndex(e){return(this.__internal__endpointIndex+1)%e.length}async connect(){if(this.__internal__websocket)throw new Error("WebSocket is already connected");try{this.__internal__endpointIndex=this.selectEndpointIndex(this.__internal__endpoints),this.__internal__websocket=void 0!==l.Mn.WebSocket&&(e=l.Mn.WebSocket,s(t=f)&&s(e)&&(e===t||e.isPrototypeOf(t)))?new f(this.endpoint):new f(this.endpoint,void 0,{headers:this.__internal__headers}),this.__internal__websocket&&(this.__internal__websocket.onclose=this.__internal__onSocketClose,this.__internal__websocket.onerror=this.__internal__onSocketError,this.__internal__websocket.onmessage=this.__internal__onSocketMessage,this.__internal__websocket.onopen=this.__internal__onSocketOpen),this.__internal__timeoutId=setInterval((()=>this.__internal__timeoutHandlers()),5e3)}catch(n){throw k.error(n),this.__internal__emit("error",n),n}var e,t}async connectWithRetry(){if(this.__internal__autoConnectMs>0)try{await this.connect()}catch{setTimeout((()=>{this.connectWithRetry().catch(i.l)}),this.__internal__autoConnectMs)}}async disconnect(){this.__internal__autoConnectMs=0;try{this.__internal__websocket&&this.__internal__websocket.close(1e3)}catch(e){throw k.error(e),this.__internal__emit("error",e),e}}get stats(){return{active:{requests:Object.keys(this.__internal__handlers).length,subscriptions:Object.keys(this.__internal__subscriptions).length},total:this.__internal__stats.total}}get endpointStats(){return this.__internal__endpointStats}on(e,t){return this.__internal__eventemitter.on(e,t),()=>{this.__internal__eventemitter.removeListener(e,t)}}send(e,t,n,r){this.__internal__endpointStats.requests++,this.__internal__stats.total.requests++;const[a,i]=this.__internal__coder.encodeJson(e,t);if(0===this.__internal__cacheCapacity)return this.__internal__send(a,i,e,t,r);const s=n?`${e}::${(0,o.A)(t)}`:"";let c=n?this.__internal__callCache.get(s):null;return c?(this.__internal__endpointStats.cached++,this.__internal__stats.total.cached++):(c=this.__internal__send(a,i,e,t,r),n&&this.__internal__callCache.set(s,c)),c}async __internal__send(e,t,n,r,a){return new Promise(((i,s)=>{try{if(!this.isConnected||null===this.__internal__websocket)throw new Error("WebSocket is not connected");const o=(e,t)=>{e?s(e):i(t)};k.debug((()=>["calling",n,t])),this.__internal__handlers[e]={callback:o,method:n,params:r,start:Date.now(),subscription:a};const c=t.length;this.__internal__endpointStats.bytesSent+=c,this.__internal__stats.total.bytesSent+=c,this.__internal__websocket.send(t)}catch(o){this.__internal__endpointStats.errors++,this.__internal__stats.total.errors++,s(o)}}))}subscribe(e,t,n,r){return this.__internal__endpointStats.subscriptions++,this.__internal__stats.total.subscriptions++,this.send(t,n,!1,{callback:r,type:e})}async unsubscribe(e,t,n){const r=`${e}::${n}`;if((0,c.b)(this.__internal__subscriptions[r]))return k.debug((()=>`Unable to find active subscription=${r}`)),!1;delete this.__internal__subscriptions[r];try{return!(this.isConnected&&!(0,d.k)(this.__internal__websocket))||this.send(t,[n])}catch{return!1}}__internal__emit=(e,...t)=>{this.__internal__eventemitter.emit(e,...t)};__internal__onSocketClose=e=>{const t=new Error(`disconnected from ${this.endpoint}: ${e.code}:: ${e.reason||function(e){if(e>=0&&e<=999)return"(Unused)";if(e>=1016){if(e<=1999)return"(For WebSocket standard)";if(e<=2999)return"(For WebSocket extensions)";if(e<=3999)return"(For libraries and frameworks)";if(e<=4999)return"(For applications)"}return T[e]||"(Unknown)"}(e.code)}`);this.__internal__autoConnectMs>0&&k.error(t.message),this.__internal__isConnected=!1,this.__internal__websocket&&(this.__internal__websocket.onclose=null,this.__internal__websocket.onerror=null,this.__internal__websocket.onmessage=null,this.__internal__websocket.onopen=null,this.__internal__websocket=null),this.__internal__timeoutId&&(clearInterval(this.__internal__timeoutId),this.__internal__timeoutId=null),_(this.__internal__handlers,(e=>{try{e.callback(t,void 0)}catch(n){k.error(n)}})),_(this.__internal__waitingForId),this.__internal__endpointStats={bytesRecv:0,bytesSent:0,cached:0,errors:0,requests:0,subscriptions:0,timeout:0},this.__internal__emit("disconnected"),this.__internal__autoConnectMs>0&&setTimeout((()=>{this.connectWithRetry().catch(i.l)}),this.__internal__autoConnectMs)};__internal__onSocketError=e=>{k.debug((()=>["socket error",e])),this.__internal__emit("error",e)};__internal__onSocketMessage=e=>{k.debug((()=>["received",e.data]));const t=e.data.length;this.__internal__endpointStats.bytesRecv+=t,this.__internal__stats.total.bytesRecv+=t;const n=JSON.parse(e.data);return(0,c.b)(n.method)?this.__internal__onSocketMessageResult(n):this.__internal__onSocketMessageSubscribe(n)};__internal__onSocketMessageResult=e=>{const t=this.__internal__handlers[e.id];if(t){try{const{method:n,params:r,subscription:a}=t,i=this.__internal__coder.decodeResponse(e);if(t.callback(null,i),a){const e=`${a.type}::${i}`;this.__internal__subscriptions[e]=(0,u.b)({},a,{method:n,params:r}),this.__internal__waitingForId[e]&&this.__internal__onSocketMessageSubscribe(this.__internal__waitingForId[e])}}catch(n){this.__internal__endpointStats.errors++,this.__internal__stats.total.errors++,t.callback(n,void 0)}delete this.__internal__handlers[e.id]}else k.debug((()=>`Unable to find handler for id=${e.id}`))};__internal__onSocketMessageSubscribe=e=>{if(!e.method)throw new Error("No method found in JSONRPC response");const t=`${S[e.method]||e.method}::${e.params.subscription}`,n=this.__internal__subscriptions[t];if(!n)return this.__internal__waitingForId[t]=e,void k.debug((()=>`Unable to find handler for subscription=${t}`));delete this.__internal__waitingForId[t];try{const t=this.__internal__coder.decodeResponse(e);n.callback(null,t)}catch(r){this.__internal__endpointStats.errors++,this.__internal__stats.total.errors++,n.callback(r,void 0)}};__internal__onSocketOpen=()=>{if(null===this.__internal__websocket)throw new Error("WebSocket cannot be null in onOpen");return k.debug((()=>["connected to",this.endpoint])),this.__internal__isConnected=!0,this.__internal__resubscribe(),this.__internal__emit("connected"),!0};__internal__resubscribe=()=>{const e=this.__internal__subscriptions;this.__internal__subscriptions={},Promise.all(Object.keys(e).map((async t=>{const{callback:n,method:r,params:a,type:i}=e[t];if(!i.startsWith("author_"))try{await this.subscribe(i,r,a,n)}catch(s){k.error(s)}}))).catch(k.error)};__internal__timeoutHandlers=()=>{const e=Date.now(),t=Object.keys(this.__internal__handlers);for(let n=0,r=t.length;nthis.__internal__timeout){try{r.callback(new Error(`No response received from RPC endpoint in ${this.__internal__timeout/1e3}s`),void 0)}catch{}this.__internal__endpointStats.timeout++,this.__internal__stats.total.timeout++,delete this.__internal__handlers[t[n]]}}}}},8319:(e,t,n)=>{"use strict";n.d(t,{CW:()=>i,Ze:()=>s});var r=n(98967),a=n(75487);const i="function"==typeof r.Q&&"function"==typeof r.Q.asIntN,s="function"==typeof a.Mn.Buffer&&"function"==typeof a.Mn.Buffer.isBuffer;a.Mn.process},72598:(e,t,n)=>{"use strict";n.d(t,{V:()=>s});const r="0123456789abcdef",a=new Uint8Array(256),i=new Uint8Array(65536);for(let o=0,c=16;o9&&(a[0|r[o].toUpperCase().charCodeAt(0)]=0|o);for(let o=0;o<256;o++){const e=o<<8;for(let t=0;t<256;t++)i[e|t]=a[o]<<4|a[t]}function s(e,t=-1){if(!e)return new Uint8Array;let n=e.startsWith("0x")?2:0;const r=Math.ceil((e.length-n)/2),a=Math.ceil(-1===t?r:t/8),s=new Uint8Array(a);for(let o=a>r?a-r:0;o{"use strict";function r(e){return"bigint"==typeof e}n.d(t,{s:()=>r})},24466:(e,t,n)=>{"use strict";n.d(t,{f:()=>a});var r=n(39404);function a(e){return r.isBN(e)}},67536:(e,t,n)=>{"use strict";n.d(t,{P:()=>s});var r=n(75487),a=n(8319),i=n(8514);function s(e){return a.Ze&&!!e&&(0,i.T)(e.readDoubleLE)&&r.Mn.Buffer.isBuffer(e)}},8514:(e,t,n)=>{"use strict";function r(e){return"function"==typeof e}n.d(t,{T:()=>r})},77389:(e,t,n)=>{"use strict";n.d(t,{D8:()=>o,MJ:()=>s,Mp:()=>i});var r=n(8514),a=n(34501);function i(...e){return t=>((0,a.G)(t)||(0,r.T)(t))&&e.every((e=>(0,r.T)(t[e])))}function s(...e){return t=>(0,r.T)(t)&&e.every((e=>(0,r.T)(t[e])))}function o(...e){return t=>(0,a.G)(t)&&e.every((e=>(0,r.T)(t[e])))}},74749:(e,t,n)=>{"use strict";n.d(t,{Ed:()=>a,eR:()=>r,qv:()=>i});const r=/^0x[\da-fA-F]+$/,a=/^[\da-fA-F]+$/;function i(e,t=-1,n){return"string"==typeof e&&("0x"===e||r.test(e))&&(-1===t?n||e.length%2==0:e.length===2+Math.ceil(t/4))}},48827:(e,t,n)=>{"use strict";function r(e){return null===e}n.d(t,{k:()=>r})},55471:(e,t,n)=>{"use strict";function r(e){return"number"==typeof e}n.d(t,{E:()=>r})},34501:(e,t,n)=>{"use strict";function r(e){return!!e&&"object"==typeof e}n.d(t,{G:()=>r})},25311:(e,t,n)=>{"use strict";function r(e){return"string"==typeof e||e instanceof String}n.d(t,{K:()=>r})},336:(e,t,n)=>{"use strict";function r(e){return(e&&e.constructor)===Uint8Array||e instanceof Uint8Array}n.d(t,{b:()=>r})},74032:(e,t,n)=>{"use strict";function r(e){return void 0===e}n.d(t,{b:()=>r})},52502:(e,t,n)=>{"use strict";n.d(t,{v:()=>g});var r=n(75487);function a(e){return e.toString().padStart(2,"0")}var i=n(24466),s=n(67536),o=n(8514),c=n(34501),d=n(336),u=n(82422),l=n(79931),f=n(56199);const p={debug:"log",error:"error",log:"log",warn:"warn"};function h(e){return Array.isArray(e)?e.map(h):(0,i.f)(e)?e.toString():(0,d.b)(e)||(0,s.P)(e)?(0,u.X)((0,l.e)(e)):function(e){if(e&&(0,c.G)(e)&&e.constructor===Object){const t={};for(const[n,r]of Object.entries(e))t[n]=h(r);return t}return e}(e)}function b(e,t,n,r=-1){if(1===n.length&&(0,o.T)(n[0])){const a=n[0]();return b(e,t,Array.isArray(a)?a:[a],r)}var i,s;console[p[e]](`${(s=new Date).getFullYear().toString()}-${a(s.getMonth()+1)}-${a(s.getDate())} ${a(s.getHours())}:${a(s.getMinutes())}:${a(s.getSeconds())}`,t,...n.map(h).map((i=r,e=>{if(i<=0)return e;const t=`${e}`;return t.lengthb("debug",t,e,a):f.l,error:(...e)=>b("error",t,e),log:(...e)=>b("log",t,e),noop:f.l,warn:(...e)=>b("warn",t,e)}}},56199:(e,t,n)=>{"use strict";function r(e){return e}function a(){}n.d(t,{D:()=>r,l:()=>a})},76284:(e,t,n)=>{"use strict";function r(e,...t){for(let n=0,r=t.length;nr})},58861:(e,t,n)=>{"use strict";n.d(t,{j:()=>s});var r=n(75487);class a{encode(e){const t=e.length,n=new Uint8Array(t);for(let r=0;r{"use strict";n.d(t,{A:()=>i});var r=n(26805);function a(e,t){return(0,r.s)(t)?t.toString():t}function i(e,t){return JSON.stringify(e,a,t)}},82422:(e,t,n)=>{"use strict";n.d(t,{X:()=>s});const r=new Array(256),a=new Array(65536);for(let o=0;o<256;o++)r[o]=o.toString(16).padStart(2,"0");for(let o=0;o<256;o++){const e=o<<8;for(let t=0;t<256;t++)a[e|t]=r[o]+r[t]}function i(e,t){const n=e.length%2|0,i=e.length-n|0;for(let r=0;r0){const n=Math.ceil(t/8);if(e.length>n)return`${i(e.subarray(0,n/2),r)}\u2026${i(e.subarray(e.length-n/2),"")}`}return i(e,r)}},79931:(e,t,n)=>{"use strict";n.d(t,{e:()=>c});var r=n(72598),a=n(67536),i=n(74749),s=n(336),o=n(58861);function c(e){return(0,s.b)(e)?(0,a.P)(e)?new Uint8Array(e):e:(0,i.qv)(e)?(0,r.V)(e):Array.isArray(e)?new Uint8Array(e):(0,o.j)(e)}},98967:(e,t,n)=>{"use strict";function r(){return Number.NaN}n.d(t,{Q:()=>a});const a=(0,n(75487).pc)("BigInt",r)},75487:(e,t,n)=>{"use strict";n.d(t,{Mn:()=>r,pc:()=>a});const r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this");function a(e,t){return void 0===r[e]?t:r[e]}},74486:(e,t,n)=>{"use strict";n.d(t,{b:()=>r});var r=n(30228)}}]); \ No newline at end of file +/*! For license information please see 3482.bc9a25f8.js.LICENSE.txt */ +(self.webpackChunk=self.webpackChunk||[]).push([[3482],{39404:function(e,t,n){!function(e,t){"use strict";function r(e,t){if(!e)throw new Error(t||"Assertion failed")}function a(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function i(e,t,n){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var s;"object"==typeof e?e.exports=i:t.BN=i,i.BN=i,i.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:n(47790).Buffer}catch(M){}function o(e,t){var n=e.charCodeAt(t);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void r(!1,"Invalid character in "+e)}function c(e,t,n){var r=o(e,n);return n-1>=t&&(r|=o(e,n-1)<<4),r}function d(e,t,n,a){for(var i=0,s=0,o=Math.min(e.length,n),c=t;c=49?d-49+10:d>=17?d-17+10:d,r(d>=0&&s0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var a=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(a++,this.negative=1),a=0;a-=3)s=e[a]|e[a-1]<<8|e[a-2]<<16,this.words[i]|=s<>>26-o&67108863,(o+=24)>=26&&(o-=26,i++);else if("le"===n)for(a=0,i=0;a>>26-o&67108863,(o+=24)>=26&&(o-=26,i++);return this._strip()},i.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=2)a=c(e,t,r)<=18?(i-=18,s+=1,this.words[s]|=a>>>26):i+=8;else for(r=(e.length-t)%2==0?t+1:t;r=18?(i-=18,s+=1,this.words[s]|=a>>>26):i+=8;this._strip()},i.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,a=1;a<=67108863;a*=t)r++;r--,a=a/t|0;for(var i=e.length-n,s=i%r,o=Math.min(i,i-s)+n,c=0,u=n;u1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=l}catch(M){i.prototype.inspect=l}else i.prototype.inspect=l;function l(){return(this.red?""}var f=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],p=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var a=0,i=0,s=0;s>>24-a&16777215,(a+=2)>=26&&(a-=26,s--),n=0!==i||s!==this.length-1?f[6-c.length]+c+n:c+n}for(0!==i&&(n=i.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var d=p[e],u=h[e];n="";var l=this.clone();for(l.negative=0;!l.isZero();){var b=l.modrn(u).toString(e);n=(l=l.idivn(u)).isZero()?b+n:f[d-b.length]+b+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16,2)},s&&(i.prototype.toBuffer=function(e,t){return this.toArrayLike(s,e,t)}),i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)};function b(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var a=0|e.words[0],i=0|t.words[0],s=a*i,o=67108863&s,c=s/67108864|0;n.words[0]=o;for(var d=1;d>>26,l=67108863&c,f=Math.min(d,t.length-1),p=Math.max(0,d-e.length+1);p<=f;p++){var h=d-p|0;u+=(s=(a=0|e.words[h])*(i=0|t.words[p])+l)/67108864|0,l=67108863&s}n.words[d]=0|l,c=0|u}return 0!==c?n.words[d]=0|c:n.length--,n._strip()}i.prototype.toArrayLike=function(e,t,n){this._strip();var a=this.byteLength(),i=n||Math.max(1,a);r(a<=i,"byte array longer than desired length"),r(i>0,"Requested array length <= 0");var s=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,i);return this["_toArrayLike"+("le"===t?"LE":"BE")](s,a),s},i.prototype._toArrayLikeLE=function(e,t){for(var n=0,r=0,a=0,i=0;a>8&255),n>16&255),6===i?(n>24&255),r=0,i=0):(r=s>>>24,i+=2)}if(n=0&&(e[n--]=s>>8&255),n>=0&&(e[n--]=s>>16&255),6===i?(n>=0&&(e[n--]=s>>24&255),r=0,i=0):(r=s>>>24,i+=2)}if(n>=0)for(e[n--]=r;n>=0;)e[n--]=0},Math.clz32?i.prototype._countBits=function(e){return 32-Math.clz32(e)}:i.prototype._countBits=function(e){var t=e,n=0;return t>=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 8191&t||(n+=13,t>>>=13),127&t||(n+=7,t>>>=7),15&t||(n+=4,t>>>=4),3&t||(n+=2,t>>>=2),1&t||n++,n},i.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var a=0;a0&&(this.words[a]=~this.words[a]&67108863>>26-n),this._strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,a=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var a=0,i=0;i>>26;for(;0!==a&&i>>26;if(this.length=n.length,0!==a)this.words[this.length]=a,this.length++;else if(n!==this)for(;ie.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,a=this.cmp(e);if(0===a)return this.negative=0,this.length=1,this.words[0]=0,this;a>0?(n=this,r=e):(n=e,r=this);for(var i=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==i&&s>26,this.words[s]=67108863&t;if(0===i&&s>>13,p=0|s[1],h=8191&p,b=p>>>13,m=0|s[2],y=8191&m,x=m>>>13,g=0|s[3],v=8191&g,w=g>>>13,V=0|s[4],T=8191&V,S=V>>>13,k=0|s[5],_=8191&k,P=k>>>13,M=0|s[6],I=8191&M,N=M>>>13,E=0|s[7],O=8191&E,A=E>>>13,C=0|s[8],H=8191&C,R=C>>>13,B=0|s[9],L=8191&B,z=B>>>13,U=0|o[0],D=8191&U,q=U>>>13,j=0|o[1],F=8191&j,X=j>>>13,W=0|o[2],Z=8191&W,G=W>>>13,K=0|o[3],J=8191&K,Y=K>>>13,Q=0|o[4],$=8191&Q,ee=Q>>>13,te=0|o[5],ne=8191&te,re=te>>>13,ae=0|o[6],ie=8191&ae,se=ae>>>13,oe=0|o[7],ce=8191&oe,de=oe>>>13,ue=0|o[8],le=8191&ue,fe=ue>>>13,pe=0|o[9],he=8191&pe,be=pe>>>13;n.negative=e.negative^t.negative,n.length=19;var me=(d+(r=Math.imul(l,D))|0)+((8191&(a=(a=Math.imul(l,q))+Math.imul(f,D)|0))<<13)|0;d=((i=Math.imul(f,q))+(a>>>13)|0)+(me>>>26)|0,me&=67108863,r=Math.imul(h,D),a=(a=Math.imul(h,q))+Math.imul(b,D)|0,i=Math.imul(b,q);var ye=(d+(r=r+Math.imul(l,F)|0)|0)+((8191&(a=(a=a+Math.imul(l,X)|0)+Math.imul(f,F)|0))<<13)|0;d=((i=i+Math.imul(f,X)|0)+(a>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,D),a=(a=Math.imul(y,q))+Math.imul(x,D)|0,i=Math.imul(x,q),r=r+Math.imul(h,F)|0,a=(a=a+Math.imul(h,X)|0)+Math.imul(b,F)|0,i=i+Math.imul(b,X)|0;var xe=(d+(r=r+Math.imul(l,Z)|0)|0)+((8191&(a=(a=a+Math.imul(l,G)|0)+Math.imul(f,Z)|0))<<13)|0;d=((i=i+Math.imul(f,G)|0)+(a>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(v,D),a=(a=Math.imul(v,q))+Math.imul(w,D)|0,i=Math.imul(w,q),r=r+Math.imul(y,F)|0,a=(a=a+Math.imul(y,X)|0)+Math.imul(x,F)|0,i=i+Math.imul(x,X)|0,r=r+Math.imul(h,Z)|0,a=(a=a+Math.imul(h,G)|0)+Math.imul(b,Z)|0,i=i+Math.imul(b,G)|0;var ge=(d+(r=r+Math.imul(l,J)|0)|0)+((8191&(a=(a=a+Math.imul(l,Y)|0)+Math.imul(f,J)|0))<<13)|0;d=((i=i+Math.imul(f,Y)|0)+(a>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(T,D),a=(a=Math.imul(T,q))+Math.imul(S,D)|0,i=Math.imul(S,q),r=r+Math.imul(v,F)|0,a=(a=a+Math.imul(v,X)|0)+Math.imul(w,F)|0,i=i+Math.imul(w,X)|0,r=r+Math.imul(y,Z)|0,a=(a=a+Math.imul(y,G)|0)+Math.imul(x,Z)|0,i=i+Math.imul(x,G)|0,r=r+Math.imul(h,J)|0,a=(a=a+Math.imul(h,Y)|0)+Math.imul(b,J)|0,i=i+Math.imul(b,Y)|0;var ve=(d+(r=r+Math.imul(l,$)|0)|0)+((8191&(a=(a=a+Math.imul(l,ee)|0)+Math.imul(f,$)|0))<<13)|0;d=((i=i+Math.imul(f,ee)|0)+(a>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(_,D),a=(a=Math.imul(_,q))+Math.imul(P,D)|0,i=Math.imul(P,q),r=r+Math.imul(T,F)|0,a=(a=a+Math.imul(T,X)|0)+Math.imul(S,F)|0,i=i+Math.imul(S,X)|0,r=r+Math.imul(v,Z)|0,a=(a=a+Math.imul(v,G)|0)+Math.imul(w,Z)|0,i=i+Math.imul(w,G)|0,r=r+Math.imul(y,J)|0,a=(a=a+Math.imul(y,Y)|0)+Math.imul(x,J)|0,i=i+Math.imul(x,Y)|0,r=r+Math.imul(h,$)|0,a=(a=a+Math.imul(h,ee)|0)+Math.imul(b,$)|0,i=i+Math.imul(b,ee)|0;var we=(d+(r=r+Math.imul(l,ne)|0)|0)+((8191&(a=(a=a+Math.imul(l,re)|0)+Math.imul(f,ne)|0))<<13)|0;d=((i=i+Math.imul(f,re)|0)+(a>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(I,D),a=(a=Math.imul(I,q))+Math.imul(N,D)|0,i=Math.imul(N,q),r=r+Math.imul(_,F)|0,a=(a=a+Math.imul(_,X)|0)+Math.imul(P,F)|0,i=i+Math.imul(P,X)|0,r=r+Math.imul(T,Z)|0,a=(a=a+Math.imul(T,G)|0)+Math.imul(S,Z)|0,i=i+Math.imul(S,G)|0,r=r+Math.imul(v,J)|0,a=(a=a+Math.imul(v,Y)|0)+Math.imul(w,J)|0,i=i+Math.imul(w,Y)|0,r=r+Math.imul(y,$)|0,a=(a=a+Math.imul(y,ee)|0)+Math.imul(x,$)|0,i=i+Math.imul(x,ee)|0,r=r+Math.imul(h,ne)|0,a=(a=a+Math.imul(h,re)|0)+Math.imul(b,ne)|0,i=i+Math.imul(b,re)|0;var Ve=(d+(r=r+Math.imul(l,ie)|0)|0)+((8191&(a=(a=a+Math.imul(l,se)|0)+Math.imul(f,ie)|0))<<13)|0;d=((i=i+Math.imul(f,se)|0)+(a>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,r=Math.imul(O,D),a=(a=Math.imul(O,q))+Math.imul(A,D)|0,i=Math.imul(A,q),r=r+Math.imul(I,F)|0,a=(a=a+Math.imul(I,X)|0)+Math.imul(N,F)|0,i=i+Math.imul(N,X)|0,r=r+Math.imul(_,Z)|0,a=(a=a+Math.imul(_,G)|0)+Math.imul(P,Z)|0,i=i+Math.imul(P,G)|0,r=r+Math.imul(T,J)|0,a=(a=a+Math.imul(T,Y)|0)+Math.imul(S,J)|0,i=i+Math.imul(S,Y)|0,r=r+Math.imul(v,$)|0,a=(a=a+Math.imul(v,ee)|0)+Math.imul(w,$)|0,i=i+Math.imul(w,ee)|0,r=r+Math.imul(y,ne)|0,a=(a=a+Math.imul(y,re)|0)+Math.imul(x,ne)|0,i=i+Math.imul(x,re)|0,r=r+Math.imul(h,ie)|0,a=(a=a+Math.imul(h,se)|0)+Math.imul(b,ie)|0,i=i+Math.imul(b,se)|0;var Te=(d+(r=r+Math.imul(l,ce)|0)|0)+((8191&(a=(a=a+Math.imul(l,de)|0)+Math.imul(f,ce)|0))<<13)|0;d=((i=i+Math.imul(f,de)|0)+(a>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(H,D),a=(a=Math.imul(H,q))+Math.imul(R,D)|0,i=Math.imul(R,q),r=r+Math.imul(O,F)|0,a=(a=a+Math.imul(O,X)|0)+Math.imul(A,F)|0,i=i+Math.imul(A,X)|0,r=r+Math.imul(I,Z)|0,a=(a=a+Math.imul(I,G)|0)+Math.imul(N,Z)|0,i=i+Math.imul(N,G)|0,r=r+Math.imul(_,J)|0,a=(a=a+Math.imul(_,Y)|0)+Math.imul(P,J)|0,i=i+Math.imul(P,Y)|0,r=r+Math.imul(T,$)|0,a=(a=a+Math.imul(T,ee)|0)+Math.imul(S,$)|0,i=i+Math.imul(S,ee)|0,r=r+Math.imul(v,ne)|0,a=(a=a+Math.imul(v,re)|0)+Math.imul(w,ne)|0,i=i+Math.imul(w,re)|0,r=r+Math.imul(y,ie)|0,a=(a=a+Math.imul(y,se)|0)+Math.imul(x,ie)|0,i=i+Math.imul(x,se)|0,r=r+Math.imul(h,ce)|0,a=(a=a+Math.imul(h,de)|0)+Math.imul(b,ce)|0,i=i+Math.imul(b,de)|0;var Se=(d+(r=r+Math.imul(l,le)|0)|0)+((8191&(a=(a=a+Math.imul(l,fe)|0)+Math.imul(f,le)|0))<<13)|0;d=((i=i+Math.imul(f,fe)|0)+(a>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(L,D),a=(a=Math.imul(L,q))+Math.imul(z,D)|0,i=Math.imul(z,q),r=r+Math.imul(H,F)|0,a=(a=a+Math.imul(H,X)|0)+Math.imul(R,F)|0,i=i+Math.imul(R,X)|0,r=r+Math.imul(O,Z)|0,a=(a=a+Math.imul(O,G)|0)+Math.imul(A,Z)|0,i=i+Math.imul(A,G)|0,r=r+Math.imul(I,J)|0,a=(a=a+Math.imul(I,Y)|0)+Math.imul(N,J)|0,i=i+Math.imul(N,Y)|0,r=r+Math.imul(_,$)|0,a=(a=a+Math.imul(_,ee)|0)+Math.imul(P,$)|0,i=i+Math.imul(P,ee)|0,r=r+Math.imul(T,ne)|0,a=(a=a+Math.imul(T,re)|0)+Math.imul(S,ne)|0,i=i+Math.imul(S,re)|0,r=r+Math.imul(v,ie)|0,a=(a=a+Math.imul(v,se)|0)+Math.imul(w,ie)|0,i=i+Math.imul(w,se)|0,r=r+Math.imul(y,ce)|0,a=(a=a+Math.imul(y,de)|0)+Math.imul(x,ce)|0,i=i+Math.imul(x,de)|0,r=r+Math.imul(h,le)|0,a=(a=a+Math.imul(h,fe)|0)+Math.imul(b,le)|0,i=i+Math.imul(b,fe)|0;var ke=(d+(r=r+Math.imul(l,he)|0)|0)+((8191&(a=(a=a+Math.imul(l,be)|0)+Math.imul(f,he)|0))<<13)|0;d=((i=i+Math.imul(f,be)|0)+(a>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(L,F),a=(a=Math.imul(L,X))+Math.imul(z,F)|0,i=Math.imul(z,X),r=r+Math.imul(H,Z)|0,a=(a=a+Math.imul(H,G)|0)+Math.imul(R,Z)|0,i=i+Math.imul(R,G)|0,r=r+Math.imul(O,J)|0,a=(a=a+Math.imul(O,Y)|0)+Math.imul(A,J)|0,i=i+Math.imul(A,Y)|0,r=r+Math.imul(I,$)|0,a=(a=a+Math.imul(I,ee)|0)+Math.imul(N,$)|0,i=i+Math.imul(N,ee)|0,r=r+Math.imul(_,ne)|0,a=(a=a+Math.imul(_,re)|0)+Math.imul(P,ne)|0,i=i+Math.imul(P,re)|0,r=r+Math.imul(T,ie)|0,a=(a=a+Math.imul(T,se)|0)+Math.imul(S,ie)|0,i=i+Math.imul(S,se)|0,r=r+Math.imul(v,ce)|0,a=(a=a+Math.imul(v,de)|0)+Math.imul(w,ce)|0,i=i+Math.imul(w,de)|0,r=r+Math.imul(y,le)|0,a=(a=a+Math.imul(y,fe)|0)+Math.imul(x,le)|0,i=i+Math.imul(x,fe)|0;var _e=(d+(r=r+Math.imul(h,he)|0)|0)+((8191&(a=(a=a+Math.imul(h,be)|0)+Math.imul(b,he)|0))<<13)|0;d=((i=i+Math.imul(b,be)|0)+(a>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(L,Z),a=(a=Math.imul(L,G))+Math.imul(z,Z)|0,i=Math.imul(z,G),r=r+Math.imul(H,J)|0,a=(a=a+Math.imul(H,Y)|0)+Math.imul(R,J)|0,i=i+Math.imul(R,Y)|0,r=r+Math.imul(O,$)|0,a=(a=a+Math.imul(O,ee)|0)+Math.imul(A,$)|0,i=i+Math.imul(A,ee)|0,r=r+Math.imul(I,ne)|0,a=(a=a+Math.imul(I,re)|0)+Math.imul(N,ne)|0,i=i+Math.imul(N,re)|0,r=r+Math.imul(_,ie)|0,a=(a=a+Math.imul(_,se)|0)+Math.imul(P,ie)|0,i=i+Math.imul(P,se)|0,r=r+Math.imul(T,ce)|0,a=(a=a+Math.imul(T,de)|0)+Math.imul(S,ce)|0,i=i+Math.imul(S,de)|0,r=r+Math.imul(v,le)|0,a=(a=a+Math.imul(v,fe)|0)+Math.imul(w,le)|0,i=i+Math.imul(w,fe)|0;var Pe=(d+(r=r+Math.imul(y,he)|0)|0)+((8191&(a=(a=a+Math.imul(y,be)|0)+Math.imul(x,he)|0))<<13)|0;d=((i=i+Math.imul(x,be)|0)+(a>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,r=Math.imul(L,J),a=(a=Math.imul(L,Y))+Math.imul(z,J)|0,i=Math.imul(z,Y),r=r+Math.imul(H,$)|0,a=(a=a+Math.imul(H,ee)|0)+Math.imul(R,$)|0,i=i+Math.imul(R,ee)|0,r=r+Math.imul(O,ne)|0,a=(a=a+Math.imul(O,re)|0)+Math.imul(A,ne)|0,i=i+Math.imul(A,re)|0,r=r+Math.imul(I,ie)|0,a=(a=a+Math.imul(I,se)|0)+Math.imul(N,ie)|0,i=i+Math.imul(N,se)|0,r=r+Math.imul(_,ce)|0,a=(a=a+Math.imul(_,de)|0)+Math.imul(P,ce)|0,i=i+Math.imul(P,de)|0,r=r+Math.imul(T,le)|0,a=(a=a+Math.imul(T,fe)|0)+Math.imul(S,le)|0,i=i+Math.imul(S,fe)|0;var Me=(d+(r=r+Math.imul(v,he)|0)|0)+((8191&(a=(a=a+Math.imul(v,be)|0)+Math.imul(w,he)|0))<<13)|0;d=((i=i+Math.imul(w,be)|0)+(a>>>13)|0)+(Me>>>26)|0,Me&=67108863,r=Math.imul(L,$),a=(a=Math.imul(L,ee))+Math.imul(z,$)|0,i=Math.imul(z,ee),r=r+Math.imul(H,ne)|0,a=(a=a+Math.imul(H,re)|0)+Math.imul(R,ne)|0,i=i+Math.imul(R,re)|0,r=r+Math.imul(O,ie)|0,a=(a=a+Math.imul(O,se)|0)+Math.imul(A,ie)|0,i=i+Math.imul(A,se)|0,r=r+Math.imul(I,ce)|0,a=(a=a+Math.imul(I,de)|0)+Math.imul(N,ce)|0,i=i+Math.imul(N,de)|0,r=r+Math.imul(_,le)|0,a=(a=a+Math.imul(_,fe)|0)+Math.imul(P,le)|0,i=i+Math.imul(P,fe)|0;var Ie=(d+(r=r+Math.imul(T,he)|0)|0)+((8191&(a=(a=a+Math.imul(T,be)|0)+Math.imul(S,he)|0))<<13)|0;d=((i=i+Math.imul(S,be)|0)+(a>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(L,ne),a=(a=Math.imul(L,re))+Math.imul(z,ne)|0,i=Math.imul(z,re),r=r+Math.imul(H,ie)|0,a=(a=a+Math.imul(H,se)|0)+Math.imul(R,ie)|0,i=i+Math.imul(R,se)|0,r=r+Math.imul(O,ce)|0,a=(a=a+Math.imul(O,de)|0)+Math.imul(A,ce)|0,i=i+Math.imul(A,de)|0,r=r+Math.imul(I,le)|0,a=(a=a+Math.imul(I,fe)|0)+Math.imul(N,le)|0,i=i+Math.imul(N,fe)|0;var Ne=(d+(r=r+Math.imul(_,he)|0)|0)+((8191&(a=(a=a+Math.imul(_,be)|0)+Math.imul(P,he)|0))<<13)|0;d=((i=i+Math.imul(P,be)|0)+(a>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,r=Math.imul(L,ie),a=(a=Math.imul(L,se))+Math.imul(z,ie)|0,i=Math.imul(z,se),r=r+Math.imul(H,ce)|0,a=(a=a+Math.imul(H,de)|0)+Math.imul(R,ce)|0,i=i+Math.imul(R,de)|0,r=r+Math.imul(O,le)|0,a=(a=a+Math.imul(O,fe)|0)+Math.imul(A,le)|0,i=i+Math.imul(A,fe)|0;var Ee=(d+(r=r+Math.imul(I,he)|0)|0)+((8191&(a=(a=a+Math.imul(I,be)|0)+Math.imul(N,he)|0))<<13)|0;d=((i=i+Math.imul(N,be)|0)+(a>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(L,ce),a=(a=Math.imul(L,de))+Math.imul(z,ce)|0,i=Math.imul(z,de),r=r+Math.imul(H,le)|0,a=(a=a+Math.imul(H,fe)|0)+Math.imul(R,le)|0,i=i+Math.imul(R,fe)|0;var Oe=(d+(r=r+Math.imul(O,he)|0)|0)+((8191&(a=(a=a+Math.imul(O,be)|0)+Math.imul(A,he)|0))<<13)|0;d=((i=i+Math.imul(A,be)|0)+(a>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,r=Math.imul(L,le),a=(a=Math.imul(L,fe))+Math.imul(z,le)|0,i=Math.imul(z,fe);var Ae=(d+(r=r+Math.imul(H,he)|0)|0)+((8191&(a=(a=a+Math.imul(H,be)|0)+Math.imul(R,he)|0))<<13)|0;d=((i=i+Math.imul(R,be)|0)+(a>>>13)|0)+(Ae>>>26)|0,Ae&=67108863;var Ce=(d+(r=Math.imul(L,he))|0)+((8191&(a=(a=Math.imul(L,be))+Math.imul(z,he)|0))<<13)|0;return d=((i=Math.imul(z,be))+(a>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,c[0]=me,c[1]=ye,c[2]=xe,c[3]=ge,c[4]=ve,c[5]=we,c[6]=Ve,c[7]=Te,c[8]=Se,c[9]=ke,c[10]=_e,c[11]=Pe,c[12]=Me,c[13]=Ie,c[14]=Ne,c[15]=Ee,c[16]=Oe,c[17]=Ae,c[18]=Ce,0!==d&&(c[19]=d,n.length++),n};function y(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,a=0,i=0;i>>26)|0)>>>26,s&=67108863}n.words[i]=o,r=s,s=a}return 0!==r?n.words[i]=r:n.length--,n._strip()}function x(e,t,n){return y(e,t,n)}function g(e,t){this.x=e,this.y=t}Math.imul||(m=b),i.prototype.mulTo=function(e,t){var n=this.length+e.length;return 10===this.length&&10===e.length?m(this,e,t):n<63?b(this,e,t):n<1024?y(this,e,t):x(this,e,t)},g.prototype.makeRBT=function(e){for(var t=new Array(e),n=i.prototype._countBits(e)-1,r=0;r>=1;return r},g.prototype.permute=function(e,t,n,r,a,i){for(var s=0;s>>=1)a++;return 1<>>=13,n[2*s+1]=8191&i,i>>>=13;for(s=2*t;s>=26,n+=i/67108864|0,n+=s>>>26,this.words[a]=67108863&s}return 0!==n&&(this.words[a]=n,this.length++),t?this.ineg():this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>a&1}return t}(e);if(0===t.length)return new i(1);for(var n=this,r=0;r=0);var t,n=e%26,a=(e-n)/26,i=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(t=0;t>>26-n}s&&(this.words[t]=s,this.length++)}if(0!==a){for(t=this.length-1;t>=0;t--)this.words[t+a]=this.words[t];for(t=0;t=0),a=t?(t-t%26)/26:0;var i=e%26,s=Math.min((e-i)/26,this.length),o=67108863^67108863>>>i<s)for(this.length-=s,d=0;d=0&&(0!==u||d>=a);d--){var l=0|this.words[d];this.words[d]=u<<26-i|l>>>i,u=l&o}return c&&0!==u&&(c.words[c.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,a=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var a=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(c/67108864|0),this.words[a+n]=67108863&i}for(;a>26,this.words[a+n]=67108863&i;if(0===o)return this._strip();for(r(-1===o),o=0,a=0;a>26,this.words[a]=67108863&i;return this.negative=1,this._strip()},i.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),a=e,s=0|a.words[a.length-1];0!==(n=26-this._countBits(s))&&(a=a.ushln(n),r.iushln(n),s=0|a.words[a.length-1]);var o,c=r.length-a.length;if("mod"!==t){(o=new i(null)).length=c+1,o.words=new Array(o.length);for(var d=0;d=0;l--){var f=67108864*(0|r.words[a.length+l])+(0|r.words[a.length+l-1]);for(f=Math.min(f/s|0,67108863),r._ishlnsubmul(a,f,l);0!==r.negative;)f--,r.negative=0,r._ishlnsubmul(a,1,l),r.isZero()||(r.negative^=1);o&&(o.words[l]=f)}return o&&o._strip(),r._strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:o||null,mod:r}},i.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(o=this.neg().divmod(e,t),"mod"!==t&&(a=o.div.neg()),"div"!==t&&(s=o.mod.neg(),n&&0!==s.negative&&s.iadd(e)),{div:a,mod:s}):0===this.negative&&0!==e.negative?(o=this.divmod(e.neg(),t),"mod"!==t&&(a=o.div.neg()),{div:a,mod:o.mod}):this.negative&e.negative?(o=this.neg().divmod(e.neg(),t),"div"!==t&&(s=o.mod.neg(),n&&0!==s.negative&&s.isub(e)),{div:o.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new i(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modrn(e.words[0]))}:this._wordDiv(e,t);var a,s,o},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),a=e.andln(1),i=n.cmp(r);return i<0||1===a&&0===i?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modrn=function(e){var t=e<0;t&&(e=-e),r(e<=67108863);for(var n=(1<<26)%e,a=0,i=this.length-1;i>=0;i--)a=(n*a+(0|this.words[i]))%e;return t?-a:a},i.prototype.modn=function(e){return this.modrn(e)},i.prototype.idivn=function(e){var t=e<0;t&&(e=-e),r(e<=67108863);for(var n=0,a=this.length-1;a>=0;a--){var i=(0|this.words[a])+67108864*n;this.words[a]=i/e|0,n=i%e}return this._strip(),t?this.ineg():this},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a=new i(1),s=new i(0),o=new i(0),c=new i(1),d=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++d;for(var u=n.clone(),l=t.clone();!t.isZero();){for(var f=0,p=1;!(t.words[0]&p)&&f<26;++f,p<<=1);if(f>0)for(t.iushrn(f);f-- >0;)(a.isOdd()||s.isOdd())&&(a.iadd(u),s.isub(l)),a.iushrn(1),s.iushrn(1);for(var h=0,b=1;!(n.words[0]&b)&&h<26;++h,b<<=1);if(h>0)for(n.iushrn(h);h-- >0;)(o.isOdd()||c.isOdd())&&(o.iadd(u),c.isub(l)),o.iushrn(1),c.iushrn(1);t.cmp(n)>=0?(t.isub(n),a.isub(o),s.isub(c)):(n.isub(t),o.isub(a),c.isub(s))}return{a:o,b:c,gcd:n.iushln(d)}},i.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a,s=new i(1),o=new i(0),c=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var d=0,u=1;!(t.words[0]&u)&&d<26;++d,u<<=1);if(d>0)for(t.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(c),s.iushrn(1);for(var l=0,f=1;!(n.words[0]&f)&&l<26;++l,f<<=1);if(l>0)for(n.iushrn(l);l-- >0;)o.isOdd()&&o.iadd(c),o.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(o)):(n.isub(t),o.isub(s))}return(a=0===t.cmpn(1)?s:o).cmpn(0)<0&&a.iadd(e),a},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var a=t.cmp(n);if(a<0){var i=t;t=n,n=i}else if(0===a||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,a=1<>>26,o&=67108863,this.words[s]=o}return 0!==i&&(this.words[s]=i,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var a=0|this.words[0];t=a===e?0:ae.length)return 1;if(this.length=0;n--){var r=0|this.words[n],a=0|e.words[n];if(r!==a){ra&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new _(e)},i.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function w(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function V(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function T(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function S(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function k(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(e){if("string"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function P(e){_.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},w.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},w.prototype.split=function(e,t){e.iushrn(this.n,0,t)},w.prototype.imulK=function(e){return e.imul(this.k)},a(V,w),V.prototype.split=function(e,t){for(var n=4194303,r=Math.min(e.length,9),a=0;a>>22,i=s}i>>>=22,e.words[a-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},V.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=a,t=r}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new V;else if("p224"===e)t=new T;else if("p192"===e)t=new S;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new k}return v[e]=t,t},_.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},_.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},_.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(u(e,e.umod(this.m)._forceRed(this)),e)},_.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},_.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},_.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},_.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},_.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},_.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},_.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},_.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},_.prototype.isqr=function(e){return this.imul(e,e.clone())},_.prototype.sqr=function(e){return this.mul(e,e)},_.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new i(1)).iushrn(2);return this.pow(e,n)}for(var a=this.m.subn(1),s=0;!a.isZero()&&0===a.andln(1);)s++,a.iushrn(1);r(!a.isZero());var o=new i(1).toRed(this),c=o.redNeg(),d=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);0!==this.pow(u,d).cmp(c);)u.redIAdd(c);for(var l=this.pow(u,a),f=this.pow(e,a.addn(1).iushrn(1)),p=this.pow(e,a),h=s;0!==p.cmp(o);){for(var b=p,m=0;0!==b.cmp(o);m++)b=b.redSqr();r(m=0;r--){for(var d=t.words[r],u=c-1;u>=0;u--){var l=d>>u&1;a!==n[0]&&(a=this.sqr(a)),0!==l||0!==s?(s<<=1,s|=l,(4===++o||0===r&&0===u)&&(a=this.mul(a,n[s]),o=0,s=0)):o=0}c=26}return a},_.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},_.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new P(e)},a(P,_),P.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},P.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},P.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=n.isub(r).iushrn(this.shift),i=a;return a.cmp(this.m)>=0?i=a.isub(this.m):a.cmpn(0)<0&&(i=a.iadd(this.m)),i._forceRed(this)},P.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=n.isub(r).iushrn(this.shift),s=a;return a.cmp(this.m)>=0?s=a.isub(this.m):a.cmpn(0)<0&&(s=a.iadd(this.m)),s._forceRed(this)},P.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=n.nmd(e),this)},30228:e=>{"use strict";var t=Object.prototype.hasOwnProperty,n="~";function r(){}function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,r,i,s){if("function"!=typeof r)throw new TypeError("The listener must be a function");var o=new a(r,i||e,s),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function s(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function o(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,r,a=[];if(0===this._eventsCount)return a;for(r in e=this._events)t.call(e,r)&&a.push(n?r.slice(1):r);return Object.getOwnPropertySymbols?a.concat(Object.getOwnPropertySymbols(e)):a},o.prototype.listeners=function(e){var t=n?n+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var a=0,i=r.length,s=new Array(i);a{t.$o=171008,t.qO=339468,t.ee="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"},10467:(e,t,n)=>{"use strict";function r(e,t,n,r,a,i,s){try{var o=e[i](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,a)}function a(e){return function(){var t=this,n=arguments;return new Promise((function(a,i){var s=e.apply(t,n);function o(e){r(s,a,i,o,c,"next",e)}function c(e){r(s,a,i,o,c,"throw",e)}o(void 0)}))}}n.d(t,{A:()=>a})},90675:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(82284);function a(){a=function(){return t};var e,t={},n=Object.prototype,i=n.hasOwnProperty,s=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},c=o.iterator||"@@iterator",d=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function f(e,t,n,r){var a=t&&t.prototype instanceof g?t:g,i=Object.create(a.prototype),o=new O(r||[]);return s(i,"_invoke",{value:M(e,n,o)}),i}function p(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=f;var h="suspendedStart",b="suspendedYield",m="executing",y="completed",x={};function g(){}function v(){}function w(){}var V={};l(V,c,(function(){return this}));var T=Object.getPrototypeOf,S=T&&T(T(A([])));S&&S!==n&&i.call(S,c)&&(V=S);var k=w.prototype=g.prototype=Object.create(V);function _(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function P(e,t){function n(a,s,o,c){var d=p(e[a],e,s);if("throw"!==d.type){var u=d.arg,l=u.value;return l&&"object"==(0,r.A)(l)&&i.call(l,"__await")?t.resolve(l.__await).then((function(e){n("next",e,o,c)}),(function(e){n("throw",e,o,c)})):t.resolve(l).then((function(e){u.value=e,o(u)}),(function(e){return n("throw",e,o,c)}))}c(d.arg)}var a;s(this,"_invoke",{value:function(e,r){function i(){return new t((function(t,a){n(e,r,t,a)}))}return a=a?a.then(i,i):i()}})}function M(t,n,r){var a=h;return function(i,s){if(a===m)throw Error("Generator is already running");if(a===y){if("throw"===i)throw s;return{value:e,done:!0}}for(r.method=i,r.arg=s;;){var o=r.delegate;if(o){var c=I(o,r);if(c){if(c===x)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===h)throw a=y,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=m;var d=p(t,n,r);if("normal"===d.type){if(a=r.done?y:b,d.arg===x)continue;return{value:d.arg,done:r.done}}"throw"===d.type&&(a=y,r.method="throw",r.arg=d.arg)}}}function I(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,I(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),x;var i=p(a,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,x;var s=i.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,x):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,x)}function N(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(N,this),this.reset(!0)}function A(t){if(t||""===t){var n=t[c];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,s=function n(){for(;++a=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var c=i.call(s,"catchLoc"),d=i.call(s,"finallyLoc");if(c&&d){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),x}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;E(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:A(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),x}},t}},28453:(e,t,n)=>{"use strict";n.d(t,{R:()=>s,x:()=>o});var r=n(96540);const a={},i=r.createContext(a);function s(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),r.createElement(i.Provider,{value:t},e.children)}},2026:(e,t,n)=>{"use strict";n.d(t,{G:()=>hV});var r={};n.r(r),n.d(r,{aK:()=>Lc,e8:()=>Vc,DO:()=>wc,dJ:()=>zc,OG:()=>Uc,My:()=>Sc,Ph:()=>Nc,lX:()=>Ec,Id:()=>Hc,fg:()=>jc,qj:()=>Cc,aT:()=>Ic,r4:()=>Bc,aY:()=>vc,x:()=>Wc,lq:()=>Oc,z:()=>Ac,zW:()=>kc,Q5:()=>Xc});var a={};n.r(a),n.d(a,{BitVec:()=>Dd,Bool:()=>Uo,Bytes:()=>sr,Data:()=>cu,F32:()=>jd,F64:()=>Fd,GeneralExtrinsic:()=>ws,GenericAccountId:()=>po,GenericAccountId32:()=>po,GenericAccountId33:()=>ho,GenericAccountIndex:()=>vo,GenericAddress:()=>zo,GenericBlock:()=>wo,GenericCall:()=>ko,GenericChainProperties:()=>Mo,GenericConsensusEngineId:()=>Co,GenericEthereumAccountId:()=>Rd,GenericEthereumLookupSource:()=>zd,GenericEvent:()=>zi,GenericEventData:()=>Li,GenericExtrinsic:()=>Qi,GenericExtrinsicEra:()=>is,GenericExtrinsicPayload:()=>cs,GenericExtrinsicPayloadUnknown:()=>ds,GenericExtrinsicPayloadV4:()=>hs,GenericExtrinsicPayloadV5:()=>gs,GenericExtrinsicSignatureV4:()=>ys,GenericExtrinsicSignatureV5:()=>vs,GenericExtrinsicUnknown:()=>us,GenericExtrinsicV4:()=>ps,GenericExtrinsicV5:()=>xs,GenericImmortalEra:()=>rs,GenericLookupSource:()=>Bo,GenericMortalEra:()=>as,GenericMultiAddress:()=>zo,GenericSignerPayload:()=>fs,GenericVote:()=>Fo,I128:()=>Kd,I16:()=>Wd,I256:()=>Jd,I32:()=>Zd,I64:()=>Gd,I8:()=>Xd,ISize:()=>Yd,Null:()=>Jt,OptionBool:()=>Qd,StorageKey:()=>pu,Text:()=>eu,Type:()=>tu,U128:()=>au,U16:()=>ru,U256:()=>iu,U32:()=>bo,U64:()=>$i,U8:()=>nu,USize:()=>su,bool:()=>Uo,f32:()=>jd,f64:()=>Fd,i128:()=>Kd,i16:()=>Wd,i256:()=>Jd,i32:()=>Zd,i64:()=>Gd,i8:()=>Xd,isize:()=>Yd,u128:()=>au,u16:()=>ru,u256:()=>iu,u32:()=>bo,u64:()=>$i,u8:()=>nu,usize:()=>su});var i={};n.r(i),n.d(i,{assetConversion:()=>Pu,assets:()=>Mu,attestations:()=>El,aura:()=>Iu,author:()=>pf,authorship:()=>Nu,babe:()=>Ou,balances:()=>Au,beefy:()=>Ru,benchmark:()=>Bu,blockbuilder:()=>qu,bridges:()=>Ol,chain:()=>hf,childstate:()=>bf,claims:()=>Al,collective:()=>ju,consensus:()=>Fu,contracts:()=>Wu,contractsAbi:()=>sf,crowdloan:()=>Cl,cumulus:()=>Hl,democracy:()=>Zu,dev:()=>Gu,discovery:()=>Ku,dryRunApi:()=>$l,elections:()=>Ju,engine:()=>Yu,eth:()=>cf,evm:()=>Qu,extrinsics:()=>$u,finality:()=>Bl,fungibles:()=>el,genericAsset:()=>tl,genesisBuilder:()=>nl,gilt:()=>rl,grandpa:()=>il,identity:()=>sl,imOnline:()=>ol,lottery:()=>cl,metadata:()=>yu,mixnet:()=>dl,mmr:()=>ul,nfts:()=>ll,nimbus:()=>df,nompools:()=>fl,offchain:()=>mf,offences:()=>pl,ormlOracle:()=>uf,ormlTokens:()=>lf,parachains:()=>Jl,payment:()=>Vf,poll:()=>Yl,pow:()=>hl,proxy:()=>bl,purchase:()=>Ql,recovery:()=>ml,rpc:()=>ff,runtime:()=>ku,scaleInfo:()=>_u,scheduler:()=>yl,session:()=>xl,society:()=>gl,staking:()=>vl,state:()=>Tf,statement:()=>wl,support:()=>Vl,syncstate:()=>Tl,system:()=>Sl,treasury:()=>kl,txpayment:()=>_l,txqueue:()=>Pl,uniques:()=>Ml,utility:()=>Il,vesting:()=>Nl,xcm:()=>nf,xcmPaymentApi:()=>rf,xcmRuntimeApi:()=>af});var s={};n.r(s),n.d(s,{kusama:()=>yh,polkadot:()=>xh,westend:()=>gh});var o={};n.r(o),n.d(o,{_flags:()=>vb,_identity:()=>Mb,accountId:()=>gb,flags:()=>wb,hasIdentity:()=>Nb,hasIdentityMulti:()=>Eb,idAndIndex:()=>Vb,idToIndex:()=>Ob,identity:()=>Ib,indexToId:()=>zb,indexes:()=>Lb,info:()=>Db});var c={};n.r(c),n.d(c,{hasProposals:()=>$b,members:()=>Qb,prime:()=>am,proposal:()=>em,proposalCount:()=>tm,proposalHashes:()=>nm,proposals:()=>rm});var d={};n.r(d),n.d(d,{_getIds:()=>sm,all:()=>om,expand:()=>dm,get:()=>cm,getExpanded:()=>um,listNodes:()=>fm});var u={};n.r(u),n.d(u,{account:()=>Nm,all:()=>Tm,votingBalance:()=>Om,votingBalances:()=>Em});var l={};n.r(l),n.d(l,{bounties:()=>Hm});var f={};n.r(f),n.d(f,{_getHeaderRange:()=>Km,bestNumber:()=>Um,bestNumberFinalized:()=>Dm,bestNumberLag:()=>qm,getBlock:()=>Fm,getBlockByNumber:()=>Xm,getHeader:()=>Zm,subscribeFinalizedBlocks:()=>Gm,subscribeFinalizedHeads:()=>Jm,subscribeNewBlocks:()=>Ym,subscribeNewHeads:()=>Qm});var p={};n.r(p),n.d(p,{fees:()=>$m});var h={};n.r(h),n.d(h,{hasProposals:()=>sy,members:()=>iy,prime:()=>ly,proposal:()=>oy,proposalCount:()=>cy,proposalHashes:()=>dy,proposals:()=>uy,votes:()=>ry,votesOf:()=>ay});var b={};n.r(b),n.d(b,{childKey:()=>fy,contributions:()=>gy,ownContributions:()=>Vy});var m={};n.r(m),n.d(m,{_referendumInfo:()=>Qy,_referendumVotes:()=>Jy,_referendumsVotes:()=>Yy,dispatchQueue:()=>Oy,locks:()=>Hy,nextExternal:()=>Ry,preimage:()=>Dy,preimages:()=>Uy,proposals:()=>jy,referendumIds:()=>Fy,referendums:()=>Xy,referendumsActive:()=>Wy,referendumsFinished:()=>Zy,referendumsInfo:()=>$y,sqrtElectorate:()=>ex});var y={};n.r(y),n.d(y,{info:()=>ax});var x={};n.r(x),n.d(x,{receivedHeartbeats:()=>sx});var g={};n.r(g),n.d(g,{hasProposals:()=>cx,members:()=>ox,prime:()=>px,proposal:()=>dx,proposalCount:()=>ux,proposalHashes:()=>lx,proposals:()=>fx});var v={};n.r(v),n.d(v,{info:()=>yx,overview:()=>gx});var w={};n.r(w),n.d(w,{eraLength:()=>kx,eraProgress:()=>_x,indexes:()=>wx,info:()=>Vx,progress:()=>Sx,sessionProgress:()=>Px});var V={};n.r(V),n.d(V,{_members:()=>Ex,candidates:()=>Mx,info:()=>Ix,member:()=>Nx,members:()=>Ox});var T={};n.r(T),n.d(T,{_eraExposure:()=>tg,_eraPrefs:()=>lg,_eraSlashes:()=>gg,_erasExposure:()=>rg,_erasPoints:()=>cg,_erasPrefs:()=>pg,_erasRewards:()=>mg,_erasSlashes:()=>wg,_ownExposures:()=>_g,_ownSlashes:()=>Ig,_stakerExposures:()=>Bg,_stakerPoints:()=>Ug,_stakerPrefs:()=>qg,_stakerRewards:()=>Zg,_stakerRewardsEras:()=>Wg,_stakerSlashes:()=>Yg,account:()=>Bx,accounts:()=>Rx,currentPoints:()=>Lx,electedInfo:()=>Ux,eraExposure:()=>ng,eraPrefs:()=>fg,eraSlashes:()=>vg,erasExposure:()=>ag,erasHistoric:()=>ig,erasPoints:()=>dg,erasPrefs:()=>hg,erasRewards:()=>yg,erasSlashes:()=>Vg,keys:()=>Tg,keysMulti:()=>Sg,nextElected:()=>ev,overview:()=>kg,ownExposure:()=>Pg,ownExposures:()=>Mg,ownSlash:()=>Ng,ownSlashes:()=>Eg,query:()=>Hg,queryMulti:()=>Rg,stakerExposure:()=>zg,stakerExposures:()=>Lg,stakerPoints:()=>Dg,stakerPrefs:()=>jg,stakerRewards:()=>Gg,stakerRewardsMulti:()=>Jg,stakerRewardsMultiEras:()=>Kg,stakerSlashes:()=>Qg,stashes:()=>$g,validators:()=>tv,waitingInfo:()=>rv});var S={};n.r(S),n.d(S,{hasProposals:()=>iv,members:()=>av,prime:()=>uv,proposal:()=>sv,proposalCount:()=>ov,proposalHashes:()=>cv,proposals:()=>dv});var k={};n.r(k),n.d(k,{proposals:()=>lv});var _={};n.r(_),n.d(_,{events:()=>fv,signingInfo:()=>wv});var P=n(56199),M=n(76284),I=n(25311),N=n(82422),E=n(79931);const O="@polkadot/api",A=(new URL("file:///home/runner/work/polkadot-wiki/polkadot-wiki/node_modules/@polkadot/api/packageInfo.js").pathname.substring(0,new URL("file:///home/runner/work/polkadot-wiki/polkadot-wiki/node_modules/@polkadot/api/packageInfo.js").pathname.lastIndexOf("/")+1),"15.0.2");function C(e,t){return e.findMetaCall((0,E.e)(t))}function H(e,t){return e.findMetaError((0,E.e)(t))}function R(e){var t=e((function(e){Error.call(e),e.stack=(new Error).stack}));return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var B=R((function(e){return function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}})),L=n(31635);function z(e){return"function"==typeof e}var U=R((function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=t}}));function D(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var q=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,a;if(!this.closed){this.closed=!0;var i=this._parentage;if(i)if(this._parentage=null,Array.isArray(i))try{for(var s=(0,L.__values)(i),o=s.next();!o.done;o=s.next()){o.value.remove(this)}}catch(p){e={error:p}}finally{try{o&&!o.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}else i.remove(this);var c=this.initialTeardown;if(z(c))try{c()}catch(h){a=h instanceof U?h.errors:[h]}var d=this._finalizers;if(d){this._finalizers=null;try{for(var u=(0,L.__values)(d),l=u.next();!l.done;l=u.next()){var f=l.value;try{X(f)}catch(b){a=null!=a?a:[],b instanceof U?a=(0,L.__spreadArray)((0,L.__spreadArray)([],(0,L.__read)(a)),(0,L.__read)(b.errors)):a.push(b)}}}catch(m){n={error:m}}finally{try{l&&!l.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(a)throw new U(a)}},e.prototype.add=function(t){var n;if(t&&t!==this)if(this.closed)X(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&D(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&D(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}(),j=q.EMPTY;function F(e){return e instanceof q||e&&"closed"in e&&z(e.remove)&&z(e.add)&&z(e.unsubscribe)}function X(e){z(e)?e():e.unsubscribe()}var W={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Z={setTimeout:function(e,t){for(var n=[],r=2;r{return n=t,!Array.isArray(n)||2!==n.length||function(e,t){return(0,Fe.b)(e)||(We(e)?!e.eq(t):e!==t)}(e.get(t[0]),t[1]);var n}))}function Ge(e,t){return Array.isArray(t)?Ze(e,t):t instanceof Map?Ze(e,[...t.entries()]):!!(0,Xe.G)(t)&&Ze(e,Object.entries(t))}class Ke extends Map{registry;createdAtHash;initialU8aLength;isStorageFallback;constructor(e,t){const n=function(e){return Object.entries(e||{})}(t);super(n),this.registry=e,De(this,n.map((([e])=>e)),(e=>this.get(e)))}get encodedLength(){return 0}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return 0===[...this.keys()].length}eq(e){return Ge(this,e)}getT(e){return this.get(e)}inspect(){throw new Error("Unimplemented")}toHex(){throw new Error("Unimplemented")}toHuman(){return[...this.entries()].reduce(((e,[t,n])=>(e[t]=(0,qe.T)(n?.toHuman)?n.toHuman():n,e)),{})}toJSON(){return[...this.entries()].reduce(((e,[t,n])=>(e[t]=n,e)),{})}toPrimitive(e){return[...this.entries()].reduce(((t,[n,r])=>(t[n]=(0,qe.T)(r.toPrimitive)?r.toPrimitive(e):r,t)),{})}toRawType(){return"Json"}toString(){return(0,je.A)(this.toJSON())}toU8a(e){throw new Error("Unimplemented")}}var Je=n(74749);function Ye(e){for(let t=0,n=e.length;t126)return!1}return!0}function Qe(e){return(0,I.K)(e)?(0,Je.qv)(e)?Ye((0,E.e)(e)):function(e){for(let t=0,n=e.length;t126)return!1}return!0}(e):!!e&&Ye(e)}var $e=n(75487);class et{__encoding;constructor(e){this.__encoding=e}decode(e){let t="";for(let n=0,r=e.length;n!!e)))}get isUtf8(){return function(e){if(!e)return(0,I.K)(e);const t=(0,E.e)(e),n=t.length;let r=0;for(;r=194&&t[r]<=223){if(!(r+1191)return!1;r+=2}else if(224===t[r]){if(!(r+2191)return!1;if(t[r+2]<128||t[r+2]>191)return!1;r+=3}else if(t[r]>=225&&t[r]<=236){if(!(r+2191)return!1;if(t[r+2]<128||t[r+2]>191)return!1;r+=3}else if(237===t[r]){if(!(r+2159)return!1;if(t[r+2]<128||t[r+2]>191)return!1;r+=3}else if(t[r]>=238&&t[r]<=239){if(!(r+2191)return!1;if(t[r+2]<128||t[r+2]>191)return!1;r+=3}else if(240===t[r]){if(!(r+3191)return!1;if(t[r+2]<128||t[r+2]>191)return!1;if(t[r+3]<128||t[r+3]>191)return!1;r+=4}else if(t[r]>=241&&t[r]<=243){if(!(r+3191)return!1;if(t[r+2]<128||t[r+2]>191)return!1;if(t[r+3]<128||t[r+3]>191)return!1;r+=4}else{if(244!==t[r])return!1;if(!(r+3143)return!1;if(t[r+2]<128||t[r+2]>191)return!1;if(t[r+3]<128||t[r+3]>191)return!1;r+=4}return!0}(this)}bitLength(){return 8*this.length}eq(e){return e instanceof Uint8Array?this.length===e.length&&!this.some(((t,n)=>t!==e[n])):this.eq((0,E.e)(e))}inspect(){return{outer:[this.toU8a()]}}toHex(){return(0,N.X)(this)}toHuman(e,t){return this.toPrimitive(t)}toJSON(){return this.toHex()}toPrimitive(e){if(!e&&this.isAscii){const e=this.toUtf8();if(Qe(e))return e}return this.toJSON()}toRawType(){return"Raw"}toString(){return this.toHex()}toU8a(e){return Uint8Array.from(this)}toUtf8(){if(!this.isUtf8)throw new Error("The character sequence is not a valid Utf8 string");return nt(this)}}class at{registry;createdAtHash;isStorageFallback;__internal__neverError;constructor(e,t="DoNotConstruct"){throw this.registry=e,this.__internal__neverError=new Error(`DoNotConstruct: Cannot construct unknown type ${t}`),this.__internal__neverError}static with(e){return class extends at{constructor(t){super(t,e)}}}get encodedLength(){throw this.__internal__neverError}get hash(){throw this.__internal__neverError}get isEmpty(){throw this.__internal__neverError}eq(){throw this.__internal__neverError}inspect(){throw this.__internal__neverError}toHex(){throw this.__internal__neverError}toHuman(){throw this.__internal__neverError}toJSON(){throw this.__internal__neverError}toPrimitive(){throw this.__internal__neverError}toRawType(){throw this.__internal__neverError}toString(){throw this.__internal__neverError}toU8a(){throw this.__internal__neverError}}var it=n(52502),st=n(39404);function ot(e,{isLe:t=!0,isNegative:n=!1}={}){t||(e=e.slice().reverse());const r=e.length;if(n&&r&&128&e[r-1])switch(r){case 0:return new st(0);case 1:return new st(-1*(255^e[0])-1);case 2:return new st(-1*(e[0]+(e[1]<<8)^65535)-1);case 3:return new st(-1*(e[0]+(e[1]<<8)+(e[2]<<16)^16777215)-1);case 4:return new st(-1*(e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]^4294967295)-1);case 5:return new st(-1*((e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]^4294967295)+4294967296*(255^e[4]))-1);case 6:return new st(-1*((e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]^4294967295)+4294967296*(e[4]+(e[5]<<8)^65535))-1);default:return new st(e,"le").fromTwos(8*r)}switch(r){case 0:return new st(0);case 1:return new st(e[0]);case 2:return new st(e[0]+(e[1]<<8));case 3:return new st(e[0]+(e[1]<<8)+(e[2]<<16));case 4:return new st(e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]);case 5:return new st(e[0]+(e[1]<<8)+(e[2]<<16)+16777216*(e[3]+(e[4]<<8)));case 6:return new st(e[0]+(e[1]<<8)+(e[2]<<16)+16777216*(e[3]+(e[4]<<8)+(e[5]<<16)));default:return new st(e,"le")}}function ct(e){const t=(0,E.e)(e);switch(3&t[0]){case 0:return[1,new st(t[0]>>>2)];case 1:return[2,new st(t[0]+(t[1]<<8)>>>2)];case 2:return[4,new st(t[0]+(t[1]<<8)+(t[2]<<16)+16777216*t[3]>>>2)];default:{const e=5+(t[0]>>>2);switch(e){case 5:return[5,new st(t[1]+(t[2]<<8)+(t[3]<<16)+16777216*t[4])];case 6:return[6,new st(t[1]+(t[2]<<8)+(t[3]<<16)+16777216*(t[4]+(t[5]<<8)))];case 7:return[7,new st(t[1]+(t[2]<<8)+(t[3]<<16)+16777216*(t[4]+(t[5]<<8)+(t[6]<<16)))];default:return[e,ot(t.subarray(1,e))]}}}}function dt(e){switch(3&e[0]){case 0:return[1,e[0]>>>2];case 1:return[2,e[0]+(e[1]<<8)>>>2];case 2:return[4,e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]>>>2];default:switch(5+(e[0]>>>2)){case 5:return[5,e[1]+(e[2]<<8)+(e[3]<<16)+16777216*e[4]];case 6:return[6,e[1]+(e[2]<<8)+(e[3]<<16)+16777216*(e[4]+(e[5]<<8))];case 7:return[7,e[1]+(e[2]<<8)+(e[3]<<16)+16777216*(e[4]+(e[5]<<8)+(e[6]<<16))];default:throw new Error("Compact input is > Number.MAX_SAFE_INTEGER")}}}var ut=n(336);const lt=new st(0),ft=new st(1),pt=new st(2),ht=new st(100),bt=new st(1e6),mt=new st(1e9),yt=mt.mul(mt),xt=new st(Number.MAX_SAFE_INTEGER),gt=new st(94906265);function vt(e,{isLe:t=!1,isNegative:n=!1}={}){if(!e||"0x"===e)return new st(0);const r=function(e){if(!e||"0x"===e)return"";if(Je.eR.test(e))return e.substring(2);if(Je.Ed.test(e))return e;throw new Error(`Expected hex value to convert, found '${e}'`)}(e),a=new st(r,16,t?"le":"be");return n?a.fromTwos(4*r.length):a}var wt=n(26805),Vt=n(77389);const Tt=(0,Vt.Mp)("toBigInt"),St=(0,Vt.Mp)("toBn");function kt(e){return e?st.isBN(e)?e:(0,Je.qv)(e)?vt(e.toString()):(0,wt.s)(e)?new st(e.toString()):St(e)?e.toBn():Tt(e)?new st(e.toBigInt().toString()):new st(e):new st(0)}const _t={bitLength:-1,isLe:!0,isNegative:!1};function Pt(e,{bitLength:t=-1,isLe:n=!0,isNegative:r=!1}=_t){const a=kt(e),i=-1===t?Math.ceil(a.bitLength()/8):Math.ceil((t||0)/8);if(!e)return-1===t?new Uint8Array(1):new Uint8Array(i);const s=new Uint8Array(i),o=r?a.toTwos(8*i):a;return s.set(o.toArray(n?"le":"be",i),0),s}function Mt(...e){const t=e.length,n=new Array(t);let r=0;for(let a=0;aWe(e)?!e.eq(t[n]):e!==t[n]))))}class Bt extends Array{registry;createdAtHash;initialU8aLength;isStorageFallback;static get[Symbol.species](){return Array}constructor(e,t){super(t),this.registry=e}get encodedLength(){const e=this.length;let t=Ht(e).length;for(let n=0;n{const n=t.replace(/[-_., ]+/g," ").trim().split(" ");let r="";for(let a=0,i=n.length;a(t?zt[e.charCodeAt(0)]:Ut[e.charCodeAt(0)])+e.slice(1))),Ft=qt((e=>zt[e.charCodeAt(0)]+e.slice(1)));function Xt(e,t){return"function"==typeof t?t:e.createClassUnsafe(t)}function Wt(e,t){const n=t.length,r=new Array(n);for(let a=0;a(0,Lt.E)(e)))){if(!t.every((e=>(0,Lt.E)(e)&&e>=0&&e<=255)))throw new Error("Invalid number-indexed enum definition");return!1}return!0}(t)){const[i,s]=Zt(e,t);for(let e=0,t=s.length;ee!==Jt)),a=!1}else{const e=Object.entries(t);for(let t=0,r=e.length;te.toLowerCase())),i=n.toLowerCase(),s=a.indexOf(i);if(-1===s)throw new Error(`Cannot map Enum JSON, unable to find '${n}' in ${a.join(", ")}`);try{return en(e,t,Object.values(t)[s].index,r)}catch(o){throw new Error(`Enum(${n}):: ${o.message}`)}}class nn{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__def;__internal__entryIndex;__internal__indexes;__internal__isBasic;__internal__isIndexed;__internal__raw;constructor(e,t,n,r,{definition:a,setDefinition:i=P.D}={}){const{def:s,isBasic:o,isIndexed:c}=a||i(Yt(e,t)),d=(0,ut.b)(n)&&n.length&&!(0,Lt.E)(r)?$t(e,s,n[0],n.subarray(1)):function(e,t,n,r){if((0,Lt.E)(r))return en(e,t,r,n);if((0,ut.b)(n)||(0,Je.qv)(n)){const r=(0,E.e)(n);if(r.length)return $t(e,t,r[0],r.subarray(1))}else{if(n instanceof nn)return en(e,t,n.index,n.value);if((0,Lt.E)(n))return en(e,t,n);if((0,I.K)(n))return tn(e,t,n.toString());if((0,Xe.G)(n)){const r=Object.keys(n)[0];return tn(e,t,r,n[r])}}return en(e,t,Object.values(t)[0].index)}(e,s,n,r);this.registry=e,this.__internal__def=s,this.__internal__isBasic=o,this.__internal__isIndexed=c,this.__internal__indexes=Object.values(s).map((({index:e})=>e)),this.__internal__entryIndex=this.__internal__indexes.indexOf(d.index),this.__internal__raw=d.value,this.__internal__raw.initialU8aLength&&(this.initialU8aLength=1+this.__internal__raw.initialU8aLength)}static with(e){let t;const n=e=>t=e;return class extends nn{static{const t=Array.isArray(e)?e:Object.keys(e),n=t.length,r=new Array(n),a=new Array(n);for(let e=0;er.type===t[n])),De(this.prototype,r,((e,n,r)=>{if(r.type!==t[n])throw new Error(`Cannot convert '${r.type}' via ${e}`);return r.value}))}constructor(r,a,i){super(r,e,a,i,{definition:t,setDefinition:n})}}}get encodedLength(){return 1+this.__internal__raw.encodedLength}get hash(){return this.registry.hash(this.toU8a())}get index(){return this.__internal__indexes[this.__internal__entryIndex]}get inner(){return this.__internal__raw}get isBasic(){return this.__internal__isBasic}get isEmpty(){return this.__internal__raw.isEmpty}get isNone(){return this.__internal__raw instanceof Jt}get defIndexes(){return this.__internal__indexes}get defKeys(){return Object.keys(this.__internal__def)}get type(){return this.defKeys[this.__internal__entryIndex]}get value(){return this.__internal__raw}eq(e){return(0,ut.b)(e)?!this.toU8a().some(((t,n)=>t!==e[n])):(0,Lt.E)(e)?this.toNumber()===e:this.__internal__isBasic&&(0,I.K)(e)?this.type===e:(0,Je.qv)(e)?this.toHex()===e:e instanceof nn?this.index===e.index&&this.value.eq(e.value):(0,Xe.G)(e)?this.value.eq(e[this.type]):this.value.eq(e)}inspect(){if(this.__internal__isBasic)return{outer:[new Uint8Array([this.index])]};const{inner:e,outer:t=[]}=this.__internal__raw.inspect();return{inner:e,outer:[new Uint8Array([this.index]),...t]}}toHex(){return(0,N.X)(this.toU8a())}toHuman(e,t){return this.__internal__isBasic||this.isNone?this.type:{[this.type]:this.__internal__raw.toHuman(e,t)}}toJSON(){return this.__internal__isBasic?this.type:{[jt(this.type)]:this.__internal__raw.toJSON()}}toNumber(){return this.index}toPrimitive(e){return this.__internal__isBasic?this.type:{[jt(this.type)]:this.__internal__raw.toPrimitive(e)}}_toRawStruct(){if(this.__internal__isBasic)return this.__internal__isIndexed?this.defKeys.reduce(((e,t,n)=>(e[t]=this.__internal__indexes[n],e)),{}):this.defKeys;const e=Object.entries(this.__internal__def);return Gt(this.registry,e.reduce(((e,[t,{Type:n}],r)=>(e[0][r]=n,e[1][r]=t,e)),[new Array(e.length),new Array(e.length)]))}toRawType(){return(0,je.A)({_enum:this._toRawStruct()})}toString(){return this.isNone?this.type:(0,je.A)(this.toJSON())}toU8a(e){return e?this.__internal__raw.toU8a(e):It([new Uint8Array([this.index]),this.__internal__raw.toU8a(e)])}}function rn(e){return"boolean"==typeof e}function an(e,t,n,{message:r},a,i,s,o,c){let d="";try{d=`: ${new o(e).toRawType()}`}catch{}return`${t}: failed at ${(0,N.X)(a.subarray(0,16))}\u2026${c?` on ${c}`:""} (index ${i+1}/${s})${d}:: ${r}`}function sn(e,t,n,[r,a]){const i=t.length;let s=0,o=0;try{for(;on=e;return class extends dn{static{const t=Object.keys(e);De(this.prototype,t,((e,t,n)=>n.get(e)))}constructor(a,i){super(a,e,i,t,{definition:n,setDefinition:r})}}}get defKeys(){return this.__internal__Types[1]}get isEmpty(){for(const e of this.values())if(!e.isEmpty)return!1;return!0}get encodedLength(){let e=0;for(const t of this.values())e+=t.encodedLength;return e}get hash(){return this.registry.hash(this.toU8a())}get Type(){const e={},[t,n]=this.__internal__Types;for(let r=0,a=n.length;r ${(0,je.A)(t)} (typeof ${typeof t})`)}const vn=(0,it.v)("Map");function wn(e,t,n,r){const a=new Map;for(const[s,o]of r.entries()){const r=t.prototype instanceof Bt||t.prototype instanceof dn||t.prototype instanceof nn;try{a.set(s instanceof t?s:new t(e,r&&"string"==typeof s?JSON.parse(s):s),o instanceof n?o:new n(e,o))}catch(i){throw vn.error("Failed to decode key or value:",i.message),i}}return[t,n,a,0]}function Vn(e,t,n,r){const a=Xt(e,t),i=Xt(e,n);if(!r)return[a,i,new Map,0];if((0,ut.b)(r)||(0,Je.qv)(r))return function(e,t,n,r){const a=new Map,[i,s]=dt(r),o=[];for(let u=0;uxn("BTreeMap",t,e))).sort((([e],[t])=>gn(e,t))))}(o):o),this.registry=e,this.initialU8aLength=c,this.__internal__KeyClass=i,this.__internal__ValClass=s,this.__internal__type=a}get encodedLength(){let e=Ht(this.size).length;for(const[t,n]of this.entries())e+=t.encodedLength+n.encodedLength;return e}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return 0===this.size}eq(e){return Ge(this,e)}inspect(){const e=[];for(const[t,n]of this.entries())e.push(t.inspect()),e.push(n.inspect());return{inner:e,outer:[Ht(this.size)]}}toHex(){return(0,N.X)(this.toU8a())}toHuman(e,t){const n={};for(const[r,a]of this.entries())n[r instanceof rt&&!t&&r.isAscii?r.toUtf8():r.toString()]=a.toHuman(e,t);return n}toJSON(){const e={};for(const[t,n]of this.entries())e[t.toString()]=n.toJSON();return e}toPrimitive(e){const t={};for(const[n,r]of this.entries())t[n instanceof rt&&!e&&n.isAscii?n.toUtf8():n.toString()]=r.toPrimitive(e);return t}toRawType(){return`${this.__internal__type}<${this.registry.getClassName(this.__internal__KeyClass)||new this.__internal__KeyClass(this.registry).toRawType()},${this.registry.getClassName(this.__internal__ValClass)||new this.__internal__ValClass(this.registry).toRawType()}>`}toString(){return(0,je.A)(this.toJSON())}toU8a(e){const t=[];e||t.push(Ht(this.size));for(const[n,r]of this.entries())t.push(n.toU8a(e),r.toU8a(e));return It(t)}}class Sn extends Tn{static with(e,t){return class extends Sn{constructor(n,r){super(n,e,t,r,"BTreeMap")}}}}function kn(e,t){return e.size===t.length&&!t.some((t=>!e.has(t)))}const _n=(0,it.v)("BTreeSet");function Pn(e,t,n){const r=Xt(e,t);if(!n)return[r,new Set,0];if((0,ut.b)(n)||(0,Je.qv)(n))return function(e,t,n){const r=new Set,[a,i]=dt(n),s=new Array(i),[o]=on(e,s,n,a,t);for(let c=0;c{try{r.add(n instanceof t?n:new t(e,n))}catch(a){throw _n.error("Failed to decode key or value:",a.message),a}})),[t,r,0]}(e,r,n);throw new Error("BTreeSet: cannot decode type")}class Mn extends Set{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__ValClass;constructor(e,t,n){const[r,a,i]=Pn(e,t,n);super(function(e){const t=new Set;return new Set(Array.from(e).filter((e=>xn("BTreeSet",t,e))).sort(gn))}(a)),this.registry=e,this.initialU8aLength=i,this.__internal__ValClass=r}static with(e){return class extends Mn{constructor(t,n){super(t,e,n)}}}get encodedLength(){let e=Ht(this.size).length;for(const t of this.values())e+=t.encodedLength;return e}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return 0===this.size}get strings(){return[...super.values()].map((e=>e.toString()))}eq(e){return t=this,n=e,Array.isArray(n)?kn(t,n):n instanceof Set?kn(t,[...n.values()]):!!(0,Xe.G)(n)&&kn(t,Object.values(n));var t,n}inspect(){const e=[];for(const t of this.values())e.push(t.inspect());return{inner:e,outer:[Ht(this.size)]}}toHex(){return(0,N.X)(this.toU8a())}toHuman(e,t){const n=[];for(const r of this.values())n.push(r.toHuman(e,t));return n}toJSON(){const e=[];for(const t of this.values())e.push(t.toJSON());return e}toRawType(){return`BTreeSet<${this.registry.getClassName(this.__internal__ValClass)||new this.__internal__ValClass(this.registry).toRawType()}>`}toPrimitive(e){const t=[];for(const n of this.values())t.push(n.toPrimitive(e));return t}toString(){return(0,je.A)(this.toJSON())}toU8a(e){const t=[];e||t.push(Ht(this.size));for(const n of this.values())t.push(n.toU8a(e));return It(t)}}class In{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__Type;__internal__raw;constructor(e,t,n=0,{definition:r,setDefinition:a=P.D}={}){this.registry=e,this.__internal__Type=r||a(Xt(e,t));const[i,s]=function(e,t,n){if((0,ut.b)(n)){const[r,a]=(3&n[0])<3?dt(n):ct(n);return[new t(e,a),r]}if(n instanceof In){const r=n.unwrap();return r instanceof t?[r,0]:[new t(e,r),0]}return n instanceof t?[n,0]:[new t(e,n),0]}(e,this.__internal__Type,n);this.initialU8aLength=s,this.__internal__raw=i}static with(e){let t;const n=e=>t=e;return class extends In{constructor(r,a){super(r,e,a,{definition:t,setDefinition:n})}}}get encodedLength(){return this.toU8a().length}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return this.__internal__raw.isEmpty}bitLength(){return this.__internal__raw.bitLength()}eq(e){return this.__internal__raw.eq(e instanceof In?e.__internal__raw:e)}inspect(){return{outer:[this.toU8a()]}}toBigInt(){return this.__internal__raw.toBigInt()}toBn(){return this.__internal__raw.toBn()}toHex(e){return this.__internal__raw.toHex(e)}toHuman(e,t){return this.__internal__raw.toHuman(e,t)}toJSON(){return this.__internal__raw.toJSON()}toNumber(){return this.__internal__raw.toNumber()}toPrimitive(e){return this.__internal__raw.toPrimitive(e)}toRawType(){return`Compact<${this.registry.getClassName(this.__internal__Type)||this.__internal__raw.toRawType()}>`}toString(){return this.__internal__raw.toString()}toU8a(e){return Ht(this.__internal__raw.toBn())}unwrap(){return this.__internal__raw}}class Nn extends Tn{static with(e,t){return class extends Nn{constructor(n,r){super(n,e,t,r)}}}}const En=new RegExp("(\\d+?)(?=(\\d{3})+(?!\\d)|$)","g");function On(e,t=","){const n=e[0].startsWith("-"),r=n?e.substring(1).match(En):e.match(En);return r?`${n?"-":""}${r.join(t)}`:e}function An(e){return{decimal:.1.toLocaleString(e).substring(1,2),thousand:1e3.toLocaleString(e).substring(1,2)}}const Cn=[{power:-24,text:"yocto",value:"y"},{power:-21,text:"zepto",value:"z"},{power:-18,text:"atto",value:"a"},{power:-15,text:"femto",value:"f"},{power:-12,text:"pico",value:"p"},{power:-9,text:"nano",value:"n"},{power:-6,text:"micro",value:"\xb5"},{power:-3,text:"milli",value:"m"},{power:0,text:"Unit",value:"-"},{power:3,text:"Kilo",value:"k"},{power:6,text:"Mill",value:"M"},{power:9,text:"Bill",value:"B"},{power:12,text:"Tril",value:"T"},{power:15,text:"Peta",value:"P"},{power:18,text:"Exa",value:"E"},{power:21,text:"Zeta",value:"Z"},{power:24,text:"Yotta",value:"Y"}];function Hn(e){for(let t=0,n=Cn.length;tRn(e,t),Un.findSi=Hn,Un.getDefaults=()=>({decimals:Ln,unit:zn}),Un.getOptions=(e=Ln)=>Cn.filter((({power:t})=>!(t<0)||e+t>=0)),Un.setDefaults=({decimals:e,unit:t})=>{Ln=(Array.isArray(e)?e[0]:e)??Ln,zn=(Array.isArray(t)?t[0]:t)??zn,Cn[8].text=zn};const qn=new st(1e4),jn=[["Perquintill",yt],["Perbill",mt],["Permill",bt],["Percent",ht]];function Fn(e,t){if((0,Lt.E)(e)){if(!Number.isInteger(e)||e>Number.MAX_SAFE_INTEGER||ei)throw new Error(`${this.toRawType()}: Input too large. Found input with ${super.bitLength()} bits, expected ${i}`)}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return this.isZero()}bitLength(){return this.__internal__bitLength}eq(e){return super.eq((0,Je.qv)(e)?vt(e.toString(),{isLe:!1,isNegative:!this.isUnsigned}):kt(e))}inspect(){return{outer:[this.toU8a()]}}isMax(){return this.toU8a().filter((e=>255===e)).length===this.__internal__bitLength/8}toBigInt(){return BigInt(this.toString())}toBn(){return this}toHex(e=!1){return function(e,{bitLength:t=-1,isLe:n=!1,isNegative:r=!1}={}){return(0,N.X)(Pt(e,{bitLength:t,isLe:n,isNegative:r}))}(this,{bitLength:this.bitLength(),isLe:e,isNegative:!this.isUnsigned})}toHuman(e){const t=this.toRawType();if("Balance"===t)return this.isMax()?"everything":Un(this,{decimals:this.registry.chainDecimals[0],withSi:!0,withUnit:this.registry.chainTokens[0]});const[,n]=jn.find((([e])=>e===t))||[];return n?function(e,t){return`${(e.mul(qn).div(t).toNumber()/100).toFixed(2)}%`}(this,n):Dn(this)}toJSON(e=!1){return e||this.__internal__bitLength>128||super.bitLength()>52?this.toHex():this.toNumber()}toPrimitive(){return super.bitLength()>52?this.toString():this.toNumber()}toRawType(){return this instanceof this.registry.createClassUnsafe("Balance")?"Balance":`${this.isUnsigned?"u":"i"}${this.bitLength()}`}toString(e){return super.toString(e)}toU8a(e){return Pt(this,{bitLength:this.bitLength(),isLe:!0,isNegative:!this.isUnsigned})}}class Wn extends Xn{constructor(e,t=0,n){super(e,t,n,!0)}static with(e,t){return class extends Wn{constructor(t,n){super(t,n,e)}toRawType(){return t||super.toRawType()}}}}class Zn extends Jt{toRawType(){return"None"}}class Gn{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__Type;__internal__raw;constructor(e,t,n,{definition:r,setDefinition:a=P.D}={}){const i=r||a(Xt(e,t)),s=(0,ut.b)(n)&&n.length&&!fn(n)?0===n[0]?new Zn(e):new i(e,n.subarray(1)):function(e,t,n){return n instanceof t?n:n instanceof Gn?n.value instanceof t?n.value:n.isNone?new Zn(e):new t(e,n.value):(0,Kt.k)(n)||(0,Fe.b)(n)||"0x"===n||n instanceof Zn?new Zn(e):(0,ut.b)(n)?n.length&&0!==n[0]?new t(e,n.subarray(1)):new Zn(e):new t(e,n)}(e,i,n);this.registry=e,this.__internal__Type=i,this.__internal__raw=s,s?.initialU8aLength&&(this.initialU8aLength=1+s.initialU8aLength)}static with(e){let t;const n=e=>(t=e,e);return class extends Gn{constructor(r,a){super(r,e,a,{definition:t,setDefinition:n})}}}get encodedLength(){return 1+this.__internal__raw.encodedLength}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return this.isNone}get isNone(){return this.__internal__raw instanceof Zn}get isSome(){return!this.isNone}get value(){return this.__internal__raw}eq(e){return e instanceof Gn?this.isSome===e.isSome&&this.value.eq(e.value):this.value.eq(e)}inspect(){if(this.isNone)return{outer:[new Uint8Array([0])]};const{inner:e,outer:t=[]}=this.__internal__raw.inspect();return{inner:e,outer:[new Uint8Array([1]),...t]}}toHex(){return this.isNone?"0x":(0,N.X)(this.toU8a().subarray(1))}toHuman(e,t){return this.__internal__raw.toHuman(e,t)}toJSON(){return this.isNone?null:this.__internal__raw.toJSON()}toPrimitive(e){return this.isNone?null:this.__internal__raw.toPrimitive(e)}toRawType(e){const t=this.registry.getClassName(this.__internal__Type)||new this.__internal__Type(this.registry).toRawType();return e?t:`Option<${t}>`}toString(){return this.__internal__raw.toString()}toU8a(e){if(e)return this.__internal__raw.toU8a(!0);const t=new Uint8Array(this.encodedLength);return this.isSome&&(t.set([1]),t.set(this.__internal__raw.toU8a(),1)),t}unwrap(){if(this.isNone)throw new Error("Option: unwrapping a None value");return this.__internal__raw}unwrapOr(e){return this.isSome?this.unwrap():e}unwrapOrDefault(){return this.isSome?this.unwrap():new this.__internal__Type(this.registry)}}class Kn extends Bt{__internal__Types;constructor(e,t,n,{definition:r,setDefinition:a=P.D}={}){const i=r||a(Array.isArray(t)?[Wt(e,t),[]]:(0,qe.T)(t)||(0,I.K)(t)?[[Xt(e,t)],[]]:Zt(e,t));super(e,i[0].length),this.initialU8aLength=((0,ut.b)(n)?sn(e,this,n,i):function(e,t,n,r){if(Array.isArray(n)){const i=r[0];for(let r=0,s=i.length;rt=e;return class extends Kn{constructor(r,a){super(r,e,a,{definition:t,setDefinition:n})}}}get encodedLength(){let e=0;for(let t=0,n=this.length;tnew e(this.registry).toRawType()))}inspect(){return{inner:this.inspectInner()}}toRawType(){return`(${this.__internal__Types[0].map((e=>this.registry.getClassName(e)||new e(this.registry).toRawType())).join(",")})`}toString(){return(0,je.A)(this.toJSON())}toU8a(e){return It(this.toU8aInner(e))}}class Jn extends Kn{__internal__rangeName;constructor(e,t,n,{rangeName:r="Range"}={}){super(e,[t,t],n),this.__internal__rangeName=r}static with(e){return class extends Jn{constructor(t,n){super(t,e,n)}}}get start(){return this[0]}get end(){return this[1]}toRawType(){return`${this.__internal__rangeName}<${this.start.toRawType()}>`}}class Yn extends Jn{constructor(e,t,n){super(e,t,n,{rangeName:"RangeInclusive"})}static with(e){return class extends Yn{constructor(t,n){super(t,e,n)}}}}class Qn extends nn{constructor(e,t,n,r){super(e,{Ok:t,Err:n},r)}static with(e){return class extends Qn{constructor(t,n){super(t,e.Ok,e.Err,n)}}}get asErr(){if(!this.isErr)throw new Error("Cannot extract Err value from Ok result, check isErr first");return this.value}get asOk(){if(!this.isOk)throw new Error("Cannot extract Ok value from Err result, check isOk first");return this.value}get isEmpty(){return this.isOk&&this.value.isEmpty}get isErr(){return!this.isOk}get isOk(){return 0===this.index}toRawType(){const e=this._toRawStruct();return`Result<${e.Ok},${e.Err}>`}}function $n(e,t){const n=new st(0);for(let r=0,a=t.length;rr.strings.includes(t[n])))}constructor(n,r){super(n,e,r,t)}}}get encodedLength(){return this.__internal__byteLength}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return 0===this.size}get strings(){return[...super.values()]}get valueEncoded(){return $n(this.__internal__allowed,this.strings)}add=e=>{if(this.__internal__allowed&&(0,Fe.b)(this.__internal__allowed[e]))throw new Error(`Set: Invalid key '${e}' on add`);return super.add(e),this};eq(e){return Array.isArray(e)?Rt(this.strings.sort(),e.sort()):e instanceof Set?this.eq([...e.values()]):!(!(0,Lt.E)(e)&&!(0,pn.f)(e))&&this.valueEncoded.eq(kt(e))}inspect(){return{outer:[this.toU8a()]}}toHex(){return(0,N.X)(this.toU8a())}toHuman(){return this.toJSON()}toJSON(){return this.strings}toNumber(){return this.valueEncoded.toNumber()}toPrimitive(){return this.toJSON()}toRawType(){return(0,je.A)({_set:this.__internal__allowed})}toString(){return`[${this.strings.join(", ")}]`}toU8a(e){return Pt(this.valueEncoded,{bitLength:8*this.__internal__byteLength,isLe:!0})}}class rr extends Xn{static with(e,t){return class extends rr{constructor(t,n){super(t,n,e)}toRawType(){return t||super.toRawType()}}}}function ar(e){return It([Ht(e.length),e])}const ir=10485760;class sr extends rt{constructor(e,t){const[n,r]=!(0,ut.b)(t)||t instanceof rt?Array.isArray(t)||(0,I.K)(t)?[(0,E.e)(t),0]:[t,0]:function(e){if(!e.length)return[new Uint8Array,0];const[t,n]=dt(e),r=t+n;if(n>ir)throw new Error(`Bytes length ${n.toString()} exceeds 10485760`);if(r>e.length)throw new Error(`Bytes: required length less than remainder, expected at least ${r}, found ${e.length}`);return[e.subarray(t,r),r]}(t);super(e,n,r)}get encodedLength(){return this.length+Ht(this.length).length}inspect(e){const t=Ht(this.length);return{outer:e?[super.toU8a()]:this.length?[t,super.toU8a()]:[t]}}toRawType(){return"Bytes"}toU8a(e){return e?super.toU8a(e):ar(this)}}const or=524288,cr=(0,it.v)("Vec");function dr(e,t,n,r,a){if(Array.isArray(n)){const r=t.length;for(let s=0;sor)throw new Error(`Vec length ${r.toString()} exceeds 524288`);return[t,r,n]}if(!e)return[null,0,0];throw new Error(`Expected array/hex input to Vec<*> decoding, found ${typeof e}: ${(0,je.A)(e)}`)}(n);super(e,s),this.__internal__Type=r||a(Xt(e,t)),this.initialU8aLength=((0,ut.b)(i)?on(e,this,i,o,this.__internal__Type):dr(e,this,i,o,this.__internal__Type))[0]}static with(e){let t;const n=e=>t=e;return class extends ur{constructor(r,a){super(r,e,a,{definition:t,setDefinition:n})}}}get Type(){return this.__internal__Type.name}indexOf(e){const t=e instanceof this.__internal__Type?e:new this.__internal__Type(this.registry,e);for(let n=0,r=this.length;n`}}class lr extends rt{constructor(e,t=new Uint8Array,n=256){const[r,a]=function(e,t){const n=(0,E.e)(e),r=t/8;if(!n.length)return[new Uint8Array(r),0];if((0,ut.b)(e)?n.lengthn=e;return class extends fr{constructor(a,i){super(a,e,t,i,{definition:n,setDefinition:r})}}}get Type(){return new this.__internal__Type(this.registry).toRawType()}get encodedLength(){let e=0;for(let t=0,n=this.length;t`}toString(){return this.__internal__decoded?this.__internal__decoded.toString():super.toString()}unwrap(){if(!this.__internal__decoded)throw new Error(`${this.__internal__opaqueName}: unwrapping an undecodable value`);return this.__internal__decoded}}class br extends hr{constructor(e,t,n){super(e,t,n,{opaqueName:"WrapperOpaque"})}static with(e){return class extends br{constructor(t,n){super(t,e,n)}}}get inner(){return this.unwrap()}}var mr;!function(e){e[e.BTreeMap=0]="BTreeMap",e[e.BTreeSet=1]="BTreeSet",e[e.Compact=2]="Compact",e[e.DoNotConstruct=3]="DoNotConstruct",e[e.Enum=4]="Enum",e[e.HashMap=5]="HashMap",e[e.Int=6]="Int",e[e.Linkage=7]="Linkage",e[e.Null=8]="Null",e[e.Option=9]="Option",e[e.Plain=10]="Plain",e[e.Range=11]="Range",e[e.RangeInclusive=12]="RangeInclusive",e[e.Result=13]="Result",e[e.Set=14]="Set",e[e.Si=15]="Si",e[e.Struct=16]="Struct",e[e.Tuple=17]="Tuple",e[e.UInt=18]="UInt",e[e.Vec=19]="Vec",e[e.VecFixed=20]="VecFixed",e[e.WrapperKeepOpaque=21]="WrapperKeepOpaque",e[e.WrapperOpaque=22]="WrapperOpaque"}(mr||(mr={}));const yr=["BTreeMap","BTreeSet","HashMap","Vec"],xr=yr.concat(["Compact","DoNotConstruct","Int","Linkage","Range","RangeInclusive","Result","Opaque","Option","UInt","WrapperKeepOpaque","WrapperOpaque"]),gr=["<","(","[",'"',","," "],vr=[Vr("::Inherent","InherentOfflineReport",!1),Vr("VecDeque<","Vec<",!1),e=>{if(e.includes(" as HasCompact"))for(let t=0,n=e.length;t`)}return e},Sr("Bounded",!0),Sr("Weak",!1),function(){const e=/\s/g,t=/(T|Self)::/g,n=/<(T|Self)asTrait>::/g,r=/::/g,a=//g,i=/::Type/g;return s=>(e.lastIndex=0,t.lastIndex=0,n.lastIndex=0,r.lastIndex=0,a.lastIndex=0,i.lastIndex=0,s.replace(e,"").replace(t,"").replace(n,"").replace(r,"").replace(a,"Lookup").replace(i,""))}(),function(){const e=e=>`(${e},${e})`;return t=>Tr(t,"PairOf<",e)}(),function(e){const t=e=>e;return n=>Tr(n,e,t)}("Box<"),e=>{for(let t=0,n=e.length;t{const r=t-n.length;return r>=0&&e.substring(r,t)===n&&(0===r||gr.includes(e[r-1]))}))){const n=wr(e,t+1);e=`${e.substring(0,t)}${e.substring(n+1)}`}return e},Vr("String","Text"),Vr("Vec","Bytes"),Vr("&\\[u8\\]","Bytes"),Vr("&'static\\[u8\\]","Bytes"),Vr("RawAddress","Address"),Vr("Lookup::Source","LookupSource"),Vr("Lookup::Target","LookupTarget"),Vr("exec::StorageKey","ContractStorageKey"),function(){const e=/,\)/g,t=/\(([^,]+)\)/;return n=>(e.lastIndex=0,n.replace(e,")").replace(t,"$1"))}(),e=>{let t=0;for(;-1!==t;)if(t=e.indexOf("::"),0===t)e=e.substring(2);else if(-1!==t){let n=t;for(;-1!==n&&!gr.includes(e[n]);)n--;e=`${e.substring(0,n+1)}${e.substring(t+2)}`}return e},e=>e.trim()];function wr(e,t){let n=0;for(let r=t,a=e.length;r"===e[r]){if(!n)return r;n--}else"<"===e[r]&&n++;throw new Error(`Unable to find closing matching <> on '${e}' (start ${t})`)}function Vr(e,t,n=!0){const r=new RegExp(`(^${e}|${gr.map((t=>`\\${t}${e}`)).join("|")})`,"g"),a=e=>(r.lastIndex=0,n&&gr.includes(e[0])?`${e[0]}${t}`:t);return e=>e.replace(r,a)}function Tr(e,t,n){let r=-1;for(;;){if(r=e.indexOf(t,r+1),-1===r)return e;const a=r+t.length,i=wr(e,a);e=`${e.substring(0,r)}${n(e.substring(a,i))}${e.substring(i+1)}`}}function Sr(e,t){return n=>{for(let r=0,a=yr.length;r{const n=e.split(",").map((e=>e.trim())).filter((e=>e));return t&&n.pop(),`${a}<${n.join(",")}>`}))}return n}}const kr=new Map;function _r(e){const t=e.toString(),n=kr.get(t);if(n)return n;let r=t;for(let a=0,i=vr.length;a({index:t,info:mr.Plain,name:e,type:"Null"}))):!function(e){const t=Object.values(e);if(t.some((e=>(0,Lt.E)(e)))){if(!t.every((e=>(0,Lt.E)(e)&&e>=0&&e<=255)))throw new Error("Invalid number-indexed enum definition");return!1}return!0}(t)?e.sub=Object.entries(t).map((([e,t])=>({index:t,info:mr.Plain,name:e,type:"Null"}))):e.sub=Object.entries(t).map((([e,t],r)=>(0,M.b)({},Rr(Mr(t||"Null"),{name:e},n),{index:r}))),e}function Nr(e,t,n,r){return e.sub=0===n.length?[]:function(e){const t=[];let n=0,r=0,a=0,i=0,s=0;for(let o=0,c=e.length;o":n--;break;case"[":r++;break;case"]":r--;break;case"{":a++;break;case"}":a--;break;case"(":i++;break;case")":i--}if(n||r||a||i)throw new Error(`Invalid definition (missing terminators) found in ${e}`);return t.push(e.substring(s,e.length).trim()),t}(n).map((e=>Rr(e,{},r))),e}function Er(e,t,n,r){const[a,i]=t.substring(r.length+1,t.length-1).split(","),s=parseInt(a.trim(),10);if(s>8192||s%8)throw new Error(`${t}: Only support for ${r}, where length <= 8192 and a power of 8, found ${s}`);return e.displayName=i,e.length=s,e}function Or(e,[t,n]){return e.startsWith(t)&&e.slice(-1*n.length)===n}const Ar=[["[","]",mr.VecFixed,function(e,t,n,r){const a=t.length-1;let i=-1,s=0;for(let l=1;l":s--}if(-1===i)throw new Error(`${t}: Unable to extract location of ';'`);const o=t.substring(1,i),[c,d]=t.substring(i+1,a).split(";"),u=parseInt(c.trim(),10);if(u>2048)throw new Error(`${t}: Only support for [Type; ], where length <= 2048`);return e.displayName=d,e.length=u,e.sub=Rr(o,{},r),e}],["{","}",mr.Struct,function(e,t,n,r){const a=JSON.parse(t),i=Object.keys(a);return a._enum?Ir(e,a._enum,r,a._fallback):a._set?function(e,t,n){return e.info=mr.Set,e.fallbackType=n,e.length=t._bitLength,e.sub=Object.entries(t).filter((([e])=>!e.startsWith("_"))).map((([e,t])=>({index:t,info:mr.Plain,name:e,type:"Null"}))),e}(e,a._set,a._fallback):(e.alias=a._alias?new Map(Object.entries(a._alias)):void 0,e.fallbackType=a._fallback,e.sub=i.filter((e=>!Pr.includes(e))).map((e=>Rr(Mr(a[e]),{name:e},r))),e)}],["(",")",mr.Tuple,Nr],["BTreeMap<",">",mr.BTreeMap,Nr],["HashMap<",">",mr.HashMap,Nr],["Int<",">",mr.Int,function(e,t,n){return Er(e,t,0,"Int")}],["Result<",">",mr.Result,Nr],["UInt<",">",mr.UInt,function(e,t,n){return Er(e,t,0,"UInt")}],["DoNotConstruct<",">",mr.DoNotConstruct,function(e,t,n){return e.displayName=t.substring(15,t.length-1),e}]],Cr=[["BTreeSet<",">",mr.BTreeSet],["Compact<",">",mr.Compact],["Linkage<",">",mr.Linkage],["Opaque<",">",mr.WrapperOpaque],["Option<",">",mr.Option],["Range<",">",mr.Range],["RangeInclusive<",">",mr.RangeInclusive],["Vec<",">",mr.Vec],["WrapperKeepOpaque<",">",mr.WrapperKeepOpaque],["WrapperOpaque<",">",mr.WrapperOpaque]];function Hr(e,[t,n]){return e.substring(t.length,e.length-n.length)}function Rr(e,{displayName:t,name:n}={},r=0){const a=_r(e),i={displayName:t,info:mr.Plain,name:n,type:a};if(++r>64)throw new Error("getTypeDef: Maximum nested limit reached");const s=Ar.find((e=>Or(a,e)));if(s)return i.info=s[2],s[3](i,a,Hr(a,s),r);const o=Cr.find((e=>Or(a,e)));return o&&(i.info=o[2],i.sub=Rr(Hr(a,o),{},r)),i}function Br({lookupName:e,type:t}){return e||t}function Lr(e){if(!Array.isArray(e.sub))throw new Error(`Expected subtype as TypeDef[] in ${(0,je.A)(e)}`);return e.sub}function zr(e){return Br(function(e){if(!e.sub||Array.isArray(e.sub))throw new Error(`Expected subtype as TypeDef in ${(0,je.A)(e)}`);return e.sub}(e))}function Ur(e){const t=Lr(e),n={};for(let r=0,a=t.length;r`);return e.with(n,t)}function jr(e,t){const[n,r]=Dr(t);return e.with(n,r)}function Fr(e,t){return e.with(zr(t))}const Xr={[mr.BTreeMap]:(e,t)=>jr(Sn,t),[mr.BTreeSet]:(e,t)=>Fr(Mn,t),[mr.Compact]:(e,t)=>Fr(In,t),[mr.DoNotConstruct]:(e,t)=>at.with(t.displayName||t.type),[mr.Enum]:(e,t)=>{const n=Lr(t);return nn.with(n.every((({type:e})=>"Null"===e))?n.reduce(((e,{index:t,name:n},r)=>{if(!n)throw new Error("No name found in sub definition");return e[n]=t||r,e}),{}):Ur(t))},[mr.HashMap]:(e,t)=>jr(Nn,t),[mr.Int]:(e,t)=>qr(Wn,t),[mr.Linkage]:(e,t)=>{const n=`Option<${zr(t)}>`,r=dn.with({previous:n,next:n});return r.prototype.toRawType=function(){return`Linkage<${this.next.toRawType(!0)}>`},r},[mr.Null]:(e,t)=>Jt,[mr.Option]:(e,t)=>{if(!t.sub||Array.isArray(t.sub))throw new Error("Expected type information for Option");return Fr(Gn,t)},[mr.Plain]:(e,t)=>e.getOrUnknown(t.type),[mr.Range]:(e,t)=>Fr(Jn,t),[mr.RangeInclusive]:(e,t)=>Fr(Yn,t),[mr.Result]:(e,t)=>{const[n,r]=Dr(t);return Qn.with({Err:r,Ok:n})},[mr.Set]:(e,t)=>nr.with(Lr(t).reduce(((e,{index:t,name:n})=>{if(!n||!(0,Lt.E)(t))throw new Error("No name found in sub definition");return e[n]=t,e}),{}),t.length),[mr.Si]:(e,t)=>Wr(e,e.lookup.getTypeDef(t.type)),[mr.Struct]:(e,t)=>dn.with(Ur(t),t.alias),[mr.Tuple]:(e,t)=>Kn.with(Dr(t)),[mr.UInt]:(e,t)=>qr(rr,t),[mr.Vec]:(e,{sub:t})=>{if(!t||Array.isArray(t))throw new Error("Expected type information for vector");return"u8"===t.type?sr:ur.with(Br(t))},[mr.VecFixed]:(e,{displayName:t,length:n,sub:r})=>{if(!(0,Lt.E)(n)||!r||Array.isArray(r))throw new Error("Expected length & type information for fixed vector");return"u8"===r.type?lr.with(8*n,t):fr.with(Br(r),n)},[mr.WrapperKeepOpaque]:(e,t)=>Fr(hr,t),[mr.WrapperOpaque]:(e,t)=>Fr(br,t)};function Wr(e,t){return e.getUnsafe(t.type,!1,t)}function Zr(e,t){return e.getUnsafe(t)||Wr(e,e.isLookupType(t)?e.lookup.getTypeDef(t):Rr(t))}function Gr(e,t){const n=(0,E.e)(e),r=(0,E.e)(t);if(n.length===r.length){const e=new DataView(n.buffer,n.byteOffset),t=new DataView(r.buffer,r.byteOffset),a=n.length%4|0,i=n.length-a|0;for(let n=0;n!e))))throw new Error(`${r}:: Decoded input doesn't match input, received ${(0,N.X)(t,512)} (${t.length} bytes), created ${(0,N.X)(n,512)} (${n.length} bytes)`)}function Jr(e,t,n=[],{blockHash:r,isFallback:a,isOptional:i,isPedantic:s}={}){const o=new(i?Gn.with(t):t)(e,...n);return s&&function(e,[t]){(0,ut.b)(t)?Kr(e,t):(0,Je.qv)(t)&&Kr(e,(0,E.e)(t))}(o,n),r&&(o.createdAtHash=Yr(e,"BlockHash",[r])),a&&(o.isStorageFallback=!0),o}function Yr(e,t,n=[],r={}){let a=null,i=null;try{return a=Zr(e,t),Jr(e,a,n,r)}catch(s){i=new Error(`createType(${t}):: ${s.message}`)}if(a?.__fallbackType)try{return a=Zr(e,a.__fallbackType),Jr(e,a,n,r)}catch{}throw i}function Qr(e,t,n,r,a=0){const i=r?r(t,a):t.toString();let s;Object.defineProperty(e,i,{configurable:!0,enumerable:!0,get:function(){if(void 0===s){s=n(t,a,this);try{Object.defineProperty(this,i,{value:s})}catch{}}return s}})}function $r(e,t,n,r){for(let a=0,i=t.length;a0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function ra(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");ta(e.outputLen),ta(e.blockLen)}function aa(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function ia(e,t){na(e);const n=t.outputLen;if(e.lengthnew Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4)),ca=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),da=(e,t)=>e<<32-t|e>>>t,ua=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0],la=e=>e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255,fa=ua?e=>e:e=>la(e);function pa(e){for(let t=0;te().update(ha(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function ya(e){const t=(t,n)=>e(n).update(ha(t)).digest(),n=e({});return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=t=>e(t),t}function xa(e=32){if(sa&&"function"==typeof sa.getRandomValues)return sa.getRandomValues(new Uint8Array(e));if(sa&&"function"==typeof sa.randomBytes)return sa.randomBytes(e);throw new Error("crypto.getRandomValues must be defined")}const ga=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3]);class va extends ba{constructor(e,t,n={},r,a,i){if(super(),this.blockLen=e,this.outputLen=t,this.length=0,this.pos=0,this.finished=!1,this.destroyed=!1,ta(e),ta(t),ta(r),t<0||t>r)throw new Error("outputLen bigger than keyLen");if(void 0!==n.key&&(n.key.length<1||n.key.length>r))throw new Error(`key must be up 1..${r} byte long or undefined`);if(void 0!==n.salt&&n.salt.length!==a)throw new Error(`salt must be ${a} byte long or undefined`);if(void 0!==n.personalization&&n.personalization.length!==i)throw new Error(`personalization must be ${i} byte long or undefined`);this.buffer32=oa(this.buffer=new Uint8Array(e))}update(e){aa(this);const{blockLen:t,buffer:n,buffer32:r}=this,a=(e=ha(e)).length,i=e.byteOffset,s=e.buffer;for(let o=0;or[t]=fa(e)))}digest(){const{buffer:e,outputLen:t}=this;this.digestInto(e);const n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){const{buffer:t,length:n,finished:r,destroyed:a,outputLen:i,pos:s}=this;return e||(e=new this.constructor({dkLen:i})),e.set(...this.get()),e.length=n,e.finished=r,e.destroyed=a,e.outputLen=i,e.buffer.set(t),e.pos=s,e}}const wa=BigInt(2**32-1),Va=BigInt(32);function Ta(e,t=!1){return t?{h:Number(e&wa),l:Number(e>>Va&wa)}:{h:0|Number(e>>Va&wa),l:0|Number(e&wa)}}function Sa(e,t=!1){let n=new Uint32Array(e.length),r=new Uint32Array(e.length);for(let a=0;ae<>>32-n,_a=(e,t,n)=>t<>>32-n,Pa=(e,t,n)=>t<>>64-n,Ma=(e,t,n)=>e<>>64-n;const Ia={fromBig:Ta,split:Sa,toBig:(e,t)=>BigInt(e>>>0)<>>0),shrSH:(e,t,n)=>e>>>n,shrSL:(e,t,n)=>e<<32-n|t>>>n,rotrSH:(e,t,n)=>e>>>n|t<<32-n,rotrSL:(e,t,n)=>e<<32-n|t>>>n,rotrBH:(e,t,n)=>e<<64-n|t>>>n-32,rotrBL:(e,t,n)=>e>>>n-32|t<<64-n,rotr32H:(e,t)=>t,rotr32L:(e,t)=>e,rotlSH:ka,rotlSL:_a,rotlBH:Pa,rotlBL:Ma,add:function(e,t,n,r){const a=(t>>>0)+(r>>>0);return{h:e+n+(a/2**32|0)|0,l:0|a}},add3L:(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0),add3H:(e,t,n,r)=>t+n+r+(e/2**32|0)|0,add4L:(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0),add4H:(e,t,n,r,a)=>t+n+r+a+(e/2**32|0)|0,add5H:(e,t,n,r,a,i)=>t+n+r+a+i+(e/2**32|0)|0,add5L:(e,t,n,r,a)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(a>>>0)},Na=Ia,Ea=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Oa=new Uint32Array(32);function Aa(e,t,n,r,a,i){const s=a[i],o=a[i+1];let c=Oa[2*e],d=Oa[2*e+1],u=Oa[2*t],l=Oa[2*t+1],f=Oa[2*n],p=Oa[2*n+1],h=Oa[2*r],b=Oa[2*r+1],m=Na.add3L(c,u,s);d=Na.add3H(m,d,l,o),c=0|m,({Dh:b,Dl:h}={Dh:b^d,Dl:h^c}),({Dh:b,Dl:h}={Dh:Na.rotr32H(b,h),Dl:Na.rotr32L(b,h)}),({h:p,l:f}=Na.add(p,f,b,h)),({Bh:l,Bl:u}={Bh:l^p,Bl:u^f}),({Bh:l,Bl:u}={Bh:Na.rotrSH(l,u,24),Bl:Na.rotrSL(l,u,24)}),Oa[2*e]=c,Oa[2*e+1]=d,Oa[2*t]=u,Oa[2*t+1]=l,Oa[2*n]=f,Oa[2*n+1]=p,Oa[2*r]=h,Oa[2*r+1]=b}function Ca(e,t,n,r,a,i){const s=a[i],o=a[i+1];let c=Oa[2*e],d=Oa[2*e+1],u=Oa[2*t],l=Oa[2*t+1],f=Oa[2*n],p=Oa[2*n+1],h=Oa[2*r],b=Oa[2*r+1],m=Na.add3L(c,u,s);d=Na.add3H(m,d,l,o),c=0|m,({Dh:b,Dl:h}={Dh:b^d,Dl:h^c}),({Dh:b,Dl:h}={Dh:Na.rotrSH(b,h,16),Dl:Na.rotrSL(b,h,16)}),({h:p,l:f}=Na.add(p,f,b,h)),({Bh:l,Bl:u}={Bh:l^p,Bl:u^f}),({Bh:l,Bl:u}={Bh:Na.rotrBH(l,u,63),Bl:Na.rotrBL(l,u,63)}),Oa[2*e]=c,Oa[2*e+1]=d,Oa[2*t]=u,Oa[2*t+1]=l,Oa[2*n]=f,Oa[2*n+1]=p,Oa[2*r]=h,Oa[2*r+1]=b}class Ha extends va{constructor(e={}){super(128,void 0===e.dkLen?64:e.dkLen,e,64,16,16),this.v0l=0|Ea[0],this.v0h=0|Ea[1],this.v1l=0|Ea[2],this.v1h=0|Ea[3],this.v2l=0|Ea[4],this.v2h=0|Ea[5],this.v3l=0|Ea[6],this.v3h=0|Ea[7],this.v4l=0|Ea[8],this.v4h=0|Ea[9],this.v5l=0|Ea[10],this.v5h=0|Ea[11],this.v6l=0|Ea[12],this.v6h=0|Ea[13],this.v7l=0|Ea[14],this.v7h=0|Ea[15];const t=e.key?e.key.length:0;if(this.v0l^=this.outputLen|t<<8|65536|1<<24,e.salt){const t=oa(ha(e.salt));this.v4l^=fa(t[0]),this.v4h^=fa(t[1]),this.v5l^=fa(t[2]),this.v5h^=fa(t[3])}if(e.personalization){const t=oa(ha(e.personalization));this.v6l^=fa(t[0]),this.v6h^=fa(t[1]),this.v7l^=fa(t[2]),this.v7h^=fa(t[3])}if(e.key){const t=new Uint8Array(this.blockLen);t.set(ha(e.key)),this.update(t)}}get(){let{v0l:e,v0h:t,v1l:n,v1h:r,v2l:a,v2h:i,v3l:s,v3h:o,v4l:c,v4h:d,v5l:u,v5h:l,v6l:f,v6h:p,v7l:h,v7h:b}=this;return[e,t,n,r,a,i,s,o,c,d,u,l,f,p,h,b]}set(e,t,n,r,a,i,s,o,c,d,u,l,f,p,h,b){this.v0l=0|e,this.v0h=0|t,this.v1l=0|n,this.v1h=0|r,this.v2l=0|a,this.v2h=0|i,this.v3l=0|s,this.v3h=0|o,this.v4l=0|c,this.v4h=0|d,this.v5l=0|u,this.v5h=0|l,this.v6l=0|f,this.v6h=0|p,this.v7l=0|h,this.v7h=0|b}compress(e,t,n){this.get().forEach(((e,t)=>Oa[t]=e)),Oa.set(Ea,16);let{h:r,l:a}=Na.fromBig(BigInt(this.length));Oa[24]=Ea[8]^a,Oa[25]=Ea[9]^r,n&&(Oa[28]=~Oa[28],Oa[29]=~Oa[29]);let i=0;const s=ga;for(let o=0;o<12;o++)Aa(0,4,8,12,e,t+2*s[i++]),Ca(0,4,8,12,e,t+2*s[i++]),Aa(1,5,9,13,e,t+2*s[i++]),Ca(1,5,9,13,e,t+2*s[i++]),Aa(2,6,10,14,e,t+2*s[i++]),Ca(2,6,10,14,e,t+2*s[i++]),Aa(3,7,11,15,e,t+2*s[i++]),Ca(3,7,11,15,e,t+2*s[i++]),Aa(0,5,10,15,e,t+2*s[i++]),Ca(0,5,10,15,e,t+2*s[i++]),Aa(1,6,11,12,e,t+2*s[i++]),Ca(1,6,11,12,e,t+2*s[i++]),Aa(2,7,8,13,e,t+2*s[i++]),Ca(2,7,8,13,e,t+2*s[i++]),Aa(3,4,9,14,e,t+2*s[i++]),Ca(3,4,9,14,e,t+2*s[i++]);this.v0l^=Oa[0]^Oa[16],this.v0h^=Oa[1]^Oa[17],this.v1l^=Oa[2]^Oa[18],this.v1h^=Oa[3]^Oa[19],this.v2l^=Oa[4]^Oa[20],this.v2h^=Oa[5]^Oa[21],this.v3l^=Oa[6]^Oa[22],this.v3h^=Oa[7]^Oa[23],this.v4l^=Oa[8]^Oa[24],this.v4h^=Oa[9]^Oa[25],this.v5l^=Oa[10]^Oa[26],this.v5h^=Oa[11]^Oa[27],this.v6l^=Oa[12]^Oa[28],this.v6h^=Oa[13]^Oa[29],this.v7l^=Oa[14]^Oa[30],this.v7h^=Oa[15]^Oa[31],Oa.fill(0)}destroy(){this.destroyed=!0,this.buffer32.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Ra=ya((e=>new Ha(e)));var Ba=n(8319),La=n(58861);const za=$e.Mn.crypto;const Ua={getRandomValues:function(e){return za.getRandomValues(e)}},Da={crypto:Ua};class qa{__internal__bridge;constructor(e){this.__internal__bridge=e}abort=()=>{throw new Error("abort")};__wbindgen_is_undefined=e=>void 0===this.__internal__bridge.getObject(e);__wbindgen_throw=(e,t)=>{throw new Error(this.__internal__bridge.getString(e,t))};__wbg_self_1b7a39e3a92c949c=()=>this.__internal__bridge.addObject(Da);__wbg_require_604837428532a733=(e,t)=>{throw new Error(`Unable to require ${this.__internal__bridge.getString(e,t)}`)};__wbg_crypto_968f1772287e2df0=e=>this.__internal__bridge.addObject(Ua);__wbg_getRandomValues_a3d34b4fee3c2869=e=>this.__internal__bridge.addObject(Ua.getRandomValues);__wbg_getRandomValues_f5e14ab7ac8e995d=(e,t,n)=>{Ua.getRandomValues(this.__internal__bridge.getU8a(t,n))};__wbg_randomFillSync_d5bd2d655fdf256a=(e,t,n)=>{throw new Error("randomFillsync is not available")};__wbindgen_object_drop_ref=e=>{this.__internal__bridge.takeObject(e)}}function ja(e,t,n){return async r=>{const a={error:null,type:"none",wasm:null};try{if(!t?.length)throw new Error("No WebAssembly provided for initialization");if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw new Error("WebAssembly is not available in your environment");const e=await WebAssembly.instantiate(t,{wbg:r});a.wasm=e.instance.exports,a.type="wasm"}catch(i){"function"==typeof n?(a.wasm=n(r),a.type="asm"):(a.error=`FATAL: Unable to initialize @polkadot/wasm-${e}:: ${i.message}`,console.error(a.error))}return a}}const Fa=Uint8Array,Xa=Uint16Array,Wa=Uint32Array,Za=new Fa([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ga=new Fa([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Ka=new Fa([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Ja=(e,t)=>{const n=new Xa(31);for(let a=0;a<31;++a)n[a]=t+=1<>>1|(21845&bV)<<1;e=(52428&e)>>>2|(13107&e)<<2,e=(61680&e)>>>4|(3855&e)<<4,ei[bV]=((65280&e)>>>8|(255&e)<<8)>>>1}const ti=(e,t,n)=>{const r=e.length;let a=0;const i=new Xa(t);for(;a>n]=r}}else for(o=new Xa(r),a=0;a>15-e[a]);return o},ni=new Fa(288);for(let bV=0;bV<144;++bV)ni[bV]=8;for(let bV=144;bV<256;++bV)ni[bV]=9;for(let bV=256;bV<280;++bV)ni[bV]=7;for(let bV=280;bV<288;++bV)ni[bV]=8;const ri=new Fa(32);for(let bV=0;bV<32;++bV)ri[bV]=5;const ai=ti(ni,9,1),ii=ti(ri,5,1),si=(e,t,n)=>{const r=t>>>3;return(e[r]|e[r+1]<<8)>>>(7&t)&n},oi=(e,t)=>{const n=t>>>3;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>>(7&t)},ci=e=>{let t=e[0];for(let n=1,r=e.length;nt&&(t=e[n]);return t},di=(e,t,n)=>{const r=!n||n.i;n||(n={});const a=e.length,i=!t||!r;t||(t=new Fa(3*a));const s=e=>{let n=t.length;if(e>n){const r=new Fa(Math.max(n<<1,e));r.set(t),t=r}};let o=n.f||0,c=n.p||0,d=n.b||0,u=n.l,l=n.d,f=n.m,p=n.n;if(o&&!u)return t;const h=a<<3;do{if(!u){n.f=o=si(e,c,1);const m=si(e,c+1,3);if(c+=3,!m){const o=((b=c)>>>3)+(7&b&&1)+4,u=e[o-4]|e[o-3]<<8,l=o+u;if(l>a){if(r)throw"unexpected EOF";break}i&&s(d+u),t.set(e.subarray(o,l),d),n.b=d+=u,n.p=c=l<<3;continue}if(1==m)u=ai,l=ii,f=9,p=5;else{if(2!=m)throw"invalid block type";{const t=si(e,c,31)+257,n=si(e,c+10,15)+4,a=t+si(e,c+5,31)+1;c+=14;const i=new Fa(a),s=new Fa(19);for(let r=0;rh)break;const b=ti(s,o,1);for(let r=0;r>>4;if(n<16)i[r++]=n;else{let t=0,a=0;for(16==n?(a=3+si(e,c,3),c+=2,t=i[r-1]):17==n?(a=3+si(e,c,7),c+=3):18==n&&(a=11+si(e,c,127),c+=7);a--;)i[r++]=t}}const m=i.subarray(0,t),y=i.subarray(t);f=ci(m),p=ci(y),u=ti(m,f,1),l=ti(y,p,1)}}if(c>h)throw"unexpected EOF"}i&&s(d+131072);const m=(1<>>4;if(c+=15&n,c>h)throw"unexpected EOF";if(!n)throw"invalid length/literal";if(r<256)t[d++]=r;else{if(256==r){u=void 0;break}{let n=r-254;if(r>264){const t=r-257,a=Ga[t];n=si(e,c,(1<>>4;if(!a)throw"invalid distance";c+=15&a;let u=$a[o];if(o>3){const t=Ka[o];u+=oi(e,c)&(1<h)throw"unexpected EOF";i&&s(d+131072);const f=d+n;for(;d{(null==t||t<0)&&(t=0),(null==n||n>e.length)&&(n=e.length);const r=new(e instanceof Xa?Xa:e instanceof Wa?Wa:Fa)(n-t);return r.set(e.subarray(t,n)),r})(t,0,d)};function ui(e,t){return di(((e=>{if(8!=(15&e[0])||e[0]>>>4>7||(e[0]<<8|e[1])%31)throw"invalid zlib data";if(32&e[1])throw"invalid zlib data: preset dictionaries not supported"})(e),e.subarray(2,-4)),t)}const li="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fi=new Array(256);for(let bV=0,mV=64;bV=8&&(t[++a]=n>>>(r-=8)&255);return t}(pi.ee,new Uint8Array(pi.$o)),new Uint8Array(pi.qO)),bi=ja("crypto",hi,null),mi=new class{__internal__createWasm;__internal__heap;__internal__wbg;__internal__cachegetInt32;__internal__cachegetUint8;__internal__heapNext;__internal__wasm;__internal__wasmError;__internal__wasmPromise;__internal__type;constructor(e){this.__internal__createWasm=e,this.__internal__cachegetInt32=null,this.__internal__cachegetUint8=null,this.__internal__heap=new Array(32).fill(void 0).concat(void 0,null,!0,!1),this.__internal__heapNext=this.__internal__heap.length,this.__internal__type="none",this.__internal__wasm=null,this.__internal__wasmError=null,this.__internal__wasmPromise=null,this.__internal__wbg={...new qa(this)}}get error(){return this.__internal__wasmError}get type(){return this.__internal__type}get wasm(){return this.__internal__wasm}async init(e){this.__internal__wasmPromise&&!e||(this.__internal__wasmPromise=(e||this.__internal__createWasm)(this.__internal__wbg));const{error:t,type:n,wasm:r}=await this.__internal__wasmPromise;return this.__internal__type=n,this.__internal__wasm=r,this.__internal__wasmError=t,this.__internal__wasm}getObject(e){return this.__internal__heap[e]}dropObject(e){e<36||(this.__internal__heap[e]=this.__internal__heapNext,this.__internal__heapNext=e)}takeObject(e){const t=this.getObject(e);return this.dropObject(e),t}addObject(e){this.__internal__heapNext===this.__internal__heap.length&&this.__internal__heap.push(this.__internal__heap.length+1);const t=this.__internal__heapNext;return this.__internal__heapNext=this.__internal__heap[t],this.__internal__heap[t]=e,t}getInt32(){return null!==this.__internal__cachegetInt32&&this.__internal__cachegetInt32.buffer===this.__internal__wasm.memory.buffer||(this.__internal__cachegetInt32=new Int32Array(this.__internal__wasm.memory.buffer)),this.__internal__cachegetInt32}getUint8(){return null!==this.__internal__cachegetUint8&&this.__internal__cachegetUint8.buffer===this.__internal__wasm.memory.buffer||(this.__internal__cachegetUint8=new Uint8Array(this.__internal__wasm.memory.buffer)),this.__internal__cachegetUint8}getU8a(e,t){return this.getUint8().subarray(e/1,e/1+t)}getString(e,t){return nt(this.getU8a(e,t))}allocU8a(e){const t=this.__internal__wasm.__wbindgen_malloc(1*e.length);return this.getUint8().set(e,t/1),[t,e.length]}allocString(e){return this.allocU8a((0,La.j)(e))}resultU8a(){const e=this.getInt32()[2],t=this.getInt32()[3],n=this.getU8a(e,t).slice();return this.__internal__wasm.__wbindgen_free(e,1*t),n}resultString(){return nt(this.resultU8a())}}(bi);function yi(e){return(...t)=>{if(!mi.wasm)throw new Error("The WASM interface has not been initialized. Ensure that you wait for the initialization Promise with waitReady() from @polkadot/wasm-crypto (or cryptoWaitReady() from @polkadot/util-crypto) before attempting to use WASM-only interfaces.");return e(mi.wasm,...t)}}const xi=yi(((e,t)=>(e.ext_secp_pub_expand(8,...mi.allocU8a(t)),mi.resultU8a()))),gi=yi(((e,t,n,r)=>(e.ext_blake2b(8,...mi.allocU8a(t),...mi.allocU8a(n),r),mi.resultU8a()))),vi=yi(((e,t)=>(e.ext_keccak256(8,...mi.allocU8a(t)),mi.resultU8a()))),wi=yi(((e,t)=>(e.ext_keccak512(8,...mi.allocU8a(t)),mi.resultU8a()))),Vi=yi(((e,t,n)=>(e.ext_twox(8,...mi.allocU8a(t),n),mi.resultU8a())));function Ti(){return!!mi.wasm}async function Si(){try{const e=await async function(e){return mi.init(e)}();return!!e}catch{return!1}}function ki(e){return(...t)=>(0,N.X)(e(...t))}function _i(e,t){return(n,r=256,a)=>{const i=(0,E.e)(n);return!Ba.CW||!a&&Ti()?e[r](i):t[r](i)}}function Pi(e,t=256,n,r){const a=Math.ceil(t/8),i=(0,E.e)(e);return!Ba.CW||!r&&Ti()?gi(i,(0,E.e)(n),a):Ra(i,n?{dkLen:a,key:n}:{dkLen:a})}const Mi=ki(Pi),Ii={extrinsic:{},payload:{}},Ni={LimitParathreadCommits:Ii,OnlyStakingAndClaims:Ii,PrevalidateAttests:Ii,RestrictFunctionality:Ii,TransactionCallFilter:Ii,ValidateDoubleVoteReports:Ii},Ei={DisallowSigned:Ii},Oi={extrinsic:{era:"ExtrinsicEra"},payload:{blockHash:"Hash"}},Ai={extrinsic:{tip:"Compact"},payload:{}},Ci={ChargeTransactionPayment:Ai,CheckBlockGasLimit:Ii,CheckEra:Oi,CheckGenesis:{extrinsic:{},payload:{genesisHash:"Hash"}},CheckMetadataHash:{extrinsic:{mode:"u8"},payload:{metadataHash:"Option<[u8;32]>"}},CheckMortality:Oi,CheckNonZeroSender:Ii,CheckNonce:{extrinsic:{nonce:"Compact"},payload:{}},CheckSpecVersion:{extrinsic:{},payload:{specVersion:"u32"}},CheckTxVersion:{extrinsic:{},payload:{transactionVersion:"u32"}},CheckVersion:{extrinsic:{},payload:{specVersion:"u32"}},CheckWeight:Ii,LockStakingStatus:Ii,SkipCheckIfFeeless:Ai,ValidateEquivocationReport:Ii},Hi=(0,M.b)({},Ci,Ni,Ei,{ChargeAssetTxPayment:{extrinsic:{tip:"Compact",assetId:"TAssetConversion"},payload:{}}}),Ri=["CheckVersion","CheckGenesis","CheckEra","CheckNonce","CheckWeight","ChargeTransactionPayment","CheckBlockGasLimit"];function Bi(e,t,n={}){return e.map((e=>n[e]||Hi[e])).filter((e=>!!e)).reduce(((e,n)=>(0,M.b)(e,n[t])),{})}class Li extends Kn{__internal__meta;__internal__method;__internal__names=null;__internal__section;__internal__typeDef;constructor(e,t,n,r="",a=""){const i=n?.fields||[];super(e,i.map((({type:t})=>e.createLookupType(t))),t),this.__internal__meta=n,this.__internal__method=a,this.__internal__section=r,this.__internal__typeDef=i.map((({type:t})=>e.lookup.getTypeDef(t)));const s=i.map((({name:t})=>e.lookup.sanitizeField(t)[0])).filter((e=>!!e));s.length===i.length&&(this.__internal__names=s,De(this,s,((e,t)=>this[t])))}get meta(){return this.__internal__meta}get method(){return this.__internal__method}get names(){return this.__internal__names}get section(){return this.__internal__section}get typeDef(){return this.__internal__typeDef}toHuman(e,t){if(null!==this.__internal__names){const n={};for(let r=0,a=this.__internal__names.length;re.toString()))}:null,super.toHuman(e,t))}}class Ui{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__raw;constructor(e,t,n){this.initialU8aLength=n,this.__internal__raw=t,this.registry=e}get encodedLength(){return this.toU8a().length}get hash(){return this.registry.hash(this.toU8a())}get inner(){return this.__internal__raw}get isEmpty(){return this.__internal__raw.isEmpty}eq(e){return this.__internal__raw.eq(e)}inspect(){return this.__internal__raw.inspect()}toHex(e){return this.__internal__raw.toHex(e)}toHuman(e,t){return this.__internal__raw.toHuman(e,t)}toJSON(){return this.__internal__raw.toJSON()}toPrimitive(e){return this.__internal__raw.toPrimitive(e)}toString(){return this.__internal__raw.toString()}toU8a(e){return this.__internal__raw.toU8a(e)}unwrap(){return this.__internal__raw}valueOf(){return this.__internal__raw}}const Di=new Uint8Array,qi=new Uint8Array([0]),ji="bare",Fi=["ExtrinsicUnknown","ExtrinsicUnknown","ExtrinsicUnknown","ExtrinsicUnknown","ExtrinsicV4","ExtrinsicV5"],Xi={bare:"ExtrinsicV5",general:"GeneralExtrinsic"},Wi=0,Zi=64,Gi={0:"bare",64:"general"};function Ki(e,t,n,r){if(t instanceof Qi)return t.unwrap();const a=!(128&~n),i=5==(63&n)?Xi[r]:Fi[63&n]||Fi[0];return e.createTypeUnsafe(i,[t,{isSigned:a,version:n}])}function Ji(e,t,n=4,r=ji){return(0,ut.b)(t)||Array.isArray(t)||(0,Je.qv)(t)?function(e,t,n,r){if(!t.length)return Ki(e,new Uint8Array,n,r);const[a,i]=ct(t),s=a+i.toNumber();if(s>t.length)throw new Error(`Extrinsic: length less than remainder, expected at least ${s}, found ${t.length}`);const o=t.subarray(a,s),c=192&o[0];return Ki(e,"general"===Gi[`${c}`]?t:o.subarray(1),o[0],Gi[`${c}`]||r)}(e,(0,E.e)(t),n,r):t instanceof e.createClassUnsafe("Call")?Ki(e,{method:t},n,r):Ki(e,t,n,r)}class Yi extends Ui{__internal__preamble;constructor(e,t,n,r){super(e,t,n);const a=Object.keys(e.getSignedExtensionTypes());if(5===this.version&&"general"!==r){const e=e=>this.inner.signature[e];for(let t=0,n=a.length;t>12,1),o=(a>>4)*s;if(i<4||o>=i)throw new Error("Invalid data passed to Mortal era");return[new $i(e,i),new $i(e,o)]}(e,(0,E.e)(t));if(!t)return[new $i(e),new $i(e)];if((0,Xe.G)(t))return function(e,t){const{current:n,period:r}=t;let a=Math.pow(2,Math.ceil(Math.log2(r)));a=Math.min(Math.max(a,4),65536);const i=n%a,s=Math.max(a>>12,1),o=i/s*s;return[new $i(e,a),new $i(e,o)]}(e,t);throw new Error("Invalid data passed to Mortal era")}function ns(e=new Uint8Array){if((0,ut.b)(e))return e.length&&0!==e[0]?new Uint8Array([1,e[0],e[1]]):new Uint8Array([0]);if(!e)return new Uint8Array([0]);if(e instanceof is)return ns(e.toU8a());if((0,Je.qv)(e))return ns((0,es.V)(e));if((0,Xe.G)(e)){const t=Object.entries(e).map((([e,t])=>[e.toLowerCase(),t])),n=t.find((([e])=>"mortalera"===e.toLowerCase())),r=t.find((([e])=>"immortalera"===e.toLowerCase()));return n?{MortalEra:n[1]}:r?{ImmortalEra:r[1]}:{MortalEra:e}}throw new Error("Invalid data passed to Era")}class rs extends rt{constructor(e,t){super(e,qi)}}class as extends Kn{constructor(e,t){super(e,{period:$i,phase:$i},ts(e,t))}get encodedLength(){return 2}get period(){return this[0]}get phase(){return this[1]}toHuman(){return{period:Dn(this.period),phase:Dn(this.phase)}}toJSON(){return this.toHex()}toU8a(e){const t=this.period.toNumber(),n=Math.min(15,Math.max(1,function(e){const t=e.toString(2);let n=0;for(;"0"===t[t.length-1-n];)n++;return n}(t)-1))+(this.phase.toNumber()/Math.max(t>>12,1)<<4);return new Uint8Array([255&n,n>>8])}birth(e){const t=this.phase.toNumber(),n=this.period.toNumber();return~~((Math.max(kt(e).toNumber(),t)-t)/n)*n+t}death(e){return this.birth(e)+this.period.toNumber()}}class is extends nn{constructor(e,t){super(e,{ImmortalEra:rs,MortalEra:as},ns(t))}get encodedLength(){return this.isImmortalEra?this.asImmortalEra.encodedLength:this.asMortalEra.encodedLength}get asImmortalEra(){if(!this.isImmortalEra)throw new Error(`Cannot convert '${this.type}' via asImmortalEra`);return this.inner}get asMortalEra(){if(!this.isMortalEra)throw new Error(`Cannot convert '${this.type}' via asMortalEra`);return this.inner}get isImmortalEra(){return 0===this.index}get isMortalEra(){return this.index>0}toU8a(e){return this.isMortalEra?this.asMortalEra.toU8a(e):this.asImmortalEra.toU8a(e)}}const ss=["ExtrinsicPayloadUnknown","ExtrinsicPayloadUnknown","ExtrinsicPayloadUnknown","ExtrinsicPayloadUnknown","ExtrinsicPayloadV4","ExtrinsicPayloadV5"],os={bare:"ExtrinsicPayloadV5",general:"ExtrinsicPayloadV5"};class cs extends Ui{constructor(e,t,{preamble:n,version:r}={}){super(e,function(e,t,n=5,r=ji){if(t instanceof cs)return t.unwrap();const a=5===n?os[r]:ss[n]||ss[0];if(t&&t.assetId&&(0,Je.qv)(t.assetId)){const r=e.createType("TAssetConversion",(0,es.V)(t.assetId));if("0x00"===t.assetId||t.assetId==="0x01"+r.toHex().slice(2)){const i={...t,assetId:r.toJSON()};return e.createTypeUnsafe(a,[i,{version:n}])}}return e.createTypeUnsafe(a,[t,{version:n}])}(e,t,r,n))}get blockHash(){return this.inner.blockHash}get era(){return this.inner.era}get genesisHash(){return this.inner.genesisHash||this.registry.createTypeUnsafe("Hash",[])}get method(){return this.inner.method}get nonce(){return this.inner.nonce}get specVersion(){return this.inner.specVersion||this.registry.createTypeUnsafe("u32",[])}get tip(){return this.inner.tip||this.registry.createTypeUnsafe("Compact",[])}get transactionVersion(){return this.inner.transactionVersion||this.registry.createTypeUnsafe("u32",[])}get assetId(){return this.inner.assetId}get metadataHash(){return this.inner.metadataHash}eq(e){return this.inner.eq(e)}sign(e){const t=this.inner.sign(e);return{signature:(0,N.X)(t)}}toHuman(e,t){return this.inner.toHuman(e,t)}toJSON(){return this.toHex()}toRawType(){return"ExtrinsicPayload"}toString(){return this.toHex()}toU8a(e){return super.toU8a(!!e&&{method:!0})}}class ds extends dn{constructor(e,t,{version:n=0}={}){throw super(e,{}),new Error(`Unsupported extrinsic payload version ${n}`)}}class us extends dn{constructor(e,t,{isSigned:n=!1,version:r=0}={}){throw super(e,{}),new Error(`Unsupported ${n?"":"un"}signed extrinsic version ${127&r}`)}}const ls={address:"Address",assetId:"Option",blockHash:"Hash",blockNumber:"BlockNumber",era:"ExtrinsicEra",genesisHash:"Hash",metadataHash:"Option<[u8;32]>",method:"Call",mode:"u8",nonce:"Compact",runtimeVersion:"RuntimeVersion",signedExtensions:"Vec",tip:"Compact",version:"u8"};class fs extends dn{__internal__extraTypes;constructor(e,t){const n=(0,M.b)({},e.getSignedExtensionTypes(),e.getSignedExtensionExtra());super(e,(0,M.b)({},n,ls,{withSignedTransaction:"bool"}),t),this.__internal__extraTypes={};const r=e=>this.get(e);for(const[a,i]of Object.entries(n))ls[a]||(this.__internal__extraTypes[a]=i),Ue(this,a,r)}get address(){return this.getT("address")}get blockHash(){return this.getT("blockHash")}get blockNumber(){return this.getT("blockNumber")}get era(){return this.getT("era")}get genesisHash(){return this.getT("genesisHash")}get method(){return this.getT("method")}get nonce(){return this.getT("nonce")}get runtimeVersion(){return this.getT("runtimeVersion")}get signedExtensions(){return this.getT("signedExtensions")}get tip(){return this.getT("tip")}get assetId(){return this.getT("assetId")}get version(){return this.getT("version")}get mode(){return this.getT("mode")}get metadataHash(){return this.getT("metadataHash")}get withSignedTransaction(){return this.getT("withSignedTransaction").isTrue}toPayload(){const e={},t=Object.keys(this.__internal__extraTypes);for(let n=0,r=t.length;ne.toString())),specVersion:this.runtimeVersion.specVersion.toHex(),tip:this.tip.toHex(),transactionVersion:this.runtimeVersion.transactionVersion.toHex(),version:this.version.toNumber(),withSignedTransaction:this.withSignedTransaction})}toRaw(){const e=this.toPayload(),t=(0,N.X)(this.registry.createTypeUnsafe("ExtrinsicPayload",[e,{version:e.version}]).toU8a({method:!0}));return{address:e.address,data:t,type:"payload"}}}class ps extends dn{constructor(e,t,{isSigned:n}={}){super(e,{signature:"ExtrinsicSignatureV4",method:"Call"},ps.decodeExtrinsic(e,t,n))}static decodeExtrinsic(e,t,n=!1){if(t instanceof ps)return t;if(t instanceof e.createClassUnsafe("Call"))return{method:t};if((0,ut.b)(t)){const r=e.createTypeUnsafe("ExtrinsicSignatureV4",[t,{isSigned:n}]);return{method:e.createTypeUnsafe("Call",[t.subarray(r.encodedLength)]),signature:r}}return t||{}}get encodedLength(){return this.toU8a().length}get method(){return this.getT("method")}get signature(){return this.getT("signature")}get version(){return 4}addSignature(e,t,n){return this.signature.addSignature(e,t,n),this}sign(e,t){return this.signature.sign(this.method,e,t),this}signFake(e,t){return this.signature.signFake(this.method,e,t),this}}class hs extends dn{__internal__signOptions;constructor(e,t){super(e,(0,M.b)({method:"Bytes"},e.getSignedExtensionTypes(),e.getSignedExtensionExtra()),t),this.__internal__signOptions={withType:e.createTypeUnsafe("ExtrinsicSignature",[])instanceof nn}}inspect(){return super.inspect({method:!0})}get blockHash(){return this.getT("blockHash")}get era(){return this.getT("era")}get genesisHash(){return this.getT("genesisHash")}get method(){return this.getT("method")}get nonce(){return this.getT("nonce")}get specVersion(){return this.getT("specVersion")}get tip(){return this.getT("tip")}get transactionVersion(){return this.getT("transactionVersion")}get assetId(){return this.getT("assetId")}get metadataHash(){return this.getT("metadataHash")}sign(e){return function(e,t,n,r){const a=n.length>256?e.hash(n):n;return t.sign(a,r)}(this.registry,e,this.toU8a({method:!0}),this.__internal__signOptions)}}const bs=new Uint8Array(256).fill(1);function ms(e,t){return e.createTypeUnsafe("Address",[(0,ut.b)(t)?(0,N.X)(t):t])}class ys extends dn{__internal__signKeys;constructor(e,t,{isSigned:n}={}){const r=e.getSignedExtensionTypes();super(e,(0,M.b)({signer:"Address",signature:"ExtrinsicSignature"},r),ys.decodeExtrinsicSignature(t,n)),this.__internal__signKeys=Object.keys(r),De(this,this.__internal__signKeys,(e=>this.get(e)))}static decodeExtrinsicSignature(e,t=!1){return e&&(e instanceof ys||t)?e:Di}get encodedLength(){return this.isSigned?super.encodedLength:0}get isSigned(){return!this.signature.isEmpty}get era(){return this.getT("era")}get nonce(){return this.getT("nonce")}get signature(){return this.multiSignature.value||this.multiSignature}get multiSignature(){return this.getT("signature")}get signer(){return this.getT("signer")}get tip(){return this.getT("tip")}get assetId(){return this.getT("assetId")}get mode(){return this.getT("mode")}get metadataHash(){return this.getT("metadataHash")}_injectSignature(e,t,n){for(let r=0,a=this.__internal__signKeys.length;rthis.get(e)))}static decodeExtrinsicSignature(e,t=!1){return e&&(e instanceof vs||t)?e:Di}get encodedLength(){return this.isSigned?super.encodedLength:0}get isSigned(){return!this.signature.isEmpty}get era(){return this.getT("era")}get nonce(){return this.getT("nonce")}get signature(){return this.multiSignature.value||this.multiSignature}get multiSignature(){return this.getT("signature")}get signer(){return this.getT("signer")}get tip(){return this.getT("tip")}get assetId(){return this.getT("assetId")}get mode(){return this.getT("mode")}get metadataHash(){return this.getT("metadataHash")}get transactionExtensionVersion(){return this.getT("transactionExtensionVersion")}_injectSignature(e,t,n){throw new Error("Extrinsic: ExtrinsicV5 does not include signing support")}addSignature(e,t,n){throw new Error("Extrinsic: ExtrinsicV5 does not include signing support")}createPayload(e,t){const{era:n,runtimeVersion:{specVersion:r,transactionVersion:a}}=t;return new gs(this.registry,(0,M.b)({},t,{era:n||qi,method:e.toHex(),specVersion:r,transactionVersion:a}))}sign(e,t,n){throw new Error("Extrinsic: ExtrinsicV5 does not include signing support")}signFake(e,t,n){throw new Error("Extrinsic: ExtrinsicV5 does not include signing support")}toU8a(e){return this.isSigned?super.toU8a(e):Di}}class ws extends dn{__internal__version;__internal__preamble;constructor(e,t,n){const r=e.getSignedExtensionTypes();super(e,(0,M.b)({transactionExtensionVersion:"u8"},r,{method:"Call"}),ws.decodeExtrinsic(e,t)),this.__internal__version=n?.version||5,this.__internal__preamble=64}static decodeExtrinsic(e,t){if(!t)return Di;if(t instanceof ws)return t;if((0,ut.b)(t)||Array.isArray(t)||(0,Je.qv)(t))return function(e){if(!e.length)return new Uint8Array;const[t,n]=ct(e),r=t+n.toNumber();if(r>e.length)throw new Error(`Extrinsic: length less than remainder, expected at least ${r}, found ${e.length}`);const a=e.subarray(t,r);if(69!==a[0])throw new Error("Extrinsic: incorrect version for General Transactions, expected 5, found "+(127&a[0]));return a.subarray(1)}((0,E.e)(t));if((0,Xe.G)(t)){const{payload:n,transactionExtensionVersion:r}=t;return(0,M.b)(n||{},{transactionExtensionVersion:r||e.getTransactionExtensionVersion()})}return{}}get encodedLength(){return super.encodedLength}get era(){return this.getT("era")}get nonce(){return this.getT("nonce")}get tip(){return this.getT("tip")}get assetId(){return this.getT("assetId")}get mode(){return this.getT("mode")}get metadataHash(){return this.getT("metadataHash")}get transactionExtensionVersion(){return this.getT("transactionExtensionVersion")}get method(){return this.getT("method")}get version(){return this.__internal__version}get preamble(){return this.__internal__preamble}toHex(e){return(0,N.X)(this.toU8a(e))}toU8a(e){return e?this.encode():ar(this.encode())}toRawType(){return"GeneralExt"}encode(){return Mt(new Uint8Array([this.version|this.preamble]),super.toU8a())}signFake(){throw new Error("Extrinsic: Type GeneralExtrinsic does not have signFake implemented")}addSignature(){throw new Error("Extrinsic: Type GeneralExtrinsic does not have addSignature implemented")}sign(){throw new Error("Extrinsic: Type GeneralExtrinsic does not have sign implemented")}signature(){throw new Error("Extrinsic: Type GeneralExtrinsic does not have the signature getter")}}function Vs(e){if(!Number.isSafeInteger(e))throw new Error(`Wrong integer: ${e}`)}function Ts(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name}function Ss(...e){const t=e=>e,n=(e,t)=>n=>e(t(n));return{encode:e.map((e=>e.encode)).reduceRight(n,t),decode:e.map((e=>e.decode)).reduce(n,t)}}function ks(e){return{encode:t=>{if(!Array.isArray(t)||t.length&&"number"!=typeof t[0])throw new Error("alphabet.encode input should be an array of numbers");return t.map((t=>{if(Vs(t),t<0||t>=e.length)throw new Error(`Digit index outside alphabet: ${t} (alphabet: ${e.length})`);return e[t]}))},decode:t=>{if(!Array.isArray(t)||t.length&&"string"!=typeof t[0])throw new Error("alphabet.decode input should be array of strings");return t.map((t=>{if("string"!=typeof t)throw new Error(`alphabet.decode: not string element=${t}`);const n=e.indexOf(t);if(-1===n)throw new Error(`Unknown letter: "${t}". Allowed: ${e}`);return n}))}}}function _s(e=""){if("string"!=typeof e)throw new Error("join separator should be string");return{encode:t=>{if(!Array.isArray(t)||t.length&&"string"!=typeof t[0])throw new Error("join.encode input should be array of strings");for(let e of t)if("string"!=typeof e)throw new Error(`join.encode: non-string input=${e}`);return t.join(e)},decode:t=>{if("string"!=typeof t)throw new Error("join.decode input should be string");return t.split(e)}}}function Ps(e,t="="){if(Vs(e),"string"!=typeof t)throw new Error("padding chr should be string");return{encode(n){if(!Array.isArray(n)||n.length&&"string"!=typeof n[0])throw new Error("padding.encode input should be array of strings");for(let e of n)if("string"!=typeof e)throw new Error(`padding.encode: non-string input=${e}`);for(;n.length*e%8;)n.push(t);return n},decode(n){if(!Array.isArray(n)||n.length&&"string"!=typeof n[0])throw new Error("padding.encode input should be array of strings");for(let e of n)if("string"!=typeof e)throw new Error(`padding.decode: non-string input=${e}`);let r=n.length;if(r*e%8)throw new Error("Invalid padding: string should have whole number of bytes");for(;r>0&&n[r-1]===t;r--)if(!((r-1)*e%8))throw new Error("Invalid padding: string has too much padding");return n.slice(0,r)}}}function Ms(e){if("function"!=typeof e)throw new Error("normalize fn should be function");return{encode:e=>e,decode:t=>e(t)}}function Is(e,t,n){if(t<2)throw new Error(`convertRadix: wrong from=${t}, base cannot be less than 2`);if(n<2)throw new Error(`convertRadix: wrong to=${n}, base cannot be less than 2`);if(!Array.isArray(e))throw new Error("convertRadix: data should be array");if(!e.length)return[];let r=0;const a=[],i=Array.from(e);for(i.forEach((e=>{if(Vs(e),e<0||e>=t)throw new Error(`Wrong integer: ${e}`)}));;){let e=0,s=!0;for(let a=r;at?Ns(t,e%t):e,Es=(e,t)=>e+(t-Ns(e,t));function Os(e,t,n,r){if(!Array.isArray(e))throw new Error("convertRadix2: data should be array");if(t<=0||t>32)throw new Error(`convertRadix2: wrong from=${t}`);if(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(Es(t,n)>32)throw new Error(`convertRadix2: carry overflow from=${t} to=${n} carryBits=${Es(t,n)}`);let a=0,i=0;const s=2**n-1,o=[];for(const c of e){if(Vs(c),c>=2**t)throw new Error(`convertRadix2: invalid data word=${c} from=${t}`);if(a=a<32)throw new Error(`convertRadix2: carry overflow pos=${i} from=${t}`);for(i+=t;i>=n;i-=n)o.push((a>>i-n&s)>>>0);a&=2**i-1}if(a=a<=t)throw new Error("Excess padding");if(!r&&a)throw new Error(`Non-zero padding: ${a}`);return r&&i>0&&o.push(a>>>0),o}function As(e){return Vs(e),{encode:t=>{if(!Ts(t))throw new Error("radix.encode input should be Uint8Array");return Is(Array.from(t),256,e)},decode:t=>{if(!Array.isArray(t)||t.length&&"number"!=typeof t[0])throw new Error("radix.decode input should be array of numbers");return Uint8Array.from(Is(t,e,256))}}}function Cs(e,t=!1){if(Vs(e),e<=0||e>32)throw new Error("radix2: bits should be in (0..32]");if(Es(8,e)>32||Es(e,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!Ts(n))throw new Error("radix2.encode input should be Uint8Array");return Os(Array.from(n),8,e,!t)},decode:n=>{if(!Array.isArray(n)||n.length&&"number"!=typeof n[0])throw new Error("radix2.decode input should be array of numbers");return Uint8Array.from(Os(n,e,8,t))}}}const Hs=Ss(Cs(4),ks("0123456789ABCDEF"),_s("")),Rs=Ss(Cs(5),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),Ps(5),_s("")),Bs=(Cs(5),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),_s(""),Cs(5),ks("0123456789ABCDEFGHIJKLMNOPQRSTUV"),Ps(5),_s(""),Cs(5),ks("0123456789ABCDEFGHIJKLMNOPQRSTUV"),_s(""),Cs(5),ks("0123456789ABCDEFGHJKMNPQRSTVWXYZ"),_s(""),Ms((e=>e.toUpperCase().replace(/O/g,"0").replace(/[IL]/g,"1"))),Ss(Cs(6),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),Ps(6),_s(""))),Ls=(Cs(6),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),_s(""),Ss(Cs(6),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),Ps(6),_s(""))),zs=(Cs(6),ks("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),_s(""),e=>Ss(As(58),ks(e),_s(""))),Us=zs("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"),Ds=[0,2,3,5,6,7,9,10,11],qs={encode(e){let t="";for(let n=0;n(new TextDecoder).decode(e),decode:e=>(new TextEncoder).encode(e)};Cs(4),ks("0123456789abcdef"),_s(""),Ms((e=>{if("string"!=typeof e||e.length%2)throw new TypeError(`hex.decode: expected string, got ${typeof e} with length ${e.length}`);return e.toLowerCase()}));function Fs({coder:e,ipfs:t},n){return(r,a)=>(n(r,a),e.decode(t&&a?r.substring(1):r))}function Xs({coder:e,ipfs:t}){return(n,r)=>{const a=e.encode((0,E.e)(n));return t&&r?`${t}${a}`:a}}function Ws({chars:e,ipfs:t,type:n,withPadding:r}){return(a,i)=>{if("string"!=typeof a)throw new Error(`Expected ${n} string input`);if(t&&i&&!a.startsWith(t))throw new Error(`Expected ipfs-compatible ${n} to start with '${t}'`);for(let t=i?1:0,s=a.length;te)),prefix:42};function co(e,t,n=-1){if(!e)throw new Error("Invalid empty address passed");if((0,ut.b)(e)||(0,Je.qv)(e))return(0,E.e)(e);try{const r=Ks(e);if(!oo.allowedEncodedLengths.includes(r.length))throw new Error("Invalid decoded address length");const[a,i,s,o]=function(e){const t=64&e[0]?2:1,n=1===t?e[0]:(63&e[0])<<2|e[1]>>6|(63&e[1])<<8,r=[34+t,35+t].includes(e.length),a=e.length-(r?2:1),i=Qs(e.subarray(0,a));return[!(128&e[0]||[46,47].includes(e[0])||(r?e[e.length-2]!==i[0]||e[e.length-1]!==i[1]:e[e.length-1]!==i[0])),a,t,n]}(r);if(!a&&!t)throw new Error("Invalid decoded address checksum");if(-1!==n&&n!==o)throw new Error(`Expected ss58Format ${n}, received ${o}`);return r.slice(s,i)}catch(r){throw new Error(`Decoding ${e}: ${r.message}`)}}function uo(e,t=oo.prefix){const n=co(e);if(t<0||t>16383||[46,47].includes(t))throw new Error("Out of range ss58Format specified");if(!oo.allowedDecodedLengths.includes(n.length))throw new Error(`Expected a valid key to convert, with length ${oo.allowedDecodedLengths.join(", ")}`);const r=Mt(t<64?[t]:[(252&t)>>2|64,t>>8|(3&t)<<6],n);return Js(Mt(r,Qs(r).subarray(0,[32,33].includes(n.length)?2:1)))}function lo(e){if((0,ut.b)(e)||Array.isArray(e))return(0,E.e)(e);if(!e)return new Uint8Array;if((0,Je.qv)(e))return(0,es.V)(e);if((0,I.K)(e))return co(e.toString());throw new Error("Unknown type passed to AccountId constructor, found typeof "+typeof e)}class fo extends lr{constructor(e,t=264,n){const r=lo(n);if(8*r.lengthe)))throw new Error(`Invalid AccountId provided, expected ${t>>3} bytes, found ${r.length}`);super(e,r,t)}eq(e){return super.eq(lo(e))}toHuman(){return this.toJSON()}toJSON(){return this.toString()}toPrimitive(){return this.toJSON()}toString(){return uo(this,this.registry.chainSS58)}toRawType(){return"AccountId"}}class po extends fo{constructor(e,t){super(e,256,t)}}class ho extends fo{constructor(e,t){super(e,264,t)}}class bo extends(rr.with(32)){__UIntType="u32"}const mo=new st(239),yo=new st(1).shln(16),xo=new st(1).shln(32);function go(e){return e instanceof vo?e.toBn():(0,pn.f)(e)||(0,Lt.E)(e)||(0,Je.qv)(e)||(0,ut.b)(e)||(0,wt.s)(e)?e:go(co(e))}class vo extends bo{constructor(e,t=new st(0)){super(e,go(t))}static calcLength(e){const t=kt(e);return t.lte(mo)?1:t.lt(yo)?2:t.lt(xo)?4:8}static readLength(e){const t=e[0];return 252===t?[1,2]:253===t?[1,4]:254===t?[1,8]:[0,1]}static writeLength(e){switch(e.length){case 2:return new Uint8Array([252]);case 4:return new Uint8Array([253]);case 8:return new Uint8Array([254]);default:return new Uint8Array([])}}eq(e){return(0,pn.f)(e)||(0,Lt.E)(e)?super.eq(e):super.eq(this.registry.createTypeUnsafe("AccountIndex",[e]))}toHuman(){return this.toJSON()}toJSON(){return this.toString()}toPrimitive(){return this.toJSON()}toString(){const e=vo.calcLength(this);return uo(this.toU8a().subarray(0,e),this.registry.chainSS58)}toRawType(){return"AccountIndex"}}class wo extends dn{constructor(e,t){super(e,{header:"Header",extrinsics:"Vec"},t)}get contentHash(){return this.registry.hash(this.toU8a())}get extrinsics(){return this.getT("extrinsics")}get hash(){return this.header.hash}get header(){return this.getT("header")}}function Vo(e,t){return t.fields.reduce(((t,{name:n,type:r},a)=>(t[n.unwrapOr(`param${a}`).toString()]=e.createLookupType(r),t)),{})}function To(e,t=new Uint8Array,n){if((0,ut.b)(t)||(0,Je.qv)(t))return function(e,t,n){const r=e.firstCallIndex.slice();r.set(t.subarray(0,2),0);const a=n||e.findMetaCall(r).meta;return{args:t.subarray(2),argsDef:Vo(e,a),callIndex:r,meta:a}}(e,(0,E.e)(t),n);if((0,Xe.G)(t)&&t.callIndex&&t.args)return function(e,t,n){const{args:r,callIndex:a}=t,i=a instanceof So?a.toU8a():a,s=n||e.findMetaCall(i).meta;return{args:r,argsDef:Vo(e,s),callIndex:a,meta:s}}(e,t,n);throw new Error(`Call: Cannot decode value '${t}' of type ${typeof t}`)}class So extends lr{constructor(e,t){super(e,t,16)}toPrimitive(){return this.toHex()}}class ko extends dn{_meta;constructor(e,t,n){const r=To(e,t,n);try{super(e,{callIndex:So,args:dn.with(r.argsDef)},r)}catch(a){let t="unknown.unknown";try{const n=e.findMetaCall(r.callIndex);t=`${n.section}.${n.method}`}catch{}throw new Error(`Call: failed decoding ${t}:: ${a.message}`)}this._meta=r.meta}get args(){return[...this.getT("args").values()]}get argsDef(){return Vo(this.registry,this.meta)}get argsEntries(){return[...this.getT("args").entries()]}get callIndex(){return this.getT("callIndex").toU8a()}get data(){return this.getT("args").toU8a()}get meta(){return this._meta}get method(){return this.registry.findMetaCall(this.callIndex).method}get section(){return this.registry.findMetaCall(this.callIndex).section}is(e){return e.callIndex[0]===this.callIndex[0]&&e.callIndex[1]===this.callIndex[1]}toHuman(e,t){let n;try{n=this.registry.findMetaCall(this.callIndex)}catch{}return(0,M.b)({args:this.argsEntries.reduce(((n,[r,a])=>(0,M.b)(n,{[r]:a.toHuman(e,t)})),{}),method:n?.method,section:n?.section},e&&n?{docs:n.meta.docs.map((e=>e.toString()))}:null)}toRawType(){return"Call"}}function _o(e,t,n,r=!0){return n&&(0,qe.T)(n.unwrapOrDefault)?n:e.createTypeUnsafe(t,[r?(0,Kt.k)(n)||(0,Fe.b)(n)?null:Array.isArray(n)?n:[n]:n])}function Po(e,t){return(t&&(0,qe.T)(t.entries)?[...t.entries()]:Object.entries(t||{})).reduce(((t,[n,r])=>(t[n]=function(e,t,n){return"ss58Format"===t?_o(e,"Option",n,!1):"tokenDecimals"===t?_o(e,"Option>",n):"tokenSymbol"===t?_o(e,"Option>",n):"isEthereum"===t?_o(e,"Bool",n,!1):n}(e,n,r),t)),{isEthereum:e.createTypeUnsafe("Bool",[]),ss58Format:e.createTypeUnsafe("Option",[]),tokenDecimals:e.createTypeUnsafe("Option>",[]),tokenSymbol:e.createTypeUnsafe("Option>",[])})}class Mo extends Ke{constructor(e,t){super(e,Po(e,t))}get isEthereum(){return this.getT("isEthereum")}get ss58Format(){return this.getT("ss58Format")}get tokenDecimals(){return this.getT("tokenDecimals")}get tokenSymbol(){return this.getT("tokenSymbol")}}const Io=(0,La.j)("aura"),No=(0,La.j)("BABE"),Eo=(0,La.j)("FRNK"),Oo=(0,La.j)("pow_"),Ao=(0,La.j)("nmbs");class Co extends lr{constructor(e,t){super(e,(0,Lt.E)(t)?Pt(t,{isLe:!1}):t,32)}get isAura(){return this.eq(Io)}get isBabe(){return this.eq(No)}get isGrandpa(){return this.eq(Eo)}get isPow(){return this.eq(Oo)}get isNimbus(){return this.eq(Ao)}extractAuthor(e,t){if(t?.length){if(this.isAura)return function(e,t,n){return n[e.createTypeUnsafe("RawAuraPreDigest",[t.toU8a(!0)]).slotNumber.mod(new st(n.length)).toNumber()]}(this.registry,e,t);if(this.isBabe)return function(e,t,n){return n[e.createTypeUnsafe("RawBabePreDigestCompat",[t.toU8a(!0)]).value.toNumber()]}(this.registry,e,t)}if(this.isPow||this.isNimbus)return function(e,t){return e.createTypeUnsafe("AccountId",[t])}(this.registry,e)}toHuman(){return this.toString()}toRawType(){return"ConsensusEngineId"}toString(){return this.isAscii?nt(this):(0,N.X)(this)}}const Ho=new Uint8Array([255]);function Ro(e,t){return t instanceof Bo?t.inner:t instanceof po||t instanceof vo?t:(0,pn.f)(t)||(0,Lt.E)(t)||(0,wt.s)(t)?e.createTypeUnsafe("AccountIndex",[t]):Array.isArray(t)||(0,Je.qv)(t)||(0,ut.b)(t)?function(e,t){if(32===t.length)return e.createTypeUnsafe("AccountId",[t]);if(255===t[0])return e.createTypeUnsafe("AccountId",[t.subarray(1)]);const[n,r]=vo.readLength(t);return e.createTypeUnsafe("AccountIndex",[ot(t.subarray(n,n+r))])}(e,(0,E.e)(t)):function(e,t){const n=co(t);return 32===n.length?e.createTypeUnsafe("AccountId",[n]):e.createTypeUnsafe("AccountIndex",[ot(n)])}(e,t)}class Bo extends Ui{constructor(e,t=new Uint8Array){super(e,Ro(e,t))}get encodedLength(){const e=this._rawLength;return e+(e>1?1:0)}get _rawLength(){return this.inner instanceof vo?vo.calcLength(this.inner):this.inner.encodedLength}inspect(){const e=this.inner.toU8a().subarray(0,this._rawLength);return{outer:[new Uint8Array(this.inner instanceof vo?vo.writeLength(e):Ho),e]}}toHex(){return(0,N.X)(this.toU8a())}toRawType(){return"Address"}toU8a(e){const t=this.inner.toU8a().subarray(0,this._rawLength);return e?t:Mt(this.inner instanceof vo?vo.writeLength(t):Ho,t)}}function Lo(e,t){return[0,32].includes(t.length)?{Id:t}:20===t.length?{Address20:t}:t.length<=8?{Index:e.createTypeUnsafe("AccountIndex",[t]).toNumber()}:t}class zo extends nn{constructor(e,t){super(e,{Id:"AccountId",Index:"Compact",Raw:"Bytes",Address32:"H256",Address20:"H160"},function(e,t){return t instanceof po?{Id:t}:(0,ut.b)(t)?Lo(e,t):t instanceof zo?t:t instanceof vo||(0,pn.f)(t)||(0,Lt.E)(t)?{Index:(0,Lt.E)(t)?t:t.toNumber()}:(0,I.K)(t)?Lo(e,co(t.toString())):t}(e,t))}inspect(){const{inner:e,outer:t=[]}=this.inner.inspect();return{inner:e,outer:[new Uint8Array([this.index]),...t]}}toString(){return this.value.toString()}}class Uo extends Boolean{registry;createdAtHash;initialU8aLength=1;isStorageFallback;constructor(e,t=!1){super((0,ut.b)(t)?1===t[0]:t instanceof Boolean?t.valueOf():!!t),this.registry=e}get encodedLength(){return 1}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return this.isFalse}get isFalse(){return!this.isTrue}get isTrue(){return this.valueOf()}eq(e){return this.valueOf()===(e instanceof Boolean?e.valueOf():e)}inspect(){return{outer:[this.toU8a()]}}toHex(){return(0,N.X)(this.toU8a())}toHuman(){return this.toJSON()}toJSON(){return this.valueOf()}toPrimitive(){return this.toJSON()}toRawType(){return"bool"}toString(){return this.toJSON().toString()}toU8a(e){return new Uint8Array([this.valueOf()?1:0])}}const Do=128;function qo(e){return e?new Uint8Array([128]):new Uint8Array([0])}function jo(e,t){return(0,ut.b)(t)?function(e){return e.length?e.subarray(0,1):new Uint8Array([0])}(t):(0,Fe.b)(t)||t instanceof Boolean||rn(t)?qo(new Uo(e,t).isTrue):(0,Lt.E)(t)?qo(t<0):function(e,t){return new Uint8Array([(new Uo(e,t.aye).isTrue?Do:0)|e.createTypeUnsafe("Conviction",[t.conviction||0]).index])}(e,t)}class Fo extends lr{__internal__aye;__internal__conviction;constructor(e,t){const n=jo(e,t);super(e,n,8),this.__internal__aye=(n[0]&Do)===Do,this.__internal__conviction=this.registry.createTypeUnsafe("Conviction",[127&n[0]])}get conviction(){return this.__internal__conviction}get isAye(){return this.__internal__aye}get isNay(){return!this.isAye}toHuman(e){return{conviction:this.conviction.toHuman(e),vote:this.isAye?"Aye":"Nay"}}toPrimitive(){return{aye:this.isAye,conviction:this.conviction.toPrimitive()}}toRawType(){return"Vote"}}const Xo=[],Wo=[],Zo=[],Go=BigInt(0),Ko=BigInt(1),Jo=BigInt(2),Yo=BigInt(7),Qo=BigInt(256),$o=BigInt(113);for(let bV=0,mV=Ko,yV=1,xV=0;bV<24;bV++){[yV,xV]=[xV,(2*yV+3*xV)%5],Xo.push(2*(5*xV+yV)),Wo.push((bV+1)*(bV+2)/2%64);let e=Go;for(let t=0;t<7;t++)mV=(mV<>Yo)*$o)%Qo,mV&Jo&&(e^=Ko<<(Ko<n>32?Pa(e,t,n):ka(e,t,n),rc=(e,t,n)=>n>32?Ma(e,t,n):_a(e,t,n);class ac extends ba{constructor(e,t,n,r=!1,a=24){if(super(),this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.rounds=a,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,ta(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=oa(this.state)}keccak(){ua||pa(this.state32),function(e,t=24){const n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let r=0;r<10;r++)n[r]=e[r]^e[r+10]^e[r+20]^e[r+30]^e[r+40];for(let r=0;r<10;r+=2){const t=(r+8)%10,a=(r+2)%10,i=n[a],s=n[a+1],o=nc(i,s,1)^n[t],c=rc(i,s,1)^n[t+1];for(let n=0;n<50;n+=10)e[r+n]^=o,e[r+n+1]^=c}let t=e[2],a=e[3];for(let n=0;n<24;n++){const r=Wo[n],i=nc(t,a,r),s=rc(t,a,r),o=Xo[n];t=e[o],a=e[o+1],e[o]=i,e[o+1]=s}for(let r=0;r<50;r+=10){for(let t=0;t<10;t++)n[t]=e[r+t];for(let t=0;t<10;t++)e[r+t]^=~n[(t+2)%10]&n[(t+4)%10]}e[0]^=ec[r],e[1]^=tc[r]}n.fill(0)}(this.state32,this.rounds),ua||pa(this.state32),this.posOut=0,this.pos=0}update(e){aa(this);const{blockLen:t,state:n}=this,r=(e=ha(e)).length;for(let a=0;a=n&&this.keccak();const i=Math.min(n-this.posOut,a-r);e.set(t.subarray(this.posOut,this.posOut+i),r),this.posOut+=i,r+=i}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return ta(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(ia(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){const{blockLen:t,suffix:n,outputLen:r,rounds:a,enableXOF:i}=this;return e||(e=new ac(t,n,r,i,a)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=a,e.suffix=n,e.outputLen=r,e.enableXOF=i,e.destroyed=this.destroyed,e}}const ic=(e,t,n)=>ma((()=>new ac(t,e,n))),sc=_i({256:vi,512:wi},{256:ic(1,136,32),512:ic(1,72,64)});function oc(e){return!(!e||42!==e.length||!(0,Je.qv)(e))&&(!(!/^(0x)?[0-9a-f]{40}$/.test(e)&&!/^(0x)?[0-9A-F]{40}$/.test(e))||function(e){const t=e.replace("0x",""),n=(0,N.X)(sc(t.toLowerCase()),-1,!1);for(let i=0;i<40;i++)if(r=t[i],a=parseInt(n[i],16),r!==(a>7?r.toUpperCase():r.toLowerCase()))return!1;var r,a;return!0}(e))}const cc=(e,t,n)=>e&t^e&n^t&n;class dc extends ba{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ca(this.buffer)}update(e){aa(this);const{view:t,buffer:n,blockLen:r}=this,a=(e=ha(e)).length;for(let i=0;ir-i&&(this.process(n,0),i=0);for(let u=i;u>a&i),o=Number(n&i),c=r?4:0,d=r?0:4;e.setUint32(t+c,s,r),e.setUint32(t+d,o,r)}(n,r-8,BigInt(8*this.length),a),this.process(n,0);const s=ca(e),o=this.outputLen;if(o%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const c=o/4,d=this.get();if(c>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u>>3,r=da(t,17)^da(t,19)^t>>>10;fc[l]=r+fc[l-7]+n+fc[l-16]|0}let{A:n,B:r,C:a,D:i,E:s,F:o,G:c,H:d}=this;for(let l=0;l<64;l++){const e=d+(da(s,6)^da(s,11)^da(s,25))+((u=s)&o^~u&c)+uc[l]+fc[l]|0,t=(da(n,2)^da(n,13)^da(n,22))+cc(n,r,a)|0;d=c,c=o,o=s,s=i+e|0,i=a,a=r,r=n,n=e+t|0}var u;n=n+this.A|0,r=r+this.B|0,a=a+this.C|0,i=i+this.D|0,s=s+this.E|0,o=o+this.F|0,c=c+this.G|0,d=d+this.H|0,this.set(n,r,a,i,s,o,c,d)}roundClean(){fc.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const hc=ma((()=>new pc));class bc extends ba{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,ra(e);const n=ha(t);if(this.iHash=e.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,a=new Uint8Array(r);a.set(n.length>r?e.create().update(n).digest():n);for(let i=0;inew bc(e,t).update(n).digest();mc.create=(e,t)=>new bc(e,t);const yc=BigInt(0),xc=BigInt(1),gc=BigInt(2);function vc(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name}function wc(e){if(!vc(e))throw new Error("Uint8Array expected")}function Vc(e,t){if("boolean"!=typeof t)throw new Error(`${e} must be valid boolean, got "${t}".`)}const Tc=Array.from({length:256},((e,t)=>t.toString(16).padStart(2,"0")));function Sc(e){wc(e);let t="";for(let n=0;n=Pc._0&&e<=Pc._9?e-Pc._0:e>=Pc._A&&e<=Pc._F?e-(Pc._A-10):e>=Pc._a&&e<=Pc._f?e-(Pc._a-10):void 0}function Ic(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);const t=e.length,n=t/2;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let a=0,i=0;a"bigint"==typeof e&&yc<=e;function Bc(e,t,n){return Rc(e)&&Rc(t)&&Rc(n)&&t<=e&&eyc;e>>=xc,t+=1);return t}const Uc=e=>(gc<new Uint8Array(e),qc=e=>Uint8Array.from(e);function jc(e,t,n){if("number"!=typeof e||e<2)throw new Error("hashLen must be a number");if("number"!=typeof t||t<2)throw new Error("qByteLen must be a number");if("function"!=typeof n)throw new Error("hmacFn must be a function");let r=Dc(e),a=Dc(e),i=0;const s=()=>{r.fill(1),a.fill(0),i=0},o=(...e)=>n(a,r,...e),c=(e=Dc())=>{a=o(qc([0]),e),r=o(),0!==e.length&&(a=o(qc([1]),e),r=o())},d=()=>{if(i++>=1e3)throw new Error("drbg: tried 1000 values");let e=0;const n=[];for(;e{let n;for(s(),c(e);!(n=t(d()));)c();return s(),n}}const Fc={bigint:e=>"bigint"==typeof e,function:e=>"function"==typeof e,boolean:e=>"boolean"==typeof e,string:e=>"string"==typeof e,stringOrUint8Array:e=>"string"==typeof e||vc(e),isSafeInteger:e=>Number.isSafeInteger(e),array:e=>Array.isArray(e),field:(e,t)=>t.Fp.isValid(e),hash:e=>"function"==typeof e&&Number.isSafeInteger(e.outputLen)};function Xc(e,t,n={}){const r=(t,n,r)=>{const a=Fc[n];if("function"!=typeof a)throw new Error(`Invalid validator "${n}", expected function`);const i=e[t];if(!(r&&void 0===i||a(i,e)))throw new Error(`Invalid param ${String(t)}=${i} (${typeof i}), expected ${n}`)};for(const[a,i]of Object.entries(t))r(a,i,!1);for(const[a,i]of Object.entries(n))r(a,i,!0);return e}function Wc(e){const t=new WeakMap;return(n,...r)=>{const a=t.get(n);if(void 0!==a)return a;const i=e(n,...r);return t.set(n,i),i}}const Zc=BigInt(0),Gc=BigInt(1),Kc=BigInt(2),Jc=BigInt(3),Yc=BigInt(4),Qc=BigInt(5),$c=BigInt(8);BigInt(9),BigInt(16);function ed(e,t){const n=e%t;return n>=Zc?n:t+n}function td(e,t,n){if(n<=Zc||t 0");if(n===Gc)return Zc;let r=Gc;for(;t>Zc;)t&Gc&&(r=r*e%n),e=e*e%n,t>>=Gc;return r}function nd(e,t,n){let r=e;for(;t-- >Zc;)r*=r,r%=n;return r}function rd(e,t){if(e===Zc||t<=Zc)throw new Error(`invert: expected positive integers, got n=${e} mod=${t}`);let n=ed(e,t),r=t,a=Zc,i=Gc,s=Gc,o=Zc;for(;n!==Zc;){const e=r/n,t=r%n,c=a-s*e,d=i-o*e;r=n,n=t,a=s,i=o,s=c,o=d}if(r!==Gc)throw new Error("invert: does not exist");return ed(a,t)}function ad(e){if(e%Yc===Jc){const t=(e+Gc)/Yc;return function(e,n){const r=e.pow(n,t);if(!e.eql(e.sqr(r),n))throw new Error("Cannot find square root");return r}}if(e%$c===Qc){const t=(e-Qc)/$c;return function(e,n){const r=e.mul(n,Kc),a=e.pow(r,t),i=e.mul(n,a),s=e.mul(e.mul(i,Kc),a),o=e.mul(i,e.sub(s,e.ONE));if(!e.eql(e.sqr(o),n))throw new Error("Cannot find square root");return o}}return function(e){const t=(e-Gc)/Kc;let n,r,a;for(n=e-Gc,r=0;n%Kc===Zc;n/=Kc,r++);for(a=Kc;a 0, got ${e}`);const{nBitLength:a,nByteLength:i}=sd(e,t);if(i>2048)throw new Error("Field lengths over 2048 bytes are not supported");const s=ad(e),o=Object.freeze({ORDER:e,BITS:a,BYTES:i,MASK:Uc(a),ZERO:Zc,ONE:Gc,create:t=>ed(t,e),isValid:t=>{if("bigint"!=typeof t)throw new Error("Invalid field element: expected bigint, got "+typeof t);return Zc<=t&&te===Zc,isOdd:e=>(e&Gc)===Gc,neg:t=>ed(-t,e),eql:(e,t)=>e===t,sqr:t=>ed(t*t,e),add:(t,n)=>ed(t+n,e),sub:(t,n)=>ed(t-n,e),mul:(t,n)=>ed(t*n,e),pow:(e,t)=>function(e,t,n){if(n 0");if(n===Zc)return e.ONE;if(n===Gc)return t;let r=e.ONE,a=t;for(;n>Zc;)n&Gc&&(r=e.mul(r,a)),a=e.sqr(a),n>>=Gc;return r}(o,e,t),div:(t,n)=>ed(t*rd(n,e),e),sqrN:e=>e*e,addN:(e,t)=>e+t,subN:(e,t)=>e-t,mulN:(e,t)=>e*t,inv:t=>rd(t,e),sqrt:r.sqrt||(e=>s(o,e)),invertBatch:e=>function(e,t){const n=new Array(t.length),r=t.reduce(((t,r,a)=>e.is0(r)?t:(n[a]=t,e.mul(t,r))),e.ONE),a=e.inv(r);return t.reduceRight(((t,r,a)=>e.is0(r)?t:(n[a]=e.mul(t,n[a]),e.mul(t,r))),a),n}(o,e),cmov:(e,t,n)=>n?t:e,toBytes:e=>n?Ac(e,i):Oc(e,i),fromBytes:e=>{if(e.length!==i)throw new Error(`Fp.fromBytes: expected ${i}, got ${e.length}`);return n?Ec(e):Nc(e)}});return Object.freeze(o)}function cd(e){if("bigint"!=typeof e)throw new Error("field order must be bigint");const t=e.toString(2).length;return Math.ceil(t/8)}function dd(e){const t=cd(e);return t+Math.ceil(t/2)}const ud=BigInt(0),ld=BigInt(1),fd=new WeakMap,pd=new WeakMap;function hd(e){return function(e){const t=id.reduce(((e,t)=>(e[t]="function",e)),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"});Xc(e,t)}(e.Fp),Xc(e,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...sd(e.n,e.nBitLength),...e,p:e.Fp.ORDER})}function bd(e){void 0!==e.lowS&&Vc("lowS",e.lowS),void 0!==e.prehash&&Vc("prehash",e.prehash)}const{Ph:md,aT:yd}=r,xd={Err:class extends Error{constructor(e=""){super(e)}},_tlv:{encode:(e,t)=>{const{Err:n}=xd;if(e<0||e>256)throw new n("tlv.encode: wrong tag");if(1&t.length)throw new n("tlv.encode: unpadded data");const r=t.length/2,a=kc(r);if(a.length/2&128)throw new n("tlv.encode: long form length too big");const i=r>127?kc(a.length/2|128):"";return`${kc(e)}${i}${a}${t}`},decode(e,t){const{Err:n}=xd;let r=0;if(e<0||e>256)throw new n("tlv.encode: wrong tag");if(t.length<2||t[r++]!==e)throw new n("tlv.decode: wrong tlv");const a=t[r++];let i=0;if(!!(128&a)){const e=127&a;if(!e)throw new n("tlv.decode(long): indefinite length not supported");if(e>4)throw new n("tlv.decode(long): byte length is too big");const s=t.subarray(r,r+e);if(s.length!==e)throw new n("tlv.decode: length bytes not complete");if(0===s[0])throw new n("tlv.decode(long): zero leftmost byte");for(const t of s)i=i<<8|t;if(r+=e,i<128)throw new n("tlv.decode(long): not minimal encoding")}else i=a;const s=t.subarray(r,r+i);if(s.length!==i)throw new n("tlv.decode: wrong value length");return{v:s,l:t.subarray(r+i)}}},_int:{encode(e){const{Err:t}=xd;if(e{const a=t.toAffine();return Hc(Uint8Array.from([4]),n.toBytes(a.x),n.toBytes(a.y))}),i=t.fromBytes||(e=>{const t=e.subarray(1);return{x:n.fromBytes(t.subarray(0,n.BYTES)),y:n.fromBytes(t.subarray(n.BYTES,2*n.BYTES))}});function s(e){const{a:r,b:a}=t,i=n.sqr(e),s=n.mul(i,e);return n.add(n.add(s,n.mul(e,r)),a)}if(!n.eql(n.sqr(t.Gy),s(t.Gx)))throw new Error("bad generator point: equation left != right");function o(e){const{allowedPrivateKeyLengths:n,nByteLength:r,wrapPrivateKey:a,n:i}=t;if(n&&"bigint"!=typeof e){if(vc(e)&&(e=Sc(e)),"string"!=typeof e||!n.includes(e.length))throw new Error("Invalid key");e=e.padStart(2*r,"0")}let s;try{s="bigint"==typeof e?e:Nc(Cc("private key",e,r))}catch(o){throw new Error(`private key must be ${r} bytes, hex or bigint, not ${typeof e}`)}return a&&(s=ed(s,i)),Lc("private key",s,vd,i),s}function c(e){if(!(e instanceof l))throw new Error("ProjectivePoint expected")}const d=Wc(((e,t)=>{const{px:r,py:a,pz:i}=e;if(n.eql(i,n.ONE))return{x:r,y:a};const s=e.is0();null==t&&(t=s?n.ONE:n.inv(i));const o=n.mul(r,t),c=n.mul(a,t),d=n.mul(i,t);if(s)return{x:n.ZERO,y:n.ZERO};if(!n.eql(d,n.ONE))throw new Error("invZ was invalid");return{x:o,y:c}})),u=Wc((e=>{if(e.is0()){if(t.allowInfinityPoint&&!n.is0(e.py))return;throw new Error("bad point: ZERO")}const{x:r,y:a}=e.toAffine();if(!n.isValid(r)||!n.isValid(a))throw new Error("bad point: x or y not FE");const i=n.sqr(a),o=s(r);if(!n.eql(i,o))throw new Error("bad point: equation left != right");if(!e.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0}));class l{constructor(e,t,r){if(this.px=e,this.py=t,this.pz=r,null==e||!n.isValid(e))throw new Error("x required");if(null==t||!n.isValid(t))throw new Error("y required");if(null==r||!n.isValid(r))throw new Error("z required");Object.freeze(this)}static fromAffine(e){const{x:t,y:r}=e||{};if(!e||!n.isValid(t)||!n.isValid(r))throw new Error("invalid affine point");if(e instanceof l)throw new Error("projective point not allowed");const a=e=>n.eql(e,n.ZERO);return a(t)&&a(r)?l.ZERO:new l(t,r,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(e){const t=n.invertBatch(e.map((e=>e.pz)));return e.map(((e,n)=>e.toAffine(t[n]))).map(l.fromAffine)}static fromHex(e){const t=l.fromAffine(i(Cc("pointHex",e)));return t.assertValidity(),t}static fromPrivateKey(e){return l.BASE.multiply(o(e))}static msm(e,t){return function(e,t,n,r){if(!Array.isArray(n)||!Array.isArray(r)||r.length!==n.length)throw new Error("arrays of points and scalars must have equal length");r.forEach(((e,n)=>{if(!t.isValid(e))throw new Error(`wrong scalar at index ${n}`)})),n.forEach(((t,n)=>{if(!(t instanceof e))throw new Error(`wrong point at index ${n}`)}));const a=zc(BigInt(n.length)),i=a>12?a-3:a>4?a-2:a?2:1,s=(1<=0;u-=i){o.fill(e.ZERO);for(let e=0;e>BigInt(u)&BigInt(s));o[a]=o[a].add(n[e])}let t=e.ZERO;for(let n=o.length-1,r=e.ZERO;n>0;n--)r=r.add(o[n]),t=t.add(r);if(d=d.add(t),0!==u)for(let e=0;egd||c>gd;)s&vd&&(d=d.add(f)),c&vd&&(u=u.add(f)),f=f.double(),s>>=vd,c>>=vd;return i&&(d=d.negate()),o&&(u=u.negate()),u=new l(n.mul(u.px,a.beta),u.py,u.pz),d.add(u)}multiply(e){const{endo:r,n:a}=t;let i,s;if(Lc("scalar",e,vd,a),r){const{k1neg:t,k1:a,k2neg:o,k2:c}=r.splitScalar(e);let{p:d,f:u}=this.wNAF(a),{p:f,f:h}=this.wNAF(c);d=p.constTimeNegate(t,d),f=p.constTimeNegate(o,f),f=new l(n.mul(f.px,r.beta),f.py,f.pz),i=d.add(f),s=u.add(h)}else{const{p:t,f:n}=this.wNAF(e);i=t,s=n}return l.normalizeZ([i,s])[0]}multiplyAndAddUnsafe(e,t,n){const r=l.BASE,a=(e,t)=>t!==gd&&t!==vd&&e.equals(r)?e.multiply(t):e.multiplyUnsafe(t),i=a(this,t).add(a(e,n));return i.is0()?void 0:i}toAffine(e){return d(this,e)}isTorsionFree(){const{h:e,isTorsionFree:n}=t;if(e===vd)return!0;if(n)return n(l,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:e,clearCofactor:n}=t;return e===vd?this:n?n(l,this):this.multiplyUnsafe(t.h)}toRawBytes(e=!0){return Vc("isCompressed",e),this.assertValidity(),a(l,this,e)}toHex(e=!0){return Vc("isCompressed",e),Sc(this.toRawBytes(e))}}l.BASE=new l(t.Gx,t.Gy,n.ONE),l.ZERO=new l(n.ZERO,n.ONE,n.ZERO);const f=t.nBitLength,p=function(e,t){const n=(e,t)=>{const n=t.negate();return e?n:t},r=e=>{if(!Number.isSafeInteger(e)||e<=0||e>t)throw new Error(`Wrong window size=${e}, should be [1..${t}]`)},a=e=>(r(e),{windows:Math.ceil(t/e)+1,windowSize:2**(e-1)});return{constTimeNegate:n,unsafeLadder(t,n){let r=e.ZERO,a=t;for(;n>ud;)n&ld&&(r=r.add(a)),a=a.double(),n>>=ld;return r},precomputeWindow(e,t){const{windows:n,windowSize:r}=a(t),i=[];let s=e,o=s;for(let a=0;a>=f,a>o&&(a-=l,i+=ld);const s=t,p=t+Math.abs(a)-1,h=e%2!=0,b=a<0;0===a?d=d.add(n(h,r[s])):c=c.add(n(b,r[p]))}return{p:c,f:d}},wNAFCached(e,t,n){const r=pd.get(e)||1;let a=fd.get(e);return a||(a=this.precomputeWindow(e,r),1!==r&&fd.set(e,n(a))),this.wNAF(r,a,t)},setWindowSize(e,t){r(t),pd.set(e,t),fd.delete(e)}}}(l,t.endo?Math.ceil(f/2):f);return{CURVE:t,ProjectivePoint:l,normPrivateKeyToScalar:o,weierstrassEquation:s,isWithinCurveOrder:function(e){return Bc(e,vd,t.n)}}}function Td(e){const t=function(e){const t=hd(e);return Xc(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}(e),{Fp:n,n:r}=t,a=n.BYTES+1,i=2*n.BYTES+1;function s(e){return ed(e,r)}function o(e){return rd(e,r)}const{ProjectivePoint:c,normPrivateKeyToScalar:d,weierstrassEquation:u,isWithinCurveOrder:l}=Vd({...t,toBytes(e,t,r){const a=t.toAffine(),i=n.toBytes(a.x),s=Hc;return Vc("isCompressed",r),r?s(Uint8Array.from([t.hasEvenY()?2:3]),i):s(Uint8Array.from([4]),i,n.toBytes(a.y))},fromBytes(e){const t=e.length,r=e[0],s=e.subarray(1);if(t!==a||2!==r&&3!==r){if(t===i&&4===r){return{x:n.fromBytes(s.subarray(0,n.BYTES)),y:n.fromBytes(s.subarray(n.BYTES,2*n.BYTES))}}throw new Error(`Point of length ${t} was invalid. Expected ${a} compressed bytes or ${i} uncompressed bytes`)}{const e=Nc(s);if(!Bc(e,vd,n.ORDER))throw new Error("Point is not on curve");const t=u(e);let a;try{a=n.sqrt(t)}catch(o){const e=o instanceof Error?": "+o.message:"";throw new Error("Point is not on curve"+e)}return!(1&~r)!==((a&vd)===vd)&&(a=n.neg(a)),{x:e,y:a}}}}),f=e=>Sc(Oc(e,t.nByteLength));function p(e){return e>r>>vd}const h=(e,t,n)=>Nc(e.slice(t,n));class b{constructor(e,t,n){this.r=e,this.s=t,this.recovery=n,this.assertValidity()}static fromCompact(e){const n=t.nByteLength;return e=Cc("compactSignature",e,2*n),new b(h(e,0,n),h(e,n,2*n))}static fromDER(e){const{r:t,s:n}=xd.toSig(Cc("DER",e));return new b(t,n)}assertValidity(){Lc("r",this.r,vd,r),Lc("s",this.s,vd,r)}addRecoveryBit(e){return new b(this.r,this.s,e)}recoverPublicKey(e){const{r:r,s:a,recovery:i}=this,d=g(Cc("msgHash",e));if(null==i||![0,1,2,3].includes(i))throw new Error("recovery id invalid");const u=2===i||3===i?r+t.n:r;if(u>=n.ORDER)throw new Error("recovery id 2 or 3 invalid");const l=1&i?"03":"02",p=c.fromHex(l+f(u)),h=o(u),b=s(-d*h),m=s(a*h),y=c.BASE.multiplyAndAddUnsafe(p,b,m);if(!y)throw new Error("point at infinify");return y.assertValidity(),y}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new b(this.r,s(-this.s),this.recovery):this}toDERRawBytes(){return Ic(this.toDERHex())}toDERHex(){return xd.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Ic(this.toCompactHex())}toCompactHex(){return f(this.r)+f(this.s)}}const m={isValidPrivateKey(e){try{return d(e),!0}catch(t){return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{const e=dd(t.n);return function(e,t,n=!1){const r=e.length,a=cd(t),i=dd(t);if(r<16||r1024)throw new Error(`expected ${i}-1024 bytes of input, got ${r}`);const s=ed(n?Nc(e):Ec(e),t-Gc)+Gc;return n?Ac(s,a):Oc(s,a)}(t.randomBytes(e),t.n)},precompute:(e=8,t=c.BASE)=>(t._setWindowSize(e),t.multiply(BigInt(3)),t)};function y(e){const t=vc(e),n="string"==typeof e,r=(t||n)&&e.length;return t?r===a||r===i:n?r===2*a||r===2*i:e instanceof c}const x=t.bits2int||function(e){const n=Nc(e),r=8*e.length-t.nBitLength;return r>0?n>>BigInt(r):n},g=t.bits2int_modN||function(e){return s(x(e))},v=Uc(t.nBitLength);function w(e){return Lc(`num < 2^${t.nBitLength}`,e,gd,v),Oc(e,t.nByteLength)}function V(e,r,a=T){if(["recovered","canonical"].some((e=>e in a)))throw new Error("sign() legacy options not supported");const{hash:i,randomBytes:u}=t;let{lowS:f,prehash:h,extraEntropy:m}=a;null==f&&(f=!0),e=Cc("msgHash",e),bd(a),h&&(e=Cc("prehashed msgHash",i(e)));const y=g(e),v=d(r),V=[w(v),w(y)];if(null!=m&&!1!==m){const e=!0===m?u(n.BYTES):m;V.push(Cc("extraEntropy",e))}const S=Hc(...V),k=y;return{seed:S,k2sig:function(e){const t=x(e);if(!l(t))return;const n=o(t),r=c.BASE.multiply(t).toAffine(),a=s(r.x);if(a===gd)return;const i=s(n*s(k+a*v));if(i===gd)return;let d=(r.x===a?0:2)|Number(r.y&vd),u=i;return f&&p(i)&&(u=function(e){return p(e)?s(-e):e}(i),d^=1),new b(a,u,d)}}}const T={lowS:t.lowS,prehash:!1},S={lowS:t.lowS,prehash:!1};return c.BASE._setWindowSize(8),{CURVE:t,getPublicKey:function(e,t=!0){return c.fromPrivateKey(e).toRawBytes(t)},getSharedSecret:function(e,t,n=!0){if(y(e))throw new Error("first arg must be private key");if(!y(t))throw new Error("second arg must be public key");return c.fromHex(t).multiply(d(e)).toRawBytes(n)},sign:function(e,n,r=T){const{seed:a,k2sig:i}=V(e,n,r),s=t;return jc(s.hash.outputLen,s.nByteLength,s.hmac)(a,i)},verify:function(e,n,r,a=S){const i=e;if(n=Cc("msgHash",n),r=Cc("publicKey",r),"strict"in a)throw new Error("options.strict was renamed to lowS");bd(a);const{lowS:d,prehash:u}=a;let l,f;try{if("string"==typeof i||vc(i))try{l=b.fromDER(i)}catch(V){if(!(V instanceof xd.Err))throw V;l=b.fromCompact(i)}else{if("object"!=typeof i||"bigint"!=typeof i.r||"bigint"!=typeof i.s)throw new Error("PARSE");{const{r:e,s:t}=i;l=new b(e,t)}}f=c.fromHex(r)}catch(T){if("PARSE"===T.message)throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(d&&l.hasHighS())return!1;u&&(n=t.hash(n));const{r:p,s:h}=l,m=g(n),y=o(h),x=s(m*y),v=s(p*y),w=c.BASE.multiplyAndAddUnsafe(f,x,v)?.toAffine();return!!w&&s(w.x)===p},ProjectivePoint:c,Signature:b,utils:m}}function Sd(e){return{hash:e,hmac:(t,...n)=>mc(e,t,function(...e){let t=0;for(let r=0;r(e+t/Md)/t;function Nd(e){const t=kd,n=BigInt(3),r=BigInt(6),a=BigInt(11),i=BigInt(22),s=BigInt(23),o=BigInt(44),c=BigInt(88),d=e*e*e%t,u=d*d*e%t,l=nd(u,n,t)*u%t,f=nd(l,n,t)*u%t,p=nd(f,Md,t)*d%t,h=nd(p,a,t)*p%t,b=nd(h,i,t)*h%t,m=nd(b,o,t)*b%t,y=nd(m,c,t)*m%t,x=nd(y,o,t)*b%t,g=nd(x,n,t)*u%t,v=nd(g,s,t)*h%t,w=nd(v,r,t)*d%t,V=nd(w,Md,t);if(!Ed.eql(Ed.sqr(V),e))throw new Error("Cannot find square root");return V}const Ed=od(kd,void 0,void 0,{sqrt:Nd}),Od=function(e,t){const n=t=>Td({...e,...Sd(t)});return Object.freeze({...n(t),create:n})}({a:BigInt(0),b:BigInt(7),Fp:Ed,n:_d,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:e=>{const t=_d,n=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-Pd*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=n,s=BigInt("0x100000000000000000000000000000000"),o=Id(i*e,t),c=Id(-r*e,t);let d=ed(e-o*n-c*a,t),u=ed(-o*r-c*i,t);const l=d>s,f=u>s;if(l&&(d=t-d),f&&(u=t-u),d>s||u>s)throw new Error("splitScalar: Endomorphism failed, k="+e);return{k1neg:l,k1:d,k2neg:f,k2:u}}}},hc);BigInt(0);Od.ProjectivePoint;const Ad={bitLength:256,isLe:!1};function Cd(e){return[33,65].includes(e.length)&&(e=sc(function(e,t){if(![33,65].includes(e.length))throw new Error(`Invalid publicKey provided, received ${e.length} bytes input`);if(65===e.length)return e.subarray(1);if(!Ba.CW||!t&&Ti())return xi(e).subarray(1);const{px:n,py:r}=Od.ProjectivePoint.fromHex(e);return Mt(Pt(n,Ad),Pt(r,Ad))}(e))),e.slice(-20)}function Hd(e){return(0,ut.b)(e)||Array.isArray(e)?(0,E.e)(e):(0,Je.qv)(e)||oc(e.toString())?(0,es.V)(e.toString()):(0,I.K)(e)?(0,E.e)(e):e}class Rd extends lr{constructor(e,t=new Uint8Array){super(e,Hd(t),160)}eq(e){return!!e&&super.eq(Hd(e))}toHuman(){return this.toJSON()}toJSON(){return this.toString()}toPrimitive(){return this.toJSON()}toString(){return function(e){if(!e)return"0x";const t=(0,E.e)(e);if(![20,32,33,65].includes(t.length))throw new Error(`Invalid address or publicKey provided, received ${t.length} bytes input`);const n=(0,N.X)(Cd(t),-1,!1),r=(0,N.X)(sc(n),-1,!1);let a="";for(let i=0;i<40;i++)a=`${a}${parseInt(r[i],16)>7?n[i].toUpperCase():n[i]}`;return`0x${a}`}(this)}toRawType(){return"AccountId"}}const Bd=new Uint8Array([255]);function Ld(e,t){return t instanceof zd?t.inner:t instanceof Rd||t instanceof vo?t:(0,ut.b)(t)||Array.isArray(t)||(0,Je.qv)(t)?function(e,t){if(20===t.length)return e.createTypeUnsafe("EthereumAccountId",[t]);if(255===t[0])return e.createTypeUnsafe("EthereumAccountId",[t.subarray(1)]);const[n,r]=vo.readLength(t);return e.createTypeUnsafe("AccountIndex",[ot(t.subarray(n,n+r))])}(e,(0,E.e)(t)):(0,pn.f)(t)||(0,Lt.E)(t)||(0,wt.s)(t)?e.createTypeUnsafe("AccountIndex",[t]):function(e,t){const n=co(t);return 20===n.length?e.createTypeUnsafe("EthereumAccountId",[n]):e.createTypeUnsafe("AccountIndex",[ot(n)])}(e,t)}class zd extends Ui{constructor(e,t=new Uint8Array){super(e,Ld(e,t))}get encodedLength(){const e=this._rawLength;return e+(e>1?1:0)}get _rawLength(){return this.inner instanceof vo?vo.calcLength(this.inner):this.inner.encodedLength}toHex(){return(0,N.X)(this.toU8a())}toRawType(){return"Address"}toU8a(e){const t=this.inner.toU8a().subarray(0,this._rawLength);return e?t:Mt(this.inner instanceof vo?vo.writeLength(t):Bd,t)}}function Ud(e){if(Array.isArray(e)||(0,I.K)(e)){const t=(0,E.e)(e);return[t.length/8,t]}return function(e){if(!e?.length)return[0,new Uint8Array];const[t,n]=dt(e),r=t+Math.ceil(n/8);if(r>e.length)throw new Error(`BitVec: required length less than remainder, expected at least ${r}, found ${e.length}`);return[n,e.subarray(t,r)]}(e)}class Dd extends rt{__internal__decodedLength;__internal__isMsb;constructor(e,t,n=!1){const[r,a]=Ud(t);super(e,a),this.__internal__decodedLength=r,this.__internal__isMsb=n}get encodedLength(){return this.length+Ht(this.__internal__decodedLength).length}inspect(){return{outer:[Ht(this.__internal__decodedLength),super.toU8a()]}}toBoolArray(){const e=[...this.toU8a(!0)].map((e=>[!!(128&e),!!(64&e),!!(32&e),!!(16&e),!!(8&e),!!(4&e),!!(2&e),!!(1&e)])),t=e.length,n=new Array(8*t);for(let r=0;r`00000000${e.toString(2)}`.slice(-8))).map((e=>this.__internal__isMsb?e:e.split("").reverse().join(""))).join("_")}`}toRawType(){return"BitVec"}toU8a(e){const t=super.toU8a(e);return e?t:It([Ht(this.__internal__decodedLength),t])}}class qd extends Number{encodedLength;registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__bitLength;constructor(e,t,{bitLength:n=32}={}){super((0,ut.b)(t)||(0,Je.qv)(t)?0===t.length?0:function(e,{bitLength:t=32,isLe:n=!0}={}){if(32!==t&&64!==t)throw new Error("Invalid bitLength provided, expected 32 or 64");if(e.length"}toU8a(e){return e?super.toU8a(!0):this.isSome?new Uint8Array([this.isTrue?1:2]):new Uint8Array([0])}}const $d=131072;class eu extends String{registry;createdAtHash;initialU8aLength;isStorageFallback;__internal__override=null;constructor(e,t){const[n,r]=function(e){if((0,ut.b)(e)){if(!e.length)return["",0];if(e instanceof rt)return[nt(e),0];const[t,n]=dt(e),r=t+n;if(n>$d)throw new Error(`Text: length ${n.toString()} exceeds 131072`);if(r>e.length)throw new Error(`Text: required length less than remainder, expected at least ${r}, found ${e.length}`);return[nt(e.subarray(t,r)),r]}return(0,Je.qv)(e)?[nt((0,es.V)(e)),0]:[e?e.toString():"",0]}(t);super(n),this.registry=e,this.initialU8aLength=r}get encodedLength(){return this.toU8a().length}get hash(){return this.registry.hash(this.toU8a())}get isEmpty(){return 0===this.length}get length(){return super.length}eq(e){return!!(0,I.K)(e)&&this.toString()===e.toString()}inspect(){const e=(0,La.j)(super.toString());return{outer:e.length?[Ht(e.length),e]:[Ht(e.length)]}}setOverride(e){this.__internal__override=e}toHex(){return(0,N.X)(this.toU8a(!0))}toHuman(){return this.toJSON()}toJSON(){return this.toString()}toPrimitive(){return this.toJSON()}toRawType(){return"Text"}toString(){return this.__internal__override||super.toString()}toU8a(e){const t=(0,La.j)(super.toString());return e?t:ar(t)}}class tu extends eu{constructor(e,t=""){super(e,t),this.setOverride(_r(this.toString()))}toRawType(){return"Type"}}class nu extends(rr.with(8)){__UIntType="u8"}class ru extends(rr.with(16)){__UIntType="u16"}class au extends(rr.with(128)){__UIntType="u128"}class iu extends(rr.with(256)){__UIntType="u256"}class su extends bo{constructor(e,t){throw super(e,t),new Error("The `usize` type should not be used. Since it is platform-specific, it creates incompatibilities between native (generally u64) and WASM (always u32) code. Use one of the `u32` or `u64` types explicitly.")}}function ou(e,t){return(0,ut.b)(t)||(0,I.K)(t)?function(e,t){const n=t[0];if(!n)return[void 0,void 0];if(n>=1&&n<=33){const r=n-1,a=t.subarray(1,r+1);return[e.createTypeUnsafe("Raw",[a]),1]}if(n>=34&&n<=37)return[t.subarray(1,33),n-32];throw new Error(`Unable to decode Data, invalid indicator byte ${n}`)}(e,(0,E.e)(t)):t?[t,void 0]:[void 0,void 0]}class cu extends nn{constructor(e,t){if(super(e,{None:"Null",Raw:"Bytes",BlakeTwo256:"H256",Sha256:"H256",Keccak256:"H256",ShaThree256:"H256"},...ou(e,t)),this.isRaw&&this.asRaw.length>32)throw new Error("Data.Raw values are limited to a maximum length of 32 bytes")}get asBlakeTwo256(){return this.value}get asKeccak256(){return this.value}get asRaw(){return this.value}get asSha256(){return this.value}get asShaThree256(){return this.value}get isBlakeTwo256(){return 2===this.index}get isKeccak256(){return 4===this.index}get isNone(){return 0===this.index}get isRaw(){return 1===this.index}get isSha256(){return 3===this.index}get isShaThree256(){return 5===this.index}get encodedLength(){return this.toU8a().length}toU8a(){if(0===this.index)return new Uint8Array(1);if(1===this.index){const e=this.value.toU8a(!0),t=Math.min(e.length,32),n=new Uint8Array(t+1);return n.set([t+1],0),n.set(e.subarray(0,t),1),n}const e=new Uint8Array(33);return e.set([this.index+32],0),e.set(this.value.toU8a(),1),e}}function du(e,t){const n=e.getTypeDef(t);return n.lookupName||n.type}function uu(e,t,n){const r=du(e.lookup,function(e){return e.isPlain?e.asPlain:e.asMap.value}(t));return n?`Option<${r}>`:r}const lu={Blake2_128:[16,!1],Blake2_128Concat:[16,!0],Blake2_256:[32,!1],Identity:[0,!0],Twox128:[16,!1],Twox256:[32,!1],Twox64Concat:[8,!0]};function fu(e,t,n){if(!n||!n.type.isMap)return[];const{hashers:r,key:a}=n.type.asMap,i=1===r.length?[a]:e.lookup.getSiType(a).def.asTuple;return function(e,t,n){let r=32;const a=n.length,i=new Array(a);for(let s=0;s[e,i[t]])))}class pu extends sr{__internal__args;__internal__meta;__internal__outputType;__internal__method;__internal__section;constructor(e,t,n={}){const{key:r,method:a,section:i}=function(e){if((0,ut.b)(e)||!e||(0,I.K)(e))return{key:e};if(e instanceof pu)return{key:e,method:e.method,section:e.section};if((0,qe.T)(e))return{key:e(),method:e.method,section:e.section};if(Array.isArray(e)){const[t,n=[]]=e;if(!(0,qe.T)(t))throw new Error("Expected function input for key construction");if(t.meta&&t.meta.type.isMap){const e=t.meta.type.asMap;if(!Array.isArray(n)||n.length!==e.hashers.length)throw new Error(`Expected an array of ${e.hashers.length} values as params to a Map query`)}return{key:t(...n),method:t.method,section:t.section}}throw new Error(`Unable to convert input ${e} to StorageKey`)}(t);super(e,r),this.__internal__outputType=function(e,t){if(t instanceof pu)return t.outputType;if((0,qe.T)(t))return uu(e,t.meta.type);if(Array.isArray(t)){const[n]=t;if(n.meta)return uu(e,n.meta.type)}return"Raw"}(e,t),this.setMeta(function(e){if(e instanceof pu)return e.meta;if((0,qe.T)(e))return e.meta;if(Array.isArray(e)){const[t]=e;return t.meta}}(t),n.section||i,n.method||a)}get args(){return this.__internal__args}get meta(){return this.__internal__meta}get method(){return this.__internal__method}get outputType(){return this.__internal__outputType}get section(){return this.__internal__section}is(e){return e.section===this.section&&e.method===this.method}setMeta(e,t,n){this.__internal__meta=e,this.__internal__method=n||this.__internal__method,this.__internal__section=t||this.__internal__section,e&&(this.__internal__outputType=uu(this.registry,e.type));try{this.__internal__args=fu(this.registry,this.toU8a(!0),e)}catch{}return this}toHuman(e,t){return this.__internal__args.length?this.__internal__args.map((e=>e.toHuman(void 0,t))):super.toHuman(void 0,t)}toRawType(){return"StorageKey"}}const hu={metadata:{description:"Returns the metadata of a runtime",params:[],type:"OpaqueMetadata"}},bu={name:"Text",fields:"Vec",index:"u8",docs:"Vec"},mu={Si1Field:{name:"Option",type:"Si1LookupTypeId",typeName:"Option",docs:"Vec"},Si1LookupTypeId:"Compact",Si1Path:"Si0Path",Si1Type:{path:"Si1Path",params:"Vec",def:"Si1TypeDef",docs:"Vec"},Si1TypeDef:{_enum:{Composite:"Si1TypeDefComposite",Variant:"Si1TypeDefVariant",Sequence:"Si1TypeDefSequence",Array:"Si1TypeDefArray",Tuple:"Si1TypeDefTuple",Primitive:"Si1TypeDefPrimitive",Compact:"Si1TypeDefCompact",BitSequence:"Si1TypeDefBitSequence",HistoricMetaCompat:"Type"}},Si1TypeDefArray:{len:"u32",type:"Si1LookupTypeId"},Si1TypeDefBitSequence:{bitStoreType:"Si1LookupTypeId",bitOrderType:"Si1LookupTypeId"},Si1TypeDefCompact:{type:"Si1LookupTypeId"},Si1TypeDefComposite:{fields:"Vec"},Si1TypeDefPrimitive:"Si0TypeDefPrimitive",Si1TypeDefSequence:{type:"Si1LookupTypeId"},Si1TypeDefTuple:"Vec",Si1TypeParameter:{name:"Text",type:"Option"},Si1TypeDefVariant:{variants:"Vec"},Si1Variant:bu},yu={rpc:{},runtime:{Metadata:[{methods:{metadata_at_version:{description:"Returns the metadata at a given version.",params:[{name:"version",type:"u32"}],type:"Option"},metadata_versions:{description:"Returns the supported metadata versions.",params:[],type:"Vec"},...hu},version:2},{methods:{...hu},version:1}]},types:{ErrorMetadataV9:{name:"Text",docs:"Vec"},EventMetadataV9:{name:"Text",args:"Vec",docs:"Vec"},FunctionArgumentMetadataV9:{name:"Text",type:"Type"},FunctionMetadataV9:{name:"Text",args:"Vec",docs:"Vec"},MetadataV9:{modules:"Vec"},ModuleConstantMetadataV9:{name:"Text",type:"Type",value:"Bytes",docs:"Vec"},ModuleMetadataV9:{name:"Text",storage:"Option",calls:"Option>",events:"Option>",constants:"Vec",errors:"Vec"},StorageEntryMetadataV9:{name:"Text",modifier:"StorageEntryModifierV9",type:"StorageEntryTypeV9",fallback:"Bytes",docs:"Vec"},StorageEntryModifierV9:{_enum:["Optional","Default","Required"]},StorageEntryTypeV9:{_enum:{Plain:"Type",Map:{hasher:"StorageHasherV9",key:"Type",value:"Type",linked:"bool"},DoubleMap:{hasher:"StorageHasherV9",key1:"Type",key2:"Type",value:"Type",key2Hasher:"StorageHasherV9"}}},StorageHasherV9:{_enum:{Blake2_128:null,Blake2_256:null,Twox128:null,Twox256:null,Twox64Concat:null}},StorageMetadataV9:{prefix:"Text",items:"Vec"},ErrorMetadataV10:"ErrorMetadataV9",EventMetadataV10:"EventMetadataV9",FunctionArgumentMetadataV10:"FunctionArgumentMetadataV9",FunctionMetadataV10:"FunctionMetadataV9",MetadataV10:{modules:"Vec"},ModuleConstantMetadataV10:"ModuleConstantMetadataV9",ModuleMetadataV10:{name:"Text",storage:"Option",calls:"Option>",events:"Option>",constants:"Vec",errors:"Vec"},StorageEntryModifierV10:"StorageEntryModifierV9",StorageEntryMetadataV10:{name:"Text",modifier:"StorageEntryModifierV10",type:"StorageEntryTypeV10",fallback:"Bytes",docs:"Vec"},StorageEntryTypeV10:{_enum:{Plain:"Type",Map:{hasher:"StorageHasherV10",key:"Type",value:"Type",linked:"bool"},DoubleMap:{hasher:"StorageHasherV10",key1:"Type",key2:"Type",value:"Type",key2Hasher:"StorageHasherV10"}}},StorageMetadataV10:{prefix:"Text",items:"Vec"},StorageHasherV10:{_enum:{Blake2_128:null,Blake2_256:null,Blake2_128Concat:null,Twox128:null,Twox256:null,Twox64Concat:null}},...{ErrorMetadataV11:"ErrorMetadataV10",EventMetadataV11:"EventMetadataV10",ExtrinsicMetadataV11:{version:"u8",signedExtensions:"Vec"},FunctionArgumentMetadataV11:"FunctionArgumentMetadataV10",FunctionMetadataV11:"FunctionMetadataV10",MetadataV11:{modules:"Vec",extrinsic:"ExtrinsicMetadataV11"},ModuleConstantMetadataV11:"ModuleConstantMetadataV10",ModuleMetadataV11:{name:"Text",storage:"Option",calls:"Option>",events:"Option>",constants:"Vec",errors:"Vec"},StorageEntryModifierV11:"StorageEntryModifierV10",StorageEntryMetadataV11:{name:"Text",modifier:"StorageEntryModifierV11",type:"StorageEntryTypeV11",fallback:"Bytes",docs:"Vec"},StorageEntryTypeV11:{_enum:{Plain:"Type",Map:{hasher:"StorageHasherV11",key:"Type",value:"Type",linked:"bool"},DoubleMap:{hasher:"StorageHasherV11",key1:"Type",key2:"Type",value:"Type",key2Hasher:"StorageHasherV11"}}},StorageMetadataV11:{prefix:"Text",items:"Vec"},StorageHasherV11:{_enum:{Blake2_128:null,Blake2_256:null,Blake2_128Concat:null,Twox128:null,Twox256:null,Twox64Concat:null,Identity:null}}},ErrorMetadataV12:"ErrorMetadataV11",EventMetadataV12:"EventMetadataV11",ExtrinsicMetadataV12:"ExtrinsicMetadataV11",FunctionArgumentMetadataV12:"FunctionArgumentMetadataV11",FunctionMetadataV12:"FunctionMetadataV11",MetadataV12:{modules:"Vec",extrinsic:"ExtrinsicMetadataV12"},ModuleConstantMetadataV12:"ModuleConstantMetadataV11",ModuleMetadataV12:{name:"Text",storage:"Option",calls:"Option>",events:"Option>",constants:"Vec",errors:"Vec",index:"u8"},StorageEntryModifierV12:"StorageEntryModifierV11",StorageEntryMetadataV12:"StorageEntryMetadataV11",StorageEntryTypeV12:"StorageEntryTypeV11",StorageMetadataV12:"StorageMetadataV11",StorageHasherV12:"StorageHasherV11",ErrorMetadataV13:"ErrorMetadataV12",EventMetadataV13:"EventMetadataV12",ExtrinsicMetadataV13:"ExtrinsicMetadataV12",FunctionArgumentMetadataV13:"FunctionArgumentMetadataV12",FunctionMetadataV13:"FunctionMetadataV12",MetadataV13:{modules:"Vec",extrinsic:"ExtrinsicMetadataV13"},ModuleConstantMetadataV13:"ModuleConstantMetadataV12",ModuleMetadataV13:{name:"Text",storage:"Option",calls:"Option>",events:"Option>",constants:"Vec",errors:"Vec",index:"u8"},StorageEntryModifierV13:"StorageEntryModifierV12",StorageEntryMetadataV13:{name:"Text",modifier:"StorageEntryModifierV13",type:"StorageEntryTypeV13",fallback:"Bytes",docs:"Vec"},StorageEntryTypeV13:{_enum:{Plain:"Type",Map:{hasher:"StorageHasherV13",key:"Type",value:"Type",linked:"bool"},DoubleMap:{hasher:"StorageHasherV13",key1:"Type",key2:"Type",value:"Type",key2Hasher:"StorageHasherV13"},NMap:{keyVec:"Vec",hashers:"Vec",value:"Type"}}},StorageMetadataV13:{prefix:"Text",items:"Vec"},StorageHasherV13:"StorageHasherV12",...{PortableTypeV14:{id:"Si1LookupTypeId",type:"Si1Type"},ErrorMetadataV14:{...bu,args:"Vec"},EventMetadataV14:{...bu,args:"Vec"},FunctionArgumentMetadataV14:{name:"Text",type:"Type",typeName:"Option"},FunctionMetadataV14:{...bu,args:"Vec"},ExtrinsicMetadataV14:{type:"SiLookupTypeId",version:"u8",signedExtensions:"Vec"},MetadataV14:{lookup:"PortableRegistry",pallets:"Vec",extrinsic:"ExtrinsicMetadataV14",type:"SiLookupTypeId"},PalletCallMetadataV14:{type:"SiLookupTypeId"},PalletConstantMetadataV14:{name:"Text",type:"SiLookupTypeId",value:"Bytes",docs:"Vec"},PalletErrorMetadataV14:{type:"SiLookupTypeId"},PalletEventMetadataV14:{type:"SiLookupTypeId"},PalletMetadataV14:{name:"Text",storage:"Option",calls:"Option",events:"Option",constants:"Vec",errors:"Option",index:"u8"},PalletStorageMetadataV14:{prefix:"Text",items:"Vec"},SignedExtensionMetadataV14:{identifier:"Text",type:"SiLookupTypeId",additionalSigned:"SiLookupTypeId"},StorageEntryMetadataV14:{name:"Text",modifier:"StorageEntryModifierV14",type:"StorageEntryTypeV14",fallback:"Bytes",docs:"Vec"},StorageEntryModifierV14:"StorageEntryModifierV13",StorageEntryTypeV14:{_enum:{Plain:"SiLookupTypeId",Map:{hashers:"Vec",key:"SiLookupTypeId",value:"SiLookupTypeId"}}},StorageHasherV14:"StorageHasherV13"},CustomMetadata15:{map:"BTreeMap"},CustomValueMetadata15:{type:"SiLookupTypeId",value:"Bytes"},ExtrinsicMetadataV15:{version:"u8",addressType:"SiLookupTypeId",callType:"SiLookupTypeId",signatureType:"SiLookupTypeId",extraType:"SiLookupTypeId",signedExtensions:"Vec"},OuterEnums15:{callType:"SiLookupTypeId",eventType:"SiLookupTypeId",errorType:"SiLookupTypeId"},PalletMetadataV15:{name:"Text",storage:"Option",calls:"Option",events:"Option",constants:"Vec",errors:"Option",index:"u8",docs:"Vec"},RuntimeApiMetadataV15:{name:"Text",methods:"Vec",docs:"Vec"},RuntimeApiMethodMetadataV15:{name:"Text",inputs:"Vec",output:"SiLookupTypeId",docs:"Vec"},RuntimeApiMethodParamMetadataV15:{name:"Text",type:"SiLookupTypeId"},MetadataV15:{lookup:"PortableRegistry",pallets:"Vec",extrinsic:"ExtrinsicMetadataV15",type:"SiLookupTypeId",apis:"Vec",outerEnums:"OuterEnums15",custom:"CustomMetadata15"},ErrorMetadataLatest:"ErrorMetadataV14",EventMetadataLatest:"EventMetadataV14",ExtrinsicMetadataLatest:"ExtrinsicMetadataV15",FunctionArgumentMetadataLatest:"FunctionArgumentMetadataV14",FunctionMetadataLatest:"FunctionMetadataV14",MetadataLatest:"MetadataV15",PalletCallMetadataLatest:"PalletCallMetadataV14",PalletConstantMetadataLatest:"PalletConstantMetadataV14",PalletErrorMetadataLatest:"PalletErrorMetadataV14",PalletEventMetadataLatest:"PalletEventMetadataV14",PalletMetadataLatest:"PalletMetadataV15",PalletStorageMetadataLatest:"PalletStorageMetadataV14",PortableType:"PortableTypeV14",RuntimeApiMetadataLatest:"RuntimeApiMetadataV15",SignedExtensionMetadataLatest:"SignedExtensionMetadataV14",StorageEntryMetadataLatest:"StorageEntryMetadataV14",StorageEntryModifierLatest:"StorageEntryModifierV14",StorageEntryTypeLatest:"StorageEntryTypeV14",StorageHasher:"StorageHasherV14",OpaqueMetadata:"Opaque",MetadataAll:{_enum:{V0:"DoNotConstruct",V1:"DoNotConstruct",V2:"DoNotConstruct",V3:"DoNotConstruct",V4:"DoNotConstruct",V5:"DoNotConstruct",V6:"DoNotConstruct",V7:"DoNotConstruct",V8:"DoNotConstruct",V9:"MetadataV9",V10:"MetadataV10",V11:"MetadataV11",V12:"MetadataV12",V13:"MetadataV13",V14:"MetadataV14",V15:"MetadataV15"}}}},xu={execute_block:{description:"Execute the given block.",params:[{name:"block",type:"Block"}],type:"Null"}},gu={version:{description:"Returns the version of the runtime.",params:[],type:"RuntimeVersionPre3"}},vu={initialize_block:{description:"Initialize a block with the given header.",params:[{name:"header",type:"Header"}],type:"Null"}},wu={version:{description:"Returns the version of the runtime.",params:[],type:"RuntimeVersion"}},Vu={...xu,initialize_block:{description:"Initialize a block with the given header.",params:[{name:"header",type:"Header"}],type:"ExtrinsicInclusionMode"}},Tu={Core:[{methods:{...wu,...Vu},version:5},{methods:{...wu,...xu,...vu},version:4},{methods:{version:{description:"Returns the version of the runtime.",params:[],type:"RuntimeVersionPre4"},...xu,...vu},version:3},{methods:{...gu,...xu,...vu},version:2},{methods:{initialise_block:{description:"Initialize a block with the given header.",params:[{name:"header",type:"Header"}],type:"Null"},...gu,...xu},version:1}]},Su={Council:"CollectiveOrigin",System:"SystemOrigin",TechnicalCommittee:"CollectiveOrigin",Xcm:"XcmOrigin",XcmPallet:"XcmOrigin",Authority:"AuthorityOrigin",GeneralCouncil:"CollectiveOrigin"},ku={rpc:{},runtime:Tu,types:{Fixed64:"Int<64, Fixed64>",FixedI64:"Int<64, FixedI64>",FixedU64:"UInt<64, FixedU64>",Fixed128:"Int<128, Fixed128>",FixedI128:"Int<128, FixedI128>",FixedU128:"UInt<128, FixedU128>",I32F32:"Int<64, I32F32>",U32F32:"UInt<64, U32F32>",PerU16:"UInt<16, PerU16>",Perbill:"UInt<32, Perbill>",Percent:"UInt<8, Percent>",Permill:"UInt<32, Permill>",Perquintill:"UInt<64, Perquintill>",AccountId:"AccountId32",AccountId20:"GenericEthereumAccountId",AccountId32:"GenericAccountId32",AccountId33:"GenericAccountId33",AccountIdOf:"AccountId",AccountIndex:"GenericAccountIndex",Address:"MultiAddress",AssetId:"u32",Balance:"UInt<128, Balance>",BalanceOf:"Balance",Block:"GenericBlock",BlockNumber:"u32",BlockNumberFor:"BlockNumber",BlockNumberOf:"BlockNumber",Call:"GenericCall",CallHash:"Hash",CallHashOf:"CallHash",ChangesTrieConfiguration:{digestInterval:"u32",digestLevels:"u32"},ChangesTrieSignal:{_enum:{NewConfiguration:"Option"}},ConsensusEngineId:"GenericConsensusEngineId",CodecHash:"Hash",CrateVersion:{major:"u16",minor:"u8",patch:"u8"},Digest:{logs:"Vec"},DigestItem:{_enum:{Other:"Bytes",AuthoritiesChange:"Vec",ChangesTrieRoot:"Hash",SealV0:"SealV0",Consensus:"Consensus",Seal:"Seal",PreRuntime:"PreRuntime",ChangesTrieSignal:"ChangesTrieSignal",RuntimeEnvironmentUpdated:"Null"}},ExtrinsicsWeight:{normal:"Weight",operational:"Weight"},H32:"[u8; 4; H32]",H64:"[u8; 8; H64]",H128:"[u8; 16; H128]",H160:"[u8; 20; H160]",H256:"[u8; 32; H256]",H512:"[u8; 64; H512]",H1024:"[u8; 128; H1024]",H2048:"[u8; 256; H2048]",Hash:"H256",Header:{parentHash:"Hash",number:"Compact",stateRoot:"Hash",extrinsicsRoot:"Hash",digest:"Digest"},HeaderPartial:{parentHash:"Hash",number:"BlockNumber"},IndicesLookupSource:"GenericLookupSource",Index:"u32",Justification:"(ConsensusEngineId, EncodedJustification)",EncodedJustification:"Bytes",Justifications:"Vec",KeyValue:"(StorageKey, StorageData)",KeyTypeId:"u32",LockIdentifier:"[u8; 8]",LookupSource:"MultiAddress",LookupTarget:"AccountId",ModuleId:"LockIdentifier",MultiAddress:"GenericMultiAddress",MultiSigner:{_enum:{Ed25519:"[u8; 32]",Sr25519:"[u8; 32]",Ecdsa:"[u8; 33]"}},Moment:"UInt<64, Moment>",OpaqueCall:"Bytes",Origin:"DoNotConstruct",OriginCaller:{_enum:{System:"SystemOrigin"}},PalletId:"LockIdentifier",PalletsOrigin:"OriginCaller",PalletVersion:{major:"u16",minor:"u8",patch:"u8"},Pays:{_enum:["Yes","No"]},Phantom:"Null",PhantomData:"Null",Releases:{_enum:["V1","V2","V3","V4","V5","V6","V7","V8","V9","V10"]},RuntimeCall:"Call",RuntimeEvent:"Event",RuntimeDbWeight:{read:"Weight",write:"Weight"},SignedBlock:"SignedBlockWithJustifications",SignedBlockWithJustification:{block:"Block",justification:"Option"},SignedBlockWithJustifications:{block:"Block",justifications:"Option"},Slot:"u64",SlotDuration:"u64",StorageData:"Bytes",StorageInfo:{palletName:"Bytes",storage_name:"Bytes",prefix:"Bytes",maxValues:"Option",maxSize:"Option"},StorageProof:{trieNodes:"Vec"},TransactionPriority:"u64",TransactionLongevity:"u64",TransactionTag:"Bytes",TransactionInfo:{_alias:{dataSize:"size"},chunkRoot:"H256",contentHash:"H256",dataSize:"u32",blockChunks:"u32"},TransactionStorageProof:{chunk:"Vec",proof:"Vec>"},ValidatorId:"AccountId",ValidatorIdOf:"ValidatorId",WeightV0:"u32",WeightV1:"u64",WeightV2:{refTime:"Compact",proofSize:"Compact"},Weight:"WeightV2",WeightMultiplier:"Fixed64",PreRuntime:"(ConsensusEngineId, Bytes)",SealV0:"(u64, Signature)",Seal:"(ConsensusEngineId, Bytes)",Consensus:"(ConsensusEngineId, Bytes)",ExtrinsicInclusionMode:{_enum:["AllExtrinsics","OnlyInherents"]}}},_u={rpc:{},types:{Si0Field:{name:"Option",type:"Si0LookupTypeId",typeName:"Option",docs:"Vec"},Si0LookupTypeId:"u32",Si0Path:"Vec",Si0Type:{path:"Si0Path",params:"Vec",def:"Si0TypeDef"},Si0TypeDef:{_enum:{Composite:"Si0TypeDefComposite",Variant:"Si0TypeDefVariant",Sequence:"Si0TypeDefSequence",Array:"Si0TypeDefArray",Tuple:"Si0TypeDefTuple",Primitive:"Si0TypeDefPrimitive",Compact:"Si0TypeDefCompact",Phantom:"Si0TypeDefPhantom",BitSequence:"Si0TypeDefBitSequence"}},Si0TypeDefArray:{len:"u32",type:"Si0LookupTypeId"},Si0TypeDefBitSequence:{bitStoreType:"Si0LookupTypeId",bitOrderType:"Si0LookupTypeId"},Si0TypeDefCompact:{type:"Si0LookupTypeId"},Si0TypeDefComposite:{fields:"Vec"},Si0TypeDefPhantom:"Null",Si0TypeDefVariant:{variants:"Vec"},Si0TypeDefPrimitive:{_enum:["Bool","Char","Str","U8","U16","U32","U64","U128","U256","I8","I16","I32","I64","I128","I256"]},Si0TypeDefSequence:{type:"Si0LookupTypeId"},Si0TypeDefTuple:"Vec",Si0TypeParameter:{name:"Text",type:"Option"},Si0Variant:{name:"Text",fields:"Vec",index:"Option",discriminant:"Option",docs:"Vec"},...mu,SiField:"Si1Field",SiLookupTypeId:"Si1LookupTypeId",SiPath:"Si1Path",SiType:"Si1Type",SiTypeDef:"Si1TypeDef",SiTypeDefArray:"Si1TypeDefArray",SiTypeDefBitSequence:"Si1TypeDefBitSequence",SiTypeDefCompact:"Si1TypeDefCompact",SiTypeDefComposite:"Si1TypeDefComposite",SiTypeDefPrimitive:"Si1TypeDefPrimitive",SiTypeDefSequence:"Si1TypeDefSequence",SiTypeDefTuple:"Si1TypeDefTuple",SiTypeParameter:"Si1TypeParameter",SiTypeDefVariant:"Si1TypeDefVariant",SiVariant:"Si1Variant"}},Pu={rpc:{},runtime:{AssetConversionApi:[{methods:{get_reserves:{description:"Get pool reserves",params:[{name:"asset1",type:"StagingXcmV3MultiLocation"},{name:"asset2",type:"StagingXcmV3MultiLocation"}],type:"Option<(Balance,Balance)>"},quote_price_exact_tokens_for_tokens:{description:"Quote price: exact tokens for tokens",params:[{name:"asset1",type:"StagingXcmV3MultiLocation"},{name:"asset2",type:"StagingXcmV3MultiLocation"},{name:"amount",type:"u128"},{name:"include_fee",type:"bool"}],type:"Option<(Balance)>"},quote_price_tokens_for_exact_tokens:{description:"Quote price: tokens for exact tokens",params:[{name:"asset1",type:"StagingXcmV3MultiLocation"},{name:"asset2",type:"StagingXcmV3MultiLocation"},{name:"amount",type:"u128"},{name:"include_fee",type:"bool"}],type:"Option<(Balance)>"}},version:1}]},types:{TAssetConversion:"Option"}},Mu={rpc:{},runtime:{AssetsApi:[{methods:{account_balances:{description:"Return the current set of authorities.",params:[{name:"account",type:"AccountId"}],type:"Vec<(u32, TAssetBalance)>"}},version:1}]},types:{AssetApprovalKey:{owner:"AccountId",delegate:"AccountId"},AssetApproval:{amount:"TAssetBalance",deposit:"TAssetDepositBalance"},AssetBalance:{balance:"TAssetBalance",isFrozen:"bool",isSufficient:"bool"},AssetDestroyWitness:{accounts:"Compact",sufficients:"Compact",approvals:"Compact"},AssetDetails:{owner:"AccountId",issuer:"AccountId",admin:"AccountId",freezer:"AccountId",supply:"TAssetBalance",deposit:"TAssetDepositBalance",minBalance:"TAssetBalance",isSufficient:"bool",accounts:"u32",sufficients:"u32",approvals:"u32",isFrozen:"bool"},AssetMetadata:{deposit:"TAssetDepositBalance",name:"Vec",symbol:"Vec",decimals:"u8",isFrozen:"bool"},TAssetBalance:"u64",TAssetDepositBalance:"BalanceOf"}},Iu={rpc:{},runtime:{AuraApi:[{methods:{authorities:{description:"Return the current set of authorities.",params:[],type:"Vec"},slot_duration:{description:"Returns the slot duration for Aura.",params:[],type:"SlotDuration"}},version:1}]},types:{RawAuraPreDigest:{slotNumber:"u64"}}},Nu={rpc:{},types:{UncleEntryItem:{_enum:{InclusionHeight:"BlockNumber",Uncle:"(Hash, Option)"}}}},Eu={current_epoch:{description:"Returns information regarding the current epoch.",params:[],type:"Epoch"},current_epoch_start:{description:"Returns the slot that started the current epoch.",params:[],type:"Slot"},generate_key_ownership_proof:{description:"Generates a proof of key ownership for the given authority in the current epoch.",params:[{name:"slot",type:"Slot"},{name:"authorityId",type:"AuthorityId"}],type:"Option"},next_epoch:{description:"Returns information regarding the next epoch (which was already previously announced).",params:[],type:"Epoch"},submit_report_equivocation_unsigned_extrinsic:{description:"Submits an unsigned extrinsic to report an equivocation.",params:[{name:"equivocationProof",type:"BabeEquivocationProof"},{name:"keyOwnerProof",type:"OpaqueKeyOwnershipProof"}],type:"Option"}},Ou={rpc:{epochAuthorship:{description:"Returns data about which slots (primary or secondary) can be claimed in the current epoch with the keys in the keystore",isUnsafe:!0,params:[],type:"HashMap"}},runtime:{BabeApi:[{methods:{configuration:{description:"Return the genesis configuration for BABE. The configuration is only read on genesis.",params:[],type:"BabeGenesisConfiguration"},...Eu},version:2},{methods:{configuration:{description:"Return the configuration for BABE. Version 1.",params:[],type:"BabeGenesisConfigurationV1"},...Eu},version:1}]},types:{AllowedSlots:{_enum:["PrimarySlots","PrimaryAndSecondaryPlainSlots","PrimaryAndSecondaryVRFSlots"]},BabeAuthorityWeight:"u64",BabeEpochConfiguration:{c:"(u64, u64)",allowedSlots:"AllowedSlots"},BabeBlockWeight:"u32",BabeEquivocationProof:{offender:"AuthorityId",slotNumber:"SlotNumber",firstHeader:"Header",secondHeader:"Header"},BabeGenesisConfiguration:{slotDuration:"u64",epochLength:"u64",c:"(u64, u64)",genesisAuthorities:"Vec<(AuthorityId, BabeAuthorityWeight)>",randomness:"Randomness",allowedSlots:"AllowedSlots"},BabeGenesisConfigurationV1:{slotDuration:"u64",epochLength:"u64",c:"(u64, u64)",genesisAuthorities:"Vec<(AuthorityId, BabeAuthorityWeight)>",randomness:"Randomness",secondarySlots:"bool"},BabeWeight:"u64",MaybeRandomness:"Option",MaybeVrf:"Option",Epoch:{epochIndex:"u64",startSlot:"Slot",duration:"u64",authorities:"Vec<(AuthorityId, BabeAuthorityWeight)>",randomness:"Hash",config:"BabeEpochConfiguration"},EpochAuthorship:{primary:"Vec",secondary:"Vec",secondary_vrf:"Vec"},NextConfigDescriptor:{_enum:{V0:"Null",V1:"NextConfigDescriptorV1"}},NextConfigDescriptorV1:{c:"(u64, u64)",allowedSlots:"AllowedSlots"},OpaqueKeyOwnershipProof:"Bytes",Randomness:"Hash",RawBabePreDigest:{_enum:{Phantom:"Null",Primary:"RawBabePreDigestPrimary",SecondaryPlain:"RawBabePreDigestSecondaryPlain",SecondaryVRF:"RawBabePreDigestSecondaryVRF"}},RawBabePreDigestPrimary:{authorityIndex:"u32",slotNumber:"SlotNumber",vrfOutput:"VrfOutput",vrfProof:"VrfProof"},RawBabePreDigestSecondaryPlain:{authorityIndex:"u32",slotNumber:"SlotNumber"},RawBabePreDigestSecondaryVRF:{authorityIndex:"u32",slotNumber:"SlotNumber",vrfOutput:"VrfOutput",vrfProof:"VrfProof"},RawBabePreDigestTo159:{_enum:{Primary:"RawBabePreDigestPrimaryTo159",Secondary:"RawBabePreDigestSecondaryTo159"}},RawBabePreDigestPrimaryTo159:{authorityIndex:"u32",slotNumber:"SlotNumber",weight:"BabeBlockWeight",vrfOutput:"VrfOutput",vrfProof:"VrfProof"},RawBabePreDigestSecondaryTo159:{authorityIndex:"u32",slotNumber:"SlotNumber",weight:"BabeBlockWeight"},RawBabePreDigestCompat:{_enum:{Zero:"u32",One:"u32",Two:"u32",Three:"u32"}},SlotNumber:"u64",VrfData:"[u8; 32]",VrfOutput:"[u8; 32]",VrfProof:"[u8; 64]"}},Au={rpc:{},types:{AccountData:{free:"Balance",reserved:"Balance",miscFrozen:"Balance",feeFrozen:"Balance"},BalanceLockTo212:{id:"LockIdentifier",amount:"Balance",until:"BlockNumber",reasons:"WithdrawReasons"},BalanceLock:{id:"LockIdentifier",amount:"Balance",reasons:"Reasons"},BalanceStatus:{_enum:["Free","Reserved"]},Reasons:{_enum:["Fee","Misc","All"]},ReserveData:{id:"ReserveIdentifier",amount:"Balance"},ReserveIdentifier:"[u8; 8]",VestingSchedule:{offset:"Balance",perBlock:"Balance",startingBlock:"BlockNumber"},WithdrawReasons:{_set:{TransactionPayment:1,Transfer:2,Reserve:4,Fee:8,Tip:16}}}},Cu={beefy_genesis:{description:"Return the block number where BEEFY consensus is enabled/started",params:[],type:"Option"},generate_key_ownership_proof:{description:"Generates a proof of key ownership for the given authority in the given set.",params:[{name:"setId",type:"ValidatorSetId"},{name:"authorityId",type:"AuthorityId"}],type:"Option"},validator_set:{description:"Return the current active BEEFY validator set",params:[],type:"Option"}},Hu={...Cu,submit_report_equivocation_unsigned_extrinsic:{description:"Submits an unsigned extrinsic to report an equivocation.",params:[{name:"equivocationProof",type:"BeefyEquivocationProof"},{name:"keyOwnerProof",type:"OpaqueKeyOwnershipProof"}],type:"Option"}},Ru={rpc:{getFinalizedHead:{description:"Returns hash of the latest BEEFY finalized block as seen by this client.",params:[],type:"H256"},subscribeJustifications:{description:"Returns the block most recently finalized by BEEFY, alongside its justification.",params:[],pubsub:["justifications","subscribeJustifications","unsubscribeJustifications"],type:"BeefyVersionedFinalityProof"}},runtime:{BeefyApi:[{methods:{...Cu,submit_report_double_voting_unsigned_extrinsic:{description:"Submits an unsigned extrinsic to report a double voting equivocation.",params:[{name:"equivocationProof",type:"SpConsensusBeefyDoubleVotingProof"},{name:"keyOwnerProof",type:"OpaqueKeyOwnershipProof"}],type:"Option"}},version:4},{methods:Hu,version:3},{methods:Hu,version:2},{methods:Hu,version:1}],BeefyMmrApi:[{methods:{authority_set_proof:{description:"Return the currently active BEEFY authority set proof.",params:[],type:"BeefyAuthoritySet"},next_authority_set_proof:{description:"Return the next/queued BEEFY authority set proof.",params:[],type:"BeefyNextAuthoritySet"}},version:1}]},types:{BeefyAuthoritySet:{id:"u64",len:"u32",root:"H256"},BeefyCommitment:{payload:"BeefyPayload",blockNumber:"BlockNumber",validatorSetId:"ValidatorSetId"},BeefyId:"[u8; 33]",BeefyEquivocationProof:{first:"BeefyVoteMessage",second:"BeefyVoteMessage"},BeefyCompactSignedCommitment:{commitment:"BeefyCommitment",signaturesFrom:"Vec",validatorSetLen:"u32",signaturesCompact:"Vec"},BeefySignedCommitment:{commitment:"BeefyCommitment",signatures:"Vec>"},BeefyVersionedFinalityProof:{_enum:{V0:"Null",V1:"BeefyCompactSignedCommitment"}},BeefyNextAuthoritySet:{id:"u64",len:"u32",root:"H256"},BeefyPayload:"Vec<(BeefyPayloadId, Bytes)>",BeefyPayloadId:"[u8;2]",BeefyVoteMessage:{commitment:"BeefyCommitment",id:"AuthorityId",signature:"Signature"},MmrRootHash:"H256",ValidatorSetId:"u64",ValidatorSet:{validators:"Vec",id:"ValidatorSetId"}}},Bu={rpc:{},runtime:{Benchmark:[{methods:{benchmark_metadata:{description:"Get the benchmark metadata available for this runtime.",params:[{name:"extra",type:"bool"}],type:"(Vec, Vec)"},dispatch_benchmark:{description:"Dispatch the given benchmark.",params:[{name:"config",type:"BenchmarkConfig"}],type:"Result, Text>"}},version:1}]},types:{BenchmarkBatch:{pallet:"Text",instance:"Text",benchmark:"Text",results:"Vec"},BenchmarkConfig:{pallet:"Bytes",benchmark:"Bytes",selectedComponents:"Vec<(BenchmarkParameter, u32)>",verify:"bool",internalRepeats:"u32"},BenchmarkList:{pallet:"Bytes",instance:"Bytes",benchmarks:"Vec"},BenchmarkMetadata:{name:"Bytes",components:"Vec<(BenchmarkParameter, u32, u32)>"},BenchmarkParameter:{_enum:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]},BenchmarkResult:{components:"Vec<(BenchmarkParameter, u32)>",extrinsicTime:"u128",storageRootTime:"u128",reads:"u32",repeatReads:"u32",writes:"u32",repeatWrites:"u32",proofSize:"u32",benchKeys:"Vec<(Vec, u32, u32, bool)>"}}},Lu={random_seed:{description:"Generate a random seed.",params:[],type:"Hash"}},zu={apply_extrinsic:{description:"Apply the given extrinsic.",params:[{name:"extrinsic",type:"Extrinsic"}],type:"ApplyExtrinsicResultPre6"}},Uu={check_inherents:{description:"Check that the inherents are valid.",params:[{name:"block",type:"Block"},{name:"data",type:"InherentData"}],type:"CheckInherentsResult"},inherent_extrinsics:{description:"Generate inherent extrinsics.",params:[{name:"inherent",type:"InherentData"}],type:"Vec"}},Du={finalize_block:{description:"Finish the current block.",params:[],type:"Header"}},qu={rpc:{},runtime:{BlockBuilder:[{methods:{apply_extrinsic:{description:"Apply the given extrinsic.",params:[{name:"extrinsic",type:"Extrinsic"}],type:"ApplyExtrinsicResult"},...Uu,...Du},version:6},{methods:{...zu,...Uu,...Du},version:5},{methods:{...Lu,...zu,...Uu,...Du},version:4},{methods:{...Lu,...Uu,...Du},version:3},{methods:{finalise_block:{description:"Finish the current block.",params:[],type:"Header"},...Lu,...Uu},version:2}]},types:{CheckInherentsResult:{okay:"bool",fatalError:"bool",errors:"InherentData"},InherentData:{data:"BTreeMap"},InherentIdentifier:"[u8; 8]"}},ju={rpc:{},types:{CollectiveOrigin:{_enum:{Members:"(MemberCount, MemberCount)",Member:"AccountId"}},MemberCount:"u32",ProposalIndex:"u32",VotesTo230:{index:"ProposalIndex",threshold:"MemberCount",ayes:"Vec",nays:"Vec"},Votes:{index:"ProposalIndex",threshold:"MemberCount",ayes:"Vec",nays:"Vec",end:"BlockNumber"}}},Fu={rpc:{},types:{AuthorityId:"AccountId",RawVRFOutput:"[u8; 32]"}},Xu={get_storage:{description:"Query a given storage key in a given contract.",params:[{name:"address",type:"AccountId"},{name:"key",type:"Bytes"}],type:"Option"},upload_code:{description:"Upload new code without instantiating a contract from it.",params:[{name:"origin",type:"AccountId"},{name:"code",type:"Bytes"},{name:"storageDepositLimit",type:"Option"}],type:"CodeUploadResult"}},Wu={rpc:{call:{deprecated:"Use the runtime interface `api.call.contractsApi.call` instead",description:"Executes a call to a contract",params:[{name:"callRequest",type:"ContractCallRequest"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"ContractExecResult"},getStorage:{deprecated:"Use the runtime interface `api.call.contractsApi.getStorage` instead",description:"Returns the value under a specified storage key in a contract",params:[{name:"address",type:"AccountId"},{name:"key",type:"H256"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Option"},instantiate:{deprecated:"Use the runtime interface `api.call.contractsApi.instantiate` instead",description:"Instantiate a new contract",params:[{name:"request",type:"InstantiateRequestV1"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"ContractInstantiateResult"},rentProjection:{deprecated:"Not available in newer versions of the contracts interfaces",description:"Returns the projected time a given contract will be able to sustain paying its rent",params:[{name:"address",type:"AccountId"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Option"},uploadCode:{deprecated:"Use the runtime interface `api.call.contractsApi.uploadCode` instead",description:"Upload new code without instantiating a contract from it",endpoint:"contracts_upload_code",params:[{name:"uploadRequest",type:"CodeUploadRequest"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"CodeUploadResult"}},runtime:{ContractsApi:[{methods:{call:{description:"Perform a call from a specified account to a given contract.",params:[{name:"origin",type:"AccountId"},{name:"dest",type:"AccountId"},{name:"value",type:"Balance"},{name:"gasLimit",type:"Option"},{name:"storageDepositLimit",type:"Option"},{name:"inputData",type:"Vec"}],type:"ContractExecResult"},instantiate:{description:"Instantiate a new contract.",params:[{name:"origin",type:"AccountId"},{name:"value",type:"Balance"},{name:"gasLimit",type:"Option"},{name:"storageDepositLimit",type:"Option"},{name:"code",type:"CodeSource"},{name:"data",type:"Bytes"},{name:"salt",type:"Bytes"}],type:"ContractInstantiateResult"},...Xu},version:2},{methods:{call:{description:"Perform a call from a specified account to a given contract.",params:[{name:"origin",type:"AccountId"},{name:"dest",type:"AccountId"},{name:"value",type:"Balance"},{name:"gasLimit",type:"u64"},{name:"storageDepositLimit",type:"Option"},{name:"inputData",type:"Vec"}],type:"ContractExecResultU64"},instantiate:{description:"Instantiate a new contract.",params:[{name:"origin",type:"AccountId"},{name:"value",type:"Balance"},{name:"gasLimit",type:"u64"},{name:"storageDepositLimit",type:"Option"},{name:"code",type:"CodeSource"},{name:"data",type:"Bytes"},{name:"salt",type:"Bytes"}],type:"ContractInstantiateResultU64"},...Xu},version:1}]},types:{AliveContractInfo:{trieId:"TrieId",storageSize:"u32",pairCount:"u32",codeHash:"CodeHash",rentAllowance:"Balance",rentPaid:"Balance",deductBlock:"BlockNumber",lastWrite:"Option",_reserved:"Option"},CodeHash:"Hash",CodeSource:{_enum:{Upload:"Bytes",Existing:"Hash"}},CodeUploadRequest:{origin:"AccountId",code:"Bytes",storageDepositLimit:"Option"},CodeUploadResult:"Result",CodeUploadResultValue:{codeHash:"CodeHash",deposit:"Balance"},ContractCallRequest:{origin:"AccountId",dest:"AccountId",value:"Balance",gasLimit:"u64",storageDepositLimit:"Option",inputData:"Bytes"},ContractExecResultSuccessTo255:{status:"u8",data:"Raw"},ContractExecResultTo255:{_enum:{Success:"ContractExecResultSuccessTo255",Error:"Null"}},ContractExecResultSuccessTo260:{flags:"ContractReturnFlags",data:"Bytes",gasConsumed:"u64"},ContractExecResultTo260:{_enum:{Success:"ContractExecResultSuccessTo260",Error:"Null"}},ContractExecResultOk:{flags:"ContractReturnFlags",data:"Bytes"},ContractExecResultResult:"Result",ContractExecResultTo267:{gasConsumed:"u64",debugMessage:"Text",result:"ContractExecResultResult"},ContractExecResult:{gasConsumed:"Weight",gasRequired:"Weight",storageDeposit:"StorageDeposit",debugMessage:"Text",result:"ContractExecResultResult"},ContractExecResultU64:{gasConsumed:"u64",gasRequired:"u64",storageDeposit:"StorageDeposit",debugMessage:"Text",result:"ContractExecResultResult"},ContractInfo:{_enum:{Alive:"AliveContractInfo",Tombstone:"TombstoneContractInfo"}},ContractCallFlags:{_set:{_bitLength:32,ForwardInput:1,CloneInput:2,TailCall:4,AllowReentry:8}},ContractReturnFlags:{_set:{_bitLength:32,Revert:1}},ContractStorageKey:"[u8; 32]",DeletedContract:{pairCount:"u32",trieId:"TrieId"},ExecReturnValue:{flags:"ContractReturnFlags",data:"Bytes"},Gas:"u64",HostFnWeightsTo264:{caller:"Weight",address:"Weight",gasLeft:"Weight",balance:"Weight",valueTransferred:"Weight",minimumBalance:"Weight",tombstoneDeposit:"Weight",rentAllowance:"Weight",blockNumber:"Weight",now:"Weight",weightToFee:"Weight",gas:"Weight",input:"Weight",inputPerByte:"Weight",return:"Weight",returnPerByte:"Weight",terminate:"Weight",restoreTo:"Weight",restoreToPerDelta:"Weight",random:"Weight",depositEvent:"Weight",depositEventPerTopic:"Weight",depositEventPerByte:"Weight",setRentAllowance:"Weight",setStorage:"Weight",setStoragePerByte:"Weight",clearStorage:"Weight",getStorage:"Weight",getStoragePerByte:"Weight",transfer:"Weight",call:"Weight",callTransferSurcharge:"Weight",callPerInputByte:"Weight",callPerOutputByte:"Weight",instantiate:"Weight",instantiatePerInputByte:"Weight",instantiatePerOutputByte:"Weight",hashSha2256:"Weight",hashSha2256PerByte:"Weight",hashKeccak256:"Weight",hashKeccak256PerByte:"Weight",hashBlake2256:"Weight",hashBlake2256PerByte:"Weight",hashBlake2128:"Weight",hashBlake2128PerByte:"Weight"},HostFnWeights:{caller:"Weight",address:"Weight",gasLeft:"Weight",balance:"Weight",valueTransferred:"Weight",minimumBalance:"Weight",tombstoneDeposit:"Weight",rentAllowance:"Weight",blockNumber:"Weight",now:"Weight",weightToFee:"Weight",gas:"Weight",input:"Weight",inputPerByte:"Weight",return:"Weight",returnPerByte:"Weight",terminate:"Weight",terminatePerCodeByte:"Weight",restoreTo:"Weight",restoreToPerCallerCodeByte:"Weight",restoreToPerTombstoneCodeByte:"Weight",restoreToPerDelta:"Weight",random:"Weight",depositEvent:"Weight",depositEventPerTopic:"Weight",depositEventPerByte:"Weight",setRentAllowance:"Weight",setStorage:"Weight",setStoragePerByte:"Weight",clearStorage:"Weight",getStorage:"Weight",getStoragePerByte:"Weight",transfer:"Weight",call:"Weight",callPerCodeByte:"Weight",callTransferSurcharge:"Weight",callPerInputByte:"Weight",callPerOutputByte:"Weight",instantiate:"Weight",instantiatePerCodeByte:"Weight",instantiatePerInputByte:"Weight",instantiatePerOutputByte:"Weight",instantiatePerSaltByte:"Weight",hashSha2256:"Weight",hashSha2256PerByte:"Weight",hashKeccak256:"Weight",hashKeccak256PerByte:"Weight",hashBlake2256:"Weight",hashBlake2256PerByte:"Weight",hashBlake2128:"Weight",hashBlake2128PerByte:"Weight",rentParams:"Weight"},InstantiateRequestV1:{origin:"AccountId",value:"Balance",gasLimit:"Gas",code:"Bytes",data:"Bytes",salt:"Bytes"},InstantiateRequestV2:{_fallback:"InstantiateRequestV1",origin:"AccountId",value:"Balance",gasLimit:"Gas",storageDepositLimit:"Option",code:"Bytes",data:"Bytes",salt:"Bytes"},InstantiateRequest:{_fallback:"InstantiateRequestV2",origin:"AccountId",value:"Balance",gasLimit:"Gas",storageDepositLimit:"Option",code:"CodeSource",data:"Bytes",salt:"Bytes"},ContractInstantiateResultTo267:"Result",ContractInstantiateResultTo299:"Result",ContractInstantiateResult:{gasConsumed:"WeightV2",gasRequired:"WeightV2",storageDeposit:"StorageDeposit",debugMessage:"Text",result:"InstantiateReturnValue"},ContractInstantiateResultU64:{_fallback:"ContractInstantiateResultTo299",gasConsumed:"u64",gasRequired:"u64",storageDeposit:"StorageDeposit",debugMessage:"Text",result:"InstantiateReturnValue"},InstantiateReturnValueTo267:{result:"ExecReturnValue",accountId:"AccountId",rentProjection:"Option"},InstantiateReturnValueOk:{result:"ExecReturnValue",accountId:"AccountId"},InstantiateReturnValue:"Result",InstructionWeights:{i64const:"u32",i64load:"u32",i64store:"u32",select:"u32",rIf:"u32",br:"u32",brIf:"u32",brIable:"u32",brIablePerEntry:"u32",call:"u32",callIndirect:"u32",callIndirectPerParam:"u32",localGet:"u32",localSet:"u32",local_tee:"u32",globalGet:"u32",globalSet:"u32",memoryCurrent:"u32",memoryGrow:"u32",i64clz:"u32",i64ctz:"u32",i64popcnt:"u32",i64eqz:"u32",i64extendsi32:"u32",i64extendui32:"u32",i32wrapi64:"u32",i64eq:"u32",i64ne:"u32",i64lts:"u32",i64ltu:"u32",i64gts:"u32",i64gtu:"u32",i64les:"u32",i64leu:"u32",i64ges:"u32",i64geu:"u32",i64add:"u32",i64sub:"u32",i64mul:"u32",i64divs:"u32",i64divu:"u32",i64rems:"u32",i64remu:"u32",i64and:"u32",i64or:"u32",i64xor:"u32",i64shl:"u32",i64shrs:"u32",i64shru:"u32",i64rotl:"u32",i64rotr:"u32"},LimitsTo264:{eventTopics:"u32",stackHeight:"u32",globals:"u32",parameters:"u32",memoryPages:"u32",tableSize:"u32",brTableSize:"u32",subjectLen:"u32",codeSize:"u32"},Limits:{eventTopics:"u32",stackHeight:"u32",globals:"u32",parameters:"u32",memoryPages:"u32",tableSize:"u32",brTableSize:"u32",subjectLen:"u32"},PrefabWasmModule:{scheduleVersion:"Compact",initial:"Compact",maximum:"Compact",refcount:"Compact",_reserved:"Option",code:"Bytes",originalCodeLen:"u32"},RentProjection:{_enum:{EvictionAt:"BlockNumber",NoEviction:"Null"}},ScheduleTo212:{version:"u32",putCodePerByteCost:"Gas",growMemCost:"Gas",regularOpCost:"Gas",returnDataPerByteCost:"Gas",eventDataPerByteCost:"Gas",eventPerTopicCost:"Gas",eventBaseCost:"Gas",sandboxDataReadCost:"Gas",sandboxDataWriteCost:"Gas",maxEventTopics:"u32",maxStackHeight:"u32",maxMemoryPages:"u32",enablePrintln:"bool",maxSubjectLen:"u32"},ScheduleTo258:{version:"u32",putCodePerByteCost:"Gas",growMemCost:"Gas",regularOpCost:"Gas",returnDataPerByteCost:"Gas",eventDataPerByteCost:"Gas",eventPerTopicCost:"Gas",eventBaseCost:"Gas",sandboxDataReadCost:"Gas",sandboxDataWriteCost:"Gas",transferCost:"Gas",maxEventTopics:"u32",maxStackHeight:"u32",maxMemoryPages:"u32",enablePrintln:"bool",maxSubjectLen:"u32"},ScheduleTo264:{version:"u32",enablePrintln:"bool",limits:"LimitsTo264",instructionWeights:"InstructionWeights",hostFnWeights:"HostFnWeightsTo264"},Schedule:{version:"u32",enablePrintln:"bool",limits:"Limits",instructionWeights:"InstructionWeights",hostFnWeights:"HostFnWeights"},SeedOf:"Hash",StorageDeposit:{_enum:{Refund:"Balance",Charge:"Balance"}},TombstoneContractInfo:"Hash",TrieId:"Bytes"}},Zu={rpc:{},types:{AccountVote:{_enum:{Standard:"AccountVoteStandard",Split:"AccountVoteSplit"}},AccountVoteSplit:{aye:"Balance",nay:"Balance"},AccountVoteStandard:{vote:"Vote",balance:"Balance"},Conviction:{_enum:["None","Locked1x","Locked2x","Locked3x","Locked4x","Locked5x","Locked6x"]},Delegations:{votes:"Balance",capital:"Balance"},PreimageStatus:{_enum:{Missing:"BlockNumber",Available:"PreimageStatusAvailable"}},PreimageStatusAvailable:{data:"Bytes",provider:"AccountId",deposit:"Balance",since:"BlockNumber",expiry:"Option"},PriorLock:"(BlockNumber, Balance)",PropIndex:"u32",Proposal:"Call",ProxyState:{_enum:{Open:"AccountId",Active:"AccountId"}},ReferendumIndex:"u32",ReferendumInfoTo239:{end:"BlockNumber",proposalHash:"Hash",threshold:"VoteThreshold",delay:"BlockNumber"},ReferendumInfo:{_enum:{Ongoing:"ReferendumStatus",Finished:"ReferendumInfoFinished"}},ReferendumInfoFinished:{approved:"bool",end:"BlockNumber"},ReferendumStatus:{end:"BlockNumber",proposalHash:"Hash",threshold:"VoteThreshold",delay:"BlockNumber",tally:"Tally"},Tally:{ayes:"Balance",nays:"Balance",turnout:"Balance"},Voting:{_enum:{Direct:"VotingDirect",Delegating:"VotingDelegating"}},VotingDirect:{votes:"Vec",delegations:"Delegations",prior:"PriorLock"},VotingDirectVote:"(ReferendumIndex, AccountVote)",VotingDelegating:{balance:"Balance",target:"AccountId",conviction:"Conviction",delegations:"Delegations",prior:"PriorLock"}}},Gu={rpc:{getBlockStats:{description:"Reexecute the specified `block_hash` and gather statistics while doing so",isUnsafe:!0,params:[{isHistoric:!0,name:"at",type:"Hash"}],type:"Option"}},types:{BlockStats:{witnessLen:"u64",witnessCompactLen:"u64",blockLen:"u64",blockNumExtrinsics:"u64"}}},Ku={rpc:{},runtime:{AuthorityDiscoveryApi:[{methods:{authorities:{description:"Retrieve authority identifiers of the current and next authority set.",params:[],type:"Vec"}},version:1}]},types:{}},Ju={rpc:{},types:{ApprovalFlag:"u32",DefunctVoter:{who:"AccountId",voteCount:"Compact",candidateCount:"Compact"},Renouncing:{_enum:{Member:"Null",RunnerUp:"Null",Candidate:"Compact"}},SetIndex:"u32",Vote:"GenericVote",VoteIndex:"u32",VoterInfo:{lastActive:"VoteIndex",lastWin:"VoteIndex",pot:"Balance",stake:"Balance"},VoteThreshold:{_enum:["Super Majority Approve","Super Majority Against","Simple Majority"]}}},Yu={rpc:{createBlock:{description:"Instructs the manual-seal authorship task to create a new block",params:[{name:"createEmpty",type:"bool"},{name:"finalize",type:"bool"},{isOptional:!0,name:"parentHash",type:"BlockHash"}],type:"CreatedBlock"},finalizeBlock:{description:"Instructs the manual-seal authorship task to finalize a block",params:[{name:"hash",type:"BlockHash"},{isOptional:!0,name:"justification",type:"Justification"}],type:"bool"}},types:{CreatedBlock:{_alias:{blockHash:"hash"},blockHash:"BlockHash",aux:"ImportedAux"},ImportedAux:{headerOnly:"bool",clearJustificationRequests:"bool",needsJustification:"bool",badJustification:"bool",needsFinalityProof:"bool",isNewBest:"bool"}}},Qu={rpc:{},types:{EvmAccount:{nonce:"u256",balance:"u256"},EvmCallInfo:{exitReason:"ExitReason",value:"Bytes",usedGas:"U256",logs:"Vec"},EvmCreateInfo:{exitReason:"ExitReason",value:"H160",usedGas:"U256",logs:"Vec"},EvmCallInfoV2:{exitReason:"ExitReason",value:"Bytes",usedGas:"U256",weightInfo:"Option",logs:"Vec"},EvmCreateInfoV2:{exitReason:"ExitReason",value:"H160",usedGas:"U256",weightInfo:"Option",logs:"Vec"},EvmLog:{address:"H160",topics:"Vec",data:"Bytes"},EvmVicinity:{gasPrice:"u256",origin:"H160"},EvmWeightInfo:{refTimeLimit:"Option",proofSizeLimit:"Option",refTimeUsage:"Option",proofSizeUsage:"Option"},ExitError:{_enum:{StackUnderflow:"Null",StackOverflow:"Null",InvalidJump:"Null",InvalidRange:"Null",DesignatedInvalid:"Null",CallTooDeep:"Null",CreateCollision:"Null",CreateContractLimit:"Null",OutOfOffset:"Null",OutOfGas:"Null",OutOfFund:"Null",PCUnderflow:"Null",CreateEmpty:"Null",Other:"Text"}},ExitFatal:{_enum:{NotSupported:"Null",UnhandledInterrupt:"Null",CallErrorAsFatal:"ExitError",Other:"Text"}},ExitReason:{_enum:{Succeed:"ExitSucceed",Error:"ExitError",Revert:"ExitRevert",Fatal:"ExitFatal"}},ExitRevert:{_enum:["Reverted"]},ExitSucceed:{_enum:["Stopped","Returned","Suicided"]}}},$u={rpc:{},types:{Extrinsic:"GenericExtrinsic",ExtrinsicEra:"GenericExtrinsicEra",ExtrinsicPayload:"GenericExtrinsicPayload",ExtrinsicSignature:"MultiSignature",ExtrinsicV4:"GenericExtrinsicV4",ExtrinsicPayloadV4:"GenericExtrinsicPayloadV4",ExtrinsicSignatureV4:"GenericExtrinsicSignatureV4",ExtrinsicUnknown:"GenericExtrinsicUnknown",ExtrinsicPayloadUnknown:"GenericExtrinsicPayloadUnknown",ExtrinsicV5:"GenericExtrinsicV5",ExtrinsicPayloadV5:"GenericExtrinsicPayloadV5",ExtrinsicSignatureV5:"GenericExtrinsicSignatureV5",Era:"ExtrinsicEra",ImmortalEra:"GenericImmortalEra",MortalEra:"GenericMortalEra",AnySignature:"H512",MultiSignature:{_enum:{Ed25519:"Ed25519Signature",Sr25519:"Sr25519Signature",Ecdsa:"EcdsaSignature"}},Signature:"H512",SignerPayload:"GenericSignerPayload",EcdsaSignature:"[u8; 65]",Ed25519Signature:"H512",Sr25519Signature:"H512"}},el={rpc:{},runtime:{FungiblesApi:[{methods:{query_account_balances:{description:"Returns the list of all `MultiAsset` that an `AccountId` has",params:[{name:"account",type:"AccountId"}],type:"Result, FungiblesAccessError>"}},version:1},{methods:{query_account_balances:{description:"Returns the list of all `MultiAsset` that an `AccountId` has",params:[{name:"account",type:"AccountId"}],type:"Result"}},version:2}]},types:{FungiblesAccessError:{_enum:["AssetIdConversionFailed","AmountToBalanceConversionFailed"]}}},tl={rpc:{},types:{AssetOptions:{initalIssuance:"Compact",permissions:"PermissionLatest"},Owner:{_enum:{None:"Null",Address:"AccountId"}},PermissionsV1:{update:"Owner",mint:"Owner",burn:"Owner"},PermissionVersions:{_enum:{V1:"PermissionsV1"}},PermissionLatest:"PermissionsV1"}},nl={rpc:{},runtime:{GenesisBuilder:[{methods:{build_config:{description:"Build `RuntimeGenesisConfig` from a JSON blob not using any defaults and store it in the storage.",params:[{name:"json",type:"Vec"}],type:"Result<(), GenesisBuildErr>"},create_default_config:{description:"Creates the default `RuntimeGenesisConfig` and returns it as a JSON blob.",params:[],type:"Vec"}},version:1}]},types:{GenesisBuildErr:"Text"}},rl={rpc:{},types:{ActiveGilt:{proportion:"Perquintill",amount:"Balance",who:"AccountId",expiry:"BlockNumber"},ActiveGiltsTotal:{frozen:"Balance",proportion:"Perquintill",index:"ActiveIndex",target:"Perquintill"},ActiveIndex:"u32",GiltBid:{amount:"Balance",who:"AccountId"}}},al={generate_key_ownership_proof:{description:"Generates a proof of key ownership for the given authority in the given set.",params:[{name:"setId",type:"SetId"},{name:"authorityId",type:"AuthorityId"}],type:"Option"},grandpa_authorities:{description:"Get the current GRANDPA authorities and weights. This should not change except for when changes are scheduled and the corresponding delay has passed.",params:[],type:"AuthorityList"},submit_report_equivocation_unsigned_extrinsic:{description:"Submits an unsigned extrinsic to report an equivocation.",params:[{name:"equivocationProof",type:"GrandpaEquivocationProof"},{name:"keyOwnerProof",type:"OpaqueKeyOwnershipProof"}],type:"Option"}},il={rpc:{proveFinality:{description:"Prove finality for the given block number, returning the Justification for the last block in the set.",params:[{name:"blockNumber",type:"BlockNumber"}],type:"Option"},roundState:{description:"Returns the state of the current best round state as well as the ongoing background rounds",params:[],type:"ReportedRoundStates"},subscribeJustifications:{description:"Subscribes to grandpa justifications",params:[],pubsub:["justifications","subscribeJustifications","unsubscribeJustifications"],type:"JustificationNotification"}},runtime:{GrandpaApi:[{methods:{current_set_id:{description:"Get current GRANDPA authority set id.",params:[],type:"SetId"},...al},version:3},{methods:al,version:2}]},types:{AuthorityIndex:"u64",AuthorityList:"Vec",AuthoritySet:{currentAuthorities:"AuthorityList",setId:"u64",pendingStandardChanges:"ForkTreePendingChange",pendingForcedChanges:"Vec",authoritySetChanges:"AuthoritySetChanges"},ForkTreePendingChange:{roots:"Vec",bestFinalizedNumber:"Option"},ForkTreePendingChangeNode:{hash:"BlockHash",number:"BlockNumber",data:"PendingChange",children:"Vec"},AuthoritySetChange:"(U64, BlockNumber)",AuthoritySetChanges:"Vec",AuthorityWeight:"u64",DelayKind:{_enum:{Finalized:"Null",Best:"DelayKindBest"}},DelayKindBest:{medianLastFinalized:"BlockNumber"},EncodedFinalityProofs:"Bytes",GrandpaEquivocation:{_enum:{Prevote:"GrandpaEquivocationValue",Precommit:"GrandpaEquivocationValue"}},GrandpaEquivocationProof:{setId:"SetId",equivocation:"GrandpaEquivocation"},GrandpaEquivocationValue:{roundNumber:"u64",identity:"AuthorityId",first:"(GrandpaPrevote, AuthoritySignature)",second:"(GrandpaPrevote, AuthoritySignature)"},GrandpaPrevote:{targetHash:"Hash",targetNumber:"BlockNumber"},GrandpaCommit:{targetHash:"BlockHash",targetNumber:"BlockNumber",precommits:"Vec"},GrandpaPrecommit:{targetHash:"BlockHash",targetNumber:"BlockNumber"},GrandpaSignedPrecommit:{precommit:"GrandpaPrecommit",signature:"AuthoritySignature",id:"AuthorityId"},GrandpaJustification:{round:"u64",commit:"GrandpaCommit",votesAncestries:"Vec
"},JustificationNotification:"Bytes",KeyOwnerProof:"MembershipProof",NextAuthority:"(AuthorityId, AuthorityWeight)",PendingChange:{nextAuthorities:"AuthorityList",delay:"BlockNumber",canonHeight:"BlockNumber",canonHash:"BlockHash",delayKind:"DelayKind"},PendingPause:{scheduledAt:"BlockNumber",delay:"BlockNumber"},PendingResume:{scheduledAt:"BlockNumber",delay:"BlockNumber"},Precommits:{currentWeight:"u32",missing:"BTreeSet"},Prevotes:{currentWeight:"u32",missing:"BTreeSet"},ReportedRoundStates:{setId:"u32",best:"RoundState",background:"Vec"},RoundState:{round:"u32",totalWeight:"u32",thresholdWeight:"u32",prevotes:"Prevotes",precommits:"Precommits"},SetId:"u64",StoredPendingChange:{scheduledAt:"BlockNumber",delay:"BlockNumber",nextAuthorities:"AuthorityList"},StoredState:{_enum:{Live:"Null",PendingPause:"PendingPause",Paused:"Null",PendingResume:"PendingResume"}}}},sl={rpc:{},types:{IdentityFields:{_set:{_bitLength:64,Display:1,Legal:2,Web:4,Riot:8,Email:16,PgpFingerprint:32,Image:64,Twitter:128}},IdentityInfoAdditional:"(Data, Data)",IdentityInfoTo198:{additional:"Vec",display:"Data",legal:"Data",web:"Data",riot:"Data",email:"Data",pgpFingerprint:"Option",image:"Data"},IdentityInfo:{_fallback:"IdentityInfoTo198",additional:"Vec",display:"Data",legal:"Data",web:"Data",riot:"Data",email:"Data",pgpFingerprint:"Option",image:"Data",twitter:"Data"},IdentityJudgement:{_enum:{Unknown:"Null",FeePaid:"Balance",Reasonable:"Null",KnownGood:"Null",OutOfDate:"Null",LowQuality:"Null",Erroneous:"Null"}},RegistrationJudgement:"(RegistrarIndex, IdentityJudgement)",RegistrationTo198:{judgements:"Vec",deposit:"Balance",info:"IdentityInfoTo198"},Registration:{_fallback:"RegistrationTo198",judgements:"Vec",deposit:"Balance",info:"IdentityInfo"},RegistrarIndex:"u32",RegistrarInfo:{account:"AccountId",fee:"Balance",fields:"IdentityFields"}}},ol={rpc:{},types:{AuthIndex:"u32",AuthoritySignature:"Signature",Heartbeat:{blockNumber:"BlockNumber",networkState:"OpaqueNetworkState",sessionIndex:"SessionIndex",authorityIndex:"AuthIndex",validatorsLen:"u32"},HeartbeatTo244:{blockNumber:"BlockNumber",networkState:"OpaqueNetworkState",sessionIndex:"SessionIndex",authorityIndex:"AuthIndex"},OpaqueMultiaddr:"Opaque",OpaquePeerId:"Opaque",OpaqueNetworkState:{peerId:"OpaquePeerId",externalAddresses:"Vec"}}},cl={rpc:{},types:{CallIndex:"(u8, u8)",LotteryConfig:{price:"Balance",start:"BlockNumber",length:"BlockNumber",delay:"BlockNumber",repeat:"bool"}}},dl={rpc:{},runtime:{MixnetApi:[{methods:{current_mixnodes:{description:"Get the index and phase of the current session.",params:[],type:"Result"},maybe_register:{description:"Try to register a mixnode for the next session.",params:[{name:"session_index",type:"u32"},{name:"mixnode",type:"Mixnode"}],type:"bool"},prev_mixnodes:{description:"Get the index and phase of the current session.",params:[],type:"Result"},session_status:{description:"Get the index and phase of the current session.",params:[],type:"SessionStatus"}},version:1}]},types:{Mixnode:{externalAddresses:"Vec",kxPublic:"[u8; 32]",peerId:"[u8; 32]"},MixnodesErr:{_enum:{InsufficientRegistrations:{min:"u32",num:"u32"}}},SessionPhase:{_enum:["CoverToCurrent","RequestsToCurrent","CoverToPrev","DisconnectFromPrev"]},SessionStatus:{currentIndex:"u32",phase:"SessionPhase"}}},ul={rpc:{generateProof:{description:"Generate MMR proof for the given block numbers.",params:[{name:"blockNumbers",type:"Vec"},{isOptional:!0,name:"bestKnownBlockNumber",type:"u64"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"MmrLeafBatchProof"},root:{description:"Get the MMR root hash for the current best block.",params:[{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"MmrHash"},verifyProof:{description:"Verify an MMR proof",params:[{name:"proof",type:"MmrLeafBatchProof"}],type:"bool"},verifyProofStateless:{description:"Verify an MMR proof statelessly given an mmr_root",params:[{name:"root",type:"MmrHash"},{name:"proof",type:"MmrLeafBatchProof"}],type:"bool"}},runtime:{MmrApi:[{methods:{generate_proof:{description:"Generate MMR proof for the given block numbers.",params:[{name:"blockNumbers",type:"Vec"},{name:"bestKnownBlockNumber",type:"Option"}],type:"Result<(Vec, MmrBatchProof), MmrError>"},mmr_leaf_count:{description:"Return the number of MMR blocks in the chain.",params:[],type:"Result"},mmr_root:{description:"Return the on-chain MMR root hash.",params:[],type:"Result"},verify_proof:{description:"Verify MMR proof against on-chain MMR.",params:[{name:"leaves",type:"Vec"},{name:"proof",type:"MmrBatchProof"}],type:"Result<(), MmrError>"},verify_proof_stateless:{description:"Verify MMR proof against given root hash.",params:[{name:"root",type:"Hash"},{name:"leaves",type:"Vec"},{name:"proof",type:"MmrBatchProof"}],type:"Result<(), MmrError>"}},version:2},{methods:{generate_batch_proof:{description:"Generate MMR proof for a series of leaves under given indices.",params:[{name:"leafIndices",type:"Vec"}],type:"Result<(Vec, MmrBatchProof), MmrError>"},generate_proof:{description:"Generate MMR proof for a leaf under given index.",params:[{name:"leafIndex",type:"MmrLeafIndex"}],type:"Result<(MmrEncodableOpaqueLeaf, MmrProof), MmrError>"},mmr_root:{description:"Return the on-chain MMR root hash.",params:[],type:"Result"},verify_batch_proof:{description:"Verify MMR proof against on-chain MMR for a batch of leaves.",params:[{name:"leaves",type:"Vec"},{name:"proof",type:"MmrBatchProof"}],type:"Result<(), MmrError>"},verify_batch_proof_stateless:{description:"Verify MMR proof against given root hash or a batch of leaves.",params:[{name:"root",type:"Hash"},{name:"leaves",type:"Vec"},{name:"proof",type:"MmrBatchProof"}],type:"Result<(), MmrError>"},verify_proof:{description:"Verify MMR proof against on-chain MMR.",params:[{name:"leaf",type:"MmrEncodableOpaqueLeaf"},{name:"proof",type:"MmrProof"}],type:"Result<(), MmrError>"},verify_proof_stateless:{description:"Verify MMR proof against given root hash.",params:[{name:"root",type:"Hash"},{name:"leaf",type:"MmrEncodableOpaqueLeaf"},{name:"proof",type:"MmrProof"}],type:"Result<(), MmrError>"}},version:1}]},types:{MmrBatchProof:{leafIndices:"Vec",leafCount:"MmrNodeIndex",items:"Vec"},MmrEncodableOpaqueLeaf:"Bytes",MmrError:{_enum:["InvalidNumericOp","Push","GetRoot","Commit","GenerateProof","Verify","LeafNotFound"," PalletNotIncluded","InvalidLeafIndex","InvalidBestKnownBlock"]},MmrHash:"Hash",MmrLeafBatchProof:{blockHash:"BlockHash",leaves:"Bytes",proof:"Bytes"},MmrLeafIndex:"u64",MmrLeafProof:{blockHash:"BlockHash",leaf:"Bytes",proof:"Bytes"},MmrNodeIndex:"u64",MmrProof:{leafIndex:"MmrLeafIndex",leafCount:"MmrNodeIndex",items:"Vec"}}},ll={rpc:{},runtime:{NftsApi:[{methods:{attribute:{description:"An attribute",params:[{name:"collection",type:"NftCollectionId"},{name:"item",type:"NftItemId"},{name:"key",type:"Bytes"}],type:"Option"},collection_attribute:{description:"A collection attribute",params:[{name:"collection",type:"NftCollectionId"},{name:"key",type:"Bytes"}],type:"Option"},collection_owner:{description:"A collection owner",params:[{name:"collection",type:"NftCollectionId"}],type:"Option"},custom_attribute:{description:"A custom attribute",params:[{name:"account",type:"AccountId"},{name:"collection",type:"NftCollectionId"},{name:"item",type:"NftItemId"},{name:"key",type:"Bytes"}],type:"Option"},owner:{description:"Collection owner",params:[{name:"collection",type:"NftCollectionId"},{name:"item",type:"NftItemId"}],type:"Option"},system_attribute:{description:"System attribute",params:[{name:"collection",type:"NftCollectionId"},{name:"item",type:"NftItemId"},{name:"key",type:"Bytes"}],type:"Option"}},version:1}]},types:{NftCollectionId:"u32",NftItemId:"u32"}},fl={rpc:{},runtime:{NominationPoolsApi:[{methods:{balance_to_points:{description:"Returns the equivalent points of `new_funds` for a given pool.",params:[{name:"poolId",type:"NpPoolId"},{name:"newFunds",type:"Balance"}],type:"Balance"},pending_rewards:{description:"Returns the pending rewards for the given member.",params:[{name:"member",type:"AccountId"}],type:"Balance"},points_to_balance:{description:"Returns the equivalent balance of `points` for a given pool.",params:[{name:"poolId",type:"NpPoolId"},{name:"points",type:"Balance"}],type:"Balance"}},version:1}]},types:{NpApiError:{_enum:["MemberNotFound","OverflowInPendingRewards"]},NpPoolId:"u32"}},pl={rpc:{},types:{DeferredOffenceOf:"(Vec, Vec, SessionIndex)",Kind:"[u8; 16]",OffenceDetails:{offender:"Offender",reporters:"Vec"},Offender:"IdentificationTuple",OpaqueTimeSlot:"Bytes",ReportIdOf:"Hash",Reporter:"AccountId"}},hl={rpc:{},runtime:{DifficultyApi:[{methods:{difficulty:{description:"Return the target difficulty of the next block.",params:[],type:"Raw"}},version:1}],TimestampApi:[{methods:{timestamp:{description:"API necessary for timestamp-based difficulty adjustment algorithms.",params:[],type:"Moment"}},version:1}]},types:{}},bl={rpc:{},types:{ProxyDefinition:{delegate:"AccountId",proxyType:"ProxyType",delay:"BlockNumber"},ProxyType:{_enum:["Any","NonTransfer","Governance","Staking"]},ProxyAnnouncement:{real:"AccountId",callHash:"Hash",height:"BlockNumber"}}},ml={rpc:{},types:{ActiveRecovery:{created:"BlockNumber",deposit:"Balance",friends:"Vec"},RecoveryConfig:{delayPeriod:"BlockNumber",deposit:"Balance",friends:"Vec",threshold:"u16"}}},yl={rpc:{},types:{Period:"(BlockNumber, u32)",Priority:"u8",SchedulePeriod:"Period",SchedulePriority:"Priority",Scheduled:{maybeId:"Option",priority:"SchedulePriority",call:"Call",maybePeriodic:"Option",origin:"PalletsOrigin"},ScheduledTo254:{maybeId:"Option",priority:"SchedulePriority",call:"Call",maybePeriodic:"Option"},TaskAddress:"(BlockNumber, u32)"}},xl={rpc:{},runtime:{SessionKeys:[{methods:{decode_session_keys:{description:"Decode the given public session keys.",params:[{name:"encoded",type:"Bytes"}],type:"Option>"},generate_session_keys:{description:"Generate a set of session keys with optionally using the given seed.",params:[{name:"seed",type:"Option"}],type:"Bytes"}},version:1}]},types:{BeefyKey:"[u8; 33]",Keys:"SessionKeys4",SessionKeys1:"(AccountId)",SessionKeys2:"(AccountId, AccountId)",SessionKeys3:"(AccountId, AccountId, AccountId)",SessionKeys4:"(AccountId, AccountId, AccountId, AccountId)",SessionKeys5:"(AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys6:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys6B:"(AccountId, AccountId, AccountId, AccountId, AccountId, BeefyKey)",SessionKeys7:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys7B:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, BeefyKey)",SessionKeys8:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys8B:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, BeefyKey)",SessionKeys9:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys9B:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, BeefyKey)",SessionKeys10:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)",SessionKeys10B:"(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, AccountId, BeefyKey)",FullIdentification:"Exposure",IdentificationTuple:"(ValidatorId, FullIdentification)",MembershipProof:{session:"SessionIndex",trieNodes:"Vec",validatorCount:"ValidatorCount"},SessionIndex:"u32",ValidatorCount:"u32"}},gl={rpc:{},types:{Bid:{who:"AccountId",kind:"BidKind",value:"Balance"},BidKind:{_enum:{Deposit:"Balance",Vouch:"(AccountId, Balance)"}},SocietyJudgement:{_enum:["Rebid","Reject","Approve"]},SocietyVote:{_enum:["Skeptic","Reject","Approve"]},StrikeCount:"u32",VouchingStatus:{_enum:["Vouching","Banned"]}}},vl={rpc:{},runtime:{StakingApi:[{methods:{nominations_quota:{description:"Returns the nominations quota for a nominator with a given balance.",params:[{name:"balance",type:"Balance"}],type:"u32"}},version:1}]},types:{Points:"u32",EraPoints:{total:"Points",individual:"Vec"},CompactAssignments:"CompactAssignmentsWith16",CompactAssignmentsWith16:{votes1:"Vec<(NominatorIndexCompact, ValidatorIndexCompact)>",votes2:"Vec<(NominatorIndexCompact, CompactScoreCompact, ValidatorIndexCompact)>",votes3:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 2], ValidatorIndexCompact)>",votes4:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 3], ValidatorIndexCompact)>",votes5:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 4], ValidatorIndexCompact)>",votes6:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 5], ValidatorIndexCompact)>",votes7:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 6], ValidatorIndexCompact)>",votes8:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 7], ValidatorIndexCompact)>",votes9:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 8], ValidatorIndexCompact)>",votes10:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 9], ValidatorIndexCompact)>",votes11:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 10], ValidatorIndexCompact)>",votes12:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 11], ValidatorIndexCompact)>",votes13:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 12], ValidatorIndexCompact)>",votes14:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 13], ValidatorIndexCompact)>",votes15:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 14], ValidatorIndexCompact)>",votes16:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 15], ValidatorIndexCompact)>"},CompactAssignmentsWith24:{votes1:"Vec<(NominatorIndexCompact, ValidatorIndexCompact)>",votes2:"Vec<(NominatorIndexCompact, CompactScoreCompact, ValidatorIndexCompact)>",votes3:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 2], ValidatorIndexCompact)>",votes4:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 3], ValidatorIndexCompact)>",votes5:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 4], ValidatorIndexCompact)>",votes6:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 5], ValidatorIndexCompact)>",votes7:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 6], ValidatorIndexCompact)>",votes8:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 7], ValidatorIndexCompact)>",votes9:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 8], ValidatorIndexCompact)>",votes10:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 9], ValidatorIndexCompact)>",votes11:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 10], ValidatorIndexCompact)>",votes12:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 11], ValidatorIndexCompact)>",votes13:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 12], ValidatorIndexCompact)>",votes14:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 13], ValidatorIndexCompact)>",votes15:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 14], ValidatorIndexCompact)>",votes16:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 15], ValidatorIndexCompact)>",votes17:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 16], ValidatorIndexCompact)>",votes18:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 17], ValidatorIndexCompact)>",votes19:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 18], ValidatorIndexCompact)>",votes20:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 19], ValidatorIndexCompact)>",votes21:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 20], ValidatorIndexCompact)>",votes22:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 21], ValidatorIndexCompact)>",votes23:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 22], ValidatorIndexCompact)>",votes24:"Vec<(NominatorIndexCompact, [CompactScoreCompact; 23], ValidatorIndexCompact)>"},CompactAssignmentsTo265:"CompactAssignmentsWith16",CompactAssignmentsTo257:{votes1:"Vec<(NominatorIndex, [CompactScore; 0], ValidatorIndex)>",votes2:"Vec<(NominatorIndex, [CompactScore; 1], ValidatorIndex)>",votes3:"Vec<(NominatorIndex, [CompactScore; 2], ValidatorIndex)>",votes4:"Vec<(NominatorIndex, [CompactScore; 3], ValidatorIndex)>",votes5:"Vec<(NominatorIndex, [CompactScore; 4], ValidatorIndex)>",votes6:"Vec<(NominatorIndex, [CompactScore; 5], ValidatorIndex)>",votes7:"Vec<(NominatorIndex, [CompactScore; 6], ValidatorIndex)>",votes8:"Vec<(NominatorIndex, [CompactScore; 7], ValidatorIndex)>",votes9:"Vec<(NominatorIndex, [CompactScore; 8], ValidatorIndex)>",votes10:"Vec<(NominatorIndex, [CompactScore; 9], ValidatorIndex)>",votes11:"Vec<(NominatorIndex, [CompactScore; 10], ValidatorIndex)>",votes12:"Vec<(NominatorIndex, [CompactScore; 11], ValidatorIndex)>",votes13:"Vec<(NominatorIndex, [CompactScore; 12], ValidatorIndex)>",votes14:"Vec<(NominatorIndex, [CompactScore; 13], ValidatorIndex)>",votes15:"Vec<(NominatorIndex, [CompactScore; 14], ValidatorIndex)>",votes16:"Vec<(NominatorIndex, [CompactScore; 15], ValidatorIndex)>"},CompactScore:"(ValidatorIndex, OffchainAccuracy)",CompactScoreCompact:"(ValidatorIndexCompact, OffchainAccuracyCompact)",ElectionCompute:{_enum:["OnChain","Signed","Unsigned"]},ElectionPhase:{_enum:{Off:null,Signed:null,Unsigned:"(bool, BlockNumber)",Emergency:null}},ElectionResult:{compute:"ElectionCompute",slotStake:"Balance",electedStashes:"Vec",exposures:"Vec<(AccountId, Exposure)>"},ElectionScore:"[u128; 3]",ElectionSize:{validators:"Compact",nominators:"Compact"},ElectionStatus:{_enum:{Close:"Null",Open:"BlockNumber"}},ExtendedBalance:"u128",RawSolution:"RawSolutionWith16",RawSolutionWith16:{compact:"CompactAssignmentsWith16",score:"ElectionScore",round:"u32"},RawSolutionWith24:{compact:"CompactAssignmentsWith24",score:"ElectionScore",round:"u32"},RawSolutionTo265:"RawSolutionWith16",ReadySolution:{supports:"SolutionSupports",score:"ElectionScore",compute:"ElectionCompute"},RoundSnapshot:{voters:"Vec<(AccountId, VoteWeight, Vec)>",targets:"Vec"},SeatHolder:{who:"AccountId",stake:"Balance",deposit:"Balance"},SignedSubmission:{_fallback:"SignedSubmissionTo276",who:"AccountId",deposit:"Balance",solution:"RawSolution",reward:"Balance"},SignedSubmissionTo276:{who:"AccountId",deposit:"Balance",solution:"RawSolution"},SignedSubmissionOf:"SignedSubmission",SolutionOrSnapshotSize:{voters:"Compact",targets:"Compact"},SolutionSupport:{total:"ExtendedBalance",voters:"Vec<(AccountId, ExtendedBalance)>"},SolutionSupports:"Vec<(AccountId, SolutionSupport)>",Supports:"SolutionSupports",SubmissionIndicesOf:"BTreeMap",Voter:{votes:"Vec",stake:"Balance",deposit:"Balance"},VoteWeight:"u64",ActiveEraInfo:{index:"EraIndex",start:"Option"},EraIndex:"u32",EraRewardPoints:{total:"RewardPoint",individual:"BTreeMap"},EraRewards:{total:"u32",rewards:"Vec"},Exposure:{total:"Compact",own:"Compact",others:"Vec"},Forcing:{_enum:["NotForcing","ForceNew","ForceNone","ForceAlways"]},IndividualExposure:{who:"AccountId",value:"Compact"},KeyType:"AccountId",MomentOf:"Moment",Nominations:{targets:"Vec",submittedIn:"EraIndex",suppressed:"bool"},NominatorIndex:"u32",NominatorIndexCompact:"Compact",OffchainAccuracy:"PerU16",OffchainAccuracyCompact:"Compact",PhragmenScore:"[u128; 3]",Points:"u32",RewardDestination:{_enum:{Staked:"Null",Stash:"Null",Controller:"Null",Account:"AccountId",None:"Null"}},RewardPoint:"u32",SlashJournalEntry:{who:"AccountId",amount:"Balance",ownSlash:"Balance"},SlashingSpansTo204:{spanIndex:"SpanIndex",lastStart:"EraIndex",prior:"Vec"},SlashingSpans:{spanIndex:"SpanIndex",lastStart:"EraIndex",lastNonzeroSlash:"EraIndex",prior:"Vec"},SpanIndex:"u32",SpanRecord:{slashed:"Balance",paidOut:"Balance"},StakingLedgerTo223:{stash:"AccountId",total:"Compact",active:"Compact",unlocking:"Vec"},StakingLedgerTo240:{_fallback:"StakingLedgerTo223",stash:"AccountId",total:"Compact",active:"Compact",unlocking:"Vec",lastReward:"Option"},StakingLedger:{stash:"AccountId",total:"Compact",active:"Compact",unlocking:"Vec",claimedRewards:"Vec"},UnappliedSlashOther:"(AccountId, Balance)",UnappliedSlash:{validator:"AccountId",own:"Balance",others:"Vec",reporters:"Vec",payout:"Balance"},UnlockChunk:{value:"Compact",era:"Compact"},ValidatorIndex:"u16",ValidatorIndexCompact:"Compact",ValidatorPrefs:"ValidatorPrefsWithBlocked",ValidatorPrefsWithCommission:{commission:"Compact"},ValidatorPrefsWithBlocked:{commission:"Compact",blocked:"bool"},ValidatorPrefsTo196:{validatorPayment:"Compact"},ValidatorPrefsTo145:{unstakeThreshold:"Compact",validatorPayment:"Compact"}}},wl={rpc:{},runtime:{ValidateStatement:[{methods:{valdate_statement:{description:"Validate the statement.",params:[{name:"source",type:"StatementStoreStatementSource"},{name:"statement",type:"SpStatementStoreStatement"}],type:"Result"}},version:1}]},types:{StatementStoreStatementSource:{_enum:["Chain","Network","Local"]},StatementStoreValidStatement:{maxCount:"u32",maxSize:"u32"},StatementStoreInvalidStatement:{_enum:["BadProof","NoProof","InternalError"]}}},Vl={rpc:{},types:{WeightToFeeCoefficient:{coeffInteger:"Balance",coeffFrac:"Perbill",negative:"bool",degree:"u8"}}},Tl={rpc:{genSyncSpec:{description:"Returns the json-serialized chainspec running the node, with a sync state.",endpoint:"sync_state_genSyncSpec",params:[{name:"raw",type:"bool"}],type:"Json"}},types:{}},Sl={rpc:{accountNextIndex:{alias:["account_nextIndex"],description:"Retrieves the next accountIndex as available on the node",params:[{name:"accountId",type:"AccountId"}],type:"Index"},addLogFilter:{description:"Adds the supplied directives to the current log filter",isUnsafe:!0,params:[{name:"directives",type:"Text"}],type:"Null"},addReservedPeer:{description:"Adds a reserved peer",isUnsafe:!0,params:[{name:"peer",type:"Text"}],type:"Text"},chain:{description:"Retrieves the chain",params:[],type:"Text"},chainType:{description:"Retrieves the chain type",params:[],type:"ChainType"},dryRun:{alias:["system_dryRunAt"],description:"Dry run an extrinsic at a given block",isUnsafe:!0,params:[{name:"extrinsic",type:"Bytes"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"ApplyExtrinsicResult"},health:{description:"Return health status of the node",noErrorLog:!0,params:[],type:"Health"},localListenAddresses:{description:"The addresses include a trailing /p2p/ with the local PeerId, and are thus suitable to be passed to addReservedPeer or as a bootnode address for example",params:[],type:"Vec"},localPeerId:{description:"Returns the base58-encoded PeerId of the node",params:[],type:"Text"},name:{description:"Retrieves the node name",params:[],type:"Text"},networkState:{alias:["system_unstable_networkState"],description:"Returns current state of the network",isUnsafe:!0,params:[],type:"NetworkState"},nodeRoles:{description:"Returns the roles the node is running as",params:[],type:"Vec"},peers:{description:"Returns the currently connected peers",isUnsafe:!0,params:[],type:"Vec"},properties:{description:"Get a custom set of properties as a JSON object, defined in the chain spec",params:[],type:"ChainProperties"},removeReservedPeer:{description:"Remove a reserved peer",isUnsafe:!0,params:[{name:"peerId",type:"Text"}],type:"Text"},reservedPeers:{description:"Returns the list of reserved peers",params:[],type:"Vec"},resetLogFilter:{description:"Resets the log filter to Substrate defaults",isUnsafe:!0,params:[],type:"Null"},syncState:{description:"Returns the state of the syncing of the node",params:[],type:"SyncState"},version:{description:"Retrieves the version of the node",params:[],type:"Text"}},runtime:{AccountNonceApi:[{methods:{account_nonce:{description:"The API to query account nonce (aka transaction index)",params:[{name:"accountId",type:"AccountId"}],type:"Index"}},version:1}]},types:{AccountInfo:"AccountInfoWithTripleRefCount",AccountInfoWithRefCountU8:{nonce:"Index",refcount:"u8",data:"AccountData"},AccountInfoWithRefCount:{_fallback:"AccountInfoWithRefCountU8",nonce:"Index",refcount:"RefCount",data:"AccountData"},AccountInfoWithDualRefCount:{_fallback:"AccountInfoWithRefCount",nonce:"Index",consumers:"RefCount",providers:"RefCount",data:"AccountData"},AccountInfoWithProviders:"AccountInfoWithDualRefCount",AccountInfoWithTripleRefCount:{_fallback:"AccountInfoWithDualRefCount",nonce:"Index",consumers:"RefCount",providers:"RefCount",sufficients:"RefCount",data:"AccountData"},ApplyExtrinsicResult:"Result",ApplyExtrinsicResultPre6:"Result",ArithmeticError:{_enum:["Underflow","Overflow","DivisionByZero"]},BlockLength:{max:"PerDispatchClassU32"},BlockWeights:{baseBlock:"Weight",maxBlock:"Weight",perClass:"PerDispatchClassWeightsPerClass"},ChainProperties:"GenericChainProperties",ChainType:{_enum:{Development:"Null",Local:"Null",Live:"Null",Custom:"Text"}},ConsumedWeight:"PerDispatchClassWeight",DigestOf:"Digest",DispatchClass:{_enum:["Normal","Operational","Mandatory"]},DispatchError:{_enum:{Other:"Null",CannotLookup:"Null",BadOrigin:"Null",Module:"DispatchErrorModule",ConsumerRemaining:"Null",NoProviders:"Null",TooManyConsumers:"Null",Token:"TokenError",Arithmetic:"ArithmeticError",Transactional:"TransactionalError",Exhausted:"Null",Corruption:"Null",Unavailable:"Null"}},DispatchErrorPre6:{_enum:{Other:"Null",CannotLookup:"Null",BadOrigin:"Null",Module:"DispatchErrorModulePre6",ConsumerRemaining:"Null",NoProviders:"Null",TooManyConsumers:"Null",Token:"TokenError",Arithmetic:"ArithmeticError",Transactional:"TransactionalError"}},DispatchErrorPre6First:{_enum:{Other:"Null",CannotLookup:"Null",BadOrigin:"Null",Module:"DispatchErrorModulePre6",ConsumerRemaining:"Null",NoProviders:"Null",Token:"TokenError",Arithmetic:"ArithmeticError",Transactional:"TransactionalError"}},DispatchErrorModuleU8:{index:"u8",error:"u8"},DispatchErrorModuleU8a:{index:"u8",error:"[u8; 4]"},DispatchErrorModule:"DispatchErrorModuleU8a",DispatchErrorModulePre6:"DispatchErrorModuleU8",DispatchErrorTo198:{module:"Option",error:"u8"},DispatchInfo:{weight:"Weight",class:"DispatchClass",paysFee:"Pays"},DispatchInfoTo190:{weight:"Weight",class:"DispatchClass"},DispatchInfoTo244:{weight:"Weight",class:"DispatchClass",paysFee:"bool"},DispatchOutcome:"Result<(), DispatchError>",DispatchOutcomePre6:"Result<(), DispatchErrorPre6>",DispatchResult:"Result<(), DispatchError>",DispatchResultOf:"DispatchResult",DispatchResultTo198:"Result<(), Text>",Event:"GenericEvent",EventId:"[u8; 2]",EventIndex:"u32",EventRecord:{phase:"Phase",event:"Event",topics:"Vec"},Health:{peers:"u64",isSyncing:"bool",shouldHavePeers:"bool"},InvalidTransaction:{_enum:{Call:"Null",Payment:"Null",Future:"Null",Stale:"Null",BadProof:"Null",AncientBirthBlock:"Null",ExhaustsResources:"Null",Custom:"u8",BadMandatory:"Null",MandatoryDispatch:"Null",BadSigner:"Null"}},Key:"Bytes",LastRuntimeUpgradeInfo:{specVersion:"Compact",specName:"Text"},NetworkState:{peerId:"Text",listenedAddresses:"Vec",externalAddresses:"Vec",connectedPeers:"HashMap",notConnectedPeers:"HashMap",averageDownloadPerSec:"u64",averageUploadPerSec:"u64",peerset:"NetworkStatePeerset"},NetworkStatePeerset:{messageQueue:"u64",nodes:"HashMap"},NetworkStatePeersetInfo:{connected:"bool",reputation:"i32"},NodeRole:{_enum:{Full:"Null",LightClient:"Null",Authority:"Null",UnknownRole:"u8"}},NotConnectedPeer:{knownAddresses:"Vec",latestPingTime:"Option",versionString:"Option"},Peer:{enabled:"bool",endpoint:"PeerEndpoint",knownAddresses:"Vec",latestPingTime:"PeerPing",open:"bool",versionString:"Text"},PeerEndpoint:{listening:"PeerEndpointAddr"},PeerEndpointAddr:{_alias:{localAddr:"local_addr",sendBackAddr:"send_back_addr"},localAddr:"Text",sendBackAddr:"Text"},PeerPing:{nanos:"u64",secs:"u64"},PeerInfo:{peerId:"Text",roles:"Text",protocolVersion:"u32",bestHash:"Hash",bestNumber:"BlockNumber"},PerDispatchClassU32:{normal:"u32",operational:"u32",mandatory:"u32"},PerDispatchClassWeight:{normal:"Weight",operational:"Weight",mandatory:"Weight"},PerDispatchClassWeightsPerClass:{normal:"WeightPerClass",operational:"WeightPerClass",mandatory:"WeightPerClass"},Phase:{_enum:{ApplyExtrinsic:"u32",Finalization:"Null",Initialization:"Null"}},RawOrigin:{_enum:{Root:"Null",Signed:"AccountId",None:"Null"}},RefCount:"u32",RefCountTo259:"u8",SyncState:{startingBlock:"BlockNumber",currentBlock:"BlockNumber",highestBlock:"Option"},SystemOrigin:"RawOrigin",TokenError:{_enum:["NoFunds","WouldDie","BelowMinimum","CannotCreate","UnknownAsset","Frozen","Unsupported","Underflow","Overflow"]},TransactionValidityError:{_enum:{Invalid:"InvalidTransaction",Unknown:"UnknownTransaction"}},TransactionalError:{_enum:["LimitReached","NoLayer"]},UnknownTransaction:{_enum:{CannotLookup:"Null",NoUnsignedValidator:"Null",Custom:"u8"}},WeightPerClass:{baseExtrinsic:"Weight",maxExtrinsic:"Option",maxTotal:"Option",reserved:"Option"}}},kl={rpc:{},types:{Bounty:{proposer:"AccountId",value:"Balance",fee:"Balance",curatorDeposit:"Balance",bond:"Balance",status:"BountyStatus"},BountyIndex:"u32",BountyStatus:{_enum:{Proposed:"Null",Approved:"Null",Funded:"Null",CuratorProposed:"BountyStatusCuratorProposed",Active:"BountyStatusActive",PendingPayout:"BountyStatusPendingPayout"}},BountyStatusActive:{curator:"AccountId",updateDue:"BlockNumber"},BountyStatusCuratorProposed:{curator:"AccountId"},BountyStatusPendingPayout:{curator:"AccountId",beneficiary:"AccountId",unlockAt:"BlockNumber"},OpenTip:{reason:"Hash",who:"AccountId",finder:"AccountId",deposit:"Balance",closes:"Option",tips:"Vec",findersFee:"bool"},OpenTipTo225:{reason:"Hash",who:"AccountId",finder:"Option",closes:"Option",tips:"Vec"},OpenTipFinderTo225:"(AccountId, Balance)",OpenTipTip:"(AccountId, Balance)",TreasuryProposal:{proposer:"AccountId",value:"Balance",beneficiary:"AccountId",bond:"Balance"}}},_l={rpc:{},types:{Multiplier:"Fixed128"}},Pl={rpc:{},runtime:{TaggedTransactionQueue:[{methods:{validate_transaction:{description:"Validate the transaction.",params:[{name:"source",type:"TransactionSource"},{name:"tx",type:"Extrinsic"},{name:"blockHash",type:"BlockHash"}],type:"TransactionValidity"}},version:3},{methods:{validate_transaction:{description:"Validate the transaction.",params:[{name:"source",type:"TransactionSource"},{name:"tx",type:"Extrinsic"}],type:"TransactionValidity"}},version:2},{methods:{validate_transaction:{description:"Validate the transaction.",params:[{name:"tx",type:"Extrinsic"}],type:"TransactionValidity"}},version:1}]},types:{TransactionSource:{_enum:["InBlock","Local","External"]},TransactionValidity:"Result",ValidTransaction:{priority:"TransactionPriority",requires:"Vec",provides:"Vec",longevity:"TransactionLongevity",propagate:"bool"}}},Ml={rpc:{},types:{ClassId:"u32",InstanceId:"u32",DepositBalance:"Balance",DepositBalanceOf:"Balance",ClassDetails:{owner:"AccountId",issuer:"AccountId",admin:"AccountId",freezer:"AccountId",totalDeposit:"DepositBalance",freeHolding:"bool",instances:"u32",instanceMetadatas:"u32",attributes:"u32",isFrozen:"bool"},DestroyWitness:{instances:"Compact",instanceMetadatas:"Compact",attributes:"Compact"},InstanceDetails:{owner:"AccountId",approved:"Option",isFrozen:"bool",deposit:"DepositBalance"},ClassMetadata:{deposit:"DepositBalance",data:"Vec",isFrozen:"bool"},InstanceMetadata:{deposit:"DepositBalance",data:"Vec",isFrozen:"bool"}}},Il={rpc:{},types:{Multisig:{when:"Timepoint",deposit:"Balance",depositor:"AccountId",approvals:"Vec"},Timepoint:{height:"BlockNumber",index:"u32"}}},Nl={rpc:{},types:{VestingInfo:{locked:"Balance",perBlock:"Balance",startingBlock:"BlockNumber"}}},El={rpc:{},types:{BlockAttestations:{receipt:"CandidateReceipt",valid:"Vec",invalid:"Vec"},IncludedBlocks:{actualNumber:"BlockNumber",session:"SessionIndex",randomSeed:"H256",activeParachains:"Vec",paraBlocks:"Vec"},MoreAttestations:{}}},Ol={rpc:{},types:{BridgedBlockHash:"H256",BridgedBlockNumber:"BlockNumber",BridgedHeader:"Header",BridgeMessageId:"(LaneId, MessageNonce)",CallOrigin:{_enum:{SourceRoot:"Null",TargetAccount:"(AccountId, MultiSigner, MultiSignature)",SourceAccount:"AccountId"}},ChainId:"[u8; 4]",DeliveredMessages:{begin:"MessageNonce",end:"MessageNonce",dispatchResults:"BitVec"},DispatchFeePayment:{_enum:["AtSourceChain","AtTargetChain"]},InboundLaneData:{relayers:"Vec",lastConfirmedNonce:"MessageNonce"},InboundRelayer:"AccountId",InitializationData:{header:"Header",authorityList:"AuthorityList",setId:"SetId",isHalted:"bool"},LaneId:"[u8; 4]",MessageData:{payload:"Bytes",fee:"Balance"},MessagesDeliveryProofOf:{bridgedHeaderHash:"BlockHash",storageProof:"Vec",lane:"LaneId"},MessageKey:{laneId:"LaneId",nonce:"MessageNonce"},MessageNonce:"u64",MessagesProofOf:{bridgedHeaderHash:"BridgedBlockHash",storageProof:"Vec",lane:"LaneId",noncesStart:"MessageNonce",noncesEnd:"MessageNonce"},OperatingMode:{_enum:["Normal","RejectingOutboundMessages","Halted"]},OutboundLaneData:{oldestUnprunedNonce:"MessageNonce",latestReceivedNonce:"MessageNonce",latestGeneratedNonce:"MessageNonce"},OutboundMessageFee:"Balance",OutboundPayload:{specVersion:"u32",weight:"Weight",origin:"CallOrigin",dispatchFeePayment:"DispatchFeePayment",call:"Bytes"},Parameter:"Null",RelayerId:"AccountId",UnrewardedRelayer:{relayer:"RelayerId",messages:"DeliveredMessages"},UnrewardedRelayersState:{unrewardedRelayer_Entries:"MessageNonce",messagesInOldestEntry:"MessageNonce",totalMessages:"MessageNonce"}}},Al={rpc:{},types:{StatementKind:{_enum:["Regular","Saft"]}}},Cl={rpc:{},types:{FundIndex:"u32",LastContribution:{_enum:{Never:"Null",PreEnding:"u32",Ending:"BlockNumber"}},FundInfo:{depositor:"AccountId",verifier:"Option",deposit:"Balance",raised:"Balance",end:"BlockNumber",cap:"Balance",lastContribution:"LastContribution",firstPeriod:"LeasePeriod",lastPeriod:"LeasePeriod",trieIndex:"TrieIndex"},TrieIndex:"u32"}},Hl={rpc:{},runtime:{AuraUnincludedSegmentApi:[{methods:{can_build_upon:{description:"Whether it is legal to extend the chain",params:[{name:"includedHash",type:"BlockHash"},{name:"slot",type:"Slot"}],type:"bool"}},version:1}],CollectCollationInfo:[{methods:{collect_collation_info:{description:"Collect information about a collation.",params:[{name:"header",type:"Header"}],type:"CollationInfo"}},version:2},{methods:{collect_collation_info:{description:"Collect information about a collation.",params:[],type:"CollationInfoV1"}},version:1}]},types:{CollationInfo:{upwardMessages:"Vec",horizontalMessages:"Vec",newValidationCode:"Option",processedDownwardMessages:"u32",hrmpWatermark:"RelayBlockNumber",headData:"HeadData"},CollationInfoV1:{upwardMessages:"Vec",horizontalMessages:"Vec",newValidationCode:"Option",processedDownwardMessages:"u32",hrmpWatermark:"RelayBlockNumber"},ConfigData:{maxIndividual:"Weight"},MessageId:"[u8; 32]",OverweightIndex:"u64",PageCounter:"u32",PageIndexData:{beginUsed:"PageCounter",endUsed:"PageCounter",overweightCount:"OverweightIndex"}}},Rl={methods:{best_finalized:{description:"Returns number and hash of the best finalized header known to the bridge module.",params:[],type:"(BlockNumber, Hash)"}},version:1},Bl={rpc:{},runtime:{KusamaFinalityApi:[Rl],PolkadotFinalityApi:[Rl],RococoFinalityApi:[Rl],WestendFinalityApi:[Rl]},types:{}},Ll={assumed_validation_data:{description:"Returns the persisted validation data for the given `ParaId` along with the corresponding validation code hash.",params:[{name:"paraId",type:"ParaId"},{name:"hash",type:"Hash"}],type:"Option<(PersistedValidationData, ValidationCodeHash)>"},availability_cores:{description:"Yields information on all availability cores as relevant to the child block.",params:[],type:"Vec"},candidate_events:{description:"Get a vector of events concerning candidates that occurred within a block.",params:[],type:"Vec"},candidate_pending_availability:{description:"Get the receipt of a candidate pending availability.",params:[{name:"paraId",type:"ParaId"}],type:"Option"},check_validation_outputs:{description:"Checks if the given validation outputs pass the acceptance criteria.",params:[{name:"paraId",type:"ParaId"},{name:"outputs",type:"CandidateCommitments"}],type:"bool"},dmq_contents:{description:"Get all the pending inbound messages in the downward message queue for a para.",params:[{name:"paraId",type:"ParaId"}],type:"Vec"},inbound_hrmp_channels_contents:{description:"Get the contents of all channels addressed to the given recipient.",params:[{name:"paraId",type:"ParaId"}],type:"Vec"},on_chain_votes:{description:"Scrape dispute relevant from on-chain, backing votes and resolved disputes.",params:[],type:"Option"},persisted_validation_data:{description:"Yields the persisted validation data for the given `ParaId` along with an assumption that should be used if the para currently occupies a core.",params:[{name:"paraId",type:"ParaId"},{name:"assumption",type:"OccupiedCoreAssumption"}],type:"Option"},session_index_for_child:{description:"Returns the session index expected at a child of the block.",params:[],type:"SessionIndex"},validation_code:{description:"Fetch the validation code used by a para, making the given `OccupiedCoreAssumption`.",params:[{name:"paraId",type:"ParaId"},{name:"assumption",type:"OccupiedCoreAssumption"}],type:"Option"},validation_code_by_hash:{description:"Get the validation code from its hash.",params:[{name:"hash",type:"ValidationCodeHash"}],type:"Option"},validator_groups:{description:"Returns the validator groups and rotation info localized based on the hypothetical child of a block whose state this is invoked on",params:[],type:"(Vec>, GroupRotationInfo)"},validators:{description:"Get the current validators.",params:[],type:"Vec"}},zl={pvfs_require_precheck:{description:"Returns code hashes of PVFs that require pre-checking by validators in the active set.",params:[],type:"Vec"},session_info:{description:"Get the session info for the given session, if stored.",params:[{name:"index",type:"SessionIndex"}],type:"Option"},submit_pvf_check_statement:{description:"Submits a PVF pre-checking statement into the transaction pool.",params:[{name:"stmt",type:"PvfCheckStatement"},{name:"signature",type:"ValidatorSignature"}],type:"Null"},validation_code_hash:{description:"Fetch the hash of the validation code used by a para, making the given `OccupiedCoreAssumption`.",params:[{name:"paraId",type:"ParaId"},{name:"assumption",type:"OccupiedCoreAssumption"}],type:"Option"}},Ul={disputes:{description:"Returns all onchain disputes.",params:[],type:"Vec<(SessionIndex, CandidateHash, DisputeState)>"}},Dl={session_executor_params:{description:"Returns execution parameters for the session.",params:[{name:"sessionIndex",type:"SessionIndex"}],type:"Option"}},ql={key_ownership_proof:{description:"Returns a merkle proof of a validator session key",params:[{name:"validatorId",type:"ValidatorId"}],type:"Option"},submit_report_dispute_lost:{description:"Submit an unsigned extrinsic to slash validators who lost a dispute about a candidate of a past session",params:[{name:"disputeProof",type:"DisputeProof"},{name:"keyOwnershipProof",type:"OpaqueKeyOwnershipProof"}],type:"Option"},unapplied_slashes:{description:"Returns a list of validators that lost a past session dispute and need to be slashed",params:[],type:"Vec<(SessionIndex, CandidateHash, PendingSlashes)>"}},jl={minimum_backing_votes:{description:"Get the minimum number of backing votes for a parachain candidate. This is a staging method! Do not use on production runtimes!",params:[],type:"u32"}},Fl={async_backing_params:{description:"Returns candidate's acceptance limitations for asynchronous backing for a relay parent",params:[],type:"AsyncBackingParams"},para_backing_state:{description:"Returns the state of parachain backing for a given para",params:[{name:"paraId",type:"ParaId"}],type:"Option"}},Xl={disabled_validators:{description:"Returns a list of all disabled validators at the given block",params:[],type:"ValidatorIndex"}},Wl={node_features:{description:"Get node features. This is a staging method! Do not use on production runtimes!",params:[],type:"NodeFeatures"}},Zl={approval_voting_params:{description:"Approval voting configuration parameters",params:[],type:"ApprovalVotingParams"}},Gl={_enum:["ZeroZero","ZeroOne","ZeroTwo","ZeroThree","OneOne","OneTwo","OneThree","TwoTwo","TwoThree","ThreeThree"]},Kl={_enum:["ZeroZero","ZeroOne","ZeroTwo","ZeroThree","ZeroFour","ZeroFive","ZeroSix","ZeroSeven","OneOne","OneTwo","OneThree","OneFour","OneFive","OneSix","OneSeven","TwoTwo","TwoThree","TwoFour","TwoFive","TwoSix","TwoSeven","ThreeThree","ThreeFour","ThreeFive","ThreeSix","ThreeSeven","FourFour","FourFive","FourSix","FourSeven","FiveFive","FiveSix","FiveSeven","SixSix","SixSeven","SevenSeven"]},Jl={rpc:{},runtime:{ParachainHost:[{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl,...Fl,...Xl,...Wl,...Zl,claim_queue:{description:"Claim queue",params:[],type:"BTreeMap>"}},version:11},{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl,...Fl,...Xl,...Wl,...Zl},version:10},{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl,...Fl,...Xl,...Wl},version:9},{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl,...Fl,...Xl},version:8},{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl,...Fl},version:7},{methods:{...Ll,...zl,...Ul,...Dl,...ql,...jl},version:6},{methods:{...Ll,...zl,...Ul,...Dl,...ql},version:5},{methods:{...Ll,...zl,...Ul,...Dl},version:4},{methods:{...Ll,...zl,...Ul},version:3},{methods:{...Ll,...zl},version:2},{methods:{session_info:{description:"Get the session info for the given session, if stored.",params:[{name:"index",type:"SessionIndex"}],type:"Option"},...Ll},version:1}]},types:{ServiceQuality:{_enum:["Ordered","Fast"]},DisputeLocation:{_enum:["Local","Remote"]},DisputeResult:{_enum:["Valid","Invalid"]},DisputeState:{validatorsFor:"BitVec",validatorsAgainst:"BitVec",start:"BlockNumber",concludedAt:"Option"},DisputeStatement:{_enum:{Valid:"ValidDisputeStatementKind",Invalid:"InvalidDisputeStatementKind"}},DisputeStatementSet:{candidateHash:"CandidateHash",session:"SessionIndex",statements:"Vec<(DisputeStatement, ParaValidatorIndex, ValidatorSignature)>"},ExecutorParam:{_enum:{Phantom:"Null",MaxMemoryPages:"u32",StackLogicalMax:"u32",StackNativeMax:"u32",PrecheckingMaxMemory:"u64",PvfPrepTimeout:"(PvfPrepTimeoutKind, u64)",PvfExecTimeout:"(PvfExecTimeoutKind, u64)"}},ExecutorParamsHash:"Hash",ExecutorParams:"Vec",ExplicitDisputeStatement:{valid:"bool",candidateHash:"CandidateHash",session:"SessionIndex"},InvalidDisputeStatementKind:{_enum:["Explicit"]},MultiDisputeStatementSet:"Vec",PvfExecTimeoutKind:{_enum:["Backing","Approval"]},PvfPrepTimeoutKind:{_enum:["Precheck","Lenient"]},ValidDisputeStatementKind:{_enum:{Explicit:"Null",BackingSeconded:"Hash",BackingValid:"Hash",ApprovalChecking:"Null"}},HrmpChannel:{maxCapacity:"u32",maxTotalSize:"u32",maxMessageSize:"u32",msgCount:"u32",totalSize:"u32",mqcHead:"Option",senderDeposit:"Balance",recipientDeposit:"Balance"},HrmpChannelId:{sender:"u32",receiver:"u32"},HrmpOpenChannelRequest:{confirmed:"bool",age:"SessionIndex",senderDeposit:"Balance",maxMessageSize:"u32",maxCapacity:"u32",maxTotalSize:"u32"},ParachainProposal:{proposer:"AccountId",genesisHead:"HeadData",validators:"Vec",name:"Bytes",balance:"Balance"},RegisteredParachainInfo:{validators:"Vec",proposer:"AccountId"},...{Bidder:{_enum:{New:"NewBidder",Existing:"ParaId"}},IncomingParachain:{_enum:{Unset:"NewBidder",Fixed:"IncomingParachainFixed",Deploy:"IncomingParachainDeploy"}},IncomingParachainDeploy:{code:"ValidationCode",initialHeadData:"HeadData"},IncomingParachainFixed:{codeHash:"Hash",codeSize:"u32",initialHeadData:"HeadData"},NewBidder:{who:"AccountId",sub:"SubId"},SubId:"u32",AuctionIndex:"u32",LeasePeriod:"BlockNumber",LeasePeriodOf:"BlockNumber",SlotRange10:Gl,SlotRange:Kl,WinningData10:`[WinningDataEntry; ${Gl._enum.length}]`,WinningData:`[WinningDataEntry; ${Kl._enum.length}]`,WinningDataEntry:"Option<(AccountId, ParaId, BalanceOf)>",WinnersData10:"Vec",WinnersData:"Vec",WinnersDataTuple10:"(AccountId, ParaId, BalanceOf, SlotRange10)",WinnersDataTuple:"(AccountId, ParaId, BalanceOf, SlotRange)"},AbridgedCandidateReceipt:{parachainIndex:"ParaId",relayParent:"Hash",headData:"HeadData",collator:"CollatorId",signature:"CollatorSignature",povBlockHash:"Hash",commitments:"CandidateCommitments"},AbridgedHostConfiguration:{maxCodeSize:"u32",maxHeadDataSize:"u32",maxUpwardQueueCount:"u32",maxUpwardQueueSize:"u32",maxUpwardMessageSize:"u32",maxUpwardMessageNumPerCandidate:"u32",hrmpMaxMessageNumPerCandidate:"u32",validationUpgradeFrequency:"BlockNumber",validationUpgradeDelay:"BlockNumber"},AbridgedHrmpChannel:{maxCapacity:"u32",maxTotalSize:"u32",maxMessageSize:"u32",msgCount:"u32",totalSize:"u32",mqcHead:"Option"},ApprovalVotingParams:{maxApprovalCoalesceCount:"u32"},AssignmentId:"AccountId",AssignmentKind:{_enum:{Parachain:"Null",Parathread:"(CollatorId, u32)"}},AsyncBackingParams:{maxCandidateDepth:"u32",allowedAncestryLen:"u32"},AttestedCandidate:{candidate:"AbridgedCandidateReceipt",validityVotes:"Vec",validatorIndices:"BitVec"},AuthorityDiscoveryId:"AccountId",AvailabilityBitfield:"BitVec",AvailabilityBitfieldRecord:{bitfield:"AvailabilityBitfield",submittedTt:"BlockNumber"},BackedCandidate:{candidate:"CommittedCandidateReceipt",validityVotes:"Vec",validatorIndices:"BitVec"},BackingState:{constraints:"Constraints",pendingAvailability:"Vec"},BufferedSessionChange:{applyAt:"BlockNumber",validators:"Vec",queued:"Vec",sessionIndex:"SessionIndex"},CandidateCommitments:{upwardMessages:"Vec",horizontalMessages:"Vec",newValidationCode:"Option",headData:"HeadData",processedDownwardMessages:"u32",hrmpWatermark:"BlockNumber"},CandidateDescriptor:{paraId:"ParaId",relayParent:"RelayChainHash",collatorId:"CollatorId",persistedValidationDataHash:"Hash",povHash:"Hash",erasureRoot:"Hash",signature:"CollatorSignature",paraHead:"Hash",validationCodeHash:"ValidationCodeHash"},CandidateEvent:{_enum:{CandidateBacked:"(CandidateReceipt, HeadData, CoreIndex, GroupIndex)",CandidateIncluded:"(CandidateReceipt, HeadData, CoreIndex, GroupIndex)",CandidateTimedOut:"(CandidateReceipt, HeadData, CoreIndex)"}},CandidateHash:"Hash",CandidateInfo:{who:"AccountId",deposit:"Balance"},CandidatePendingAvailability:{core:"CoreIndex",hash:"CandidateHash",descriptor:"CandidateDescriptor",availabilityVotes:"BitVec",backers:"BitVec",relayParentNumber:"BlockNumber",backedInNumber:"BlockNumber",backingGroup:"GroupIndex"},CandidateReceipt:{descriptor:"CandidateDescriptor",commitmentsHash:"Hash"},GlobalValidationData:{maxCodeSize:"u32",maxHeadDataSize:"u32",blockNumber:"BlockNumber"},CollatorId:"H256",CollatorSignature:"Signature",CommittedCandidateReceipt:{descriptor:"CandidateDescriptor",commitments:"CandidateCommitments"},Constraints:{minRelayParentNumber:"BlockNumber",maxPovSize:"u32",maxCodeSize:"u32",umpRemaining:"u32",umpRemainingBytes:"u32",maxUmpNumPerCandidate:"u32",dmpRemainingMessages:"Vec",hrmpInbound:"InboundHrmpLimitations",hrmpChannelsOut:"HashMap",maxHrmpNumPerCandidate:"u32",requiredParent:"HeadData",validationCodeHash:"ValidationCodeHash",upgradeRestriction:"Option",futureValidationCode:"Option<(BlockNumber, ValidationCodeHash)>"},CoreAssignment:{core:"CoreIndex",paraId:"ParaId",kind:"AssignmentKind",groupIdx:"GroupIndex"},CoreIndex:"u32",CoreOccupied:{_enum:{Parathread:"ParathreadEntry",Parachain:"Null"}},CoreState:{_enum:{Occupied:"OccupiedCore",Scheduled:"ScheduledCore",Free:"Null"}},DisputeProof:{timeSlot:"DisputesTimeSlot",kind:"SlashingOffenceKind",validatorIndex:"ValidatorIndex",validatorId:"ValidatorId"},DisputesTimeSlot:{sessionIndex:"SessionIndex",candidateHash:"CandidateHash"},DoubleVoteReport:{identity:"ValidatorId",first:"(Statement, ValidatorSignature)",second:"(Statement, ValidatorSignature)",proof:"MembershipProof",signingContext:"SigningContext"},DownwardMessage:"Bytes",GroupIndex:"u32",GroupRotationInfo:{sessionStartBlock:"BlockNumber",groupRotationFrequency:"BlockNumber",now:"BlockNumber"},GlobalValidationSchedule:{maxCodeSize:"u32",maxHeadDataSize:"u32",blockNumber:"BlockNumber"},HeadData:"Bytes",HostConfiguration:{maxCodeSize:"u32",maxHeadDataSize:"u32",maxUpwardQueueCount:"u32",maxUpwardQueueSize:"u32",maxUpwardMessageSize:"u32",maxUpwardMessageNumPerCandidate:"u32",hrmpMaxMessageNumPerCandidate:"u32",validationUpgradeFrequency:"BlockNumber",validationUpgradeDelay:"BlockNumber",maxPovSize:"u32",maxDownwardMessageSize:"u32",preferredDispatchableUpwardMessagesStepWeight:"Weight",hrmpMaxParachainOutboundChannels:"u32",hrmpMaxParathreadOutboundChannels:"u32",hrmpOpenRequestTtl:"u32",hrmpSenderDeposit:"Balance",hrmpRecipientDeposit:"Balance",hrmpChannelMaxCapacity:"u32",hrmpChannelMaxTotalSize:"u32",hrmpMaxParachainInboundChannels:"u32",hrmpMaxParathreadInboundChannels:"u32",hrmpChannelMaxMessageSize:"u32",codeRetentionPeriod:"BlockNumber",parathreadCores:"u32",parathreadRetries:"u32",groupRotationFrequency:"BlockNumber",chainAvailabilityPeriod:"BlockNumber",threadAvailabilityPeriod:"BlockNumber",schedulingLookahead:"u32",maxValidatorsPerCore:"Option",maxValidators:"Option",disputePeriod:"SessionIndex",disputePostConclusionAcceptancePeriod:"BlockNumber",disputeMaxSpamSlots:"u32",disputeConclusionByTimeOutPeriod:"BlockNumber",noShowSlots:"u32",nDelayTranches:"u32",zerothDelayTrancheWidth:"u32",neededApprovals:"u32",relayVrfModuloSamples:"u32"},InboundDownwardMessage:{pubSentAt:"BlockNumber",pubMsg:"DownwardMessage"},InboundHrmpMessage:{sentAt:"BlockNumber",data:"Bytes"},InboundHrmpLimitations:{validWatermarks:"Vec"},InboundHrmpMessages:"Vec",LocalValidationData:{parentHead:"HeadData",balance:"Balance",codeUpgradeAllowed:"Option"},MessageIngestionType:{downwardMessages:"Vec",horizontalMessages:"BTreeMap"},MessageQueueChain:"RelayChainHash",NodeFeatures:"BitVec",OccupiedCore:{nextUpOnAvailable:"Option",occupiedSince:"BlockNumber",timeOutAt:"BlockNumber",nextUpOnTimeOut:"Option",availability:"BitVec",groupResponsible:"GroupIndex",candidateHash:"CandidateHash",candidateDescriptor:"CandidateDescriptor"},OccupiedCoreAssumption:{_enum:["Included,","TimedOut","Free"]},OutboundHrmpChannelLimitations:{bytesRemaining:"u32",messagesRemaining:"u32"},OutboundHrmpMessage:{recipient:"u32",data:"Bytes"},PendingSlashes:{_alias:{slashKeys:"keys"},slashKeys:"BTreeMap",kind:"SlashingOffenceKind"},ParachainDispatchOrigin:{_enum:["Signed","Parachain","Root"]},ParachainInherentData:{validationData:"PersistedValidationData",relayChainState:"StorageProof",downwardMessages:"Vec",horizontalMessages:"BTreeMap"},ParachainsInherentData:{bitfields:"SignedAvailabilityBitfields",backedCandidates:"Vec",disputes:"MultiDisputeStatementSet",parentHeader:"Header"},ParaGenesisArgs:{genesisHead:"Bytes",validationCode:"Bytes",parachain:"bool"},ParaId:"u32",ParaInfo:{manager:"AccountId",deposit:"Balance",locked:"bool"},ParaLifecycle:{_enum:["Onboarding","Parathread","Parachain","UpgradingToParachain","DowngradingToParathread","OutgoingParathread","OutgoingParachain"]},ParaPastCodeMeta:{upgradeTimes:"Vec",lastPruned:"Option"},ParaScheduling:{_enum:["Always","Dynamic"]},ParathreadClaim:"(ParaId, CollatorId)",ParathreadClaimQueue:{queue:"Vec",nextCoreOffset:"u32"},ParathreadEntry:{claim:"ParathreadClaim",retries:"u32"},ParaValidatorIndex:"u32",PersistedValidationData:{parentHead:"HeadData",relayParentNumber:"RelayChainBlockNumber",relayParentStorageRoot:"Hash",maxPovSize:"u32"},PvfCheckStatement:{accept:"bool",subject:"ValidationCodeHash",sessionIndex:"SessionIndex",validatorIndex:"ParaValidatorIndex"},QueuedParathread:{claim:"ParathreadEntry",coreOffset:"u32"},RelayBlockNumber:"u32",RelayChainBlockNumber:"RelayBlockNumber",RelayHash:"Hash",RelayChainHash:"RelayHash",Remark:"[u8; 32]",ReplacementTimes:{expectedAt:"BlockNumber",activatedAt:"BlockNumber"},Retriable:{_enum:{Never:"Null",WithRetries:"u32"}},ScheduledCore:{paraId:"ParaId",collator:"Option"},Scheduling:{_enum:["Always","Dynamic"]},ScrapedOnChainVotes:{session:"SessionIndex",backingValidatorsPerCandidate:"Vec<(CandidateReceipt, Vec<(ParaValidatorIndex, ValidityAttestation)>)>",disputes:"MultiDisputeStatementSet"},SessionInfo:{activeValidatorIndices:"Vec",randomSeed:"[u8; 32]",disputePeriod:"SessionIndex",validators:"Vec",discoveryKeys:"Vec",assignmentKeys:"Vec",validatorGroups:"Vec>",nCores:"u32",zerothDelayTrancheWidth:"u32",relayVrfModuloSamples:"u32",nDelayTranches:"u32",noShowSlots:"u32",neededApprovals:"u32"},OldV1SessionInfo:{validators:"Vec",discoveryKeys:"Vec",assignmentKeys:"Vec",validatorGroups:"Vec>",nCores:"u32",zerothDelayTrancheWidth:"u32",relayVrfModuloSamples:"u32",nDelayTranches:"u32",noShowSlots:"u32",neededApprovals:"u32"},SessionInfoValidatorGroup:"Vec",SignedAvailabilityBitfield:{payload:"BitVec",validatorIndex:"ParaValidatorIndex",signature:"ValidatorSignature"},SignedAvailabilityBitfields:"Vec",SigningContext:{sessionIndex:"SessionIndex",parentHash:"Hash"},SlashingOffenceKind:{_enum:["ForInvalid","AgainstValid"]},Statement:{_enum:{Never:"Null",Candidate:"Hash",Valid:"Hash",Invalid:"Hash"}},TransientValidationData:{maxCodeSize:"u32",maxHeadDataSize:"u32",balance:"Balance",codeUpgradeAllowed:"Option",dmqLength:"u32"},UpgradeGoAhead:{_enum:["Abort","GoAhead"]},UpgradeRestriction:{_enum:["Present"]},UpwardMessage:"Bytes",ValidationFunctionParams:{maxCodeSize:"u32",relayChainHeight:"RelayChainBlockNumber",codeUpgradeAllowed:"Option"},ValidationCode:"Bytes",ValidationCodeHash:"Hash",ValidationData:{persisted:"PersistedValidationData",transient:"TransientValidationData"},ValidationDataType:{validationData:"ValidationData",relayChainState:"Vec"},ValidatorSignature:"Signature",ValidityAttestation:{_enum:{Never:"Null",Implicit:"ValidatorSignature",Explicit:"ValidatorSignature"}},MessagingStateSnapshot:{relayDispatchQueueSize:"(u32, u32)",egressChannels:"Vec"},MessagingStateSnapshotEgressEntry:"(ParaId, AbridgedHrmpChannel)",SystemInherentData:"ParachainInherentData",VecInboundHrmpMessage:"Vec"}},Yl={rpc:{},types:{Approvals:"[bool; 4]"}},Ql={rpc:{},types:{AccountStatus:{validity:"AccountValidity",freeBalance:"Balance",lockedBalance:"Balance",signature:"Vec",vat:"Permill"},AccountValidity:{_enum:["Invalid","Initiated","Pending","ValidLow","ValidHigh","Completed"]}}},$l={rpc:{},runtime:{DryRunApi:[{methods:{dry_run_call:{description:"Dry run call",params:[{name:"origin",type:"OriginCaller"},{name:"call",type:"RuntimeCall"}],type:"Result"},dry_run_xcm:{description:"Dry run XCM program",params:[{name:"originLocation",type:"VersionedMultiLocation"},{name:"xcm",type:"VersionedXcm"}],type:"Result"}},version:1}]},types:{PostDispatchInfo:{actualWeight:"Option",paysFee:"Pays"},DispatchResultWithPostInfo:"Result",CallDryRunEffects:{executionResult:"DispatchResultWithPostInfo",emittedEvents:"Vec",localXcm:"Option",forwardedXcms:"Vec<(VersionedMultiLocation, Vec)>"},XcmDryRunEffects:{executionResult:"OutcomeV4",emittedEvents:"Vec",forwardedXcms:"Vec<(VersionedMultiLocation, Vec)>"},XcmDryRunApiError:{_enum:["Unimplemented","VersionedConversionFailed"]}}},ef=["AssetInstance","Fungibility","Junction","Junctions","MultiAsset","MultiAssetFilter","MultiLocation","Response","WildFungibility","WildMultiAsset","Xcm","XcmError"];function tf(e){return ef.reduce(((t,n)=>(0,M.b)(t,{[n]:`${n}${e}`})),{})}const nf={rpc:{},types:{BodyId:{_enum:{Unit:"Null",Named:"Vec",Index:"Compact",Executive:"Null",Technical:"Null",Legislative:"Null",Judicial:"Null"}},BodyPart:{_enum:{Voice:"Null",Members:"Compact",Fraction:{nom:"Compact",denom:"Compact"},AtLeastProportion:{nom:"Compact",denom:"Compact"},MoreThanProportion:{nom:"Compact",denom:"Compact"}}},InteriorMultiLocation:"Junctions",NetworkId:{_enum:{Any:"Null",Named:"Vec",Polkadot:"Null",Kusama:"Null"}},XcmOrigin:{_enum:{Xcm:"MultiLocation"}},XcmpMessageFormat:{_enum:["ConcatenatedVersionedXcm","ConcatenatedEncodedBlob","Signals"]},XcmAssetId:{_enum:{Concrete:"MultiLocation",Abstract:"Bytes"}},InboundStatus:{_enum:["Ok","Suspended"]},OutboundStatus:{_enum:["Ok","Suspended"]},MultiAssets:"Vec",FungibilityV0:"FungibilityV1",WildFungibilityV0:"WildFungibilityV1",AssetInstanceV0:{_enum:{Undefined:"Null",Index8:"u8",Index16:"Compact",Index32:"Compact",Index64:"Compact",Index128:"Compact",Array4:"[u8; 4]",Array8:"[u8; 8]",Array16:"[u8; 16]",Array32:"[u8; 32]",Blob:"Vec"}},JunctionV0:{_enum:{Parent:"Null",Parachain:"Compact",AccountId32:{network:"NetworkId",id:"AccountId"},AccountIndex64:{network:"NetworkId",index:"Compact"},AccountKey20:{network:"NetworkId",key:"[u8; 20]"},PalletInstance:"u8",GeneralIndex:"Compact",GeneralKey:"Vec",OnlyChild:"Null",Plurality:{id:"BodyId",part:"BodyPart"}}},MultiAssetV0:{_enum:{None:"Null",All:"Null",AllFungible:"Null",AllNonFungible:"Null",AllAbstractFungible:"Vec",AllAbstractNonFungible:"Vec",AllConcreteFungible:"MultiLocationV0",AllConcreteNonFungible:"MultiLocationV0",AbstractFungible:{id:"Vec",instance:"Compact"},AbstractNonFungible:{class:"Vec",instance:"AssetInstanceV0"},ConcreteFungible:{id:"MultiLocationV0",amount:"Compact"},ConcreteNonFungible:{class:"MultiLocationV0",instance:"AssetInstanceV0"}}},MultiLocationV0:{_enum:{Here:"Null",X1:"JunctionV0",X2:"(JunctionV0, JunctionV0)",X3:"(JunctionV0, JunctionV0, JunctionV0)",X4:"(JunctionV0, JunctionV0, JunctionV0, JunctionV0)",X5:"(JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0)",X6:"(JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0)",X7:"(JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0)",X8:"(JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0)"}},OriginKindV0:{_enum:["Native","SovereignAccount","Superuser","Xcm"]},ResponseV0:{_enum:{Assets:"Vec"}},XcmV0:{_enum:{WithdrawAsset:{assets:"Vec",effects:"Vec"},ReserveAssetDeposit:{assets:"Vec",effects:"Vec"},ReceiveTeleportedAsset:{assets:"Vec",effects:"Vec"},QueryResponse:{queryId:"Compact",response:"ResponseV0"},TransferAsset:{assets:"Vec",dest:"MultiLocationV0"},TransferReserveAsset:{assets:"Vec",dest:"MultiLocationV0",effects:"Vec"},Transact:{originType:"XcmOriginKind",requireWeightAtMost:"u64",call:"DoubleEncodedCall"},HrmpNewChannelOpenRequest:{sender:"Compact",maxMessageSize:"Compact",maxCapacity:"Compact"},HrmpChannelAccepted:{recipient:"Compact"},HrmpChannelClosing:{initiator:"Compact",sender:"Compact",recipient:"Compact"},RelayedFrom:{who:"MultiLocationV0",message:"XcmV0"}}},XcmErrorV0:{_enum:{Undefined:"Null",Overflow:"Null",Unimplemented:"Null",UnhandledXcmVersion:"Null",UnhandledXcmMessage:"Null",UnhandledEffect:"Null",EscalationOfPrivilege:"Null",UntrustedReserveLocation:"Null",UntrustedTeleportLocation:"Null",DestinationBufferOverflow:"Null",SendFailed:"Null",CannotReachDestination:"(MultiLocation, Xcm)",MultiLocationFull:"Null",FailedToDecode:"Null",BadOrigin:"Null",ExceedsMaxMessageSize:"Null",FailedToTransactAsset:"Null",WeightLimitReached:"Weight",Wildcard:"Null",TooMuchWeightRequired:"Null",NotHoldingFees:"Null",WeightNotComputable:"Null",Barrier:"Null",NotWithdrawable:"Null",LocationCannotHold:"Null",TooExpensive:"Null",AssetNotFound:"Null",RecursionLimitReached:"Null"}},XcmOrderV0:{_enum:{Null:"Null",DepositAsset:{assets:"Vec",dest:"MultiLocationV0"},DepositReserveAsset:{assets:"Vec",dest:"MultiLocationV0",effects:"Vec"},ExchangeAsset:{give:"Vec",receive:"Vec"},InitiateReserveWithdraw:{assets:"Vec",reserve:"MultiLocationV0",effects:"Vec"},InitiateTeleport:{assets:"Vec",dest:"MultiLocationV0",effects:"Vec"},QueryHolding:{queryId:"Compact",dest:"MultiLocationV0",assets:"Vec"},BuyExecution:{fees:"MultiAssetV0",weight:"u64",debt:"u64",haltOnError:"bool",xcm:"Vec"}}},AssetInstanceV1:{_enum:{Undefined:"Null",Index:"Compact",Array4:"[u8; 4]",Array8:"[u8; 8]",Array16:"[u8; 16]",Array32:"[u8; 32]",Blob:"Bytes"}},FungibilityV1:{_enum:{Fungible:"Compact",NonFungible:"AssetInstanceV1"}},JunctionV1:{_enum:{Parachain:"Compact",AccountId32:{network:"NetworkId",id:"AccountId"},AccountIndex64:{network:"NetworkId",index:"Compact"},AccountKey20:{network:"NetworkId",key:"[u8; 20]"},PalletInstance:"u8",GeneralIndex:"Compact",GeneralKey:"Vec",OnlyChild:"Null",Plurality:{id:"BodyId",part:"BodyPart"}}},JunctionsV1:{_enum:{Here:"Null",X1:"JunctionV1",X2:"(JunctionV1, JunctionV1)",X3:"(JunctionV1, JunctionV1, JunctionV1)",X4:"(JunctionV1, JunctionV1, JunctionV1, JunctionV1)",X5:"(JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1)",X6:"(JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1)",X7:"(JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1)",X8:"(JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1)"}},MultiAssetsV1:"Vec",MultiAssetV1:{id:"XcmAssetId",fungibility:"FungibilityV1"},MultiAssetFilterV1:{_enum:{Definite:"MultiAssetsV1",Wild:"WildMultiAssetV1"}},MultiLocationV1:{parents:"u8",interior:"JunctionsV1"},OriginKindV1:"OriginKindV0",ResponseV1:{_enum:{Assets:"MultiAssetsV1"}},WildFungibilityV1:{_enum:["Fungible","NonFungible"]},WildMultiAssetV1:{_enum:{All:"Null",AllOf:{id:"XcmAssetId",fungibility:"WildFungibilityV1"}}},XcmV1:{_enum:{WithdrawAsset:{assets:"MultiAssetsV1",effects:"Vec"},ReserveAssetDeposit:{assets:"MultiAssetsV1",effects:"Vec"},ReceiveTeleportedAsset:{assets:"MultiAssetsV1",effects:"Vec"},QueryResponse:{queryId:"Compact",response:"ResponseV1"},TransferAsset:{assets:"MultiAssetsV1",dest:"MultiLocationV1"},TransferReserveAsset:{assets:"MultiAssetsV1",dest:"MultiLocationV1",effects:"Vec"},Transact:{originType:"XcmOriginKind",requireWeightAtMost:"u64",call:"DoubleEncodedCall"},HrmpNewChannelOpenRequest:{sender:"Compact",maxMessageSize:"Compact",maxCapacity:"Compact"},HrmpChannelAccepted:{recipient:"Compact"},HrmpChannelClosing:{initiator:"Compact",sender:"Compact",recipient:"Compact"},RelayedFrom:{who:"MultiLocationV1",message:"XcmV1"}}},XcmErrorV1:{_enum:{Undefined:"Null",Overflow:"Null",Unimplemented:"Null",UnhandledXcmVersion:"Null",UnhandledXcmMessage:"Null",UnhandledEffect:"Null",EscalationOfPrivilege:"Null",UntrustedReserveLocation:"Null",UntrustedTeleportLocation:"Null",DestinationBufferOverflow:"Null",SendFailed:"Null",CannotReachDestination:"(MultiLocationV1, XcmV1)",MultiLocationFull:"Null",FailedToDecode:"Null",BadOrigin:"Null",ExceedsMaxMessageSize:"Null",FailedToTransactAsset:"Null",WeightLimitReached:"Weight",Wildcard:"Null",TooMuchWeightRequired:"Null",NotHoldingFees:"Null",WeightNotComputable:"Null",Barrier:"Null",NotWithdrawable:"Null",LocationCannotHold:"Null",TooExpensive:"Null",AssetNotFound:"Null",DestinationUnsupported:"Null",RecursionLimitReached:"Null"}},XcmOrderV1:{_enum:{Noop:"Null",DepositAsset:{assets:"MultiAssetFilterV1",maxAssets:"u32",beneficiary:"MultiLocationV1"},DepositReserveAsset:{assets:"MultiAssetFilterV1",maxAssets:"u32",dest:"MultiLocationV1",effects:"Vec"},ExchangeAsset:{give:"MultiAssetFilterV1",receive:"MultiAssetsV1"},InitiateReserveWithdraw:{assets:"MultiAssetFilterV1",reserve:"MultiLocationV1",effects:"Vec"},InitiateTeleport:{assets:"MultiAssetFilterV1",dest:"MultiLocationV1",effects:"Vec"},QueryHolding:{queryId:"Compact",dest:"MultiLocationV1",assets:"MultiAssetFilterV1"},BuyExecution:{fees:"MultiAssetV1",weight:"u64",debt:"u64",haltOnError:"bool",instructions:"Vec"}}},AssetIdV2:{_enum:{Concrete:"MultiLocationV2",Abstract:"Bytes"}},AssetInstanceV2:{_enum:{Undefined:"Null",Index:"Compact",Array4:"[u8;4]",Array8:"[u8;8]",Array16:"[u8;16]",Array32:"[u8;32]",Blob:"Bytes"}},BodyIdV2:{_enum:{Unit:"Null",Named:"Bytes",Index:"Compact",Executive:"Null",Technical:"Null",Legislative:"Null",Judicial:"Null",Defense:"Null",Administration:"Null",Treasury:"Null"}},BodyPartV2:{_enum:{Voice:"Null",Members:{count:"Compact"},Fraction:{nom:"Compact",denom:"Compact"},AtLeastProportion:{nom:"Compact",denom:"Compact"},MoreThanProportion:{nom:"Compact",denom:"Compact"}}},NetworkIdV2:{_enum:{Any:"Null",Named:"Bytes",Polkadot:"Null",Kusama:"Null"}},JunctionV2:{_enum:{Parachain:"Compact",AccountId32:{network:"NetworkIdV2",id:"[u8; 32]"},AccountIndex64:{network:"NetworkIdV2",index:"Compact"},AccountKey20:{network:"NetworkIdV2",key:"[u8; 20]"},PalletInstance:"u8",GeneralIndex:"Compact",GeneralKey:"Bytes",OnlyChild:"Null",Plurality:{id:"BodyIdV2",part:"BodyPartV2"}}},JunctionsV2:{_enum:{Here:"Null",X1:"JunctionV2",X2:"(JunctionV2, JunctionV2)",X3:"(JunctionV2, JunctionV2, JunctionV2)",X4:"(JunctionV2, JunctionV2, JunctionV2, JunctionV2)",X5:"(JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2)",X6:"(JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2)",X7:"(JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2)",X8:"(JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2)"}},FungibilityV2:{_enum:{Fungible:"Compact",NonFungible:"AssetInstanceV2"}},InteriorMultiLocationV2:"JunctionsV2",MultiAssetV2:{id:"AssetIdV2",fun:"FungibilityV2"},MultiAssetsV2:"Vec",MultiAssetFilterV2:{_enum:{Definite:"MultiAssetsV2",Wild:"WildMultiAssetV2"}},MultiLocationV2:{parents:"u8",interior:"JunctionsV2"},OriginKindV2:{_enum:{Native:"Null",SovereignAccount:"Null",Superuser:"Null",Xcm:"Null"}},WildFungibilityV2:{_enum:{Fungible:"Null",NonFungible:"Null"}},ResponseV2:{_enum:{Null:"Null",Assets:"MultiAssetsV2",ExecutionResult:"Option<(u32, XcmErrorV2)>",Version:"u32"}},ResponseV2Error:"(u32, XcmErrorV2)",WeightLimitV2:{_enum:{Unlimited:"Null",Limited:"Compact"}},InstructionV2:{_enum:{WithdrawAsset:"MultiAssetsV2",ReserveAssetDeposited:"MultiAssetsV2",ReceiveTeleportedAsset:"MultiAssetsV2",QueryResponse:{queryId:"Compact",response:"ResponseV2",maxWeight:"Compact"},TransferAsset:{assets:"MultiAssetsV2",beneficiary:"MultiLocationV2"},TransferReserveAsset:{assets:"MultiAssetsV2",dest:"MultiLocationV2",xcm:"XcmV2"},Transact:{originType:"XcmOriginKind",requireWeightAtMost:"Compact",call:"DoubleEncodedCall"},HrmpNewChannelOpenRequest:{sender:"Compact",maxMessageSize:"Compact",maxCapacity:"Compact"},HrmpChannelAccepted:{recipient:"Compact"},HrmpChannelClosing:{initiator:"Compact",sender:"Compact",recipient:"Compact"},ClearOrigin:"Null",DescendOrigin:"InteriorMultiLocationV2",ReportError:{queryId:"Compact",dest:"MultiLocationV2",maxResponseWeight:"Compact"},DepositAsset:{assets:"MultiAssetFilterV2",maxAssets:"Compact",beneficiary:"MultiLocationV2"},DepositReserveAsset:{assets:"MultiAssetFilterV2",maxAssets:"Compact",dest:"MultiLocationV2",xcm:"XcmV2"},ExchangeAsset:{give:"MultiAssetFilterV2",receive:"MultiAssetsV2"},InitiateReserveWithdraw:{assets:"MultiAssetFilterV2",reserve:"MultiLocationV2",xcm:"XcmV2"},InitiateTeleport:{assets:"MultiAssetFilterV2",dest:"MultiLocationV2",xcm:"XcmV2"},QueryHolding:{queryId:"Compact",dest:"MultiLocationV2",assets:"MultiAssetFilterV2",maxResponseWeight:"Compact"},BuyExecution:{fees:"MultiAssetV2",weightLimit:"WeightLimitV2"},RefundSurplus:"Null",SetErrorHandler:"XcmV2",SetAppendix:"XcmV2",ClearError:"Null",ClaimAsset:{assets:"MultiAssetsV2",ticket:"MultiLocationV2"},Trap:"Compact",SubscribeVersion:{queryId:"Compact",maxResponseWeight:"Compact"},UnsubscribeVersion:"Null"}},WildMultiAssetV2:{_enum:{All:"Null",AllOf:{id:"AssetIdV2",fun:"WildFungibilityV2"}}},XcmV2:"Vec",XcmErrorV2:{_enum:{Overflow:"Null",Unimplemented:"Null",UntrustedReserveLocation:"Null",UntrustedTeleportLocation:"Null",MultiLocationFull:"Null",MultiLocationNotInvertible:"Null",BadOrigin:"Null",InvalidLocation:"Null",AssetNotFound:"Null",FailedToTransactAsset:"Null",NotWithdrawable:"Null",LocationCannotHold:"Null",ExceedsMaxMessageSize:"Null",DestinationUnsupported:"Null",Transport:"Null",Unroutable:"Null",UnknownClaim:"Null",FailedToDecode:"Null",MaxWeightInvalid:"Null",NotHoldingFees:"Null",TooExpensive:"Null",Trap:"u64",UnhandledXcmVersion:"Null",WeightLimitReached:"Weight",Barrier:"Null",WeightNotComputable:"Null"}},AssetIdV3:{_enum:{Concrete:"MultiLocationV3",Abstract:"Bytes"}},BodyIdV3:{_enum:{Unit:"Null",Moniker:"[u8;4]",Index:"Compact",Executive:"Null",Technical:"Null",Legislative:"Null",Judicial:"Null",Defense:"Null",Administration:"Null",Treasury:"Null"}},BodyPartV3:{_enum:{Voice:"Null",Members:{count:"Compact"},Fraction:{nom:"Compact",denom:"Compact"},AtLeastProportion:{nom:"Compact",denom:"Compact"},MoreThanProportion:{nom:"Compact",denom:"Compact"}}},AssetInstanceV3:{_enum:{Undefined:"Null",Index:"Compact",Array4:"[u8;4]",Array8:"[u8;8]",Array16:"[u8;16]",Array32:"[u8;32]"}},FungibilityV3:{_enum:{Fungible:"Compact",NonFungible:"AssetInstanceV3"}},InteriorMultiLocationV3:"JunctionsV3",JunctionV3:{_enum:{Parachain:"Compact",AccountId32:{network:"Option",id:"[u8;32]"},AccountIndex64:{network:"Option",index:"Compact"},AccountKey20:{network:"Option",key:"[u8;20]"},PalletInstance:"u8",GeneralIndex:"Compact",GeneralKey:{length:"u8",data:"[u8;32]"},OnlyChild:"Null",Plurality:{id:"BodyIdV3",part:"BodyPartV3"},GlobalConsensus:"NetworkIdV3"}},JunctionsV3:{_enum:{Here:"Null",X1:"JunctionV3",X2:"(JunctionV3, JunctionV3)",X3:"(JunctionV3, JunctionV3, JunctionV3)",X4:"(JunctionV3, JunctionV3, JunctionV3, JunctionV3)",X5:"(JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3)",X6:"(JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3)",X7:"(JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3)",X8:"(JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3)"}},MaybeErrorCodeV3:{_enum:{Success:"Null",Error:"Bytes",TruncatedError:"Bytes"}},MaxPalletsInfo:"u32",MultiAssetV3:{id:"AssetIdV3",fun:"FungibilityV3"},MultiAssetsV3:"Vec",MultiAssetFilterV3:{_enum:{Definite:"MultiAssetsV3",Wild:"WildMultiAssetV3"}},MultiLocationV3:{parents:"u8",interior:"JunctionsV3"},MaxPalletNameLen:"u32",NetworkIdV3:{_enum:{ByGenesis:"[u8;32]",ByFork:{blockNumber:"u64",blockHash:"[u8;32]"},Polkadot:"Null",Kusama:"Null",Westend:"Null",Rococo:"Null",Wococo:"Null",Ethereum:{chainId:"Compact"},BitcoinCore:"Null",BitcoinCash:"Null",PolkadotBulletin:"Null"}},OriginKindV3:"OriginKindV2",PalletInfoV3:{index:"Compact",name:"Bytes",moduleName:"Bytes",major:"Compact",minor:"Compact",patch:"Compact"},WildFungibilityV3:"WildFungibilityV2",QueryResponseInfoV3:{destination:"MultiLocationV3",queryId:"Compact",maxWeight:"WeightV2"},ResponseV3:{_enum:{Null:"Null",Assets:"MultiAssetsV3",ExecutionResult:"Option<(u32,XcmErrorV3)>",Version:"u32",PalletsInfo:"Vec",DispatchResult:"MaybeErrorCodeV3"}},XcmErrorV3:{_enum:{Overflow:"Null",Unimplemented:"Null",UntrustedReserveLocation:"Null",UntrustedTeleportLocation:"Null",LocationFull:"Null",LocationNotInvertible:"Null",BadOrigin:"Null",InvalidLocation:"Null",AssetNotFound:"Null",FailedToTransactAsset:"Null",NotWithdrawable:"Null",LocationCannotHold:"Null",ExceedsMaxMessageSize:"Null",DestinationUnsupported:"Null",Transport:"Null",Unroutable:"Null",UnknownClaim:"Null",FailedToDecode:"Null",MaxWeightInvalid:"Null",NotHoldingFees:"Null",TooExpensive:"Null",Trap:"u64",ExpectationFalse:"Null",PalletNotFound:"Null",NameMismatch:"Null",VersionIncompatible:"Null",HoldingWouldOverflow:"Null",ExportError:"Null",ReanchorFailed:"Null",NoDeal:"Null",FeesNotMet:"Null",LockError:"Null",NoPermission:"Null",Unanchored:"Null",NotDepositable:"Null",UnhandledXcmVersion:"Null",WeightLimitReached:"WeightV2",Barrier:"Null",ExceedsStackLimit:"Null"}},ResponseV3Error:"(u32, XcmErrorV3)",ResponseV3Result:"Option<(u32, ResponseV3Error)>",WeightLimitV3:{_enum:{Unlimited:"Null",Limited:"WeightV2"}},InstructionV3:{_enum:{WithdrawAsset:"MultiAssetsV3",ReserveAssetDeposited:"MultiAssetsV3",ReceiveTeleportedAsset:"MultiAssetsV3",QueryResponse:{queryId:"Compact",response:"ResponseV3",maxWeight:"WeightV2",querier:"Option"},TransferAsset:{assets:"MultiAssetsV3",beneficiary:"MultiLocationV3"},TransferReserveAsset:{assets:"MultiAssetsV3",dest:"MultiLocationV3",xcm:"XcmV3"},Transact:{originKind:"XcmOriginKind",requireWeightAtMost:"WeightV2",call:"DoubleEncodedCall"},HrmpNewChannelOpenRequest:{sender:"Compact",maxMessageSize:"Compact",maxCapacity:"Compact"},HrmpChannelAccepted:{recipient:"Compact"},HrmpChannelClosing:{initiator:"Compact",sender:"Compact",recipient:"Compact"},ClearOrigin:"Null",DescendOrigin:"JunctionsV3",ReportError:"QueryResponseInfoV3",DepositAsset:{assets:"MultiAssetFilterV3",beneficiary:"MultiLocationV3"},DepositReserveAsset:{assets:"MultiAssetFilterV3",dest:"MultiLocationV3",xcm:"XcmV3"},ExchangeAsset:{give:"MultiAssetFilterV3",want:"MultiAssetsV3",maximal:"bool"},InitiateReserveWithdraw:{assets:"MultiAssetFilterV3",reserve:"MultiLocationV3",xcm:"XcmV3"},InitiateTeleport:{assets:"MultiAssetFilterV3",dest:"MultiLocationV3",xcm:"XcmV3"},ReportHolding:{responseInfo:"QueryResponseInfoV3",assets:"MultiAssetFilterV3"},BuyExecution:{fees:"MultiAssetV3",weightLimit:"WeightLimitV3"},RefundSurplus:"Null",SetErrorHandler:"XcmV3",SetAppendix:"XcmV3",ClearError:"Null",ClaimAsset:{assets:"MultiAssetsV3",ticket:"MultiLocationV3"},Trap:"Compact",SubscribeVersion:{queryId:"Compact",maxResponseWeight:"WeightV2"},UnsubscribeVersion:"Null",BurnAsset:"MultiAssetsV3",ExpectAsset:"MultiAssetsV3",ExpectOrigin:"Option",ExpectError:"Option<(u32, XcmErrorV3)>",ExpectTransactStatus:"MaybeErrorCodeV3",QueryPallet:{moduleName:"Vec",responseInfo:"QueryResponseInfoV3"},ExpectPallet:{index:"Compact",name:"Vec",moduleName:"Vec",crateMajor:"Compact",minCrateMinor:"Compact"},ReportTransactStatus:"QueryResponseInfoV3",ClearTransactStatus:"Null",UniversalOrigin:"JunctionV3",ExportMessage:{network:"NetworkIdV3",destination:"JunctionsV3",xcm:"XcmV3"},LockAsset:{asset:"MultiAssetV3",unlocker:"MultiLocationV3"},UnlockAsset:{asset:"MultiAssetV3",target:"MultiLocationV3"},NoteUnlockable:{asset:"MultiAssetV3",owner:"MultiLocationV3"},RequestUnlock:{asset:"MultiAssetV3",locker:"MultiLocationV3"},SetFeesMode:{jitWithdraw:"bool"},SetTopic:"[u8; 32]",ClearTopic:"Null",AliasOrigin:"MultiLocationV3",UnpaidExecution:{weightLimit:"WeightLimitV3",checkOrigin:"Option"}}},WildMultiAssetV3:{_enum:{All:"Null",AllOf:{id:"AssetIdV3",fun:"WildFungibilityV2"},AllCounted:"Compact",AllOfCounted:{id:"AssetIdV3",fun:"WildFungibilityV2",count:"Compact"}}},VersionV3:"u32",XcmV3:"Vec",AssetIdV4:"MultiLocationV4",AssetInstanceV4:{_enum:{Undefined:"Null",Index:"Compact",Array4:"[u8;4]",Array8:"[u8;8]",Array16:"[u8;16]",Array32:"[u8;32]"}},FungibilityV4:{_enum:{Fungible:"Compact",NonFungible:"AssetInstanceV4"}},UncheckedFungibilityV4:{_enum:{Fungible:"Compact",NonFungible:"AssetInstanceV4"}},JunctionV4:{_enum:{Parachain:"Compact",AccountId32:{network:"Option",id:"[u8;32]"},AccountIndex64:{network:"Option",index:"Compact"},AccountKey20:{network:"Option",key:"[u8;20]"},PalletInstance:"u8",GeneralIndex:"Compact",GeneralKey:{length:"u8",data:"[u8;32]"},OnlyChild:"Null",Plurality:{id:"BodyIdV3",part:"BodyPartV3"},GlobalConsensus:"NetworkIdV4"}},JunctionsV4:{_enum:{Here:"Null",X1:"[JunctionV4;1]",X2:"[JunctionV4;2]",X3:"[JunctionV4;3]",X4:"[JunctionV4;4]",X5:"[JunctionV4;5]",X6:"[JunctionV4;6]",X7:"[JunctionV4;7]",X8:"[JunctionV4;8]"}},MaxPalletsInfo:"u32",NetworkIdV4:"NetworkIdV3",MultiAssetV4:{id:"AssetIdV4",fun:"FungibilityV4"},MultiAssetsV4:"Vec",MultiAssetFilterV4:{_enum:{Definite:"MultiAssetsV4",Wild:"WildMultiAssetV4"}},MultiLocationV4:{parents:"u8",interior:"JunctionsV4"},OriginKindV4:"XcmOriginKind",PalletInfoV4:"PalletInfoV3",WildFungibilityV4:"WildFungibilityV2",QueryResponseInfoV4:{destination:"MultiLocationV4",queryId:"Compact",maxWeight:"WeightV2"},ResponseV4:{_enum:{Null:"Null",Assets:"MultiAssetsV4",ExecutionResult:"Option<(u32, XcmErrorV3)>",Version:"u32",PalletsInfo:"Vec",DispatchResult:"MaybeErrorCodeV3"}},InstructionV4:{_enum:{WithdrawAsset:"MultiAssetsV4",ReserveAssetDeposited:"MultiAssetsV4",ReceiveTeleportedAsset:"MultiAssetsV4",QueryResponse:{queryId:"Compact",response:"ResponseV4",maxWeight:"WeightV2",querier:"Option"},TransferAsset:{assets:"MultiAssetsV4",beneficiary:"MultiLocationV4"},TransferReserveAsset:{assets:"MultiAssetsV4",dest:"MultiLocationV4",xcm:"XcmV4"},Transact:{originKind:"OriginKindV4",requireWeightAtMost:"WeightV2",call:"DoubleEncodedCall"},HrmpNewChannelOpenRequest:{sender:"Compact",maxMessageSize:"Compact",maxCapacity:"Compact"},HrmpChannelAccepted:{recipient:"Compact"},HrmpChannelClosing:{initiator:"Compact",sender:"Compact",recipient:"Compact"},ClearOrigin:"Null",DescendOrigin:"JunctionsV4",ReportError:"QueryResponseInfoV4",DepositAsset:{assets:"MultiAssetFilterV4",beneficiary:"MultiLocationV4"},DepositReserveAsset:{assets:"MultiAssetFilterV4",dest:"MultiLocationV4",xcm:"XcmV4"},ExchangeAsset:{give:"MultiAssetFilterV4",want:"MultiAssetsV4",maximal:"bool"},InitiateReserveWithdraw:{assets:"MultiAssetFilterV4",reserve:"MultiLocationV4",xcm:"XcmV4"},InitiateTeleport:{assets:"MultiAssetFilterV4",dest:"MultiLocationV4",xcm:"XcmV4"},ReportHolding:{responseInfo:"QueryResponseInfoV4",assets:"MultiAssetFilterV4"},BuyExecution:{fees:"MultiAssetV4",weightLimit:"WeightLimitV3"},RefundSurplus:"Null",SetErrorHandler:"XcmV4",SetAppendix:"XcmV4",ClearError:"Null",ClaimAsset:{assets:"MultiAssetsV4",ticket:"MultiLocationV4"},Trap:"Compact",SubscribeVersion:{queryId:"Compact",maxResponseWeight:"WeightV2"},UnsubscribeVersion:"Null",BurnAsset:"MultiAssetsV4",ExpectAsset:"MultiAssetsV4",ExpectOrigin:"Option",ExpectError:"Option<(u32, XcmErrorV3)>",ExpectTransactStatus:"MaybeErrorCodeV3",QueryPallet:{moduleName:"Vec",responseInfo:"QueryResponseInfoV4"},ExpectPallet:{index:"Compact",name:"Vec",moduleName:"Vec",crateMajor:"Compact",minCrateMinor:"Compact"},ReportTransactStatus:"QueryResponseInfoV4",ClearTransactStatus:"Null",UniversalOrigin:"JunctionV4",ExportMessage:{network:"NetworkIdV4",destination:"JunctionsV4",xcm:"XcmV4"},LockAsset:{asset:"MultiAssetV4",unlocker:"MultiLocationV4"},UnlockAsset:{asset:"MultiAssetV4",target:"MultiLocationV4"},NoteUnlockable:{asset:"MultiAssetV4",owner:"MultiLocationV4"},RequestUnlock:{asset:"MultiAssetV4",locker:"MultiLocationV4"},SetFeesMode:{jitWithdraw:"bool"},SetTopic:"[u8;32]",ClearTopic:"Null",AliasOrigin:"MultiLocationV4",UnpaidExecution:{weightLimit:"WeightLimitV3",checkOrigin:"Option"}}},OutcomeV4:{_enum:{Complete:{used:"WeightV2"},Incomplete:{used:"WeightV2",error:"XcmErrorV3"},Error:{error:"XcmErrorV3"}}},WildMultiAssetV4:{_enum:{All:"Null",AllOf:{id:"AssetIdV4",fun:"WildFungibilityV4"},AllCounted:"Compact",AllOfCounted:{id:"AssetIdV4",fun:"WildFungibilityV4",count:"Compact"}}},VersionV4:"u32",XcmV4:"Vec",XcmErrorV4:"XcmErrorV3",...tf("V4"),DoubleEncodedCall:{encoded:"Bytes"},XcmOriginKind:{_enum:["Native","SovereignAccount","Superuser","Xcm"]},Outcome:{_enum:{Complete:"Weight",Incomplete:"(Weight, XcmErrorV0)",Error:"XcmErrorV0"}},QueryId:"u64",QueryStatus:{_enum:{Pending:{responder:"VersionedMultiLocation",maybeNotify:"Option<(u8, u8)>",timeout:"BlockNumber"},Ready:{response:"VersionedResponse",at:"BlockNumber"}}},QueueConfigData:{suspendThreshold:"u32",dropThreshold:"u32",resumeThreshold:"u32",thresholdWeight:"Weight",weightRestrictDecay:"Weight"},VersionMigrationStage:{_enum:{MigrateSupportedVersion:"Null",MigrateVersionNotifiers:"Null",NotifyCurrentTargets:"Option",MigrateAndNotifyOldTargets:"Null"}},VersionedMultiAsset:{_enum:{V0:"MultiAssetV0",V1:"MultiAssetV1",V2:"MultiAssetV2",V3:"MultiAssetV3",V4:"MultiAssetV4"}},VersionedMultiAssets:{_enum:{V0:"Vec",V1:"MultiAssetsV1",V2:"MultiAssetsV2",V3:"MultiAssetsV3",V4:"MultiAssetsV4"}},VersionedMultiLocation:{_enum:{V0:"MultiLocationV0",V1:"MultiLocationV1",V2:"MultiLocationV2",V3:"MultiLocationV3",V4:"MultiLocationV4"}},VersionedResponse:{V0:"ResponseV0",V1:"ResponseV1",V2:"ResponseV2",V3:"ResponseV3",V4:"ResponseV4"},VersionedXcm:{_enum:{V0:"XcmV0",V1:"XcmV1",V2:"XcmV2",V3:"XcmV3",V4:"XcmV4"}},XcmVersion:"u32"}},rf={rpc:{},runtime:{XcmPaymentApi:[{methods:{query_acceptable_payment_assets:{description:"The API to query acceptable payment assets",params:[{name:"version",type:"u32"}],type:"Result, XcmPaymentApiError>"},query_weight_to_asset_fee:{description:"",params:[{name:"weight",type:"WeightV2"},{name:"asset",type:"XcmVersionedAssetId"}],type:"Result"},query_xcm_weight:{description:"",params:[{name:"message",type:"XcmVersionedXcm"}],type:"Result"}},version:1}]},types:{XcmPaymentApiError:{_enum:["Unimplemented","VersionedConversionFailed","WeightNotComputable","UnhandledXcmVersion","AssetNotFound"]}}},af={rpc:{},runtime:{LocationToAccountApi:[{methods:{convert_location:{description:"Converts `Location` to `AccountId`",params:[{name:"location",type:"XcmVersionedLocation"}],type:"Result"}},version:1}]},types:{Error:{_enum:["Unsupported","VersionedConversionFailed"]}}},sf={rpc:{},types:{ContractCryptoHasher:{_enum:["Blake2x256","Sha2x256","Keccak256"]},ContractDiscriminant:"u32",ContractLayoutArray:{offset:"ContractLayoutKey",len:"u32",cellsPerElem:"u64",layout:"ContractStorageLayout"},ContractLayoutCell:{key:"ContractLayoutKey",ty:"SiLookupTypeId"},ContractLayoutEnum:{dispatchKey:"ContractLayoutKey",variants:"BTreeMap"},ContractLayoutHash:{offset:"ContractLayoutKey",strategy:"ContractLayoutHashingStrategy",layout:"ContractStorageLayout"},ContractLayoutHashingStrategy:{hasher:"ContractCryptoHasher",postfix:"Vec",prefix:"Vec"},ContractLayoutKey:"[u8; 32]",ContractLayoutStruct:{fields:"Vec"},ContractLayoutStructField:{layout:"ContractStorageLayout",name:"Text"},ContractStorageLayout:{_enum:{Cell:"ContractLayoutCell",Hash:"ContractLayoutHash",Array:"ContractLayoutArray",Struct:"ContractLayoutStruct",Enum:"ContractLayoutEnum"}},ContractConstructorSpecV0:{name:"Text",selector:"ContractSelector",args:"Vec",docs:"Vec"},ContractConstructorSpecV1:{name:"Vec",selector:"ContractSelector",args:"Vec",docs:"Vec"},ContractConstructorSpecV2:{label:"Text",selector:"ContractSelector",args:"Vec",docs:"Vec"},ContractConstructorSpecV3:{label:"Text",selector:"ContractSelector",payable:"bool",args:"Vec",docs:"Vec"},ContractConstructorSpecV4:{label:"Text",selector:"ContractSelector",payable:"bool",args:"Vec",docs:"Vec",default:"bool",returnType:"Option"},ContractContractSpecV0:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec"},ContractContractSpecV1:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec"},ContractContractSpecV2:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec"},ContractContractSpecV3:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec"},ContractContractSpecV4:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec",environment:"ContractEnvironmentV4"},ContractContractSpecV5:{constructors:"Vec",messages:"Vec",events:"Vec",docs:"Vec",environment:"ContractEnvironmentV4"},ContractDisplayName:"SiPath",ContractEventParamSpecV0:{name:"Text",indexed:"bool",type:"ContractTypeSpec",docs:"Vec"},ContractEventParamSpecV2:{label:"Text",indexed:"bool",type:"ContractTypeSpec",docs:"Vec"},ContractEventSpecV0:{name:"Text",args:"Vec",docs:"Vec"},ContractEventSpecV1:{name:"Text",args:"Vec",docs:"Vec"},ContractEventSpecV2:{label:"Text",args:"Vec",docs:"Vec"},ContractEventSpecV3:{label:"Text",args:"Vec",docs:"Vec",module_path:"Text",signature_topic:"Option<[u8; 32]>"},ContractMessageParamSpecV0:{name:"Text",type:"ContractTypeSpec"},ContractMessageParamSpecV2:{label:"Text",type:"ContractTypeSpec"},ContractMessageSpecV0:{name:"Text",selector:"ContractSelector",mutates:"bool",payable:"bool",args:"Vec",returnType:"Option",docs:"Vec"},ContractMessageSpecV1:{name:"Vec",selector:"ContractSelector",mutates:"bool",payable:"bool",args:"Vec",returnType:"Option",docs:"Vec"},ContractMessageSpecV2:{label:"Text",selector:"ContractSelector",mutates:"bool",payable:"bool",args:"Vec",returnType:"Option",docs:"Vec"},ContractMessageSpecV3:{label:"Text",selector:"ContractSelector",mutates:"bool",payable:"bool",args:"Vec",returnType:"Option",docs:"Vec",default:"bool"},ContractSelector:"[u8; 4]",ContractTypeSpec:{type:"SiLookupTypeId",displayName:"ContractDisplayName"},ContractConstructorSpecLatest:"ContractConstructorSpecV4",ContractEventSpecLatest:"ContractEventSpecV3",ContractEventParamSpecLatest:"ContractEventParamSpecV2",ContractMessageParamSpecLatest:"ContractMessageParamSpecV2",ContractMessageSpecLatest:"ContractMessageSpecV3",ContractMetadataLatest:"ContractMetadataV5",ContractProjectInfo:{source:"ContractProjectSource",contract:"ContractProjectContract"},ContractMetadataV0:{metadataVersion:"Text",types:"Vec",spec:"ContractContractSpecV0"},ContractMetadataV1:{types:"Vec",spec:"ContractContractSpecV1"},ContractMetadataV2:{types:"Vec",spec:"ContractContractSpecV2"},ContractMetadataV3:{types:"Vec",spec:"ContractContractSpecV3"},ContractMetadataV4:{types:"Vec",spec:"ContractContractSpecV4",version:"Text"},ContractMetadataV5:{types:"Vec",spec:"ContractContractSpecV5",version:"u64"},ContractMetadata:{_enum:{V0:"ContractMetadataV0",V1:"ContractMetadataV1",V2:"ContractMetadataV2",V3:"ContractMetadataV3",V4:"ContractMetadataV4",V5:"ContractMetadataV5"}},ContractProjectV0:{metadataVersion:"Text",source:"ContractProjectSource",contract:"ContractProjectContract",types:"Vec",spec:"ContractContractSpecV0"},ContractProject:"(ContractProjectInfo, ContractMetadata)",ContractProjectContract:{_alias:{docs:"documentation"},name:"Text",version:"Text",authors:"Vec",description:"Option",docs:"Option",repository:"Option",homepage:"Option",license:"Option"},ContractProjectSource:{_alias:{wasmHash:"hash"},wasmHash:"[u8; 32]",language:"Text",compiler:"Text",wasm:"Raw"},ContractEnvironmentV4:{_alias:{hashType:"hash"},accountId:"Option",balance:"Option",blockNumber:"Option",hashType:"Option",timestamp:"Option",maxEventTopics:"Option"}}},of={account_basic:{description:"Returns pallet_evm::Accounts by address.",params:[{name:"address",type:"H160"}],type:"EvmAccount"},account_code_at:{description:"For a given account address, returns pallet_evm::AccountCodes.",params:[{name:"address",type:"H160"}],type:"Bytes"},author:{description:"Returns the converted FindAuthor::find_author authority id.",params:[],type:"H160"},call:{description:"Returns a frame_ethereum::call response. If `estimate` is true,",params:[{name:"from",type:"H160"},{name:"to",type:"H160"},{name:"data",type:"Vec"},{name:"value",type:"U256"},{name:"gasLimit",type:"U256"},{name:"maxFeePerGas",type:"Option"},{name:"maxPriorityFeePerGas",type:"Option"},{name:"nonce",type:"Option"},{name:"estimate",type:"bool"},{name:"accessList",type:"Option)>>"}],type:"Result"},chain_id:{description:"Returns runtime defined pallet_evm::ChainId.",params:[],type:"u64"},create:{description:"Returns a frame_ethereum::call response. If `estimate` is true,",params:[{name:"from",type:"H160"},{name:"data",type:"Vec"},{name:"value",type:"U256"},{name:"gasLimit",type:"U256"},{name:"maxFeePerGas",type:"Option"},{name:"maxPriorityFeePerGas",type:"Option"},{name:"nonce",type:"Option"},{name:"estimate",type:"bool"},{name:"accessList",type:"Option)>>"}],type:"Result"},current_all:{description:"Return all the current data for a block in a single runtime call.",params:[],type:"(Option, Option>, Option>)"},current_block:{description:"Return the current block.",params:[],type:"BlockV2"},current_receipts:{description:"Return the current receipt.",params:[],type:"Option>"},current_transaction_statuses:{description:"Return the current transaction status.",params:[],type:"Option>"},elasticity:{description:"Return the elasticity multiplier.",params:[],type:"Option"},extrinsic_filter:{description:"Receives a `Vec` and filters all the ethereum transactions.",params:[{name:"xts",type:"Vec"}],type:"Vec"},gas_price:{description:"Returns FixedGasPrice::min_gas_price",params:[],type:"u256"},storage_at:{description:"For a given account address and index, returns pallet_evm::AccountStorages.",params:[{name:"address",type:"H160"},{name:"index",type:"u256"}],type:"H256"}},cf={rpc:{listening:{aliasSection:"net",description:"Returns true if client is actively listening for network connections. Otherwise false.",params:[],type:"bool"},peerCount:{aliasSection:"net",description:"Returns number of peers connected to node.",params:[],type:"Text"},version:{aliasSection:"net",description:"Returns protocol version.",params:[],type:"Text"},clientVersion:{aliasSection:"web3",description:"Returns current client version.",params:[],type:"Text"},sha3:{aliasSection:"web3",description:"Returns sha3 of the given data",params:[{name:"data",type:"Bytes"}],type:"H256"},accounts:{description:"Returns accounts list.",params:[],type:"Vec"},blockNumber:{description:"Returns the blockNumber",params:[],type:"U256"},call:{description:"Call contract, returning the output data.",params:[{name:"request",type:"EthCallRequest"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"Bytes"},chainId:{description:"Returns the chain ID used for transaction signing at the current best block. None is returned if not available.",params:[],type:"U64"},coinbase:{description:"Returns block author.",params:[],type:"H160"},estimateGas:{description:"Estimate gas needed for execution of given contract.",params:[{name:"request",type:"EthCallRequest"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"U256"},feeHistory:{description:"Returns fee history for given block count & reward percentiles",params:[{name:"blockCount",type:"U256"},{name:"newestBlock",type:"BlockNumber"},{name:"rewardPercentiles",type:"Option>"}],type:"EthFeeHistory"},gasPrice:{description:"Returns current gas price.",params:[],type:"U256"},getBalance:{description:"Returns balance of the given account.",params:[{name:"address",type:"H160"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"U256"},getBlockByHash:{description:"Returns block with given hash.",params:[{name:"hash",type:"H256"},{name:"full",type:"bool"}],type:"Option"},getBlockByNumber:{description:"Returns block with given number.",params:[{name:"block",type:"BlockNumber"},{name:"full",type:"bool"}],type:"Option"},getBlockTransactionCountByHash:{description:"Returns the number of transactions in a block with given hash.",params:[{name:"hash",type:"H256"}],type:"U256"},getBlockTransactionCountByNumber:{description:"Returns the number of transactions in a block with given block number.",params:[{name:"block",type:"BlockNumber"}],type:"U256"},getCode:{description:"Returns the code at given address at given time (block number).",params:[{name:"address",type:"H160"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"Bytes"},getFilterChanges:{description:"Returns filter changes since last poll.",params:[{name:"index",type:"U256"}],type:"EthFilterChanges"},getFilterLogs:{description:"Returns all logs matching given filter (in a range 'from' - 'to').",params:[{name:"index",type:"U256"}],type:"Vec"},getLogs:{description:"Returns logs matching given filter object.",params:[{name:"filter",type:"EthFilter"}],type:"Vec"},getProof:{description:"Returns proof for account and storage.",params:[{name:"address",type:"H160"},{name:"storageKeys",type:"Vec"},{name:"number",type:"BlockNumber"}],type:"EthAccount"},getStorageAt:{description:"Returns content of the storage at given address.",params:[{name:"address",type:"H160"},{name:"index",type:"U256"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"H256"},getTransactionByBlockHashAndIndex:{description:"Returns transaction at given block hash and index.",params:[{name:"hash",type:"H256"},{name:"index",type:"U256"}],type:"EthTransaction"},getTransactionByBlockNumberAndIndex:{description:"Returns transaction by given block number and index.",params:[{name:"number",type:"BlockNumber"},{name:"index",type:"U256"}],type:"EthTransaction"},getTransactionByHash:{description:"Get transaction by its hash.",params:[{name:"hash",type:"H256"}],type:"EthTransaction"},getTransactionCount:{description:"Returns the number of transactions sent from given address at given time (block number).",params:[{name:"address",type:"H160"},{isHistoric:!0,isOptional:!0,name:"number",type:"BlockNumber"}],type:"U256"},getTransactionReceipt:{description:"Returns transaction receipt by transaction hash.",params:[{name:"hash",type:"H256"}],type:"EthReceipt"},getUncleByBlockHashAndIndex:{description:"Returns an uncles at given block and index.",params:[{name:"hash",type:"H256"},{name:"index",type:"U256"}],type:"EthRichBlock"},getUncleByBlockNumberAndIndex:{description:"Returns an uncles at given block and index.",params:[{name:"number",type:"BlockNumber"},{name:"index",type:"U256"}],type:"EthRichBlock"},getUncleCountByBlockHash:{description:"Returns the number of uncles in a block with given hash.",params:[{name:"hash",type:"H256"}],type:"U256"},getUncleCountByBlockNumber:{description:"Returns the number of uncles in a block with given block number.",params:[{name:"number",type:"BlockNumber"}],type:"U256"},getWork:{description:"Returns the hash of the current block, the seedHash, and the boundary condition to be met.",params:[],type:"EthWork"},hashrate:{description:"Returns the number of hashes per second that the node is mining with.",params:[],type:"U256"},maxPriorityFeePerGas:{description:"Returns max priority fee per gas",params:[],type:"U256"},mining:{description:"Returns true if client is actively mining new blocks.",params:[],type:"bool"},newBlockFilter:{description:"Returns id of new block filter.",params:[],type:"U256"},newFilter:{description:"Returns id of new filter.",params:[{name:"filter",type:"EthFilter"}],type:"U256"},newPendingTransactionFilter:{description:"Returns id of new block filter.",params:[],type:"U256"},protocolVersion:{description:"Returns protocol version encoded as a string (quotes are necessary).",params:[],type:"u64"},sendRawTransaction:{description:"Sends signed transaction, returning its hash.",params:[{name:"bytes",type:"Bytes"}],type:"H256"},sendTransaction:{description:"Sends transaction; will block waiting for signer to return the transaction hash",params:[{name:"tx",type:"EthTransactionRequest"}],type:"H256"},submitHashrate:{description:"Used for submitting mining hashrate.",params:[{name:"index",type:"U256"},{name:"hash",type:"H256"}],type:"bool"},submitWork:{description:"Used for submitting a proof-of-work solution.",params:[{name:"nonce",type:"H64"},{name:"headerHash",type:"H256"},{name:"mixDigest",type:"H256"}],type:"bool"},subscribe:{description:"Subscribe to Eth subscription.",params:[{name:"kind",type:"EthSubKind"},{isOptional:!0,name:"params",type:"EthSubParams"}],pubsub:["subscription","subscribe","unsubscribe"],type:"Null"},syncing:{description:"Returns an object with data about the sync status or false.",params:[],type:"EthSyncStatus"},uninstallFilter:{description:"Uninstalls filter.",params:[{name:"index",type:"U256"}],type:"bool"}},runtime:{ConvertTransactionRuntimeApi:[{methods:{convert_transaction:{description:"Converts an Ethereum-style transaction to Extrinsic",params:[{name:"transaction",type:"TransactionV2"}],type:"Extrinsic"}},version:2}],DebugRuntimeApi:[{methods:{trace_block:{description:"Trace all block extrinsics",params:[{name:"extrinsics",type:"Vec"},{name:"knownTransactions",type:"Vec"}],type:"Result<(), DispatchError>"},trace_transaction:{description:"Trace transaction extrinsics",params:[{name:"extrinsics",type:"Vec"},{name:"transaction",type:"EthTransaction"}],type:"Result<(), DispatchError>"}},version:4}],EthereumRuntimeRPCApi:[{methods:{...of},version:4},{methods:{...of,call:{description:"Returns a frame_ethereum::call response. If `estimate` is true,",params:[{name:"from",type:"H160"},{name:"to",type:"H160"},{name:"data",type:"Vec"},{name:"value",type:"U256"},{name:"gasLimit",type:"U256"},{name:"maxFeePerGas",type:"Option"},{name:"maxPriorityFeePerGas",type:"Option"},{name:"nonce",type:"Option"},{name:"estimate",type:"bool"},{name:"accessList",type:"Option)>>"}],type:"Result"},create:{description:"Returns a frame_ethereum::call response. If `estimate` is true,",params:[{name:"from",type:"H160"},{name:"data",type:"Vec"},{name:"value",type:"U256"},{name:"gasLimit",type:"U256"},{name:"maxFeePerGas",type:"Option"},{name:"maxPriorityFeePerGas",type:"Option"},{name:"nonce",type:"Option"},{name:"estimate",type:"bool"},{name:"accessList",type:"Option)>>"}],type:"Result"}},version:5}]},types:{BlockV0:{header:"EthHeader",transactions:"Vec",ommers:"Vec"},LegacyTransaction:{nonce:"U256",gasPrice:"U256",gasLimit:"U256",action:"EthTransactionAction",value:"U256",input:"Bytes",signature:"EthTransactionSignature"},TransactionV0:"LegacyTransaction",BlockV1:{header:"EthHeader",transactions:"Vec",ommers:"Vec"},EIP2930Transaction:{chainId:"u64",nonce:"U256",gasPrice:"U256",gasLimit:"U256",action:"EthTransactionAction",value:"U256",input:"Bytes",accessList:"EthAccessList",oddYParity:"bool",r:"H256",s:"H256"},TransactionV1:{_enum:{Legacy:"LegacyTransaction",EIP2930:"EIP2930Transaction"}},BlockV2:{header:"EthHeader",transactions:"Vec",ommers:"Vec"},EIP1559Transaction:{chainId:"u64",nonce:"U256",maxPriorityFeePerGas:"U256",maxFeePerGas:"U256",gasLimit:"U256",action:"EthTransactionAction",value:"U256",input:"Bytes",accessList:"EthAccessList",oddYParity:"bool",r:"H256",s:"H256"},TransactionV2:{_enum:{Legacy:"LegacyTransaction",EIP2930:"EIP2930Transaction",EIP1559:"EIP1559Transaction"}},EthereumAccountId:"GenericEthereumAccountId",EthereumAddress:"GenericEthereumAccountId",EthereumLookupSource:"GenericEthereumLookupSource",EthereumSignature:"[u8; 65]",EthAccessListItem:{address:"EthAddress",slots:"Vec"},EthAccessList:"Vec",EthAccount:{address:"EthAddress",balance:"U256",nonce:"U256",codeHash:"H256",storageHash:"H256",accountProof:"Vec",storageProof:"Vec"},EthAddress:"H160",EthBlock:{header:"EthHeader",transactions:"Vec",ommers:"Vec"},EthHeader:{parentHash:"H256",ommersHash:"H256",beneficiary:"EthAddress",stateRoot:"H256",transactionsRoot:"H256",receiptsRoot:"H256",logsBloom:"EthBloom",difficulty:"U256",number:"U256",gasLimit:"U256",gasUsed:"U256",timestamp:"u64",extraData:"Bytes",mixMash:"H256",nonce:"H64"},EthRichBlock:{_alias:{blockHash:"hash",blockSize:"size"},blockHash:"Option",parentHash:"H256",sha3Uncles:"H256",author:"EthAddress",miner:"EthAddress",stateRoot:"H256",transactionsRoot:"H256",receiptsRoot:"H256",number:"Option",gasUsed:"U256",gasLimit:"U256",extraData:"Bytes",logsBloom:"EthBloom",timestamp:"U256",difficulty:"U256",totalDifficulty:"Option",sealFields:"Vec",uncles:"Vec",transactions:"Vec",blockSize:"Option"},EthBloom:"H2048",EthCallRequest:{from:"Option",to:"Option",gasPrice:"Option",gas:"Option",value:"Option",data:"Option",nonce:"Option"},EthFeeHistory:{oldestBlock:"U256",baseFeePerGas:"Vec",gasUsedRatio:"Vec",reward:"Option>>"},EthFilter:{fromBlock:"Option",toBlock:"Option",blockHash:"Option",address:"Option",topics:"Option"},EthFilterAddress:{_enum:{Single:"EthAddress",Multiple:"Vec",Null:"Null"}},EthFilterChanges:{_enum:{Logs:"Vec",Hashes:"Vec",Empty:"Null"}},EthFilterTopic:{_enum:{Single:"EthFilterTopicInner",Multiple:"Vec",Null:"Null"}},EthFilterTopicEntry:"Option",EthFilterTopicInner:{_enum:{Single:"EthFilterTopicEntry",Multiple:"Vec",Null:"Null"}},EthRichHeader:{_alias:{blockHash:"hash",blockSize:"size"},blockHash:"Option",parentHash:"H256",sha3Uncles:"H256",author:"EthAddress",miner:"EthAddress",stateRoot:"H256",transactionsRoot:"H256",receiptsRoot:"H256",number:"Option",gasUsed:"U256",gasLimit:"U256",extraData:"Bytes",logsBloom:"EthBloom",timestamp:"U256",difficulty:"U256",sealFields:"Vec",blockSize:"Option"},EthLog:{address:"EthAddress",topics:"Vec",data:"Bytes",blockHash:"Option",blockNumber:"Option",transactionHash:"Option",transactionIndex:"Option",logIndex:"Option",transactionLogIndex:"Option",removed:"bool"},EthReceipt:{transactionHash:"Option",transactionIndex:"Option",blockHash:"Option",from:"Option",to:"Option",blockNumber:"Option",cumulativeGasUsed:"U256",gasUsed:"Option",contractAddress:"Option",logs:"Vec",root:"Option",logsBloom:"EthBloom",statusCode:"Option"},EthReceiptV0:"EthReceipt",EthReceiptV3:"EthReceipt",EthStorageProof:{key:"U256",value:"U256",proof:"Vec"},EthSubKind:{_enum:["newHeads","logs","newPendingTransactions","syncing"]},EthSubParams:{_enum:{None:"Null",Logs:"EthFilter"}},EthSubResult:{_enum:{Header:"EthRichHeader",Log:"EthLog",TransactionHash:"H256",SyncState:"EthSyncStatus"}},EthSyncInfo:{startingBlock:"U256",currentBlock:"U256",highestBlock:"U256",warpChunksAmount:"Option",warpChunksProcessed:"Option"},EthSyncStatus:{_enum:{Info:"EthSyncInfo",None:"Null"}},EthTransaction:{hash:"H256",nonce:"U256",blockHash:"Option",blockNumber:"Option",transactionIndex:"Option",from:"H160",to:"Option",value:"U256",gasPrice:"Option",maxFeePerGas:"Option",maxPriorityFeePerGas:"Option",gas:"U256",input:"Bytes",creates:"Option",raw:"Bytes",publicKey:"Option",chainId:"Option",standardV:"U256",v:"U256",r:"U256",s:"U256",accessList:"Option>",transactionType:"Option"},EthTransactionSignature:{v:"u64",r:"H256",s:"H256"},EthTransactionAction:{_enum:{Call:"H160",Create:"Null"}},EthTransactionCondition:{_enum:{block:"u64",time:"u64"}},EthTransactionRequest:{from:"Option",to:"Option",gasPrice:"Option",gas:"Option",value:"Option",data:"Option",nonce:"Option"},EthTransactionStatus:{transactionHash:"H256",transactionIndex:"u32",from:"EthAddress",to:"Option",contractAddress:"Option",logs:"Vec",logsBloom:"EthBloom"},EthWork:{powHash:"H256",seedHash:"H256",target:"H256",number:"Option"}}},df={rpc:{},runtime:{AuthorFilterAPI:[{methods:{can_author:{description:"The runtime api used to predict whether an author will be eligible in the given slot",params:[{name:"author",type:"AccountId"},{name:"relayParent",type:"u32"},{name:"parentHeader",type:"Header"}],type:"bool"}},version:2},{methods:{can_author:{description:"The runtime api used to predict whether an author will be eligible in the given slot",params:[{name:"author",type:"AccountId"},{name:"relayParent",type:"u32"}],type:"bool"}},version:1}],NimbusApi:[{methods:{can_author:{description:"The runtime api used to predict whether a Nimbus author will be eligible in the given slot",params:[{name:"author",type:"AccountId"},{name:"relayParent",type:"u32"},{name:"parentHeader",type:"Header"}],type:"bool"}},version:1}]},types:{}},uf={rpc:{},runtime:{OracleApi:[{methods:{get_all_values:{description:"Retrieves all values",params:[{name:"providerId",type:"Raw"}],type:"Raw"},get_value:{description:"Retrieves a single value",params:[{name:"providerId",type:"Raw"},{name:"key",type:"Raw"}],type:"Option"}},version:1}]},types:{}},lf={rpc:{},runtime:{TokensApi:[{methods:{query_existential_deposit:{description:"Query the existential amount for a specific currency",params:[{name:"currencyId",type:"Raw"}],type:"u128"}},version:1}]},types:{}},ff={rpc:{methods:{description:"Retrieves the list of RPC methods that are exposed by the node",params:[],type:"RpcMethods"}},types:{RpcMethods:{version:"u32",methods:"Vec"}}},pf={rpc:{hasKey:{description:"Returns true if the keystore has private keys for the given public key and key type.",isUnsafe:!0,params:[{name:"publicKey",type:"Bytes"},{name:"keyType",type:"Text"}],type:"bool"},hasSessionKeys:{description:"Returns true if the keystore has private keys for the given session public keys.",isUnsafe:!0,params:[{name:"sessionKeys",type:"Bytes"}],type:"bool"},insertKey:{description:"Insert a key into the keystore.",isUnsafe:!0,params:[{name:"keyType",type:"Text"},{name:"suri",type:"Text"},{name:"publicKey",type:"Bytes"}],type:"Bytes"},pendingExtrinsics:{description:"Returns all pending extrinsics, potentially grouped by sender",params:[],type:"Vec"},removeExtrinsic:{description:"Remove given extrinsic from the pool and temporarily ban it to prevent reimporting",isUnsafe:!0,params:[{name:"bytesOrHash",type:"Vec"}],type:"Vec"},rotateKeys:{description:"Generate new session keys and returns the corresponding public keys",isUnsafe:!0,params:[],type:"Bytes"},submitAndWatchExtrinsic:{description:"Submit and subscribe to watch an extrinsic until unsubscribed",isSigned:!0,params:[{name:"extrinsic",type:"Extrinsic"}],pubsub:["extrinsicUpdate","submitAndWatchExtrinsic","unwatchExtrinsic"],type:"ExtrinsicStatus"},submitExtrinsic:{description:"Submit a fully formatted extrinsic for block inclusion",isSigned:!0,params:[{name:"extrinsic",type:"Extrinsic"}],type:"Hash"}},types:{ExtrinsicOrHash:{_enum:{Hash:"Hash",Extrinsic:"Bytes"}},ExtrinsicStatus:{_enum:{Future:"Null",Ready:"Null",Broadcast:"Vec",InBlock:"Hash",Retracted:"Hash",FinalityTimeout:"Hash",Finalized:"Hash",Usurped:"Hash",Dropped:"Null",Invalid:"Null"}}}},hf={rpc:{getBlock:{description:"Get header and body of a relay chain block",params:[{isHistoric:!0,isOptional:!0,name:"hash",type:"BlockHash"}],type:"SignedBlock"},getBlockHash:{description:"Get the block hash for a specific block",params:[{isOptional:!0,name:"blockNumber",type:"BlockNumber"}],type:"BlockHash"},getFinalizedHead:{alias:["chain_getFinalisedHead"],description:"Get hash of the last finalized block in the canon chain",params:[],type:"BlockHash"},getHeader:{alias:["chain_getHead"],description:"Retrieves the header for a specific block",params:[{isHistoric:!0,isOptional:!0,name:"hash",type:"BlockHash"}],type:"Header"},subscribeAllHeads:{description:"Retrieves the newest header via subscription",params:[],pubsub:["allHead","subscribeAllHeads","unsubscribeAllHeads"],type:"Header"},subscribeFinalizedHeads:{alias:["chain_subscribeFinalisedHeads","chain_unsubscribeFinalisedHeads"],description:"Retrieves the best finalized header via subscription",params:[],pubsub:["finalizedHead","subscribeFinalizedHeads","unsubscribeFinalizedHeads"],type:"Header"},subscribeNewHeads:{alias:["chain_unsubscribeNewHeads","subscribe_newHead","unsubscribe_newHead"],description:"Retrieves the best header via subscription",params:[],pubsub:["newHead","subscribeNewHead","unsubscribeNewHead"],type:"Header"}},types:{BlockHash:"Hash"}},bf={rpc:{getKeys:{description:"Returns the keys with prefix from a child storage, leave empty to get all the keys",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"prefix",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Vec"},getKeysPaged:{alias:["childstate_getKeysPagedAt"],description:"Returns the keys with prefix from a child storage with pagination support",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"prefix",type:"StorageKey"},{name:"count",type:"u32"},{isOptional:!0,name:"startKey",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Vec"},getStorage:{description:"Returns a child storage entry at a specific block state",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Option"},getStorageEntries:{description:"Returns child storage entries for multiple keys at a specific block state",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"keys",type:"Vec"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Vec>"},getStorageHash:{description:"Returns the hash of a child storage entry at a block state",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Option"},getStorageSize:{description:"Returns the size of a child storage entry at a block state",params:[{name:"childKey",type:"PrefixedStorageKey"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"Hash"}],type:"Option"}},types:{PrefixedStorageKey:"StorageKey"}},mf={rpc:{localStorageGet:{description:"Get offchain local storage under given key and prefix",isUnsafe:!0,params:[{name:"kind",type:"StorageKind"},{name:"key",type:"Bytes"}],type:"Option"},localStorageSet:{description:"Set offchain local storage under given key and prefix",isUnsafe:!0,params:[{name:"kind",type:"StorageKind"},{name:"key",type:"Bytes"},{name:"value",type:"Bytes"}],type:"Null"}},runtime:{OffchainWorkerApi:[{methods:{offchain_worker:{description:"Starts the off-chain task for given block header.",params:[{name:"header",type:"Header"}],type:"Null"}},version:2},{methods:{offchain_worker:{description:"Starts the off-chain task for given block header.",params:[{name:"number",type:"BlockNumber"}],type:"Null"}},version:1}]},types:{StorageKind:{_enum:{PERSISTENT:1,LOCAL:2}}}},yf={query_fee_details:{description:"The transaction fee details",params:[{name:"uxt",type:"Extrinsic"},{name:"len",type:"u32"}],type:"FeeDetails"}},xf={query_call_fee_details:{description:"The call fee details",params:[{name:"call",type:"Call"},{name:"len",type:"u32"}],type:"FeeDetails"}},gf={query_info:{description:"The transaction info",params:[{name:"uxt",type:"Extrinsic"},{name:"len",type:"u32"}],type:"RuntimeDispatchInfo"}},vf={query_call_info:{description:"The call info",params:[{name:"call",type:"Call"},{name:"len",type:"u32"}],type:"RuntimeDispatchInfo"}},wf={query_length_to_fee:{description:"Query the output of the current LengthToFee given some input",params:[{name:"length",type:"u32"}],type:"Balance"},query_weight_to_fee:{description:"Query the output of the current WeightToFee given some input",params:[{name:"weight",type:"Weight"}],type:"Balance"}},Vf={rpc:{queryFeeDetails:{deprecated:"Use `api.call.transactionPaymentApi.queryFeeDetails` instead",description:"Query the detailed fee of a given encoded extrinsic",params:[{name:"extrinsic",type:"Bytes"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"FeeDetails"},queryInfo:{deprecated:"Use `api.call.transactionPaymentApi.queryInfo` instead",description:"Retrieves the fee information for an encoded extrinsic",params:[{name:"extrinsic",type:"Bytes"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"RuntimeDispatchInfoV1"}},runtime:{TransactionPaymentApi:[{methods:{...wf,...gf,...yf},version:4},{methods:{...wf,...gf,...yf},version:3},{methods:{...gf,...yf},version:2},{methods:{query_info:{description:"The transaction info",params:[{name:"uxt",type:"Extrinsic"},{name:"len",type:"u32"}],type:"RuntimeDispatchInfo"},...yf},version:1}],TransactionPaymentCallApi:[{methods:{...wf,...vf,...xf},version:3},{methods:{...vf,...xf},version:2},{methods:{CALL:{description:"The call info",params:[{name:"call",type:"Call"},{name:"len",type:"u32"}],type:"RuntimeDispatchInfo"},...xf},version:1}]},types:{FeeDetails:{inclusionFee:"Option"},InclusionFee:{baseFee:"Balance",lenFee:"Balance",adjustedWeightFee:"Balance"},RuntimeDispatchInfo:{weight:"Weight",class:"DispatchClass",partialFee:"Balance"},RuntimeDispatchInfoV1:{weight:"WeightV1",class:"DispatchClass",partialFee:"Balance"},RuntimeDispatchInfoV2:{weight:"WeightV2",class:"DispatchClass",partialFee:"Balance"}}},Tf={rpc:{call:{alias:["state_callAt"],description:"Perform a call to a builtin on the chain",params:[{name:"method",type:"Text"},{name:"data",type:"Bytes"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Bytes"},getChildKeys:{description:"Retrieves the keys with prefix of a specific child storage",params:[{name:"childStorageKey",type:"StorageKey"},{name:"childDefinition",type:"StorageKey"},{name:"childType",type:"u32"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Vec"},getChildReadProof:{description:"Returns proof of storage for child key entries at a specific block state.",params:[{name:"childStorageKey",type:"PrefixedStorageKey"},{name:"keys",type:"Vec"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"ReadProof"},getChildStorage:{description:"Retrieves the child storage for a key",params:[{name:"childStorageKey",type:"StorageKey"},{name:"childDefinition",type:"StorageKey"},{name:"childType",type:"u32"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"StorageData"},getChildStorageHash:{description:"Retrieves the child storage hash",params:[{name:"childStorageKey",type:"StorageKey"},{name:"childDefinition",type:"StorageKey"},{name:"childType",type:"u32"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Hash"},getChildStorageSize:{description:"Retrieves the child storage size",params:[{name:"childStorageKey",type:"StorageKey"},{name:"childDefinition",type:"StorageKey"},{name:"childType",type:"u32"},{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"u64"},getKeys:{deprecated:"Use `api.rpc.state.getKeysPaged` to retrieve keys",description:"Retrieves the keys with a certain prefix",params:[{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Vec"},getKeysPaged:{alias:["state_getKeysPagedAt"],description:"Returns the keys with prefix with pagination support.",params:[{name:"key",type:"StorageKey"},{name:"count",type:"u32"},{isOptional:!0,name:"startKey",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Vec"},getMetadata:{description:"Returns the runtime metadata",params:[{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Metadata"},getPairs:{deprecated:"Use `api.rpc.state.getKeysPaged` to retrieve keys",description:"Returns the keys with prefix, leave empty to get all the keys (deprecated: Use getKeysPaged)",isUnsafe:!0,params:[{name:"prefix",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Vec"},getReadProof:{description:"Returns proof of storage entries at a specific block state",params:[{name:"keys",type:"Vec"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"ReadProof"},getRuntimeVersion:{alias:["chain_getRuntimeVersion"],description:"Get the runtime version",params:[{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"RuntimeVersion"},getStorage:{alias:["state_getStorageAt"],description:"Retrieves the storage for a key",params:[{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"StorageData"},getStorageHash:{alias:["state_getStorageHashAt"],description:"Retrieves the storage hash",params:[{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Hash"},getStorageSize:{alias:["state_getStorageSizeAt"],description:"Retrieves the storage size",params:[{name:"key",type:"StorageKey"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"u64"},queryStorage:{description:"Query historical storage entries (by key) starting from a start block",isUnsafe:!0,params:[{name:"keys",type:"Vec"},{name:"fromBlock",type:"Hash"},{isOptional:!0,name:"toBlock",type:"BlockHash"}],type:"Vec"},queryStorageAt:{description:"Query storage entries (by key) starting at block hash given as the second parameter",params:[{name:"keys",type:"Vec"},{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"Vec"},subscribeRuntimeVersion:{alias:["chain_subscribeRuntimeVersion","chain_unsubscribeRuntimeVersion"],description:"Retrieves the runtime version via subscription",params:[],pubsub:["runtimeVersion","subscribeRuntimeVersion","unsubscribeRuntimeVersion"],type:"RuntimeVersion"},subscribeStorage:{description:"Subscribes to storage changes for the provided keys",params:[{isOptional:!0,name:"keys",type:"Vec"}],pubsub:["storage","subscribeStorage","unsubscribeStorage"],type:"StorageChangeSet"},traceBlock:{description:"Provides a way to trace the re-execution of a single block",isUnsafe:!0,params:[{name:"block",type:"Hash"},{name:"targets",type:"Option"},{name:"storageKeys",type:"Option"},{name:"methods",type:"Option"}],type:"TraceBlockResponse"},trieMigrationStatus:{description:"Check current migration state",isUnsafe:!0,params:[{isHistoric:!0,isOptional:!0,name:"at",type:"BlockHash"}],type:"MigrationStatusResult"}},types:{ApiId:"[u8; 8]",BlockTrace:{blockHash:"Text",parentHash:"Text",tracingTargets:"Text",storageKeys:"Text",spans:"Vec",events:"Vec"},BlockTraceEvent:{target:"Text",data:"BlockTraceEventData",parentId:"Option"},BlockTraceEventData:{stringValues:"HashMap"},BlockTraceSpan:{id:"u64",parentId:"Option",name:"Text",target:"Text",wasm:"bool"},KeyValueOption:"(StorageKey, Option)",MigrationStatusResult:{topRemainingToMigrate:"u64",childRemainingToMigrate:"u64"},ReadProof:{at:"Hash",proof:"Vec"},RuntimeVersionApi:"(ApiId, u32)",RuntimeVersion:{specName:"Text",implName:"Text",authoringVersion:"u32",specVersion:"u32",implVersion:"u32",apis:"Vec",transactionVersion:"u32",stateVersion:"u8"},RuntimeVersionPre4:{specName:"Text",implName:"Text",authoringVersion:"u32",specVersion:"u32",implVersion:"u32",apis:"Vec",transactionVersion:"u32"},RuntimeVersionPre3:{specName:"Text",implName:"Text",authoringVersion:"u32",specVersion:"u32",implVersion:"u32",apis:"Vec"},RuntimeVersionPartial:{specName:"Text",specVersion:"u32",apis:"Vec"},SpecVersion:"u32",StorageChangeSet:{block:"Hash",changes:"Vec"},TraceBlockResponse:{_enum:{TraceError:"TraceError",BlockTrace:"BlockTrace"}},TraceError:{error:"Text"}}};function Sf(e,{type:t},n,r){const a={},i=e.getSiType(t).def.asVariant.variants;for(let s=0,o=i.length;se(t)}const _f=kf(jt),Pf=kf((e=>e.toString()));function Mf({calls:e}){return e.isSome}function If(e,t,n,r,a){const{fields:i,index:s}=n,o=i.length,c=new Array(o);for(let d=0;d{if(a.length!==s.length)throw new Error(`Extrinsic ${t}.${i} expects ${a.length} arguments, got ${s.length}.`);return e.createTypeUnsafe("Call",[{args:s,callIndex:n},r])};return s.is=e=>function(e,t){return e.callIndex[0]===t[0]&&e.callIndex[1]===t[1]}(e,n),s.callIndex=n,s.meta=r,s.method=i,s.section=t,s.toJSON=()=>r.toJSON(),s}(e,r,new Uint8Array([a,s.toNumber()]),e.createTypeUnsafe("FunctionMetadataLatest",[(0,M.b)({args:c},n)]))}function Nf(e,{lookup:t,pallets:n},r){const a={},i=n.filter(Mf);for(let s=0,o=i.length;s=12?o.toNumber():s;Qr(a,d,(()=>Sf(t,n.unwrap(),_f,(n=>If(e,t,n,d,u)))))}return a}function Ef(e,t){return(0,M.b)({args:t.fields.map((({type:t})=>e.getTypeDef(t).type))},t)}function Of(e,{lookup:t,pallets:n},r){const a={};for(let i=0,s=n.length;i=12?o.toNumber():i;Qr(a,jt(c),(()=>Sf(t,s.unwrap(),Pf,(r=>({is:e=>fn(e)&&fn(e.index)&&e.index.eq(n)&&((0,ut.b)(e.error)?e.error[0]===r.index.toNumber():fn(e.error)&&e.error.eq(r.index)),meta:e.createTypeUnsafe("ErrorMetadataLatest",[Ef(t,r)])})))))}}return a}function Af({events:e}){return e.isSome}function Cf(e,{lookup:t,pallets:n},r){const a={},i=n.filter(Af);for(let s=0,o=i.length;s=12?o.toNumber():s;Qr(a,jt(c),(()=>Sf(t,n.unwrap(),Pf,(n=>({is:e=>fn(e)&&(0,ut.b)(e.index)&&d===e.index[0]&&n.index.eq(e.index[1]),meta:e.createTypeUnsafe("EventMetadataLatest",[Ef(t,n)])})))))}return a}function Hf(e,{pallets:t},n){const r={};for(let a=0,i=t.length;a$r({},n,(t=>{const n=e.createTypeUnsafe(e.createLookupType(t.type),[(0,es.V)(t.value.toHex())]);return n.meta=t,n}),_f)))}return r}function Rf(e){const t=e.map((e=>e.toString().trim())),n=t.findIndex((e=>!e.length));return-1===n?t:t.slice(0,n)}function Bf(e,{extrinsic:t,lookup:n,pallets:r}){return e.createTypeUnsafe("MetadataLatest",[{extrinsic:t,lookup:{types:n.types.map((({id:t,type:n})=>e.createTypeUnsafe("PortableType",[{id:t,type:(0,M.b)({},n,{docs:Rf(n.docs)})}])))},pallets:r.map((({calls:t,index:n,name:r})=>({calls:e.createTypeUnsafe("Option",[t.unwrapOr(null)]),index:n,name:r})))}]).toJSON()}function Lf(e,t=[]){for(let n=0,r=e.length;ne||t)))}function Df(e,{info:t}){throw new Error(`Unhandled: Unable to create and validate type from ${e} (info=${mr[t]})`)}const qf={[mr.BTreeMap]:Uf,[mr.BTreeSet]:zf,[mr.Compact]:zf,[mr.DoNotConstruct]:Df,[mr.Enum]:Uf,[mr.HashMap]:Uf,[mr.Int]:Df,[mr.Linkage]:zf,[mr.Null]:Df,[mr.Option]:zf,[mr.Plain]:(e,t)=>t.lookupName||t.type,[mr.Range]:zf,[mr.RangeInclusive]:zf,[mr.Result]:Uf,[mr.Set]:Uf,[mr.Si]:Df,[mr.Struct]:Uf,[mr.Tuple]:Uf,[mr.UInt]:Df,[mr.Vec]:zf,[mr.VecFixed]:zf,[mr.WrapperKeepOpaque]:zf,[mr.WrapperOpaque]:zf};function jf(e){const t=e.length,n=new Array(t);for(let r=0;re.getTypeDef(t).type))}function Wf(e,t){return e.getSiType(t).def.asVariant.variants.map((({fields:t})=>Xf(e,t)))}function Zf(e,t,n){return function(e,t,n){const r=Lf(jf(n)).filter((t=>!e.hasType(t)&&!e.isLookupType(t))).sort();if(0!==r.length){const e=`Unknown types found, no types for ${r.join(", ")}`;if(t)throw new Error(e);Ff.warn(e)}return n}(e,n,Lf(function({lookup:e,pallets:t}){return t.reduce(((t,{calls:n,constants:r,events:a,storage:i})=>(t.push([Xf(e,r)]),n.isSome&&t.push(Wf(e,n.unwrap().type)),a.isSome&&t.push(Wf(e,a.unwrap().type)),i.isSome&&t.push(i.unwrap().items.map((({type:t})=>{if(t.isPlain)return[e.getTypeDef(t.asPlain).type];const{hashers:n,key:r,value:a}=t.asMap;return 1===n.length?[e.getTypeDef(a).type,e.getTypeDef(r).type]:[e.getTypeDef(a).type,...e.getSiType(r).def.asTuple.map((t=>e.getTypeDef(t).type))]}))),t)),[])}(t)))}function Gf(e,t){return t.toNumber()>=2?e.createTypeUnsafe("StorageHasherV10",[t.toNumber()+1]):e.createTypeUnsafe("StorageHasherV10",[t])}function Kf(e,t){return t.isMap?[(0,M.b)({},t.asMap,{hasher:Gf(e,t.asMap.hasher)}),1]:t.isDoubleMap?[(0,M.b)({},t.asDoubleMap,{hasher:Gf(e,t.asDoubleMap.hasher),key2Hasher:Gf(e,t.asDoubleMap.key2Hasher)}),2]:[t.asPlain,0]}function Jf(e,{modules:t}){return e.createTypeUnsafe("MetadataV10",[{modules:t.map((t=>function(e,t){const n=t.storage.unwrapOr(null);return e.createTypeUnsafe("ModuleMetadataV10",[(0,M.b)({},t,{storage:n?(0,M.b)({},n,{items:n.items.map((t=>(0,M.b)({},t,{type:e.createTypeUnsafe("StorageEntryTypeV10",Kf(e,t.type))})))}):null})])}(e,t)))}])}function Yf(e,{modules:t}){return e.createTypeUnsafe("MetadataV11",[{extrinsic:{signedExtensions:[],version:0},modules:t}])}function Qf(e,{extrinsic:t,modules:n}){return e.createTypeUnsafe("MetadataV12",[{extrinsic:t,modules:n.map((t=>e.createTypeUnsafe("ModuleMetadataV12",[(0,M.b)({},t,{index:255})])))}])}function $f(e,t){return e.createTypeUnsafe("MetadataV13",[t])}const ep={assets:{Approval:"AssetApproval",ApprovalKey:"AssetApprovalKey",Balance:"TAssetBalance",DestroyWitness:"AssetDestroyWitness"},babe:{EquivocationProof:"BabeEquivocationProof"},balances:{Status:"BalanceStatus"},beefy:{AuthorityId:"BeefyId"},contracts:{StorageKey:"ContractStorageKey"},electionProviderMultiPhase:{Phase:"ElectionPhase"},ethereum:{Block:"EthBlock",Header:"EthHeader",Receipt:"EthReceipt",Transaction:"EthTransaction",TransactionStatus:"EthTransactionStatus"},evm:{Account:"EvmAccount",Log:"EvmLog",Vicinity:"EvmVicinity"},grandpa:{Equivocation:"GrandpaEquivocation",EquivocationProof:"GrandpaEquivocationProof"},identity:{Judgement:"IdentityJudgement"},inclusion:{ValidatorIndex:"ParaValidatorIndex"},paraDisputes:{ValidatorIndex:"ParaValidatorIndex"},paraInclusion:{ValidatorIndex:"ParaValidatorIndex"},paraScheduler:{ValidatorIndex:"ParaValidatorIndex"},paraShared:{ValidatorIndex:"ParaValidatorIndex"},parachains:{Id:"ParaId"},parasDisputes:{ValidatorIndex:"ParaValidatorIndex"},parasInclusion:{ValidatorIndex:"ParaValidatorIndex"},parasScheduler:{ValidatorIndex:"ParaValidatorIndex"},parasShared:{ValidatorIndex:"ParaValidatorIndex"},proposeParachain:{Proposal:"ParachainProposal"},proxy:{Announcement:"ProxyAnnouncement"},scheduler:{ValidatorIndex:"ParaValidatorIndex"},shared:{ValidatorIndex:"ParaValidatorIndex"},society:{Judgement:"SocietyJudgement",Vote:"SocietyVote"},staking:{Compact:"CompactAssignments"},treasury:{Proposal:"TreasuryProposal"},xcm:{AssetId:"XcmAssetId"},xcmPallet:{AssetId:"XcmAssetId"}};const tp=[["<",">"],["<",","],[",",">"],["(",")"],["(",","],[",",","],[",",")"]];function np(e,t){const n=t.toString(),r=e.findIndex((({def:e})=>e.HistoricMetaCompat===n));return-1!==r?r:e.push({def:{HistoricMetaCompat:n}})-1}function rp(e,t){return e.push({def:{Tuple:t}})-1}function ap(e,t,n,r){return n.push({def:{Variant:{variants:r}},path:[`pallet_${e.toString()}`,"pallet",t]})-1}function ip(e,t){t.forEach((t=>{const n=Object.keys(e).find((e=>t.eq(e)));if(n)t.setOverride(e[n]);else{const n=t.toString(),r=Object.entries(e).reduce(((e,[t,n])=>tp.reduce(((e,[r,a])=>e.replace(`${r}${t}${a}`,`${r}${n}${a}`)),e)),n);n!==r&&t.setOverride(r)}}))}function sp(e,t,n,r,a){const i=r.map((({args:n,docs:r,name:i},s)=>(ip(a,n.map((({type:e})=>e))),t.createTypeUnsafe("SiVariant",[{docs:r,fields:n.map((({name:n,type:r})=>t.createTypeUnsafe("SiField",[{name:n,type:np(e,r)}]))),index:s,name:i}]))));return t.createTypeUnsafe("PalletCallMetadataV14",[{type:ap(n,"Call",e,i)}])}function op(e,t,n,r){return n.map((({docs:n,name:a,type:i,value:s})=>(ip(r,[i]),t.createTypeUnsafe("PalletConstantMetadataV14",[{docs:n,name:a,type:np(e,i),value:s}]))))}function cp(e,t,n,r,a){const i=r.map((({docs:e,name:n},r)=>t.createTypeUnsafe("SiVariant",[{docs:e,fields:[],index:r,name:n}])));return t.createTypeUnsafe("PalletErrorMetadataV14",[{type:ap(n,"Error",e,i)}])}function dp(e,t,n,r,a){const i=r.map((({args:n,docs:r,name:i},s)=>(ip(a,n),t.createTypeUnsafe("SiVariant",[{docs:r,fields:n.map((n=>t.createTypeUnsafe("SiField",[{type:np(e,n)}]))),index:s,name:i}]))));return t.createTypeUnsafe("PalletEventMetadataV14",[{type:ap(n,"Event",e,i)}])}function up(e,t,n,{hashers:r,isLinked:a,isOptional:i,keys:s,value:o}){return ip(n,[o,...Array.isArray(s)?s:[s]]),t.createTypeUnsafe("StorageEntryTypeV14",[{Map:{hashers:r,key:1===r.length?np(e,s[0]):rp(e,s.map((t=>np(e,t)))),value:np(e,a?`(${i?`Option<${o.toString()}>`:o.toString()}, Linkage<${s[0].toString()}>)`:o)}}])}function lp(e,t,{items:n,prefix:r},a){return t.createTypeUnsafe("PalletStorageMetadataV14",[{items:n.map((({docs:n,fallback:r,modifier:i,name:s,type:o})=>{let c;if(o.isPlain){const n=o.asPlain;ip(a,[n]),c=t.createTypeUnsafe("StorageEntryTypeV14",[{Plain:np(e,n)}])}else if(o.isMap){const n=o.asMap;c=up(e,t,a,{hashers:[n.hasher],isLinked:n.linked.isTrue,isOptional:i.isOptional,keys:[n.key],value:n.value})}else if(o.isDoubleMap){const n=o.asDoubleMap;c=up(e,t,a,{hashers:[n.hasher,n.key2Hasher],isLinked:!1,isOptional:i.isOptional,keys:[n.key1,n.key2],value:n.value})}else{const n=o.asNMap;c=up(e,t,a,{hashers:n.hashers,isLinked:!1,isOptional:i.isOptional,keys:n.keyVec,value:n.value})}return t.createTypeUnsafe("StorageEntryMetadataV14",[{docs:n,fallback:r,modifier:i,name:s,type:c}])})),prefix:r}])}function fp(e,t,n,{calls:r,constants:a,errors:i,events:s,storage:o}){const c=function({knownTypes:e},t){return{...ep[t]??{},...e.typesAlias?.[t]??{}}}(t,jt(n.name));return t.createTypeUnsafe("PalletMetadataV14",[{calls:r&&sp(e,t,n.name,r,c),constants:op(e,t,a,c),errors:i&&cp(e,t,n.name,i),events:s&&dp(e,t,n.name,s,c),index:n.index,name:n.name,storage:o&&lp(e,t,o,c)}])}function pp(e,t,n){const r=[];!function(e,...t){for(let n=0,r=t.length;n[e.name.toString(),n>=12?e.index.toNumber():t])).sort(((e,t)=>e[1]-t[1])).reduce(((e,[t,n])=>{for(let r=Object.keys(e).length;r({identifier:e,type:0}))),type:0,version:n}])}(e,t.extrinsic),i=t.modules.map((t=>fp(r,e,t,{calls:t.calls.unwrapOr(null),constants:t.constants,errors:t.errors.length?t.errors:null,events:t.events.unwrapOr(null),storage:t.storage.unwrapOr(null)})));return e.createTypeUnsafe("MetadataV14",[{extrinsic:a,lookup:{types:r.map(((t,n)=>e.createTypeUnsafe("PortableType",[{id:n,type:t}])))},pallets:i}])}function hp(e,t,n){const r=t.lookup.paramTypes.SpRuntimeUncheckedExtrinsic;return e.createTypeUnsafe("MetadataV15",[(0,M.b)({},t,{extrinsic:e.createTypeUnsafe("ExtrinsicMetadataV15",[(0,M.b)({},t.extrinsic,{addressType:r?.[0].type.unwrapOr(0),callType:r?.[1].type.unwrapOr(0),extraType:r?.[3].type.unwrapOr(0),signatureType:r?.[2].type.unwrapOr(0)})]),outerEnums:e.createTypeUnsafe("OuterEnums15",[{callType:r?.[1].type.unwrapOr(0),eventType:t.lookup.paramTypes.FrameSystemEventRecord?.[0].type.unwrapOr(0)}])})])}function bp(e,t,n){return t}const mp=1635018093;class yp extends bo{constructor(e,t){if(super(e,t),!this.isEmpty&&!this.eq(mp))throw new Error(`MagicNumber mismatch: expected ${e.createTypeUnsafe("u32",[mp]).toHex()}, found ${this.toHex()}`)}}class xp extends dn{__internal__converted=new Map;constructor(e,t){super(e,{magicNumber:yp,metadata:"MetadataAll"},t)}__internal__assertVersion=e=>{if(this.version>e)throw new Error(`Cannot convert metadata from version ${this.version} to ${e}`);return this.version===e};__internal__getVersion=(e,t)=>{if("latest"!==e&&this.__internal__assertVersion(e)){const t=`asV${e}`;return this.__internal__metadata()[t]}if(!this.__internal__converted.has(e)){const n="latest"===e?"asV15":"asV"+(e-1);this.__internal__converted.set(e,t(this.registry,this[n],this.version))}return this.__internal__converted.get(e)};__internal__metadata=()=>this.getT("metadata");get asCallsOnly(){return new xp(this.registry,{magicNumber:this.magicNumber,metadata:this.registry.createTypeUnsafe("MetadataAll",[Bf(this.registry,this.asLatest),14])})}get asV9(){return this.__internal__assertVersion(9),this.__internal__metadata().asV9}get asV10(){return this.__internal__getVersion(10,Jf)}get asV11(){return this.__internal__getVersion(11,Yf)}get asV12(){return this.__internal__getVersion(12,Qf)}get asV13(){return this.__internal__getVersion(13,$f)}get asV14(){return this.__internal__getVersion(14,pp)}get asV15(){return this.__internal__getVersion(15,hp)}get asLatest(){return this.__internal__getVersion("latest",bp)}get magicNumber(){return this.getT("magicNumber")}get version(){return this.__internal__metadata().index}getUniqTypes(e){return Zf(this.registry,this.asLatest,e)}toJSON(){return this.asLatest,super.toJSON()}}const gp=new Uint8Array([109,101,116,97,9]),vp=gp.length-1;class wp extends xp{constructor(e,t){super(e,(0,ut.b)(t)||(0,I.K)(t)?function(e,t){if(0===t.length)return gp;if(9===t[vp])try{return new xp(e,t)}catch{t[vp]=10}return t}(e,(0,E.e)(t)):t)}}const Vp=e=>e.toString(),Tp=["BTreeMap","BTreeSet","Compact","HashMap","Option","Result","Vec"];function Sp(e,t,n){const{info:r,sub:a}=t;switch(r){case mr.BTreeMap:case mr.BTreeSet:case mr.Compact:case mr.HashMap:case mr.Linkage:case mr.Option:case mr.Range:case mr.RangeInclusive:case mr.Result:case mr.Vec:case mr.WrapperKeepOpaque:case mr.WrapperOpaque:return function(e,t,n=Vp){return`${e}${t?`<${(Array.isArray(t)?t:[t]).map(n).join(", ")}>`:""}`}(n,a,(t=>Mp(e,t)))}throw new Error(`Unable to encode ${(0,je.A)(t)} with params`)}function kp(e,t,n,r){const a=t.map((({name:e})=>e));if(!a.every((e=>!!e)))throw new Error(`Subtypes does not have consistent names, ${a.join(", ")}`);const i=(0,M.b)({},r);for(let s=0,o=t.length;sSp(e,t,"BTreeMap"),[mr.BTreeSet]:(e,t)=>Sp(e,t,"BTreeSet"),[mr.Compact]:(e,t)=>Sp(e,t,"Compact"),[mr.DoNotConstruct]:(e,{displayName:t,lookupIndex:n,lookupName:r})=>`DoNotConstruct<${r||t||((0,Fe.b)(n)?"Unknown":e.createLookupType(n))}>`,[mr.Enum]:(e,{sub:t})=>{if(!Array.isArray(t))throw new Error("Unable to encode Enum type");return t.every((({type:e})=>"Null"===e))?(0,je.A)({_enum:t.map((({name:e},t)=>`${e||`Empty${t}`}`))}):kp(e,t,!0)},[mr.HashMap]:(e,t)=>Sp(e,t,"HashMap"),[mr.Int]:(e,{length:t=32})=>`Int<${t}>`,[mr.Linkage]:(e,t)=>Sp(e,t,"Linkage"),[mr.Null]:(e,t)=>"Null",[mr.Option]:(e,t)=>Sp(e,t,"Option"),[mr.Plain]:(e,{displayName:t,type:n})=>t||n,[mr.Range]:(e,t)=>Sp(e,t,"Range"),[mr.RangeInclusive]:(e,t)=>Sp(e,t,"RangeInclusive"),[mr.Result]:(e,t)=>Sp(e,t,"Result"),[mr.Set]:(e,{length:t=8,sub:n})=>{if(!Array.isArray(n))throw new Error("Unable to encode Set type");return(0,je.A)({_set:n.reduce(((e,{index:t,name:n},r)=>(0,M.b)(e,{[`${n||`Unknown${t||r}`}`]:t||r})),{_bitLength:t||8})})},[mr.Si]:(e,{lookupName:t,type:n})=>t||n,[mr.Struct]:(e,{alias:t,sub:n})=>{if(!Array.isArray(n))throw new Error("Unable to encode Struct type");return kp(e,n,!1,t?{_alias:[...t.entries()].reduce(((e,[t,n])=>(0,M.b)(e,{[t]:n})),{})}:{})},[mr.Tuple]:(e,{sub:t})=>{if(!Array.isArray(t))throw new Error("Unable to encode Tuple type");return`(${t.map((t=>Mp(e,t))).join(",")})`},[mr.UInt]:(e,{length:t=32})=>`UInt<${t}>`,[mr.Vec]:(e,t)=>Sp(e,t,"Vec"),[mr.VecFixed]:(e,{length:t,sub:n})=>{if(!(0,Lt.E)(t)||!n||Array.isArray(n))throw new Error("Unable to encode VecFixed type");return`[${n.type};${t}]`},[mr.WrapperKeepOpaque]:(e,t)=>Sp(e,t,"WrapperKeepOpaque"),[mr.WrapperOpaque]:(e,t)=>Sp(e,t,"WrapperOpaque")};function Pp(e,t,n=!0){return n&&t.lookupName?t.lookupName:_p[t.info](e,t)}function Mp(e,t){return t.displayName&&!Tp.some((e=>t.displayName===e))?t.displayName:Pp(e,t)}function Ip(e,t){return(0,M.b)({},t,{type:Pp(e,t,!1)})}const Np=(0,it.v)("PortableRegistry"),Ep={toNumber:()=>-1},Op={Char:"u32",Str:"Text"},Ap=Dp(["sp_core::crypto::AccountId32","sp_runtime::generic::era::Era","sp_runtime::multiaddress::MultiAddress","fp_account::AccountId20","account::AccountId20","polkadot_runtime_common::claims::EthereumAddress","frame_support::weights::weight_v2::Weight","sp_weights::weight_v2::Weight","*_democracy::vote::Vote","*_conviction_voting::vote::Vote","*_identity::types::Data","sp_core::OpaqueMetadata","sp_core::OpaquePeerId","sp_core::offchain::OpaqueMultiaddr","primitive_types::*","sp_arithmetic::per_things::*","*_runtime::RuntimeCall","*_runtime::RuntimeEvent","ink::env::types::*","ink::primitives::types::*","ink_env::types::*","ink_primitives::types::*"]),Cp=Dp(["pallet_identity::types::BitFlags"]),Hp=["bitvec::order::Lsb0","BitOrderLsb0"],Rp=[...Hp,"bitvec::order::Msb0","BitOrderMsb0"],Bp=["BoundedBTreeMap","BoundedBTreeSet","BoundedVec","Box","BTreeMap","BTreeSet","Cow","Option","Range","RangeInclusive","Result","WeakBoundedVec","WrapperKeepOpaque","WrapperOpaque"],Lp=["entries","keys","new","size","hash","registry"],zp=["generic","misc","pallet","traits","types"];function Up(e){const t=e.length,n=new Array(t);for(let r=0;r{const r=t[n].toString();if("*"===e||e===r)return!0;if(e.includes("*")&&e.includes("_")&&r.includes("_")){let t=e.split("_"),n=r.split("_");if("*"===t[0]){const e=n.indexOf(t[1]);-1!==e&&(t=t.slice(1),n=n.slice(e))}return 2===t.length&&"*"===t[1]&&t[0]===n[0]||qp(t,n)}return!1}))}function jp(e,t,n,r,a=!1){const i=r.length;if(0===i||Bp.includes(r[i-1].toString()))return null;const s=new Array(i),o=new Array(i);for(let d=0;d{const{lookupIndex:s,name:o,params:c}=a;if(!o)return null;if(r[s])return a;const d=function(e,t,n){const r=[n[t]];for(let a=t+1,i=n.length;ac.length!==e.params.length||c.some(((t,n)=>!t.name.eq(e.params[n].name)||t.type.unwrapOr(Ep).toNumber()!==e.params[n].type.unwrapOr(Ep).toNumber())))))return a;const u=c.findIndex((({type:e},t)=>d.every((({params:n},r)=>n[t].type.isSome&&(0===r||!n[t].type.eq(e))))));if(-1===u)return a;const l=d.length,f=new Array(l);for(let t=0;t!!e)).map((({lookupIndex:e,name:t,params:n})=>({lookupIndex:e,name:r[e]||t,params:n})))}(e,t,n);for(let c=0,d=o.length;c"},t);const{lookups:r,names:a,params:i,types:s}=Wp(this,this.types);this.__internal__alias=function(e,t){const n=Object.keys(e).some((e=>!e.startsWith("Pallet"))),r={};if(e.SpRuntimeUncheckedExtrinsic){const[,{type:t}]=e.SpRuntimeUncheckedExtrinsic;r[t.unwrap().toNumber()]="Call"}else n&&!t&&Np.warn("Unable to determine runtime Call type, cannot inspect sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic");if(e.FrameSystemEventRecord){const[{type:t}]=e.FrameSystemEventRecord;r[t.unwrap().toNumber()]="Event"}else n&&!t&&Np.warn("Unable to determine runtime Event type, cannot inspect frame_system::EventRecord");return r}(i,n),this.__internal__lookups=r,this.__internal__names=a,this.__internal__params=i,this.__internal__types=s}get names(){return Object.values(this.__internal__names).sort()}get paramTypes(){return this.__internal__params}get types(){return this.getT("types")}register(){!function(e,t,n,r){if(e.registry.register(t),r.SpRuntimeUncheckedExtrinsic){const[t,,a]=r.SpRuntimeUncheckedExtrinsic,i=e.getSiType(t.type.unwrap()),s=e.getSiType(a.type.unwrap()).path.join("::");let o=i.path.join("::");const c="sp_runtime::multiaddress::MultiAddress"===o;if(c){const[t]=i.params;o=e.getSiType(t.type.unwrap()).path.join("::")}e.registry.register({AccountId:o.endsWith("::AccountId20")||o.endsWith("::H160")?"AccountId20":"AccountId32",Address:c?"MultiAddress":"AccountId",ExtrinsicSignature:["sp_runtime::MultiSignature"].includes(s)?"MultiSignature":n[a.type.unwrap().toNumber()]||"MultiSignature"})}}(this,this.__internal__lookups,this.__internal__names,this.__internal__params)}getName(e){return this.__internal__names[this.__internal__getLookupId(e)]}getSiType(e){const t=(this.__internal__types||this.types)[this.__internal__getLookupId(e)];if(!t)throw new Error(`PortableRegistry: Unable to find type with lookupId ${e.toString()}`);return t.type}getTypeDef(e){const t=this.__internal__getLookupId(e);if(!this.__internal__typeDefs[t]){const n=this.__internal__names[t],r={info:mr.DoNotConstruct,lookupIndex:t,lookupName:n,type:this.registry.createLookupType(t)};n&&(this.__internal__typeDefs[t]=r);const a=this.__internal__extract(this.getSiType(e),t);n||(this.__internal__typeDefs[t]=r),Object.keys(a).forEach((e=>{("lookupName"!==e||a[e])&&(this.__internal__typeDefs[t][e]=a[e])})),a.info===mr.Plain&&(this.__internal__typeDefs[t].lookupNameRoot=this.__internal__typeDefs[t].lookupName,delete this.__internal__typeDefs[t].lookupName)}return this.__internal__typeDefs[t]}sanitizeField(e){let t=null,n=null;return e.isSome&&(t=jt(e.unwrap()),t.includes("#")?(n=t,t=n.replace(/#/g,"_")):Lp.includes(t)&&(n=t,t=`${t}_`)),[t,n]}__internal__createSiDef(e){const t=this.getTypeDef(e),n=e.toNumber();return[mr.DoNotConstruct,mr.Enum,mr.Struct].includes(t.info)&&t.lookupName?{docs:t.docs,info:mr.Si,lookupIndex:n,lookupName:this.__internal__names[n],type:this.registry.createLookupType(e)}:t}__internal__getLookupId(e){if((0,I.K)(e)){if(!this.registry.isLookupType(e))throw new Error(`PortableRegistry: Expected a lookup string type, found ${e}`);return parseInt(e.replace("Lookup",""),10)}return(0,Lt.E)(e)?e:e.toNumber()}__internal__extract(e,t){const n=e.path.join("::");let r;const a=this.__internal__alias[t]||function({def:e,path:t}){return["frame_support::weights::weight_v2::Weight","sp_weights::weight_v2::Weight"].includes(t.join("::"))?e.isComposite&&1!==e.asComposite.fields.length?null:"WeightV1":t.length&&Ap.some((e=>qp(e,t)))?t[t.length-1].toString():null}(e);try{if(a)r=this.__internal__extractAliasPath(t,a);else switch(e.def.type){case"Array":r=this.__internal__extractArray(t,e.def.asArray);break;case"BitSequence":r=this.__internal__extractBitSequence(t,e.def.asBitSequence);break;case"Compact":r=this.__internal__extractCompact(t,e.def.asCompact);break;case"Composite":r=this.__internal__extractComposite(t,e,e.def.asComposite);break;case"HistoricMetaCompat":r=this.__internal__extractHistoric(t,e.def.asHistoricMetaCompat);break;case"Primitive":r=this.__internal__extractPrimitive(t,e);break;case"Sequence":r=this.__internal__extractSequence(t,e.def.asSequence);break;case"Tuple":r=this.__internal__extractTuple(t,e.def.asTuple);break;case"Variant":r=this.__internal__extractVariant(t,e,e.def.asVariant);break;default:!function(e){throw new Error(`This codepath should be unreachable. Unhandled input: ${e}`)}(e.def.type)}}catch(i){throw new Error(`PortableRegistry: ${t}${n?` (${n})`:""}: Error extracting ${(0,je.A)(e)}: ${i.message}`)}return(0,M.b)({docs:Up(e.docs),namespace:n},r)}__internal__extractArray(e,{len:t,type:n}){const r=t.toNumber();if(r>2048)throw new Error("Only support for [Type; ], where length <= 2048");return Ip(this.registry,{info:mr.VecFixed,length:r,sub:this.__internal__createSiDef(n)})}__internal__extractBitSequence(e,{bitOrderType:t,bitStoreType:n}){const r=this.__internal__createSiDef(t),a=this.__internal__createSiDef(n),[i,s]=Rp.includes(r.namespace||"")?[r,a]:[a,r];if(!i.namespace||!Rp.includes(i.namespace))throw new Error(`Unexpected bitOrder found as ${i.namespace||""}`);if(s.info!==mr.Plain||"u8"!==s.type)throw new Error(`Only u8 bitStore is currently supported, found ${s.type}`);Hp.includes(i.namespace);return{info:mr.Plain,type:"BitVec"}}__internal__extractCompact(e,{type:t}){return Ip(this.registry,{info:mr.Compact,sub:this.__internal__createSiDef(t)})}__internal__extractComposite(e,{params:t,path:n},{fields:r}){if(n.length){const e=n[0].toString(),r=n[n.length-1].toString();if(1===n.length&&"BTreeMap"===e){if(2!==t.length)throw new Error(`BTreeMap requires 2 parameters, found ${t.length}`);return Ip(this.registry,{info:mr.BTreeMap,sub:t.map((({type:e})=>this.__internal__createSiDef(e.unwrap())))})}if(1===n.length&&"BTreeSet"===e){if(1!==t.length)throw new Error(`BTreeSet requires 1 parameter, found ${t.length}`);return Ip(this.registry,{info:mr.BTreeSet,sub:this.__internal__createSiDef(t[0].type.unwrap())})}if(["Range","RangeInclusive"].includes(e)){if(1!==t.length)throw new Error(`Range requires 1 parameter, found ${t.length}`);return Ip(this.registry,{info:"Range"===e?mr.Range:mr.RangeInclusive,sub:this.__internal__createSiDef(t[0].type.unwrap()),type:e})}if(["WrapperKeepOpaque","WrapperOpaque"].includes(r)){if(1!==t.length)throw new Error(`WrapperOpaque requires 1 parameter, found ${t.length}`);return Ip(this.registry,{info:"WrapperKeepOpaque"===r?mr.WrapperKeepOpaque:mr.WrapperOpaque,sub:this.__internal__createSiDef(t[0].type.unwrap()),type:r})}}return Cp.some((e=>qp(e,n)))?this.__internal__extractCompositeSet(e,t,r):this.__internal__extractFields(e,r)}__internal__extractCompositeSet(e,t,n){if(1!==t.length||1!==n.length)throw new Error("Set handling expects param/field as single entries");return Ip(this.registry,{info:mr.Set,length:this.registry.createTypeUnsafe(this.registry.createLookupType(n[0].type),[]).bitLength(),sub:this.getSiType(t[0].type.unwrap()).def.asVariant.variants.map((({index:e,name:t})=>({index:e.toNumber(),info:mr.Plain,name:t.toString(),type:"Null"})))})}__internal__extractFields(e,t){let n=!0,r=!0;const a=t.length;for(let o=0;othis.__internal__createSiDef(e)));return Ip(this.registry,{info:mr.Tuple,lookupIndex:e,lookupName:this.__internal__names[e],sub:n})}__internal__extractVariant(e,{params:t,path:n},{variants:r}){if(n.length){const e=n[0].toString();if("Option"===e){if(1!==t.length)throw new Error(`Option requires 1 parameter, found ${t.length}`);return Ip(this.registry,{info:mr.Option,sub:this.__internal__createSiDef(t[0].type.unwrap())})}if("Result"===e){if(2!==t.length)throw new Error(`Result requires 2 parameters, found ${t.length}`);return Ip(this.registry,{info:mr.Result,sub:t.map((({type:e},t)=>(0,M.b)({name:["Ok","Error"][t]},this.__internal__createSiDef(e.unwrap()))))})}}return 0===r.length?{info:mr.Null,type:"Null"}:this.__internal__extractVariantEnum(e,r)}__internal__extractVariantEnum(e,t){const n=[];return t.slice().sort(((e,t)=>e.index.cmp(t.index))).forEach((({fields:e,index:t,name:r})=>{const a=t.toNumber();for(;n.length!==a;)n.push({index:n.length,info:mr.Null,name:`__Unused${n.length}`,type:"Null"});n.push((0,M.b)(this.__internal__extractFields(-1,e),{index:a,name:r.toString()}))})),Ip(this.registry,{info:mr.Enum,lookupIndex:e,lookupName:this.__internal__names[e],sub:n})}}const Gp=new Uint8Array(2),Kp=(0,it.v)("registry");function Jp(e,t){return parseInt(e,10)-parseInt(t,10)}function Yp(e){return e.toString()}function Qp(e,t){const n=t.length,r=new Array(n);for(let a=0;ae.toNumber()))}return[12]}get chainIsEthereum(){return this.__internal__chainProperties?.isEthereum.isTrue||!1}get chainSS58(){return this.__internal__chainProperties?.ss58Format.isSome?this.__internal__chainProperties.ss58Format.unwrap().toNumber():void 0}get chainTokens(){if(this.__internal__chainProperties?.tokenSymbol.isSome){const e=this.__internal__chainProperties.tokenSymbol.unwrap();if(e.length)return e.map(Yp)}return[Un.getDefaults().unit]}get firstCallIndex(){return this.__internal__firstCallIndex||Gp}isLookupType(e){return/Lookup\d+$/.test(e)}createLookupType(e){return`Lookup${"number"==typeof e?e:e.toNumber()}`}get knownTypes(){return this.__internal__knownTypes}get lookup(){return ea(this.__internal__lookup,"PortableRegistry has not been set on this registry")}get metadata(){return ea(this.__internal__metadata,"Metadata has not been set on this registry")}get unknownTypes(){return[...this.__internal__unknownTypes.keys()]}get signedExtensions(){return this.__internal__signedExtensions}clearCache(){this.__internal__classes=new Map}createClass(e){return Zr(this,e)}createClassUnsafe(e){return Zr(this,e)}createType(e,...t){return Yr(this,e,t)}createTypeUnsafe(e,t,n){return Yr(this,e,t,n)}findMetaCall(e){const[t,n]=[e[0],e[1]];return ea(this.__internal__metadataCalls[`${t}`]&&this.__internal__metadataCalls[`${t}`][`${n}`],(()=>`findMetaCall: Unable to find Call with index [${t}, ${n}]/[${e.toString()}]`))}findMetaError(e){const[t,n]=(0,ut.b)(e)?[e[0],e[1]]:[e.index.toNumber(),(0,ut.b)(e.error)?e.error[0]:e.error.toNumber()];return ea(this.__internal__metadataErrors[`${t}`]&&this.__internal__metadataErrors[`${t}`][`${n}`],(()=>`findMetaError: Unable to find Error with index [${t}, ${n}]/[${e.toString()}]`))}findMetaEvent(e){const[t,n]=[e[0],e[1]];return ea(this.__internal__metadataEvents[`${t}`]&&this.__internal__metadataEvents[`${t}`][`${n}`],(()=>`findMetaEvent: Unable to find Event with index [${t}, ${n}]/[${e.toString()}]`))}get(e,t,n){return this.getUnsafe(e,t,n)}getUnsafe(e,t,n){let r=this.__internal__classes.get(e)||this.__internal__knownDefaults[e];if(!r){const a=this.__internal__definitions.get(e);let i;a?i=Zr(this,a):n?i=function(e,t){try{const n=Xr[t.info](e,t);if(!n)throw new Error("No class created");return!n.__fallbackType&&t.fallbackType&&(n.__fallbackType=t.fallbackType),n}catch(n){throw new Error(`Unable to construct class from ${(0,je.A)(t)}: ${n.message}`)}}(this,n):t&&(Kp.warn(`Unable to resolve type ${e}, it will fail on construction`),this.__internal__unknownTypes.set(e,!0),i=at.with(e)),i&&(r=class extends i{},this.__internal__classes.set(e,r),n&&(0,Lt.E)(n.lookupIndex)&&this.__internal__classes.set(this.createLookupType(n.lookupIndex),r))}return r}getChainProperties(){return this.__internal__chainProperties}getClassName(e){const t=[];for(const[n,r]of this.__internal__knownDefaultsEntries)e===r&&t.push(n);for(const[n,r]of this.__internal__classes.entries())e===r&&t.push(n);return t.length?t.sort().reverse()[0]:void 0}getDefinition(e){return this.__internal__definitions.get(e)}getModuleInstances(e,t){return this.__internal__knownTypes?.typesBundle?.spec?.[e.toString()]?.instances?.[t]||this.__internal__moduleMap[t]}getOrThrow(e){const t=this.get(e);if(!t)throw new Error(`type ${e} not found`);return t}getOrUnknown(e){return this.get(e,!0)}getTransactionExtensionVersion(){return 0}getSignedExtensionExtra(){return Bi(this.__internal__signedExtensions,"payload",this.__internal__userExtensions)}getSignedExtensionTypes(){return Bi(this.__internal__signedExtensions,"extrinsic",this.__internal__userExtensions)}hasClass(e){return this.__internal__classes.has(e)||!!this.__internal__knownDefaults[e]}hasDef(e){return this.__internal__definitions.has(e)}hasType(e){return!this.__internal__unknownTypes.get(e)&&(this.hasClass(e)||this.hasDef(e))}hash(e){return this.createType("CodecHash",this.__internal__hasher(e))}register(e,t){if((0,qe.T)(e))this.__internal__classes.set(e.name,e);else if((0,I.K)(e)){if(!(0,qe.T)(t))throw new Error(`Expected class definition passed to '${e}' registration`);if(e===t.toString())throw new Error(`Unable to register circular ${e} === ${e}`);this.__internal__classes.set(e,t)}else this.__internal__registerObject(e)}__internal__registerObject=e=>{const t=Object.entries(e);for(let n=0,r=t.length;n{this.setLookup(e);let t=null;if(this.hasType("SpWeightsWeightV2Weight")){const e=this.createType("SpWeightsWeightV2Weight");t=e.refTime&&e.proofSize?"SpWeightsWeightV2Weight":"WeightV1"}else(0,pn.f)(this.createType("Weight"))||(t="WeightV1");t&&this.register({Weight:t})};setMetadata(e,t,n,r){this.__internal__metadata=e.asLatest,this.__internal__metadataVersion=e.version,this.__internal__firstCallIndex=null,this.__internal__registerLookup(this.__internal__metadata.lookup),function(e,{lookup:t,pallets:n},r,a,i){const s=n.filter(Mf);$p(a),$p(i);for(let o=0,c=s.length;o=12?c.toNumber():o,l=jt(d),f=n.unwrap();Qr(a,u,(()=>Sf(t,f,eh,(n=>If(e,t,n,l,u)))));const{path:p}=e.lookup.getSiType(f.type),h=p.findIndex((e=>e.eq("pallet")));if(-1!==h){const e=jt(p.slice(0,h).map(((e,t)=>0===t?e.replace(/^(frame|pallet)_/,""):e)).join(" "));i[e]?i[e].push(l):i[e]=[l]}}}(this,this.__internal__metadata,this.__internal__metadataVersion,this.__internal__metadataCalls,this.__internal__moduleMap),function(e,{lookup:t,pallets:n},r,a){$p(a);for(let i=0,s=n.length;i=12?s.toNumber():i,(()=>Sf(t,e.unwrap(),eh,(({docs:e,fields:r,index:a,name:i})=>({args:Qp(t,r),docs:e.map(Yp),fields:r,index:a.toNumber(),method:i.toString(),name:i.toString(),section:n})))))}}}(0,this.__internal__metadata,this.__internal__metadataVersion,this.__internal__metadataErrors),function(e,{lookup:t,pallets:n},r,a){const i=n.filter(Af);$p(a);for(let s=0,o=i.length;s=12?o.toNumber():s,(()=>Sf(t,n.unwrap(),eh,(n=>{const r=e.createType("EventMetadataLatest",(0,M.b)({},n,{args:Qp(t,n.fields)}));return class extends Li{constructor(e,t){super(e,t,r,jt(c),n.name.toString())}}}))))}}(this,this.__internal__metadata,this.__internal__metadataVersion,this.__internal__metadataEvents);const[a]=Object.keys(this.__internal__metadataCalls).sort(Jp);if(a){const[e]=Object.keys(this.__internal__metadataCalls[a]).sort(Jp);e&&(this.__internal__firstCallIndex=new Uint8Array([parseInt(a,10),parseInt(e,10)]))}this.setSignedExtensions(t||(this.__internal__metadata.extrinsic.version.gt(lt)?this.__internal__metadata.extrinsic.signedExtensions.map((({identifier:e})=>e.toString())):Ri),n,r),this.setChainProperties(function(e,t){const n=e.getChainProperties(),r=Hf(e,t.asLatest,t.version),a=r.system&&(r.system.sS58Prefix||r.system.ss58Prefix);if(!a)return n;const{isEthereum:i,tokenDecimals:s,tokenSymbol:o}=n||{};return e.createTypeUnsafe("ChainProperties",[{isEthereum:i,ss58Format:a,tokenDecimals:s,tokenSymbol:o}])}(this,e))}setSignedExtensions(e=Ri,t,n){if(this.__internal__signedExtensions=e,this.__internal__userExtensions=t,!n){const e=function(e,t={}){const n=[...Object.keys(Hi),...Object.keys(t)];return e.filter((e=>!n.includes(e)))}(this.__internal__signedExtensions,this.__internal__userExtensions);e.length&&Kp.warn(`Unknown signed extensions ${e.join(", ")} found, treating them as no-effect`)}}}const nh={},rh={AnchorData:{anchoredBlock:"u64",docRoot:"H256",id:"H256"},DispatchErrorModule:"DispatchErrorModuleU8",PreCommitData:{expirationBlock:"u64",identity:"H256",signingRoot:"H256"},Fee:{key:"Hash",price:"Balance"},MultiAccountData:{deposit:"Balance",depositor:"AccountId",signatories:"Vec",threshold:"u16"},ChainId:"u8",DepositNonce:"u64",ResourceId:"[u8; 32]","chainbridge::ChainId":"u8",RegistryId:"H160",TokenId:"U256",AssetId:{registryId:"RegistryId",tokenId:"TokenId"},AssetInfo:{metadata:"Bytes"},MintInfo:{anchorId:"Hash",proofs:"Vec",staticHashes:"[Hash; 3]"},Proof:{leafHash:"H256",sortedHashes:"H256"},ProofMint:{hashes:"Vec",property:"Bytes",salt:"[u8; 32]",value:"Bytes"},RegistryInfo:{fields:"Vec",ownerCanBurn:"bool"},ProxyType:{_enum:["Any","NonTransfer","Governance","Staking","NonProxy"]}},ah={...rh,AccountInfo:"AccountInfoWithRefCount",Address:"LookupSource",LookupSource:"IndicesLookupSource",Multiplier:"Fixed64",RefCount:"RefCountTo259"},ih={CompactAssignments:"CompactAssignmentsWith24",DispatchErrorModule:"DispatchErrorModuleU8",RawSolution:"RawSolutionWith24",Keys:"SessionKeys6",ProxyType:{_enum:["Any","NonTransfer","Governance","Staking","IdentityJudgement","CancelProxy","Auction"]},Weight:"WeightV1"},sh={AccountInfo:"AccountInfoWithRefCount",Address:"LookupSource",CompactAssignments:"CompactAssignmentsWith16",DispatchErrorModule:"DispatchErrorModuleU8",RawSolution:"RawSolutionWith16",Keys:"SessionKeys5",LookupSource:"IndicesLookupSource",ValidatorPrefs:"ValidatorPrefsWithCommission"},oh={AccountInfo:"AccountInfoWithRefCount",Address:"AccountId",CompactAssignments:"CompactAssignmentsWith16",DispatchErrorModule:"DispatchErrorModuleU8",RawSolution:"RawSolutionWith16",Keys:"SessionKeys5",LookupSource:"AccountId",ValidatorPrefs:"ValidatorPrefsWithCommission"},ch={CompactAssignments:"CompactAssignmentsWith16",DispatchErrorModule:"DispatchErrorModuleU8",RawSolution:"RawSolutionWith16",Keys:"SessionKeys6",ProxyType:{_enum:{Any:0,NonTransfer:1,Governance:2,Staking:3,UnusedSudoBalances:4,IdentityJudgement:5,CancelProxy:6,Auction:7}},Weight:"WeightV1"},dh={AccountInfo:"AccountInfoWithRefCount",Address:"AccountId",DispatchErrorModule:"DispatchErrorModuleU8",Keys:"SessionKeys5",LookupSource:"AccountId",ValidatorPrefs:"ValidatorPrefsWithCommission"},uh={DispatchErrorModule:"DispatchErrorModuleU8",FullIdentification:"()",Keys:"SessionKeys7B",Weight:"WeightV1"},lh={DispatchErrorModule:"DispatchErrorModuleU8",TAssetBalance:"u128",ProxyType:{_enum:["Any","NonTransfer","CancelProxy","Assets","AssetOwner","AssetManager","Staking"]},Weight:"WeightV1"},fh={DispatchErrorModule:"DispatchErrorModuleU8",TAssetBalance:"u128",ProxyType:{_enum:["Any","NonTransfer","CancelProxy","Assets","AssetOwner","AssetManager","Staking"]},Weight:"WeightV1"},ph={CompactAssignments:"CompactAssignmentsWith16",DispatchErrorModule:"DispatchErrorModuleU8",RawSolution:"RawSolutionWith16",Keys:"SessionKeys6",ProxyType:{_enum:["Any","NonTransfer","Staking","SudoBalances","IdentityJudgement","CancelProxy"]},Weight:"WeightV1"},hh={AccountInfo:"AccountInfoWithRefCount",Address:"AccountId",CompactAssignments:"CompactAssignmentsWith16",DispatchErrorModule:"DispatchErrorModuleU8",LookupSource:"AccountId",Keys:"SessionKeys5",RawSolution:"RawSolutionWith16",ValidatorPrefs:"ValidatorPrefsWithCommission"},bh={DispatchErrorModule:"DispatchErrorModuleU8",TAssetBalance:"u128",ProxyType:{_enum:["Any","NonTransfer","CancelProxy","Assets","AssetOwner","AssetManager","Staking"]},Weight:"WeightV1"},mh={"centrifuge-chain":[{minmax:[240,243],types:{...ah,ProxyType:{_enum:["Any","NonTransfer","Governance","Staking","Vesting"]}}},{minmax:[244,999],types:{...ah}},{minmax:[1e3,void 0],types:{...rh}}],kusama:[{minmax:[1019,1031],types:{...sh,BalanceLock:"BalanceLockTo212",CompactAssignments:"CompactAssignmentsTo257",DispatchError:"DispatchErrorTo198",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",IdentityInfo:"IdentityInfoTo198",Keys:"SessionKeys5",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",ReferendumInfo:"ReferendumInfoTo239",Scheduled:"ScheduledTo254",SlashingSpans:"SlashingSpansTo204",StakingLedger:"StakingLedgerTo223",Votes:"VotesTo230",Weight:"u32"}},{minmax:[1032,1042],types:{...sh,BalanceLock:"BalanceLockTo212",CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Keys:"SessionKeys5",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",ReferendumInfo:"ReferendumInfoTo239",Scheduled:"ScheduledTo254",SlashingSpans:"SlashingSpansTo204",StakingLedger:"StakingLedgerTo223",Votes:"VotesTo230",Weight:"u32"}},{minmax:[1043,1045],types:{...sh,BalanceLock:"BalanceLockTo212",CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Keys:"SessionKeys5",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",ReferendumInfo:"ReferendumInfoTo239",Scheduled:"ScheduledTo254",StakingLedger:"StakingLedgerTo223",Votes:"VotesTo230",Weight:"u32"}},{minmax:[1046,1049],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",ReferendumInfo:"ReferendumInfoTo239",Scheduled:"ScheduledTo254",StakingLedger:"StakingLedgerTo223",Weight:"u32"}},{minmax:[1050,1054],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",ReferendumInfo:"ReferendumInfoTo239",Scheduled:"ScheduledTo254",StakingLedger:"StakingLedgerTo240",Weight:"u32"}},{minmax:[1055,1056],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",Scheduled:"ScheduledTo254",StakingLedger:"StakingLedgerTo240",Weight:"u32"}},{minmax:[1057,1061],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",Scheduled:"ScheduledTo254"}},{minmax:[1062,2012],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259"}},{minmax:[2013,2022],types:{...ih,...oh,CompactAssignments:"CompactAssignmentsTo257",RefCount:"RefCountTo259"}},{minmax:[2023,2024],types:{...ih,...oh,RefCount:"RefCountTo259"}},{minmax:[2025,2027],types:{...ih,...oh}},{minmax:[2028,2029],types:{...ih,AccountInfo:"AccountInfoWithDualRefCount",CompactAssignments:"CompactAssignmentsWith16",RawSolution:"RawSolutionWith16"}},{minmax:[2030,9e3],types:{...ih,CompactAssignments:"CompactAssignmentsWith16",RawSolution:"RawSolutionWith16"}},{minmax:[9010,9099],types:{...ih,...tf("V0")}},{minmax:[9100,9105],types:{...ih,...tf("V1")}},{minmax:[9106,void 0],types:{Weight:"WeightV1"}}],node:[{minmax:[0,void 0],types:{Weight:"WeightV2"}}],"node-template":[{minmax:[0,void 0],types:{Weight:"WeightV2"}}],polkadot:[{minmax:[0,12],types:{...ch,...dh,CompactAssignments:"CompactAssignmentsTo257",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259"}},{minmax:[13,22],types:{...ch,...dh,CompactAssignments:"CompactAssignmentsTo257",RefCount:"RefCountTo259"}},{minmax:[23,24],types:{...ch,...dh,RefCount:"RefCountTo259"}},{minmax:[25,27],types:{...ch,...dh}},{minmax:[28,29],types:{...ch,AccountInfo:"AccountInfoWithDualRefCount"}},{minmax:[30,9109],types:{...ch}},{minmax:[9110,void 0],types:{Weight:"WeightV1"}}],rococo:[{minmax:[0,200],types:{...uh,AccountInfo:"AccountInfoWithDualRefCount",Address:"AccountId",LookupSource:"AccountId"}},{minmax:[201,214],types:{...uh,AccountInfo:"AccountInfoWithDualRefCount"}},{minmax:[215,228],types:{...uh,Keys:"SessionKeys6"}},{minmax:[229,9099],types:{...uh,...tf("V0")}},{minmax:[9100,9105],types:{...uh,...tf("V1")}},{minmax:[9106,void 0],types:{Weight:"WeightV1"}}],shell:[{minmax:[0,void 0],types:{}}],statemine:[{minmax:[0,3],types:{DispatchError:"DispatchErrorPre6First",...lh,...tf("V0")}},{minmax:[4,5],types:{DispatchError:"DispatchErrorPre6First",...lh,...tf("V1")}},{minmax:[500,9999],types:{Weight:"WeightV1",TAssetConversion:"Option"}},{minmax:[1e4,void 0],types:{Weight:"WeightV1"}}],statemint:[{minmax:[0,3],types:{DispatchError:"DispatchErrorPre6First",...fh,...tf("V0")}},{minmax:[4,5],types:{DispatchError:"DispatchErrorPre6First",...fh,...tf("V1")}},{minmax:[500,1001003],types:{Weight:"WeightV1",TAssetConversion:"Option"}},{minmax:[1002e3,void 0],types:{Weight:"WeightV1"}}],westend:[{minmax:[1,2],types:{...ph,...hh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",Multiplier:"Fixed64",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259",Weight:"u32"}},{minmax:[3,22],types:{...ph,...hh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",OpenTip:"OpenTipTo225",RefCount:"RefCountTo259"}},{minmax:[23,42],types:{...ph,...hh,CompactAssignments:"CompactAssignmentsTo257",DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",RefCount:"RefCountTo259"}},{minmax:[43,44],types:{...ph,...hh,DispatchInfo:"DispatchInfoTo244",Heartbeat:"HeartbeatTo244",RefCount:"RefCountTo259"}},{minmax:[45,47],types:{...ph,...hh}},{minmax:[48,49],types:{...ph,AccountInfo:"AccountInfoWithDualRefCount"}},{minmax:[50,9099],types:{...ph,...tf("V0")}},{minmax:[9100,9105],types:{...ph,...tf("V1")}},{minmax:[9106,void 0],types:{Weight:"WeightV1"}}],westmint:[{minmax:[0,3],types:{DispatchError:"DispatchErrorPre6First",...bh,...tf("V0")}},{minmax:[4,5],types:{DispatchError:"DispatchErrorPre6First",...bh,...tf("V1")}},{minmax:[500,9434],types:{Weight:"WeightV1",TAssetConversion:"Option"}},{minmax:[9435,void 0],types:{Weight:"WeightV1"}}]},yh=[[0,1020,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[26669,1021,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[38245,1022,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[54248,1023,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[59659,1024,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[67651,1025,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[82191,1027,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[83238,1028,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[101503,1029,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[203466,1030,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[295787,1031,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[461692,1032,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[504329,1033,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[569327,1038,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",1],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[587687,1039,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[653183,1040,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[693488,1042,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[901442,1045,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1375086,1050,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1445458,1051,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1472960,1052,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1475648,1053,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1491596,1054,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1574408,1055,[["0xdf6acb689907609b",2],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",1],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2064961,1058,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2201991,1062,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2671528,2005,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2704202,2007,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2728002,2008,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2832534,2011,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2962294,2012,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[324e4,2013,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3274408,2015,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3323565,2019,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3534175,2022,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3860281,2023,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4143129,2024,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4401242,2025,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4841367,2026,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5961600,2027,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6137912,2028,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6561855,2029,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7100891,2030,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7468792,9010,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7668600,9030,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7812476,9040,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8010981,9050,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8073833,9070,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8555825,9080,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8945245,9090,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9611377,9100,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9625129,9111,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9866422,9122,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10403784,9130,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10960765,9150,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11006614,9151,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11404482,9160,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11601803,9170,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[12008022,9180,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[12405451,9190,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[12665416,9200,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[12909508,9220,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[13109752,9230,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[13555777,9250,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[13727747,9260,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[14248044,9271,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0x17a6bc0d0062aeb3",1]]],[14433840,9280,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[14645900,9291,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[15048375,9300,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[15426015,9320,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[15680713,9340,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[15756296,9350,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[15912007,9360,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[16356547,9370,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[17335450,9381,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",3],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1]]],[18062739,9420,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[18625e3,9430,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[20465806,1e6,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",5],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[2157e4,1001e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",7],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[21786291,1001002,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",7],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[22515962,1001003,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",7],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[2279e4,1002e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[23176015,1002001,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[23450253,1002004,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[23565293,1002005,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[23780224,1002006,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[24786390,1003e3,[["0xc51ff1fa3f5d0cca",1],["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x91b1c8b16328eb92",1],["0x9ffb505aa738d69c",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]]],xh=[[0,0,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[29231,1,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[188836,5,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[199405,6,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[214264,7,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[244358,8,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[303079,9,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[314201,10,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[342400,11,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[443963,12,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[528470,13,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[687751,14,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[746085,15,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[787923,16,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[799302,17,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1205128,18,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1603423,23,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1733218,24,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2005673,25,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2436698,26,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3613564,27,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3899547,28,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4345767,29,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4876134,30,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5661442,9050,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6321619,9080,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6713249,9090,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7217907,9100,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7229126,9110,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7560558,9122,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8115869,9140,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8638103,9151,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9280179,9170,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9738717,9180,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10156856,9190,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10458576,9200,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10655116,9220,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10879371,9230,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11328884,9250,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11532856,9260,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11933818,9270,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[12217535,9280,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1]]],[12245277,9281,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1]]],[12532644,9291,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1]]],[12876189,9300,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1]]],[13800015,9340,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2]]],[14188833,9360,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2]]],[14543918,9370,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2]]],[15978362,9420,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3]]],[1645e4,9430,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3]]],[1784e4,9431,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3]]],[18407475,1000001,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",5],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3]]],[19551e3,1001002,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",5],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[20181758,1001003,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",5],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[20438530,1002e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[21169168,1002004,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[21455374,1002005,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[21558004,1002006,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]],[21800141,1002007,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0xfbc577b9d747efd6",1]]]],gh=[[214356,4,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",1],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[392764,7,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[409740,8,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[809976,20,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[877581,24,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[879238,25,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[889472,26,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[902937,27,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[932751,28,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[991142,29,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1030162,31,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1119657,32,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1199282,33,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1342534,34,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1392263,35,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1431703,36,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1433369,37,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[1490972,41,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2087397,43,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2316688,44,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[2549864,45,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3925782,46,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[3925843,47,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4207800,48,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[4627944,49,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5124076,50,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5478664,900,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5482450,9e3,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",4],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5584305,9010,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5784566,9030,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5879822,9031,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5896856,9032,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[5897316,9033,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6117927,9050,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6210274,9070,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",2],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6379314,9080,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",2],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[6979141,9090,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7568453,9100,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7766394,9111,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7911691,9120,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7968866,9121,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[7982889,9122,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[8514322,9130,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9091726,9140,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9091774,9150,[["0xdf6acb689907609b",3],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",1],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9406726,9160,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[9921066,9170,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10007115,9180,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",5],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10480973,9190,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10578091,9200,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10678509,9210,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[10811001,9220,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11096116,9230,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11409279,9250,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11584820,9251,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11716837,9260,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11876919,9261,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1]]],[11987927,9270,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0x17a6bc0d0062aeb3",1]]],[12077324,9271,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0x17a6bc0d0062aeb3",1]]],[12301871,9280,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[12604343,9290,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",2],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[12841034,9300,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[13128237,9310,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",1],["0xf3ff14d5ab527059",1],["0x17a6bc0d0062aeb3",1]]],[13272363,9320,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[13483497,9330,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[13649433,9340,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[13761100,9350,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[13847400,9360,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[14249200,9370,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",2],["0xf3ff14d5ab527059",2],["0x17a6bc0d0062aeb3",1]]],[14576855,9380,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",3],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",3],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1]]],[14849830,9390,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",1],["0x91d5df18b0d2cf58",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",3],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[15146832,9400,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",3],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[15332317,9401,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",1],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",3],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[15661793,9420,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[16165469,9430,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",4],["0x49eaaf1b548a0cb0",2],["0x91d5df18b0d2cf58",2],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1]]],[18293984,102e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",7],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[18293991,103e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",8],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[18451783,104e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",9],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[18679741,1005e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",9],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[19166695,1006e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[19234157,1006001,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[19542944,1007e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[19621258,1007001,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[19761406,1008e3,[["0xdf6acb689907609b",4],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[20056997,1009e3,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[20368318,101e4,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",10],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[20649086,1011e3,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[21217837,1011001,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[21300429,1013e3,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x91b1c8b16328eb92",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[21460051,1014e3,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",3],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x91b1c8b16328eb92",1],["0x9ffb505aa738d69c",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]],[21925427,1015e3,[["0xdf6acb689907609b",5],["0x37e397fc7c91f5e4",2],["0x40fe3ad401f8959a",6],["0xd2bc9897eed08f15",3],["0xf78b278be53f454c",2],["0xaf2c0297a23e6d3d",11],["0x49eaaf1b548a0cb0",4],["0x91d5df18b0d2cf58",2],["0x2a5e924655399e60",1],["0xed99c5acb25eedf5",3],["0xcbca25e39f142387",2],["0x687ad44ad37f03c2",1],["0xab3c0572291feb8b",1],["0xbc9d89904f5b923f",1],["0x37c8bb1350a9a2a8",4],["0xf3ff14d5ab527059",3],["0x6ff52ee858e6c5bd",1],["0x91b1c8b16328eb92",1],["0x9ffb505aa738d69c",1],["0x17a6bc0d0062aeb3",1],["0x18ef58a3b67ba770",1],["0xfbc577b9d747efd6",1]]]],vh={westend:{genesisHash:["0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e"]}};const wh=Object.entries(s).map((function([e,t]){const n=so.find((t=>t.network===e))||vh[e];if(!n)throw new Error(`Unable to find info for chain ${e}`);return{genesisHash:(0,es.V)(n.genesisHash[0]),network:e,versions:t.map((([e,t,n])=>({apis:n,blockNumber:new st(e),specVersion:new st(t)})))}}));function Vh(e,t,n){return n(e.toString(),t.toString())}function Th(e=[],t){return e.filter((({minmax:[e,n]})=>(null==e||t>=e)&&(null==n||t<=n))).reduce(((e,{types:t})=>({...e,...t})),{})}function Sh({knownTypes:e},t,n){return Vh(t,n,((t,n)=>({...e.typesBundle?.spec?.[n]?.rpc??{},...e.typesBundle?.chain?.[t]?.rpc??{}})))}var kh=R((function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})),_h=function(e){function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return(0,L.__extends)(t,e),t.prototype.lift=function(e){var t=new Ph(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new kh},t.prototype.next=function(e){var t=this;$((function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||(t.currentObservers=Array.from(t.observers));try{for(var a=(0,L.__values)(t.currentObservers),i=a.next();!i.done;i=a.next()){i.value.next(e)}}catch(s){n={error:s}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}}}))},t.prototype.error=function(e){var t=this;$((function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}}))},t.prototype.complete=function(){var e=this;$((function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}}))},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,a=n.isStopped,i=n.observers;return r||a?j:(this.currentObservers=null,i.push(e),new q((function(){t.currentObservers=null,D(i,e)})))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,a=t.isStopped;n?e.error(r):a&&e.complete()},t.prototype.asObservable=function(){var e=new he;return e.source=this,e},t.create=function(e,t){return new Ph(e,t)},t}(he),Ph=function(e){function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return(0,L.__extends)(t,e),t.prototype.next=function(e){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===n||n.call(t,e)},t.prototype.error=function(e){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===n||n.call(t,e)},t.prototype.complete=function(){var e,t;null===(t=null===(e=this.destination)||void 0===e?void 0:e.complete)||void 0===t||t.call(e)},t.prototype._subscribe=function(e){var t,n;return null!==(n=null===(t=this.source)||void 0===t?void 0:t.subscribe(e))&&void 0!==n?n:j},t}(_h),Mh=function(e){function t(t){var n=e.call(this)||this;return n._value=t,n}return(0,L.__extends)(t,e),Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return!n.closed&&t.next(this._value),n},t.prototype.getValue=function(){var e=this,t=e.hasError,n=e.thrownError,r=e._value;if(t)throw n;return this._throwIfClosed(),r},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(_h),Ih=Array.isArray,Nh=Object.getPrototypeOf,Eh=Object.prototype,Oh=Object.keys;function Ah(e){if(1===e.length){var t=e[0];if(Ih(t))return{args:t,keys:null};if((r=t)&&"object"==typeof r&&Nh(r)===Eh){var n=Oh(t);return{args:n.map((function(e){return t[e]})),keys:n}}}var r;return{args:e,keys:null}}var Ch=Array.isArray;function Hh(e){return ze((function(t){return function(e,t){return Ch(t)?e.apply(void 0,(0,L.__spreadArray)([],(0,L.__read)(t))):e(t)}(e,t)}))}function Rh(){for(var e=[],t=0;t=2,!1,!0))}var Uh=function(e,t){return e.push(t),e};function Dh(){return _e((function(e,t){zh(Uh,[])(e).subscribe(t)}))}function qh(e,t,n,r){Qr(e,t,(()=>$r({},n(t),(e=>r(t,e)))))}function jh(){return"none"}function Fh(e,{getInstanceId:t=jh}={}){const n={},r=(...r)=>{const a=(0,je.A)(r),i=t();return n[i]||(n[i]={}),void 0===n[i][a]&&(n[i][a]=e(...r)),n[i][a]};return r.unmemoize=(...e)=>{const r=(0,je.A)(e),a=t();void 0!==n[a]?.[r]&&delete n[a][r]},r}function Xh(e){return _e((function(t,n){var r,a=null,i=!1;a=t.subscribe(Pe(n,void 0,void 0,(function(s){r=Te(e(s,Xh(e)(t))),a?(a.unsubscribe(),a=null,r.subscribe(n)):i=!0}))),i&&(a.unsubscribe(),a=null,r.subscribe(n))}))}function Wh(e,t){return e===t}var Zh={now:function(){return(Zh.delegate||Date).now()},delegate:void 0},Gh=function(e){function t(t,n,r){void 0===t&&(t=1/0),void 0===n&&(n=1/0),void 0===r&&(r=Zh);var a=e.call(this)||this;return a._bufferSize=t,a._windowTime=n,a._timestampProvider=r,a._buffer=[],a._infiniteTimeWindow=!0,a._infiniteTimeWindow=n===1/0,a._bufferSize=Math.max(1,t),a._windowTime=Math.max(1,n),a}return(0,L.__extends)(t,e),t.prototype.next=function(t){var n=this,r=n.isStopped,a=n._buffer,i=n._infiniteTimeWindow,s=n._timestampProvider,o=n._windowTime;r||(a.push(t),!i&&a.push(s.now()+o)),this._trimBuffer(),e.prototype.next.call(this,t)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var t=this._innerSubscribe(e),n=this._infiniteTimeWindow,r=this._buffer.slice(),a=0;a0?e.prototype.requestAsyncId.call(this,t,n,r):(t.actions.push(this),t._scheduled||(t._scheduled=db.setImmediate(t.flush.bind(t,void 0))))},t.prototype.recycleAsyncId=function(t,n,r){var a;if(void 0===r&&(r=0),null!=r?r>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,t,n,r);var i=t.actions;null!=n&&(null===(a=i[i.length-1])||void 0===a?void 0:a.id)!==n&&(db.clearImmediate(n),t._scheduled===n&&(t._scheduled=void 0))},t}(rb),lb=function(){function e(t,n){void 0===n&&(n=e.now),this.schedulerActionCtor=t,this.now=n}return e.prototype.schedule=function(e,t,n){return void 0===t&&(t=0),new this.schedulerActionCtor(this,e).schedule(n,t)},e.now=Zh.now,e}(),fb=new(function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,L.__extends)(t,e),t.prototype.flush=function(e){this._active=!0;var t=this._scheduled;this._scheduled=void 0;var n,r=this.actions;e=e||r.shift();do{if(n=e.execute(e.state,e.delay))break}while((e=r[0])&&e.id===t&&r.shift());if(this._active=!1,n){for(;(e=r[0])&&e.id===t&&r.shift();)e.unsubscribe();throw n}},t}(function(e){function t(t,n){void 0===n&&(n=lb.now);var r=e.call(this,t,n)||this;return r.actions=[],r._active=!1,r}return(0,L.__extends)(t,e),t.prototype.flush=function(e){var t=this.actions;if(this._active)t.push(e);else{var n;this._active=!0;do{if(n=e.execute(e.state,e.delay))break}while(e=t.shift());if(this._active=!1,n){for(;e=t.shift();)e.unsubscribe();throw n}}},t}(lb)))(ub);function pb(e=1750){return t=>{let[n,r,a,i]=[0,0,q.EMPTY,q.EMPTY];return new he((s=>(t.subscribe(s),0==r++&&(1===n?i.unsubscribe():a=t.connect(),n=3),()=>{0==--r&&(2===n?(n=0,i.unsubscribe()):(n=1,i=fb.schedule((()=>{n=0,a.unsubscribe()}),e)))})))}}function hb(e,t){return(0,je.A)({t:e})===(0,je.A)({t:t})}function bb(e){throw e}function mb(){}function yb({delay:e,skipChange:t=!1,skipTimeout:n=!1}={}){return r=>{return r.pipe(Xh(bb),t?Lh(mb):(void 0===i&&(i=fe),a=null!=(a=hb)?a:Wh,_e((function(e,t){var n,r=!0;e.subscribe(Pe(t,(function(e){var s=i(e);!r&&a(n,s)||(r=!1,n=s,t.next(e))})))}))),$h(1),n?Kh():pb(e));var a,i}}function xb(e,t){const n=Fh(((...e)=>new he((r=>{const a=t(...e).subscribe(r);return()=>{n.unmemoize(...e),a.unsubscribe()}})).pipe(yb())),{getInstanceId:()=>e});return n}function gb(e,t){return xb(e,(e=>{const n=(0,ut.b)(e)?e:co((e||"").toString());if(n.length>8)return Le(t.registry.createType(20===n.length?"AccountId20":"AccountId",n));const r=t.registry.createType("AccountIndex",n);return t.derive.accounts.indexToId(r.toString()).pipe(ze((e=>ea(e,"Unable to retrieve accountId"))))}))}function vb(e,t){return xb(e,(()=>{const e=[void 0,[],[],[],void 0],n=[(t.query.elections||t.query.phragmenElection||t.query.electionsPhragmen)?.members,t.query.council?.members,t.query.technicalCommittee?.members,t.query.society?.members,t.query.sudo?.key],r=n.filter((e=>e));return r.length?t.queryMulti(r).pipe(ze((t=>{let r=-1;for(let a=0,i=n.length;at.derive.accounts._flags().pipe(ze((t=>function(e,[t,n,r,a,i]){const s=e?.toString(),o=e=>e.toString()===s;return{isCouncil:(t?.map((e=>Array.isArray(e)?e[0]:e.who))||n||[]).some(o),isSociety:(a||[]).some(o),isSudo:i?.toString()===s,isTechCommittee:(r||[]).some(o)}}(e,t))))))}function Vb(e,t){return xb(e,(e=>{try{const n=(0,ut.b)(e)?e:co((e||"").toString());if(n.length>8){const e=t.registry.createType(20===n.length?"AccountId20":"AccountId",n);return t.derive.accounts.idToIndex(e).pipe(ze((t=>[e,t])))}const r=t.registry.createType("AccountIndex",n);return t.derive.accounts.indexToId(r.toString()).pipe(ze((e=>[e,r])))}catch{return Le([void 0,void 0])}}))}function Tb(e){return e.pipe(ze((([e])=>e)))}function Sb(e){return(t,n)=>xb(t,((...t)=>Tb(e(n,...t))))}const kb={toHex:()=>{}};function _b(e){return e?e.isRaw?nt(e.asRaw.toU8a(!0)):e.isNone?void 0:e.toHex():e}function Pb(e){const t=e.unwrap();return Array.isArray(t)?t[0]:t}function Mb(e,t){return xb(e,(e=>e&&t.query.identity?.identityOf?Rh([t.query.identity.identityOf(e),t.query.identity.superOf(e)]):Le([void 0,void 0])))}function Ib(e,t){return xb(e,(e=>t.derive.accounts._identity(e).pipe(Ie((([e,n])=>function(e,t,n){if(t?.isSome)return Le([t,void 0]);if(n?.isSome){const t=n.unwrap();return Rh([e.derive.accounts._identity(t[0]).pipe(ze((([e])=>e))),Le(t)])}return Le([void 0,void 0])}(t,e,n))),ze((([e,t])=>function(e,t){if(!e?.isSome)return{judgements:[]};const{info:n,judgements:r}=Pb(e),a=_b(n.display);return{discord:_b(n.discord),display:t&&_b(t[1])||a,displayParent:t&&a,email:_b(n.email),github:_b(n.github),image:_b(n.image),judgements:r,legal:_b(n.legal),matrix:_b(n.matrix),other:n.additional?(i=n.additional,i.reduce(((e,[t,n])=>{const r=_b(t),a=_b(n);return r&&a&&(e[r]=a),e}),{})):{},parent:t?.[0],pgp:n.pgpFingerprint.unwrapOr(kb).toHex(),riot:_b(n.riot),twitter:_b(n.twitter),web:_b(n.web)};var i}(e,t))))))}const Nb=Sb(((e,t)=>e.derive.accounts.hasIdentityMulti([t])));function Eb(e,t){return xb(e,(e=>t.query.identity?.identityOf?Rh([t.query.identity.identityOf.multi(e),t.query.identity.superOf.multi(e)]).pipe(ze((([e,t])=>e.map(((e,n)=>{const r=t[n],a=r&&r.isSome?r.unwrap()[0].toString():void 0;let i;if(e&&e.isSome){const t=_b(Pb(e).info.display);t&&!(0,Je.qv)(t)&&(i=t)}return{display:i,hasIdentity:!(!i&&!a),parentId:a}}))))):Le(e.map((()=>({hasIdentity:!1}))))))}function Ob(e,t){return xb(e,(e=>t.derive.accounts.indexes().pipe(ze((t=>t[e.toString()])))))}function Ab(e,t,n){return void 0===n&&(n=1/0),z(t)?Ab((function(n,r){return ze((function(e,a){return t(n,e,r,a)}))(Te(e(n,r)))}),n):("number"==typeof t&&(n=t),_e((function(t,r){return function(e,t,n,r,a,i,s,o){var c=[],d=0,u=0,l=!1,f=function(){!l||c.length||d||t.complete()},p=function(e){return dBb?Le(Bb):(t.query.indices?function(e){return e.query.indices.accounts.entries().pipe(ze((t=>t.reduce(((t,[n,r])=>(r.isSome&&(t[r.unwrap()[0].toString()]=e.registry.createType("AccountIndex",n.args[0])),t)),{}))))}(t).pipe(Rb({})):Le({})).pipe(ze((e=>(Bb=e,e))))))}function zb(e,t){return xb(e,(e=>t.query.indices?t.query.indices.accounts(e).pipe(ze((e=>e.unwrapOr([])[0]))):Le(void 0)))}function Ub(e,t){return(t&&e.query.nicks?.nameOf?e.query.nicks.nameOf(t):Le(void 0)).pipe(ze((t=>t?.isSome?nt(t.unwrap()[0]).substring(0,e.consts.nicks.maxLength.toNumber()):void 0)))}function Db(e,t){return xb(e,(e=>t.derive.accounts.idAndIndex(e).pipe(Ie((([e,n])=>Rh([Le({accountId:e,accountIndex:n}),t.derive.accounts.identity(e),Ub(t,e)]))),ze((([{accountId:e,accountIndex:t},n,r])=>({accountId:e,accountIndex:t,identity:n,nickname:r}))))))}function qb(e,t){return(n,r)=>xb(n,t(function(e,t){const n=e.registry.getModuleInstances(e.runtimeVersion.specName,t),r=n?.length?n[0]:t;return e.query[r]}(r,e),r,n))}function jb(e,t){return n=>qb(n,(n=>()=>(0,qe.T)(n?.[e])?n[e]():Le(t)))}const Fb=jb("members",[]);function Xb(e,t,n){return((0,qe.T)(t?.proposals)&&n.length?Rh([Le(n),t.proposalOf.multi(n).pipe(Xh((()=>Le(n.map((()=>null)))))),t.voting.multi(n)]):Le([[],[],[]])).pipe(ze((t=>function(e,[t,n,r]){return n.map(((n,a)=>({hash:e.registry.createType("Hash",t[a]),proposal:n&&n.isSome?n.unwrap():null,votes:r[a].unwrapOr(null)})))}(e,t))))}function Wb(e){return qb(e,(e=>()=>Le((0,qe.T)(e?.proposals))))}function Zb(e){return qb(e,((t,n)=>()=>n.derive[e].proposalHashes().pipe(Ie((e=>Xb(n,t,e))))))}function Gb(e){return qb(e,((e,t)=>n=>(0,qe.T)(e?.proposals)?Tb(Xb(t,e,[n])):Le(null)))}const Kb=jb("proposalCount",null),Jb=jb("proposals",[]);function Yb(e){return qb(e,(e=>()=>(0,qe.T)(e?.prime)?e.prime().pipe(ze((e=>e.unwrapOr(null)))):Le(null)))}const Qb=Fb("allianceMotion"),$b=Wb("allianceMotion"),em=Gb("allianceMotion"),tm=Kb("allianceMotion"),nm=Jb("allianceMotion"),rm=Zb("allianceMotion"),am=Yb("allianceMotion");function im(e){return e.query.voterList||e.query.voterBagsList||e.query.bagsList}function sm(e,t){const n=im(t);return xb(e,(e=>{const t=e.map((e=>kt(e)));return t.length?n.listBags.multi(t).pipe(ze((e=>function(e,t){const n=e.map(((e,n)=>({bag:t[n].unwrapOr(null),id:e,key:e.toString()}))).sort(((e,t)=>t.id.cmp(e.id))),r=n.length-1;return n.map(((e,t)=>(0,M.b)(e,{bagLower:t===r?lt:n[t+1].id,bagUpper:e.id,index:t})))}(t,e)))):Le([])}))}function om(e,t){const n=im(t);return xb(e,(()=>n.listBags.keys().pipe(Ie((e=>t.derive.bagsList._getIds(e.map((({args:[e]})=>e))))),ze((e=>e.filter((({bag:e})=>e)))))))}function cm(e,t){return xb(e,(e=>t.derive.bagsList._getIds([kt(e)]).pipe(ze((e=>e[0])))))}function dm(e,t){return xb(e,(e=>t.derive.bagsList.listNodes(e.bag).pipe(ze((t=>(0,M.b)({nodes:t},e))))))}function um(e,t){return xb(e,(e=>t.derive.bagsList.get(e).pipe(Ie((e=>t.derive.bagsList.expand(e))))))}function lm(e,t){setTimeout((()=>{Promise.resolve().then((()=>{e()})).catch((e=>{t?t(e):console.error(e)}))}),0)}function fm(e,t){return xb(e,(e=>e&&e.head.isSome?function(e,t){const n=new Mh(t),r=im(e);return n.pipe(Ie((e=>r.listNodes(e))),Lh((e=>{lm((()=>{e.isSome&&e.value.next.isSome?n.next(e.unwrap().next.unwrap()):n.complete()}))})),Dh(),ze((e=>e.map((e=>e.unwrap())))))}(t,e.head.unwrap()):Le([])))}function pm(e){return(...t)=>{const n=t.length;if(0===n)throw new Error("Must provide one or more arguments");let r=t[0];for(let a=1;ae.gt(t))),bm=pm(((e,t)=>e.lt(t))),mm="0x76657374696e6720";function ym(e,t,n,r){const{allLocked:a,lockedBalance:i,lockedBreakdown:s,vestingLocked:o}=function(e,t,n){let r=e.registry.createType("Balance"),a=[],i=e.registry.createType("Balance"),s=!1;if(Array.isArray(n)){a=n.filter((({until:e})=>!e||t&&e.gt(t))),s=a.some((({amount:e})=>e&&e.isMax())),i=e.registry.createType("Balance",a.filter((({id:e})=>e.eq(mm))).reduce(((e,{amount:t})=>e.iadd(t)),new st(0)));const o=a.filter((({amount:e})=>e&&!e.isMax()));o.length&&(r=e.registry.createType("Balance",hm(...o.map((({amount:e})=>e)))))}return{allLocked:s,lockedBalance:r,lockedBreakdown:a,vestingLocked:i}}(e,t,r);let c=null;if(n?.frameSystemAccountInfo?.frozen){const{frameSystemAccountInfo:t,freeBalance:r,reservedBalance:i}=n,s=t.frozen.isZero()&&i.isZero(),o=e.consts.balances.existentialDeposit,d=s?new st(0):o,u=t.frozen.sub(i);c=e.registry.createType("Balance",a?0:r.sub(hm(d,u)))}return(0,M.b)({},n,{availableBalance:e.registry.createType("Balance",a?0:hm(new st(0),n?.freeBalance?n.freeBalance.sub(i):new st(0))),lockedBalance:i,lockedBreakdown:s,transferable:c,vestingLocked:o})}function xm(e,t){const[n,[r,a,i],s]=t,o=ym(e,s,n,a[0]);return(0,M.b)(o,function(e,t,n){const r=n||[],a=!t.vestingLocked.isZero(),i=r.map((({locked:t,perBlock:n,startingBlock:r})=>e.gt(r)?bm(t,n.mul(e.sub(r))):lt)),s=i.reduce(((e,t)=>e.iadd(t)),new st(0)),o=r.reduce(((e,{locked:t})=>e.iadd(t)),new st(0));return{isVesting:a,vestedBalance:s,vestedClaimable:a?t.vestingLocked.sub(o.sub(s)):lt,vesting:r.map((({locked:e,perBlock:t,startingBlock:n},r)=>({endBlock:e.div(t).iadd(n),locked:e,perBlock:t,startingBlock:n,vested:i[r]}))).filter((({locked:e})=>!e.isZero())),vestingTotal:o}}(s,o,r),{accountId:n.accountId,accountNonce:n.accountNonce,additional:a.slice(1).map(((t,r)=>ym(e,s,n.additional[r],t))),namedReserves:i})}function gm(e,t){return Rh([e.query.balances.locks(t),e.query.balances.vesting(t)]).pipe(ze((([t,n])=>{let r=null;if(n.isSome){const{offset:t,perBlock:a,startingBlock:i}=n.unwrap();r=e.registry.createType("VestingInfo",{locked:t,perBlock:a,startingBlock:i})}return[r?[r]:null,[t],[]]})))}const vm=e=>!!e;function wm(e){return[e.map((e=>!e)),e.filter(vm)]}function Vm(e,t,n=["balances"]){const[r,a]=wm(n.map((t=>e.derive[t]?.customLocks||e.query[t]?.locks))),[i,s]=wm(n.map((t=>e.query[t]?.reserves)));return Rh([e.query.vesting?.vesting?e.query.vesting.vesting(t):Le(e.registry.createType("Option")),a.length?Rh(a.map((e=>e(t)))):Le([]),s.length?Rh(s.map((e=>e(t)))):Le([])]).pipe(ze((([t,n,a])=>{let s=-1,o=-1;const c=t.unwrapOr(null);return[c?Array.isArray(c)?c:[c]:null,r.map((t=>t?e.registry.createType("Vec"):n[++s])),i.map((t=>t?e.registry.createType("Vec"):a[++o]))]})))}function Tm(e,t){const n=t.registry.getModuleInstances(t.runtimeVersion.specName,"balances");return xb(e,(e=>Rh([t.derive.balances.account(e),(0,qe.T)(t.query.system?.account)||(0,qe.T)(t.query.balances?.account)?Vm(t,e,n):gm(t,e)]).pipe(Ie((([e,n])=>Rh([Le(e),Le(n),t.derive.chain.bestNumber()]))),ze((e=>xm(t,e))))))}function Sm(e){return e.registry.createType("Balance")}function km(e,[t,n,r,a],i){const s=e.registry.createType("Balance",t.toBn());return i.isFrameAccountData?{frameSystemAccountInfo:{flags:a,frozen:r},freeBalance:t,frozenFee:e.registry.createType("Balance",0),frozenMisc:e.registry.createType("Balance",0),reservedBalance:n,votingBalance:s}:{freeBalance:t,frozenFee:r,frozenMisc:a,reservedBalance:n,votingBalance:s}}function _m(e,t){return Rh([e.query.balances.freeBalance(t),e.query.balances.reservedBalance(t),e.query.system.accountNonce(t)]).pipe(ze((([t,n,r])=>[r,[[t,n,Sm(e),Sm(e)]],{isFrameAccountData:!1}])))}function Pm(e,t){const n=t=>[t,[[Sm(e),Sm(e),Sm(e),Sm(e)]],{isFrameAccountData:!1}];return(0,qe.T)(e.query.system.account)?e.query.system.account(t).pipe(ze((({nonce:e})=>n(e)))):(0,qe.T)(e.query.system.accountNonce)?e.query.system.accountNonce(t).pipe(ze((e=>n(e)))):Le(n(e.registry.createType("Index")))}function Mm(e,t,n=["balances"]){const r=n.map((t=>e.derive[t]?.customAccount||e.query[t]?.account)).filter((e=>(0,qe.T)(e))),a=(e,t)=>[e,t.map((({feeFrozen:e,free:t,miscFrozen:n,reserved:r})=>[t,r,e,n])),{isFrameAccountData:!1}];return r.length?(0,qe.T)(e.query.system.account)?Rh([e.query.system.account(t),...r.map((e=>e(t)))]).pipe(ze((([{nonce:e},...t])=>a(e,t)))):Rh([e.query.system.accountNonce(t),...r.map((e=>e(t)))]).pipe(ze((([e,...t])=>a(e,t)))):Pm(e,t)}function Im(e,t){return e.query.system.account(t).pipe(ze((t=>{const n=t.nonce?t.data:t[1],r=t.nonce||t[0];if(!n||n.isEmpty)return[r,[[Sm(e),Sm(e),Sm(e),Sm(e)]],{isFrameAccountData:!1}];if(!!t.data.frozen){const{flags:e,free:t,frozen:a,reserved:i}=n;return[r,[[t,i,a,e]],{isFrameAccountData:!0}]}{const{feeFrozen:e,free:t,miscFrozen:a,reserved:i}=n;return[r,[[t,i,e,a]],{isFrameAccountData:!1}]}})))}function Nm(e,t){const n=t.registry.getModuleInstances(t.runtimeVersion.specName,"balances"),r=n&&"balances"!==n[0];return xb(e,(e=>t.derive.accounts.accountId(e).pipe(Ie((e=>e?Rh([Le(e),r?Mm(t,e,n):(0,qe.T)(t.query.system?.account)?Im(t,e):(0,qe.T)(t.query.balances?.account)?Mm(t,e):(0,qe.T)(t.query.balances?.freeBalance)?_m(t,e):Pm(t,e)]):Le([t.registry.createType("AccountId"),[t.registry.createType("Index"),[[Sm(t),Sm(t),Sm(t),Sm(t)]],{isFrameAccountData:!1}]]))),ze((e=>function(e,[t,[n,[r,...a],i]]){return(0,M.b)({accountId:t,accountNonce:n,additional:a.map((t=>km(e,t,i)))},km(e,r,i))}(t,e))))))}function Em(e,t){return xb(e,(e=>e?.length?Rh(e.map((e=>t.derive.balances.account(e)))):Le([])))}const Om=Tm;function Am(e,t){const n=e.tx.bounties?e.tx.bounties:e.tx.treasury,r=[n.approveBounty,n.closeBounty,n.proposeCurator,n.unassignCurator];return t.filter((e=>r.find((t=>e.proposal&&t.is(e.proposal)))))}function Cm([e,t,n,r]){const a=[];return e.forEach(((e,i)=>{e.isSome&&a.push({bounty:e.unwrap(),description:t[i].unwrapOrDefault().toUtf8(),index:n[i],proposals:r.filter((e=>e.proposal&&n[i].eq(e.proposal.args[0])))})})),a}function Hm(e,t){const n=t.query.bounties||t.query.treasury;return xb(e,(()=>n.bounties?Rh([n.bountyCount(),t.query.council?t.query.council.proposalCount():Le(0)]).pipe(Ie((()=>Rh([n.bounties.keys(),t.derive.council?t.derive.council.proposals():Le([])]))),Ie((([e,r])=>{const a=e.map((({args:[e]})=>e));return Rh([n.bounties.multi(a),n.bountyDescriptions.multi(a),Le(a),Le(Am(t,r))])})),ze(Cm)):Le(Cm([[],[],[],[]]))))}const Rm=(0,Vt.D8)("toBigInt","toBn","toNumber","unwrap");function Bm(e){return Rm(e.number)?e.number.unwrap():e.number}function Lm(e){return(t,n)=>xb(t,(()=>e(n).pipe(ze(Bm))))}function zm(e,t,n){return e.queryAt(t.parentHash.isEmpty?n||t.hash:t.parentHash).pipe(Ie((e=>function(e,t){const n=t.session?.validators?t.session.validators():Le(null),{logs:[r]}=e.digest,a=r&&(r.isConsensus&&r.asConsensus[0].isNimbus&&r.asConsensus[1]||r.isPreRuntime&&r.asPreRuntime[0].isNimbus&&r.asPreRuntime[1]);if(a){if(t.authorMapping?.mappingWithDeposit)return Rh([Le(e),n,t.authorMapping.mappingWithDeposit(a).pipe(ze((e=>e.unwrapOr({account:null}).account)))]);if(t.parachainStaking?.selectedCandidates&&t.session?.nextKeys){const r=a.toHex();return Rh([Le(e),n,t.parachainStaking.selectedCandidates().pipe(Ab((e=>Rh([Le(e),t.session.nextKeys.multi(e).pipe(ze((e=>e.findIndex((e=>e.unwrapOrDefault().nimbus.toHex()===r)))))]))),ze((([e,t])=>-1===t?null:e[t])))])}}return Rh([Le(e),n,Le(null)])}(t,e))))}const Um=Lm((e=>e.rpc.chain.subscribeNewHeads())),Dm=Lm((e=>e.rpc.chain.subscribeFinalizedHeads()));function qm(e,t){return xb(e,(()=>Rh([t.derive.chain.bestNumber(),t.derive.chain.bestNumberFinalized()]).pipe(ze((([e,n])=>t.registry.createType("BlockNumber",e.sub(n)))))))}function jm(e,t){const[n]=e.logs.filter((e=>e.isConsensus)),[r]=e.logs.filter((e=>e.isPreRuntime)),[a]=e.logs.filter((e=>e.isSeal));let i;try{if(r){const[e,n]=r.asPreRuntime;i=e.extractAuthor(n,t)}if(!i&&n){const[e,r]=n.asConsensus;i=e.extractAuthor(r,t)}if(!i&&a){const[e,n]=a.asSeal;i=e.extractAuthor(n,t)}}catch{}return i}function Fm(e,t){return xb(e,(e=>Rh([t.rpc.chain.getBlock(e),t.queryAt(e)]).pipe(Ie((([n,r])=>Rh([Le(n),r.system.events(),zm(t,n.block.header,e)]))),ze((([e,t,[,n,r]])=>function(e,t,n,r,a){const i=e.createClass("SignedBlock");return new class extends i{__internal__author;__internal__events;__internal__extrinsics;constructor(e,t,n,r,a){var i,s;super(e,t),this.__internal__author=a||jm(this.block.header.digest,r||[]),this.__internal__events=n||[],this.__internal__extrinsics=(i=this.block.extrinsics,s=this.__internal__events,i.map(((e,t)=>{let n,r;const a=s.filter((({phase:e})=>e.isApplyExtrinsic&&e.asApplyExtrinsic.eq(t))).map((({event:e})=>("system"===e.section&&("ExtrinsicSuccess"===e.method?r=e.data[0]:"ExtrinsicFailed"===e.method&&(n=e.data[0],r=e.data[1])),e)));return{dispatchError:n,dispatchInfo:r,events:a,extrinsic:e}}))),this.createdAtHash=t?.createdAtHash}get author(){return this.__internal__author}get events(){return this.__internal__events}get extrinsics(){return this.__internal__extrinsics}}(e,t,n,r,a)}(t.registry,e,t,n,r))))))}function Xm(e,t){return xb(e,(e=>t.rpc.chain.getBlockHash(e).pipe(Ie((e=>t.derive.chain.getBlock(e))))))}function Wm(e,t,n,r){const a=e.createClass("Header");return new class extends a{__internal__author;constructor(e,t,n,r){super(e,t),this.__internal__author=r||jm(this.digest,n||[]),this.createdAtHash=t?.createdAtHash}get author(){return this.__internal__author}}(e,t,n,r)}function Zm(e,t){return xb(e,(e=>t.rpc.chain.getHeader(e).pipe(Ie((n=>zm(t,n,e))),ze((([e,t,n])=>Wm((t||e).registry,e,t,n))))))}function Gm(e,t){return xb(e,(()=>t.derive.chain.subscribeFinalizedHeads().pipe(Ie((e=>t.derive.chain.getBlock(e.createdAtHash||e.hash))))))}function Km(e,t){return xb(e,((e,n,r=[])=>t.rpc.chain.getHeader(e).pipe(Ie((e=>e.parentHash.eq(n)?Le([e,...r]):t.derive.chain._getHeaderRange(e.parentHash,n,[e,...r]))))))}function Jm(e,t){return xb(e,(()=>{let e=null;return t.rpc.chain.subscribeFinalizedHeads().pipe(Ie((n=>{const r=e,a=n.parentHash;return e=n.createdAtHash=n.hash,null===r||a.eq(r)?Le(n):t.derive.chain._getHeaderRange(a,r,[n]).pipe(Ie((e=>Be(e))))})))}))}function Ym(e,t){return xb(e,(()=>t.derive.chain.subscribeNewHeads().pipe(Ie((e=>t.derive.chain.getBlock(e.createdAtHash||e.hash))))))}function Qm(e,t){return xb(e,(()=>t.rpc.chain.subscribeNewHeads().pipe(Ie((e=>zm(t,e))),ze((([e,t,n])=>(e.createdAtHash=e.hash,Wm(e.registry,e,t,n)))))))}function $m(e,t){return xb(e,(()=>function(e){return Le([e.consts.contracts.callBaseFee||e.registry.createType("Balance"),e.consts.contracts.contractFee||e.registry.createType("Balance"),e.consts.contracts.creationFee||e.registry.createType("Balance"),e.consts.contracts.transactionBaseFee||e.registry.createType("Balance"),e.consts.contracts.transactionByteFee||e.registry.createType("Balance"),e.consts.contracts.transferFee||e.registry.createType("Balance"),e.consts.contracts.rentByteFee||e.registry.createType("Balance"),e.consts.contracts.rentDepositOffset||e.registry.createType("Balance"),e.consts.contracts.surchargeReward||e.registry.createType("Balance"),e.consts.contracts.tombstoneDeposit||e.registry.createType("Balance")])}(t).pipe(ze((([e,t,n,r,a,i,s,o,c,d])=>({callBaseFee:e,contractFee:t,creationFee:n,rentByteFee:s,rentDepositOffset:o,surchargeReward:c,tombstoneDeposit:d,transactionBaseFee:r,transactionByteFee:a,transferFee:i}))))))}function ey(e){return!Array.isArray(e)}function ty(e){return e.stakeOf.entries().pipe(ze((e=>e.map((([{args:[e]},t])=>[e,t])))))}function ny(e){return e.votesOf.entries().pipe(ze((e=>e.map((([{args:[e]},t])=>[e,t])))))}function ry(e,t){const n=t.query.elections||t.query.phragmenElection||t.query.electionsPhragmen;return xb(e,(()=>n?n.stakeOf?function(e,t){return Rh([ty(t),ny(t)]).pipe(ze((([t,n])=>{const r=[];return n.forEach((([t,n])=>{r.push([t,{stake:e.registry.createType("Balance"),votes:n}])})),t.forEach((([e,t])=>{const n=r.find((([t])=>t.eq(e)));n?n[1].stake=t:r.push([e,{stake:t,votes:[]}])})),r})))}(t,n):function(e){return e.voting.entries().pipe(ze((e=>e.map((([{args:[e]},t])=>[e,ey(t)?{stake:t.stake,votes:t.votes}:{stake:t[0],votes:t[1]}])))))}(n):Le([])))}function ay(e,t){return xb(e,(e=>t.derive.council.votes().pipe(ze((n=>(n.find((([t])=>t.eq(e)))||[null,{stake:t.registry.createType("Balance"),votes:[]}])[1])))))}const iy=Fb("council"),sy=Wb("council"),oy=Gb("council"),cy=Kb("council"),dy=Jb("council"),uy=Zb("council"),ly=Yb("council");function fy(e,t){return xb(e,(e=>t.query.crowdloan.funds(e).pipe(ze((e=>e.isSome?function(e){return(0,N.X)(Mt(":child_storage:default:",Pi(Mt("crowdloan",(e.fundIndex||e.trieIndex).toU8a()))))}(e.unwrap()):null)))))}var py=new he((function(e){return e.complete()}));function hy(e){const t=e.length;if(0===t)return[];if(1===t)return e[0];let n=0;for(let i=0;i"crowdloan"===r&&["Contributed","Withdrew"].includes(n)&&t.eq(e))).reduce(((e,{event:{data:[t],method:n}})=>("Contributed"===n?e.added.push(t.toHex()):e.removed.push(t.toHex()),e)),{added:[],blockHash:t.createdAtHash?.toHex()||"-",removed:[]})}const my=1e3;function yy(e,t){let n=[],r=[];return e.query.system.events().pipe(Ie((e=>{const a=by(t,e);return a.added.length||a.removed.length?(n=n.concat(...a.added),r=r.concat(...a.removed),Le({added:n,addedDelta:a.added,blockHash:e.createdAtHash?.toHex()||"-",removed:r,removedDelta:a.removed})):py})),Rb({added:n,addedDelta:[],blockHash:"-",removed:r,removedDelta:[]}))}function xy(e,t,n){return function(e,t){return e.query.system.events().pipe(Ie((e=>{const n=e.filter((({event:{data:[e],method:n,section:r}})=>"crowdloan"===r&&["AllRefunded","Dissolved","PartiallyRefunded"].includes(n)&&e.eq(t)));return n.length?Le(e.createdAtHash?.toHex()||"-"):py})),Rb("-"))}(e,t).pipe(Ie((()=>(0,qe.T)(e.rpc.childstate.getKeysPaged)?function(e,t){const n=new Mh(void 0);return n.pipe(Ie((n=>e.rpc.childstate.getKeysPaged(t,"0x",my,n))),Lh((e=>{lm((()=>{e.length===my?n.next(e[my-1].toHex()):n.complete()}))})),Dh(),ze((e=>hy(e))))}(e,n):e.rpc.childstate.getKeys(n,"0x"))),ze((e=>e.map((e=>e.toHex())))))}function gy(e,t){return xb(e,(e=>t.derive.crowdloan.childKey(e).pipe(Ie((n=>n?function(e,t,n){return Rh([xy(e,t,n),yy(e,t)]).pipe(ze((([e,{added:t,blockHash:n,removed:r}])=>{const a={};return e.forEach((e=>{a[e]=!0})),t.forEach((e=>{a[e]=!0})),r.forEach((e=>{delete a[e]})),{blockHash:n,contributorsHex:Object.keys(a)}})))}(t,e,n):Le({blockHash:"-",contributorsHex:[]}))))))}function vy(e,t,n){return Rh(n.map((n=>e.rpc.childstate.getStorage(t,n)))).pipe(ze((t=>t.map((t=>e.registry.createType("Option",t))).map((t=>t.isSome?e.registry.createType("Balance",t.unwrap()):e.registry.createType("Balance"))).reduce(((e,t,r)=>(0,M.b)(e,{[n[r]]:t})),{}))))}function wy(e,t,n,r){return e.query.system.events().pipe(Ie((a=>{const i=by(t,a),s=r.filter((e=>i.added.includes(e)||i.removed.includes(e)));return s.length?vy(e,n,s):py})),Rb({}))}function Vy(e,t){return xb(e,((e,n)=>t.derive.crowdloan.childKey(e).pipe(Ie((r=>r&&n.length?function(e,t,n,r){return Rh([vy(e,n,r),wy(e,t,n,r)]).pipe(ze((([e,t])=>(0,M.b)({},e,t))))}(t,e,r,n):Le({}))))))}function Ty(e){return(0,N.X)((0,La.j)(e))}function Sy(e){const t=kt(e);if(t.isNeg())throw new Error("square root of negative numbers is not supported");if(t.lte(xt))return new st(~~Math.sqrt(t.toNumber()));let n=gt.clone();for(;;){const e=t.div(n).iadd(n).ishrn(1);if(n.eq(e)||n.eq(e.sub(ft)))return n;n=e}}function ky(e,t,n,r){for(;;){const a=e.div(t),i=n.div(r);if(a.lt(i))return!0;if(i.lt(a))return!1;const s=e.mod(t),o=n.mod(r);if(o.isZero())return!1;if(s.isZero())return!0;e=r,n=t,t=o,r=s}}function _y(e,t,n){return e.isSimpleMajority?n.votedAye.gt(n.votedNay):function(e,t,{votedAye:n,votedNay:r,votedTotal:a}){const i=Sy(a);return!i.isZero()&&(e.isSuperMajorityApprove?ky(r,i,n,t):ky(r,t,n,i))}(e,t,n)}function Py(e,t,n){const r=t.status.tally?function(e,t){const n=[],r=[];return t.forEach((e=>{e.vote.isAye?n.push(e):r.push(e)})),{allAye:n,allNay:r,voteCount:n.length+r.length,voteCountAye:n.length,voteCountNay:r.length,votedAye:e.ayes,votedNay:e.nays,votedTotal:e.turnout}}(t.status.tally,n):n.reduce(((e,t)=>{const{balance:n,vote:r}=t,a=0===r.conviction.index,i=n.muln(a?1:r.conviction.index).divn(a?10:1);return r.isAye?(e.allAye.push(t),e.voteCountAye++,e.votedAye.iadd(i)):(e.allNay.push(t),e.voteCountNay++,e.votedNay.iadd(i)),e.voteCount++,e.votedTotal.iadd(i),e}),{allAye:[],allNay:[],voteCount:0,voteCountAye:0,voteCountNay:0,votedAye:new st(0),votedNay:new st(0),votedTotal:new st(0)});return(0,M.b)({},r,{isPassing:_y(t.status.threshold,e,r),votes:n})}function My(e){return e.isLegacy?e.asLegacy.hash_.toHex():e.isLookup?e.asLookup.hash_.toHex():e.isInline?e.asInline.hash.toHex():(0,I.K)(e)?(0,Je.qv)(e)?e:Ty(e):(0,ut.b)(e)?(0,N.X)(e):e.toHex()}function Iy(e){return My(e.proposal||e.proposalHash)}const Ny=Ty("democrac");function Ey(e){return function(e){return e.derive.democracy.referendumsFinished().pipe(Ie((()=>e.query.scheduler.agenda.keys())),Ie((t=>{const n=t.map((({args:[e]})=>e));return n.length?Rh([Le(n),e.query.scheduler.agenda.multi(n).pipe(Xh((()=>Le(n.map((()=>[]))))))]):Le([[],[]])})))}(e).pipe(Ie((([t,n])=>{const r=[];return t.forEach(((t,a)=>{(n[a]||[]).filter((e=>e.isSome)).forEach((n=>{const a=n.unwrap();if(a.maybeId.isSome){const n=a.maybeId.unwrap().toHex();if(n.startsWith(Ny)){const i=a.call instanceof nn?function(e){return e.isInline||e.isLegacy||e.isLookup}(a.call)?My(a.call):a.call.isHash?a.call.asHash.toHex():a.call.asValue.args[0].toHex():a.call.args[0].toHex();r.push({at:t,imageHash:i,index:e.registry.createType("(u64, ReferendumIndex)",n)[1]})}}}))})),Rh([Le(r),r.length?e.derive.democracy.preimages(r.map((({imageHash:e})=>e))):Le([])])})),ze((([e,t])=>e.map(((e,n)=>(0,M.b)({image:t[n]},e))))))}function Oy(e,t){return xb(e,(()=>(0,qe.T)(t.query.scheduler?.agenda)?Ey(t):t.query.democracy.dispatchQueue?function(e){return e.query.democracy.dispatchQueue().pipe(Ie((t=>Rh([Le(t),e.derive.democracy.preimages(t.map((([,e])=>e)))]))),ze((([e,t])=>e.map((([e,n,r],a)=>({at:e,image:t[a],imageHash:My(n),index:r}))))))}(t):Le([])))}const Ay=[0,1,2,4,8,16,32];function Cy(e,[t,n],r){const{balance:a,vote:i}=n.asStandard,[s,o]=r.isFinished?function(e,t,{approved:n,end:r}){return[r,n.isTrue&&t.isAye||n.isFalse&&t.isNay?r.add((e.consts.democracy.voteLockingPeriod||e.consts.democracy.enactmentPeriod).muln(Ay[t.conviction.index])):lt]}(e,i,r.asFinished):[lt,lt];return{balance:a,isDelegated:!1,isFinished:r.isFinished,referendumEnd:s,referendumId:t,unlockAt:o,vote:i}}function Hy(e,t){return xb(e,(e=>t.query.democracy.votingOf?t.query.democracy.votingOf(e).pipe(Ie((e=>e.isDirect?function(e,{votes:t}){return t.length?e.query.democracy.referendumInfoOf.multi(t.map((([e])=>e))).pipe(ze((n=>t.map(((e,t)=>[e,n[t].unwrapOr(null)])).filter((e=>!!e[1]&&(0,Fe.b)(e[1].end)&&e[0][1].isStandard)).map((([t,n])=>Cy(e,t,n)))))):Le([])}(t,e.asDirect):e.isDelegating?function(e,{balance:t,conviction:n,target:r}){return e.derive.democracy.locks(r).pipe(ze((r=>r.map((({isFinished:r,referendumEnd:a,referendumId:i,unlockAt:s,vote:o})=>({balance:t,isDelegated:!0,isFinished:r,referendumEnd:a,referendumId:i,unlockAt:s.isZero()?s:a.add((e.consts.democracy.voteLockingPeriod||e.consts.democracy.enactmentPeriod).muln(Ay[n.index])),vote:e.registry.createType("Vote",{aye:o.isAye,conviction:n})}))))))}(t,e.asDelegating):Le([])))):Le([])))}function Ry(e,t){return xb(e,(()=>t.query.democracy?.nextExternal?t.query.democracy.nextExternal().pipe(Ie((e=>function(e,t){if(t.isNone)return Le(null);const[n,r]=t.unwrap();return e.derive.democracy.preimage(n).pipe(ze((e=>({image:e,imageHash:My(n),threshold:r}))))}(t,e)))):Le(null)))}function By(e,[t,n,r,a]){let i;try{i=e.registry.createType("Call",t.toU8a(!0))}catch(s){console.error(s)}return{at:a,balance:r,proposal:i,proposer:n}}function Ly(e,t){const n=t.map((e=>My(e)));return e.query.democracy.preimages.multi(n).pipe(ze((t=>t.map((t=>function(e,t){if(!t.isNone){if(function(e,t){return!!t&&!e.query.democracy.dispatchQueue}(e,t)){const n=t.unwrap();if(n.isMissing)return;const{data:r,deposit:a,provider:i,since:s}=n.asAvailable;return By(e,[r,i,a,s])}return By(e,t.unwrap())}}(e,t))))))}function zy(e,t){const n=t.map((e=>My(e))),r=e.registry.lookup.getTypeDef(e.query.preimage.preimageFor.creator.meta.type.asMap.key).type;return e.query.preimage.statusFor.multi(n).pipe(Ie((t=>{const a=t.map((e=>e.unwrapOr(null))),i=a.map(((e,t)=>e?"H256"===r?n[t]:e.isRequested?[n[t],e.asRequested.len.unwrapOr(0)]:[n[t],e.asUnrequested.len]:null)).filter((e=>!!e));return e.query.preimage.preimageFor.multi(i).pipe(ze((t=>{let r=-1;return a.map(((e,a)=>e?[n[a],e,t[++r].unwrapOr(null)]:[n[a],null,null])).map((t=>function(e,[t,n,r]){if(!n)return;const[a,i]=n.isUnrequested?function(e){return e.ticket||e.deposit}(n.asUnrequested):function(e){return(e.maybeTicket||e.deposit).unwrapOrDefault()}(n.asRequested);let s;if(r)try{s=e.registry.createType("Call",r.toU8a(!0))}catch(o){console.error(o)}return{at:lt,balance:i,proposal:s,proposalHash:t,proposer:a}}(e,t)))})))})))}function Uy(e,t){return xb(e,(e=>e.length?(0,qe.T)(t.query.democracy.preimages)?Ly(t,e):(0,qe.T)(t.query.preimage.preimageFor)?zy(t,e):Le([]):Le([])))}const Dy=Sb(((e,t)=>e.derive.democracy.preimages([t])));function qy([e,t,n]){return e.filter((([,,e],t)=>!!n[t]?.isSome&&!e.isEmpty)).map((([e,r,a],i)=>{const s=n[i].unwrap();return(0,M.b)({image:t[i],imageHash:My(r),index:e,proposer:a},function(e){return(0,qe.T)(e[1].mul)}(s)?{balance:s[1],seconds:s[0]}:{balance:s[0],seconds:s[1]})}))}function jy(e,t){return xb(e,(()=>(0,qe.T)(t.query.democracy?.publicProps)?t.query.democracy.publicProps().pipe(Ie((e=>e.length?Rh([Le(e),t.derive.democracy.preimages(e.map((([,e])=>e))),t.query.democracy.depositOf.multi(e.map((([e])=>e)))]):Le([[],[],[]]))),ze(qy)):Le([])))}function Fy(e,t){return xb(e,(()=>t.query.democracy?.lowestUnbaked?t.queryMulti([t.query.democracy.lowestUnbaked,t.query.democracy.referendumCount]).pipe(ze((([e,t])=>t.gt(e)?[...Array(t.sub(e).toNumber())].map(((t,n)=>e.addn(n))):[]))):Le([])))}function Xy(e,t){return xb(e,(()=>t.derive.democracy.referendumsActive().pipe(Ie((e=>e.length?Rh([Le(e),t.derive.democracy._referendumsVotes(e)]):Le([[],[]]))),ze((([e,t])=>e.map(((e,n)=>(0,M.b)({},e,t[n]))))))))}function Wy(e,t){return xb(e,(()=>t.derive.democracy.referendumIds().pipe(Ie((e=>e.length?t.derive.democracy.referendumsInfo(e):Le([]))))))}function Zy(e,t){return xb(e,(()=>t.derive.democracy.referendumIds().pipe(Ie((e=>t.query.democracy.referendumInfoOf.multi(e))),ze((e=>e.map((e=>e.unwrapOr(null))).filter((e=>!!e&&e.isFinished)).map((e=>e.asFinished)))))))}function Gy(e,t){return e.query.democracy.votersFor(t).pipe(Ie((n=>Rh([Le(n),n.length?e.query.democracy.voteOf.multi(n.map((e=>[t,e]))):Le([]),e.derive.balances.votingBalances(n)]))),ze((([t,n,r])=>t.map(((t,a)=>({accountId:t,balance:r[a].votingBalance||e.registry.createType("Balance"),isDelegating:!1,vote:n[a]||e.registry.createType("Vote")}))))))}function Ky(e,t){return e.query.democracy.votingOf.entries().pipe(ze((n=>{const r=n.map((([{args:[e]},t])=>[e,t])),a=function(e,t){return e.filter((([,e])=>e.isDirect)).map((([e,n])=>[e,n.asDirect.votes.filter((([e])=>e.eq(t)))])).filter((([,e])=>!!e.length)).reduce(((e,[t,n])=>n.reduce(((e,[,n])=>(n.isStandard&&e.push((0,M.b)({accountId:t,isDelegating:!1},n.asStandard)),e)),e)),[])}(r,t),i=r.filter((([,e])=>e.isDelegating)).map((([e,t])=>[e,t.asDelegating]));return i.forEach((([t,{balance:n,conviction:r,target:s}])=>{const o=i.find((([e])=>e.eq(s))),c=a.find((({accountId:e})=>e.eq(o?o[0]:s)));c&&a.push({accountId:t,balance:n,isDelegating:!0,vote:e.registry.createType("Vote",{aye:c.vote.isAye,conviction:r})})})),a})))}function Jy(e,t){return xb(e,(e=>Rh([t.derive.democracy.sqrtElectorate(),(0,qe.T)(t.query.democracy.votingOf)?Ky(t,e.index):Gy(t,e.index)]).pipe(ze((([t,n])=>Py(t,e,n))))))}function Yy(e,t){return xb(e,(e=>e.length?Rh(e.map((e=>t.derive.democracy._referendumVotes(e)))):Le([])))}function Qy(e,t){return xb(e,((e,n)=>{const r=function(e){if(e.isNone)return null;const t=e.unwrap();return function(e){return!!e.proposalHash}(t)?t:t.isOngoing?t.asOngoing:null}(n);return r?t.derive.democracy.preimage(r.proposal||r.proposalHash).pipe(ze((n=>({image:n,imageHash:Iy(r),index:t.registry.createType("ReferendumIndex",e),status:r})))):Le(null)}))}function $y(e,t){return xb(e,(e=>e.length?t.query.democracy.referendumInfoOf.multi(e).pipe(Ie((n=>Rh(e.map(((e,r)=>t.derive.democracy._referendumInfo(e,n[r])))))),ze((e=>e.filter((e=>!!e))))):Le([])))}function ex(e,t){return xb(e,(()=>t.query.balances.totalIssuance().pipe(ze(Sy))))}function tx(e){return function(e){return!Array.isArray(e)}(e)?[e.who,e.stake]:e}function nx(e){return function(e){return Array.isArray(e)}(e)?e[0]:e}function rx([,e],[,t]){return t.cmp(e)}function ax(e,t){return xb(e,(()=>{const[e,n]=function(e){const[t]=e.registry.getModuleInstances(e.runtimeVersion.specName,"council")||["council"],n=e.query.phragmenElection?"phragmenElection":e.query.electionsPhragmen?"electionsPhragmen":e.query.elections?"elections":null;return[e.query[t]?t:"council",n]}(t);return(n?function(e,t,n){return e.queryMulti([e.query[t].members,e.query[n].candidates,e.query[n].members,e.query[n].runnersUp])}(t,e,n):function(e,t){return Rh([e.query[t].members(),Le([]),Le([]),Le([])])}(t,e)).pipe(ze((([e,r,a,i])=>(0,M.b)({},function(e,t){return t?{candidacyBond:e.consts[t].candidacyBond,desiredRunnersUp:e.consts[t].desiredRunnersUp,desiredSeats:e.consts[t].desiredMembers,termDuration:e.consts[t].termDuration,votingBond:e.consts[t].votingBond,votingBondBase:e.consts[t].votingBondBase,votingBondFactor:e.consts[t].votingBondFactor}:{}}(t,n),{candidateCount:t.registry.createType("u32",r.length),candidates:r.map(nx),members:a.length?a.map(tx).sort(rx):e.map((e=>[e,t.registry.createType("Balance")])),runnersUp:i.map(tx).sort(rx)}))))}))}function ix([e,t,n,r]){return t.forEach(((t,a)=>{const i=t.toString(),s=r[a],o=!n[a].isEmpty,c=e[i];c&&c.hasMessage===o&&c.blockCount.eq(s)||(e[i]={blockCount:s,hasMessage:o,isOnline:o||s.gt(lt)})})),e}function sx(e,t){return xb(e,(()=>t.query.imOnline?.receivedHeartbeats?t.derive.staking.overview().pipe(Ie((({currentIndex:e,validators:n})=>Rh([Le({}),Le(n),t.query.imOnline.receivedHeartbeats.multi(n.map(((t,n)=>[e,n]))),t.query.imOnline.authoredBlocks.multi(n.map((t=>[e,t])))]))),ze(ix)):Le({})))}const ox=Fb("membership"),cx=Wb("membership"),dx=Gb("membership"),ux=Kb("membership"),lx=Jb("membership"),fx=Zb("membership"),px=Yb("membership");function hx(e,t){return!!e.isSome&&e.unwrap().some((e=>e.eq(t)))}function bx(e,t){const n=t.find((([t])=>t===e));if(n&&n[1].isSome){const[e,t]=n[1].unwrap();return(0,M.b)({collatorId:e},t.isWithRetries?{isRetriable:!0,retries:t.asWithRetries.toNumber()}:{isRetriable:!1,retries:0})}return null}function mx(e,t){return t.map((t=>{const n=t.find((([t])=>t===e));return n?n[1]:null}))}function yx(e,t){return xb(e,(e=>t.query.registrar&&t.query.parachains?t.queryMulti([t.query.registrar.active,t.query.registrar.retryQueue,t.query.registrar.selectedThreads,t.query.parachains.didUpdate,[t.query.registrar.paras,e],[t.query.registrar.pendingSwap,e],[t.query.parachains.heads,e],[t.query.parachains.relayDispatchQueue,e]]).pipe(ze((n=>function(e,[t,n,r,a,i,s,o,c]){return i.isNone?null:{active:bx(e,t),didUpdate:hx(a,e),heads:o,id:e,info:(0,M.b)({id:e},i.unwrap()),pendingSwapId:s.unwrapOr(null),relayDispatchQueue:c,retryCollators:mx(e,n),selectedCollators:mx(e,r)}}(t.registry.createType("ParaId",e),n)))):Le(null)))}function xx([e,t,n,r,a]){return e.map(((e,i)=>({didUpdate:hx(t,e),id:e,info:(0,M.b)({id:e},r[i].unwrapOr(null)),pendingSwapId:a[i].unwrapOr(null),relayDispatchQueueSize:n[i][0].toNumber()})))}function gx(e,t){return xb(e,(()=>t.query.registrar?.parachains&&t.query.parachains?t.query.registrar.parachains().pipe(Ie((e=>Rh([Le(e),t.query.parachains.didUpdate(),t.query.parachains.relayDispatchQueueSize.multi(e),t.query.registrar.paras.multi(e),t.query.registrar.pendingSwap.multi(e)]))),ze(xx)):Le([])))}function vx([e,t,n,r,a]){return{activeEra:t,activeEraStart:n,currentEra:r,currentIndex:e,validatorCount:a}}function wx(e,t){return xb(e,(()=>t.query.session?t.query.staking?function(e){return e.queryMulti([e.query.session.currentIndex,e.query.staking.activeEra,e.query.staking.currentEra,e.query.staking.validatorCount]).pipe(ze((([e,t,n,r])=>{const{index:a,start:i}=t.unwrapOrDefault();return vx([e,a,i,n.unwrapOrDefault(),r])})))}(t):function(e){return e.query.session.currentIndex().pipe(ze((t=>vx([t,e.registry.createType("EraIndex"),e.registry.createType("Option"),e.registry.createType("EraIndex"),e.registry.createType("u32")]))))}(t):function(e){return Le(vx([e.registry.createType("SessionIndex",1),e.registry.createType("EraIndex"),e.registry.createType("Option"),e.registry.createType("EraIndex"),e.registry.createType("u32")]))}(t)))}function Vx(e,t){return xb(e,(()=>t.derive.session.indexes().pipe(ze((e=>{const n=t.consts?.babe?.epochDuration||t.registry.createType("u64",1),r=t.consts?.staking?.sessionsPerEra||t.registry.createType("SessionIndex",1);return(0,M.b)({eraLength:t.registry.createType("BlockNumber",r.mul(n)),isEpoch:!!t.query.babe,sessionLength:n,sessionsPerEra:r},e)})))))}function Tx(e){return(t,n)=>xb(t,(()=>n.derive.session.progress().pipe(ze((t=>t[e])))))}function Sx(e,t){return xb(e,(()=>t.query.babe?function(e){return e.derive.session.info().pipe(Ie((t=>Rh([Le(t),e.query.staking?.erasStartSessionIndex?e.queryMulti([e.query.babe.currentSlot,e.query.babe.epochIndex,e.query.babe.genesisSlot,[e.query.staking.erasStartSessionIndex,t.activeEra]]):e.queryMulti([e.query.babe.currentSlot,e.query.babe.epochIndex,e.query.babe.genesisSlot])]))),ze((([t,[n,r,a,i]])=>[t,[n,r,a,i&&i.isSome?i.unwrap():e.registry.createType("SessionIndex",1)]])))}(t).pipe(ze((([e,n])=>function(e,t,[n,r,a,i]){const s=r.mul(t.sessionLength).iadd(a),o=n.sub(s),c=t.currentIndex.sub(i).imul(t.sessionLength).iadd(o);return(0,M.b)({eraProgress:e.registry.createType("BlockNumber",c),sessionProgress:e.registry.createType("BlockNumber",o)},t)}(t,e,n)))):function(e){return e.derive.session.info().pipe(ze((t=>(0,M.b)({eraProgress:e.registry.createType("BlockNumber"),sessionProgress:e.registry.createType("BlockNumber")},t))))}(t)))}const kx=Tx("eraLength"),_x=Tx("eraProgress"),Px=Tx("sessionProgress");function Mx(e,t){return xb(e,(()=>t.query.society.suspendedCandidates&&t.query.society.candidates.creator.meta.type.isPlain?function(e){return e.query.society.candidates().pipe(Ie((t=>Rh([Le(t),e.query.society.suspendedCandidates.multi(t.map((({who:e})=>e)))]))),ze((([e,t])=>e.map((({kind:e,value:n,who:r},a)=>({accountId:r,isSuspended:t[a].isSome,kind:e,value:n}))))))}(t):function(e){return e.query.society.candidates.entries().pipe(ze((e=>e.filter((([,e])=>e.isSome)).map((([{args:[e]},t])=>[e,t.unwrap()])).map((([e,{bid:t,kind:n}])=>({accountId:e,isSuspended:!1,kind:n,value:t}))))))}(t)))}function Ix(e,t){return xb(e,(()=>Rh([t.query.society.bids(),t.query.society.defender?t.query.society.defender():Le(void 0),t.query.society.founder(),t.query.society.head(),t.query.society.maxMembers?t.query.society.maxMembers():Le(void 0),t.query.society.pot()]).pipe(ze((([e,t,n,r,a,i])=>({bids:e,defender:t?.unwrapOr(void 0),founder:n.unwrapOr(void 0),hasDefender:t?.isSome&&r.isSome&&!r.eq(t)||!1,head:r.unwrapOr(void 0),maxMembers:a,pot:i}))))))}function Nx(e,t){return xb(e,(e=>t.derive.society._members([e]).pipe(ze((([e])=>e)))))}function Ex(e,t){return xb(e,(e=>t.query.society.members.creator.meta.type.isMap?function(e,t){return Rh([Le(t),e.query.society.members.multi(t),e.query.society.payouts.multi(t),e.query.society.challengeRoundCount().pipe(Ie((n=>e.query.society.defenderVotes.multi(t.map((e=>[n,e])))))),e.query.society.suspendedMembers.multi(t)]).pipe(ze((([e,t,n,r,a])=>e.map(((e,i)=>t[i].isSome?{accountId:e,isDefenderVoter:r[i].isSome,isSuspended:a[i].isSome,member:t[i].unwrap(),payouts:n[i].payouts}:null)).filter((e=>!!e)).map((({accountId:e,isDefenderVoter:t,isSuspended:n,member:r,payouts:a})=>({accountId:e,isDefenderVoter:t,isSuspended:n,payouts:a,strikes:r.strikes,vouching:r.vouching.unwrapOr(void 0)}))))))}(t,e):function(e,t){return Rh([Le(t),e.query.society.payouts.multi(t),e.query.society.strikes.multi(t),e.query.society.defenderVotes.multi(t),e.query.society.suspendedMembers.multi(t),e.query.society.vouching.multi(t)]).pipe(ze((([e,t,n,r,a,i])=>e.map(((e,s)=>({accountId:e,isDefenderVoter:r[s].isSome,isSuspended:a[s].isTrue,payouts:t[s],strikes:n[s],vote:r[s].unwrapOr(void 0),vouching:i[s].unwrapOr(void 0)}))))))}(t,e)))}function Ox(e,t){return xb(e,(()=>t.query.society.members.creator.meta.type.isMap?t.query.society.members.keys().pipe(Ie((e=>t.derive.society._members(e.map((({args:[e]})=>e)))))):t.query.society.members().pipe(Ie((e=>t.derive.society._members(e))))))}const Ax={withDestination:!0,withLedger:!0,withNominations:!0,withPrefs:!0};function Cx(e,t,n){const r=Object.entries((a=(t?.unlocking||[]).filter((({era:e})=>e.unwrap().gt(n.activeEra))),a.reduce(((e,{era:t,value:n})=>{const r=t.toString();return e[r]=(e[r]||lt).add(n.unwrap()),e}),{}))).map((([t,r])=>({remainingEras:new st(t).isub(n.activeEra),value:e.registry.createType("Balance",r)})));var a;return r.length?r:void 0}function Hx(e,t,n){return e.registry.createType("Balance",(t?.unlocking||[]).reduce(((e,{era:t,value:r})=>t.unwrap().gt(n.currentEra)?e:e.iadd(r.unwrap())),new st(0)))}function Rx(e,t){return xb(e,((e,n=Ax)=>t.derive.session.info().pipe(Ie((r=>Rh([t.derive.staking.keysMulti(e),t.derive.staking.queryMulti(e,n)]).pipe(ze((([e,n])=>n.map(((n,a)=>function(e,t,n,r){return(0,M.b)({},n,r,{redeemable:Hx(e,r.stakingLedger,t),unlocking:Cx(e,r.stakingLedger,t)})}(t,r,e[a],n)))))))))))}const Bx=Sb(((e,t,n)=>e.derive.staking.accounts([t],n)));function Lx(e,t){return xb(e,(()=>t.derive.session.indexes().pipe(Ie((({activeEra:e})=>t.query.staking.erasRewardPoints(e))))))}const zx={withController:!0,withExposure:!0,withPrefs:!0};function Ux(e,t){return xb(e,((e=zx,n=0)=>t.derive.staking.validators().pipe(Ie((({nextElected:r,validators:a})=>t.derive.staking.queryMulti(function(e,t){return hy([e,t.filter((t=>!e.find((e=>e.eq(t)))))])}(r,a),e,n).pipe(ze((e=>({info:e,nextElected:r,validators:a})))))))))}new Map;const Dx={del:()=>{},forEach:()=>{},get:()=>{},set:(e,t)=>t};let qx;function jx(e,t,n){const r=`${e}-${t.toString()}`;return[r,n?void 0:qx.get(r)]}function Fx(e,t,n){return n?[]:t.map((t=>qx.get(`${e}-${t.toString()}`))).filter((e=>!!e))}function Xx(e,t,n){return!t&&qx.set(e,n),n}function Wx(e,t,n){return!t&&n.forEach((t=>qx.set(`${e}-${t.era.toString()}`,t))),n}function Zx(e,t,n){return e.map((e=>t.find((({era:t})=>e.eq(t)))||n.find((({era:t})=>e.eq(t))))).filter((e=>!!e))}function Gx(e,t){const n=Math.ceil(e.length/t);if(1===n)return[e];const r=Array(n);for(let a=0;at.del(`${e}${n}`),forEach:t.forEach,get:n=>{const r=`${e}${n}`,a=t.get(r);if(a)return a.x=Date.now(),t.set(r,a),a.v},set:(n,r)=>{t.set(`${e}${n}`,{v:r,x:Date.now()})}}}(`derive:${e}:`,t):Dx,t&&function(e){const t=Date.now(),n=[];e.forEach(((e,{x:r})=>{t-r>6048e5&&n.push(e)})),n.forEach((t=>e.del(t)))}(t)}();function Kx(e,t){return e.filter((e=>!t.some((({era:t})=>e.eq(t)))))}function Jx(e){return(t,n)=>xb(t,((t=!1)=>n.derive.staking.erasHistoric(t).pipe(Ie((r=>n.derive.staking[e](r,t))))))}function Yx(e){return(t,n)=>xb(t,((t,r=!1,a)=>n.derive.staking.erasHistoric(r).pipe(Ie((i=>n.derive.staking[e](t,i,r,a||0))))))}function Qx(e){return(t,n)=>xb(t,(t=>n.derive.staking[e](t,!0)))}function $x(e){return(t,n)=>xb(t,((t,r)=>t.length?function(e,t){const n=Gx(e,14);let r=0;const a=new Mh(n[r]);return a.pipe(Ie(t),Lh((()=>{lm((()=>{r++,r===n.length?a.complete():a.next(n[r])}))})),Dh(),ze(hy))}(t,(t=>Rh(t.map((t=>n.derive.staking[e](t,r)))))):Le([])))}const eg="eraExposure";function tg(e,t){return xb(e,((e,n=!1)=>{const[r,a]=jx(eg,e,n);return a?Le(a):t.query.staking.erasStakersPaged?t.query.staking.erasStakersPaged.entries(e).pipe(ze((t=>Xx(r,n,function(e,t){const n={},r={};return t.forEach((([e,t])=>{if(t.isSome){const a=e.args[1].toString(),i=t.unwrap();r[a]=i,i.others.forEach((({who:e},t)=>{const r=e.toString();n[r]=n[r]||[],n[r].push({validatorId:a,validatorIndex:t})}))}})),{era:e,nominators:n,validators:r}}(e,t))))):t.query.staking.erasStakersClipped.entries(e).pipe(ze((t=>Xx(r,n,function(e,t){const n={},r={};return t.forEach((([e,t])=>{const a=e.args[1].toString();r[a]=t,t.others.forEach((({who:e},t)=>{const r=e.toString();n[r]=n[r]||[],n[r].push({validatorId:a,validatorIndex:t})}))})),{era:e,nominators:n,validators:r}}(e,t)))))}))}const ng=Qx("_eraExposure"),rg=$x("_eraExposure"),ag=Jx("_erasExposure");function ig(e,t){return xb(e,(e=>Rh([t.query.staking.activeEra(),t.consts.staking.historyDepth?Le(t.consts.staking.historyDepth):t.query.staking.historyDepth()]).pipe(ze((([n,r])=>{const a=[],i=r.toNumber(),s=n.unwrapOrDefault().index;let o=s;for(;o.gte(lt)&&a.lengthe.gt(lt))).reduce(((e,[t,n])=>(e[t.toString()]=n,e)),{})}function cg(e,t){return xb(e,((e,n)=>{if(!e.length)return Le([]);const r=Fx(sg,e,n),a=Kx(e,r);return a.length?t.query.staking.erasRewardPoints.multi(a).pipe(ze((t=>Zx(e,r,Wx(sg,n,function(e,t){return e.map(((e,n)=>({era:e,eraPoints:t[n].total,validators:og(t[n])})))}(a,t)))))):Le(r)}))}const dg=Jx("_erasPoints"),ug="eraPrefs";function lg(e,t){return xb(e,((e,n)=>{const[r,a]=jx(ug,e,n);return a?Le(a):t.query.staking.erasValidatorPrefs.entries(e).pipe(ze((t=>Xx(r,n,function(e,t){const n={};return t.forEach((([e,t])=>{n[e.args[1].toString()]=t})),{era:e,validators:n}}(e,t)))))}))}const fg=Qx("_eraPrefs"),pg=$x("_eraPrefs"),hg=Jx("_erasPrefs"),bg="eraRewards";function mg(e,t){return xb(e,((e,n)=>{if(!e.length)return Le([]);const r=Fx(bg,e,n),a=Kx(e,r);return a.length?t.query.staking.erasValidatorReward.multi(a).pipe(ze((t=>Zx(e,r,Wx(bg,n,function(e,t){return e.map(((e,n)=>({era:e,eraReward:t[n].unwrapOrDefault()})))}(a,t)))))):Le(r)}))}const yg=Jx("_erasRewards"),xg="eraSlashes";function gg(e,t){return xb(e,((e,n)=>{const[r,a]=jx(xg,e,n);return a?Le(a):Rh([t.query.staking.nominatorSlashInEra.entries(e),t.query.staking.validatorSlashInEra.entries(e)]).pipe(ze((([t,a])=>Xx(r,n,function(e,t,n){const r={},a={};return t.forEach((([e,t])=>{r[e.args[1].toString()]=t.unwrap()})),n.forEach((([e,t])=>{a[e.args[1].toString()]=t.unwrapOrDefault()[1]})),{era:e,nominators:r,validators:a}}(e,t,a)))))}))}const vg=Qx("_eraSlashes"),wg=$x("_eraSlashes"),Vg=Jx("_erasSlashes");const Tg=Sb(((e,t)=>e.derive.staking.keysMulti([t])));function Sg(e,t){return xb(e,(e=>e.length?t.query.session.queuedKeys().pipe(Ie((n=>Rh([Le(n),t.consts.session?.dedupKeyPrefix?t.query.session.nextKeys.multi(e.map((e=>[t.consts.session.dedupKeyPrefix,e]))):Rh(e.map((e=>t.query.session.nextKeys(e))))]))),ze((([t,n])=>e.map(((e,r)=>function(e,t,n){const r=(t.find((([t])=>t.eq(e)))||[void 0,[]])[1],a=n.unwrapOr([]);return{nextSessionIds:Array.isArray(a)?a:[...a.values()],sessionIds:Array.isArray(r)?r:[...r.values()]}}(e,t,n[r])))))):Le([])))}function kg(e,t){return xb(e,(()=>Rh([t.derive.session.indexes(),t.derive.staking.validators()]).pipe(ze((([e,{nextElected:t,validators:n}])=>(0,M.b)({},e,{nextElected:t,validators:n}))))))}function _g(e,t){return xb(e,((e,n,r,a)=>{const i=t.registry.createType("Exposure"),s=t.registry.createType("Option"),o=t.registry.createType("Option");return n.length?Rh([t.query.staking.erasStakersClipped?Rh(n.map((n=>t.query.staking.erasStakersClipped(n,e)))):Le(n.map((e=>i))),t.query.staking.erasStakers?Rh(n.map((n=>t.query.staking.erasStakers(n,e)))):Le(n.map((e=>i))),t.query.staking.erasStakersPaged?Rh(n.map((n=>t.query.staking.erasStakersPaged(n,e,a)))):Le(n.map((e=>s))),t.query.staking.erasStakersOverview?Rh(n.map((n=>t.query.staking.erasStakersOverview(n,e)))):Le(n.map((e=>o)))]).pipe(ze((([e,t,r,a])=>n.map(((n,i)=>({clipped:e[i],era:n,exposure:t[i],exposureMeta:a[i],exposurePaged:r[i]})))))):Le([])}))}const Pg=Sb(((e,t,n,r)=>e.derive.staking._ownExposures(t,[n],!0,r||0))),Mg=Yx("_ownExposures");function Ig(e,t){return xb(e,((e,n,r)=>n.length?Rh([Rh(n.map((n=>t.query.staking.validatorSlashInEra(n,e)))),Rh(n.map((n=>t.query.staking.nominatorSlashInEra(n,e))))]).pipe(ze((([e,t])=>n.map(((n,r)=>({era:n,total:e[r].isSome?e[r].unwrap()[1]:t[r].unwrapOrDefault()})))))):Le([])))}const Ng=Sb(((e,t,n)=>e.derive.staking._ownSlashes(t,[n],!0))),Eg=Yx("_ownSlashes");function Og(e,t){return e.registry.createType("Vec",t.filter((e=>-1!==e)))}function Ag(e,t,n,{withClaimedRewardsEras:r,withController:a,withDestination:i,withExposure:s,withExposureErasStakersLegacy:o,withExposureMeta:c,withLedger:d,withNominations:u,withPrefs:l},f){const p=e.registry.createType("Option"),h=e.registry.createType("RewardDestination"),b=e.registry.createType("Exposure"),m=e.registry.createType("ValidatorPrefs"),y=e.registry.createType("Option"),x=e.registry.createType("Option"),g=[-1],v=Number(e.consts.staking.historyDepth.toNumber()),w=new Array(v).fill(0).map(((e,t)=>0===t?n.toNumber()-1:n.toNumber()-t-1));return Rh([a||d?Rh(t.map((t=>e.query.staking.bonded(t)))):Le(t.map((()=>null))),u?Rh(t.map((t=>e.query.staking.nominators(t)))):Le(t.map((()=>p))),i?Rh(t.map((t=>e.query.staking.payee(t)))):Le(t.map((()=>h))),l?Rh(t.map((t=>e.query.staking.validators(t)))):Le(t.map((()=>m))),s&&e.query.staking.erasStakersPaged?Rh(t.map((t=>e.query.staking.erasStakersPaged(n,t,f)))):Le(t.map((()=>y))),c&&e.query.staking.erasStakersOverview?Rh(t.map((t=>e.query.staking.erasStakersOverview(n,t)))):Le(t.map((()=>x))),r&&e.query.staking.claimedRewards?Rh([e.query.staking.claimedRewards.entries(),e.query.staking.erasStakersOverview.entries()]).pipe(ze((([e,n])=>function(e,t,n,r){const a={},i={},s=e.map((e=>e.toString()));return n.forEach((([e,t])=>{const n=e.args[1].toString(),r=e.args[0].toNumber();s.includes(n)&&(a[n]||(a[n]=new Map),a[n].set(r,t.toArray()))})),r.forEach((([e,t])=>{const n=e.args[1].toString(),r=e.args[0].toNumber();s.includes(n)&&t.isSome&&(i[n]||(i[n]=new Map),i[n].set(r,t.unwrap().pageCount))})),e.map((e=>{const n=a[e.toString()],r=i[e.toString()];return t.map((e=>{if(n&&n.has(e)&&r&&r.has(e)){const t=n.get(e),a=r.get(e);return t.length===a.toNumber()?e:-1}return-1}))}))}(t,w,e,n)))):Le(t.map((()=>g))),o&&e.query.staking.erasStakers?Rh(t.map((t=>e.query.staking.erasStakers(n,t)))):Le(t.map((()=>b)))])}function Cg(e,t,n,r,a){return Ag(e,n,t,r,a).pipe(Ie((([t,a,i,s,o,c,d,u])=>function(e,t,{withLedger:n=!1}){const r=t.filter((e=>n&&!!e&&e.isSome)).map((e=>e.unwrap())),a=e.registry.createType("Option");return(r.length?Rh(r.map((t=>e.query.staking.ledger(t)))):Le([])).pipe(ze((e=>{let n=-1;return t.map((t=>t&&t.isSome&&e[++n]||a))})))}(e,t,r).pipe(ze((r=>n.map(((n,l)=>function(e,t,n,r,a,i,s,o,c,d,u){return{accountId:t,claimedRewardsEras:Og(e,d),controllerId:n?.unwrapOr(null)||null,exposureEraStakers:u,exposureMeta:c,exposurePaged:s,nominators:r.isSome?r.unwrap().targets:[],rewardDestination:(l=a,"boolean"==typeof l.isSome?l.unwrapOr(null):l),stakingLedger:o.unwrapOrDefault(),stashId:t,validatorPrefs:i};var l}(e,n,t[l],a[l],i[l],s[l],o[l],r[l],c[l],d[l],u[l])))))))))}const Hg=Sb(((e,t,n,r)=>e.derive.staking.queryMulti([t],n,r)));function Rg(e,t){return xb(e,((e,n,r)=>t.derive.session.indexes().pipe(Ie((({activeEra:a})=>{const i=e.map((e=>t.registry.createType("AccountId",e))),s=r||0;return i.length?Cg(t,a,i,n,s):Le([])})))))}function Bg(e,t){return xb(e,((e,n,r=!1)=>{const a=e.map((e=>t.registry.createType("AccountId",e).toString()));return t.derive.staking._erasExposure(n,r).pipe(ze((e=>a.map((t=>e.map((({era:e,nominators:n,validators:r})=>{const a=!!r[t],i={},s=n[t]||[];return a?i[t]=r[t]:s&&s.forEach((({validatorId:e})=>{i[e]=r[e]})),{era:e,isEmpty:!Object.keys(i).length,isValidator:a,nominating:s,validators:i}})))))))}))}function Lg(e,t){return xb(e,((e,n=!1)=>t.derive.staking.erasHistoric(n).pipe(Ie((r=>t.derive.staking._stakerExposures(e,r,n))))))}const zg=Sb(((e,t,n)=>e.derive.staking.stakerExposures([t],n)));function Ug(e,t){return xb(e,((e,n,r)=>{const a=t.registry.createType("AccountId",e).toString();return t.derive.staking._erasPoints(n,r).pipe(ze((e=>e.map((({era:e,eraPoints:n,validators:r})=>({era:e,eraPoints:n,points:r[a]||t.registry.createType("RewardPoint")}))))))}))}const Dg=Yx("_stakerPoints");function qg(e,t){return xb(e,((e,n,r)=>t.query.staking.erasValidatorPrefs.multi(n.map((t=>[t,e]))).pipe(ze((e=>e.map(((e,t)=>({era:n[t],validatorPrefs:e}))))))))}const jg=Yx("_stakerPrefs");function Fg(e,t){const n=t?(t.legacyClaimedRewards||t.claimedRewards).toArray():[];return e.toArray().concat(n)}function Xg(e,t,{claimedRewardsEras:n,rewards:r,stakingLedger:a}){const i=e.filter((e=>!Fg(n,a).some((t=>t.eq(e))))),s=t.map((([e])=>e)),o=t.map((([,e])=>e));return r.filter((({isEmpty:e})=>!e)).filter((e=>!!i.some((t=>e.era.eq(t)))&&(function(e,t,n,r){const a=[];Object.keys(n.validators).forEach((i=>{const s=e.indexOf(i);if(-1!==s){const e=t[s].stakingLedger;Fg(r,e).some((e=>n.era.eq(e)))&&a.push(i)}})),a.forEach((e=>{delete n.validators[e]}))}(s,o,e,n),!0))).filter((({validators:e})=>0!==Object.keys(e).length)).map((e=>{let t=e.isClaimed;const n=Object.keys(e.validators);if(!e.isClaimed&&n.length)for(const r of n){const n=o.find((e=>e.accountId.toString()===r));if(n){t=n.claimedRewardsEras.toArray().some((t=>t.eq(e.era)));break}}return(0,M.b)({},e,{isClaimed:t,nominators:e.nominating.filter((t=>e.validators[t.validatorId]))})}))}function Wg(e,t){return xb(e,((e,n=!1)=>Rh([t.derive.staking._erasPoints(e,n),t.derive.staking._erasPrefs(e,n),t.derive.staking._erasRewards(e,n)])))}function Zg(e,t){return xb(e,((e,n,r=!1)=>{const a=n.map((e=>"number"==typeof e||"string"==typeof e?t.registry.createType("u32",e):e));return Rh([t.derive.staking.queryMulti(e,{withClaimedRewardsEras:!0,withLedger:!0}),t.derive.staking._stakerExposures(e,a,r),t.derive.staking._stakerRewardsEras(a,r)]).pipe(Ie((([e,a,i])=>{const s=e.map((({claimedRewardsEras:e,stakingLedger:n,stashId:r},s)=>r&&(n||e)?function(e,t,[n,r,a],i,s){return i.map((({era:i,isEmpty:o,isValidator:c,nominating:d,validators:u})=>{const{eraPoints:l,validators:f}=n.find((e=>e.era.eq(i)))||{eraPoints:lt,validators:{}},{eraReward:p}=a.find((e=>e.era.eq(i)))||{eraReward:e.registry.createType("Balance")},{validators:h}=r.find((e=>e.era.eq(i)))||{validators:{}},b={},m=t.toString();return Object.entries(u).forEach((([t,n])=>{const r=f[t]||lt,a=h[t]?.commission.unwrap()||lt,i=n.total?n.total?.unwrap():n.pageTotal?n.pageTotal?.unwrap():lt;let s,o=lt;if(!(i.isZero()||r.isZero()||l.isZero())){o=p.mul(r).div(l);const e=a.mul(o).div(mt);let c;if(t===m)if(n.own)c=n.own.unwrap();else{const e=n.others.find((({who:e})=>e.eq(t)));c=e?e.value.unwrap():lt}else{const e=n.others.find((({who:e})=>e.eq(m)));c=e?e.value.unwrap():lt}s=o.sub(e).imul(c).div(i).iadd(t===m?e:lt)}b[t]={total:e.registry.createType("Balance",o),value:e.registry.createType("Balance",s)}})),{era:i,eraReward:p,isClaimed:s.some((e=>e.eq(i))),isEmpty:o,isValidator:c,nominating:d,validators:b}}))}(t,r,i,a[s],e):[]));if(r)return Le(s);const[o,c]=s.reduce((([e,t],n)=>{const r=[];return t.push(r),n.forEach((({validators:t})=>Object.keys(t).forEach((t=>{r.includes(t)||(r.push(t),e.includes(t)||e.push(t))})))),[e,t]}),[[],[]]);return t.derive.staking.queryMulti(o,{withClaimedRewardsEras:!0,withLedger:!0}).pipe(ze((t=>e.map((({claimedRewardsEras:e,stakingLedger:r},a)=>Xg(n,c[a].map((e=>[e,t.find((t=>t.accountId.eq(e)))])).filter((e=>!!e[1])),{claimedRewardsEras:e,rewards:s[a],stakingLedger:r}))))))})))}))}const Gg=Sb(((e,t,n)=>e.derive.staking.erasHistoric(n).pipe(Ie((r=>e.derive.staking._stakerRewards([t],r,n))))));function Kg(e,t){return xb(e,((e,n)=>e.length&&n.length?t.derive.staking._stakerRewards(e,n,!1):Le([])))}function Jg(e,t){return xb(e,((e,n=!1)=>t.derive.staking.erasHistoric(n).pipe(Ie((n=>t.derive.staking.stakerRewardsMultiEras(e,n))))))}function Yg(e,t){return xb(e,((e,n,r)=>{const a=t.registry.createType("AccountId",e).toString();return t.derive.staking._erasSlashes(n,r).pipe(ze((e=>e.map((({era:e,nominators:n,validators:r})=>({era:e,total:n[a]||r[a]||t.registry.createType("Balance")}))))))}))}const Qg=Yx("_stakerSlashes");function $g(e,t){return xb(e,(()=>function(e){let t=Date.now();return e.query.system.events().pipe(ze((e=>(t=e.filter((({event:e,phase:t})=>{try{return t.isApplyExtrinsic&&"staking"===e.section&&"Bonded"===e.method}catch{return!1}}))?Date.now():t,t))),Rb(t),yb({skipTimeout:!0}))}(t).pipe(Ie((()=>t.query.staking.validators.keys())),ze((e=>e.map((({args:[e]})=>e)).filter((e=>e)))))))}function ev(e,t){return xb(e,(()=>t.query.staking.erasStakersOverview?t.derive.session.indexes().pipe(Ie((({currentEra:e})=>t.query.staking.erasStakersOverview.keys(e))),ze((e=>[...new Set(e.map((({args:[,e]})=>e.toString())))].map((e=>t.registry.createType("AccountId",e)))))):t.query.staking.erasStakers?t.derive.session.indexes().pipe(Ie((({currentEra:e})=>t.query.staking.erasStakers.keys(e))),ze((e=>[...new Set(e.map((({args:[,e]})=>e.toString())))].map((e=>t.registry.createType("AccountId",e)))))):t.query.staking.currentElected()))}function tv(e,t){return xb(e,(()=>Rh([t.query.session?t.query.session.validators():Le([]),t.query.staking?t.derive.staking.nextElected():Le([])]).pipe(ze((([e,t])=>({nextElected:t.length?t:e,validators:e}))))))}const nv={withController:!0,withPrefs:!0};function rv(e,t){return xb(e,((e=nv)=>Rh([t.derive.staking.validators(),t.derive.staking.stashes()]).pipe(Ie((([{nextElected:n},r])=>{const a=n.map((e=>e.toString())),i=r.filter((e=>!a.includes(e.toString())));return t.derive.staking.queryMulti(i,e).pipe(ze((e=>({info:e,waiting:i}))))})))))}const av=Fb("technicalCommittee"),iv=Wb("technicalCommittee"),sv=Gb("technicalCommittee"),ov=Kb("technicalCommittee"),cv=Jb("technicalCommittee"),dv=Zb("technicalCommittee"),uv=Yb("technicalCommittee");function lv(e,t){return xb(e,(()=>t.query.treasury?Rh([t.query.treasury.proposalCount(),t.query.treasury.approvals()]).pipe(Ie((([e,n])=>function(e,t,n){const r=[],a=t.toNumber();for(let s=0;se.eqn(s)))||r.push(e.registry.createType("ProposalIndex",s));const i=[...r,...n];return Rh([e.query.treasury.proposals.multi(i),e.derive.council?e.derive.council.proposals():Le([])]).pipe(ze((([r,a])=>function(e,{allIds:t,allProposals:n,approvalIds:r,councilProposals:a,proposalCount:i}){const s=[],o=[],c=a.filter((({proposal:t})=>t&&(e.tx.treasury.approveProposal&&e.tx.treasury.approveProposal.is(t)||e.tx.treasury.rejectProposal&&e.tx.treasury.rejectProposal.is(t))));return t.forEach(((e,t)=>{if(n[t].isSome){const a=c.filter((({proposal:t})=>t&&e.eq(t.args[0]))).sort(((e,t)=>e.proposal&&t.proposal?e.proposal.method.localeCompare(t.proposal.method):e.proposal?-1:1)),i=r.some((t=>t.eq(e))),d={council:a,id:e,proposal:n[t].unwrap()};i?s.push(d):o.push(d)}})),{approvals:s,proposalCount:i,proposals:o}}(e,{allIds:i,allProposals:r,approvalIds:n,councilProposals:a,proposalCount:t}))))}(t,e,n)))):Le({approvals:[],proposalCount:t.registry.createType("ProposalIndex"),proposals:[]})))}function fv(e,t){return xb(e,(e=>Rh([t.rpc.chain.getBlock(e),t.queryAt(e).pipe(Ie((e=>e.system.events())))]).pipe(ze((([e,t])=>({block:e,events:t}))))))}const pv=250,hv=new st(6e3),bv=new st(5),mv=new st(3e5);function yv(e,t){return e.derive.balances.account(t).pipe(ze((({accountNonce:e})=>e)))}function xv(e,t){return e.call.accountNonceApi?e.call.accountNonceApi.accountNonce(t):e.rpc.system?.accountNextIndex?e.rpc.system.accountNextIndex(t):yv(e,t)}function gv(e){return Rh([e.rpc.chain.getHeader().pipe(Ie((t=>t.parentHash.isEmpty?Le(t):e.rpc.chain.getHeader(t.parentHash).pipe(Xh((()=>Le(t))))))),e.rpc.chain.getFinalizedHead().pipe(Ie((t=>e.rpc.chain.getHeader(t).pipe(Xh((()=>Le(null)))))))]).pipe(ze((([e,t])=>!t||Bm(e).sub(Bm(t)).gt(bv)?e:t)))}function vv(e){const t=e.consts.babe?.expectedBlockTime||e.consts.aura?.slotDuration||e.consts.timestamp?.minimumPeriod.muln(2);return t&&t.isZero&&!t.isZero()?t:void 0}function wv(e,t){return(e,n,r)=>Rh([(0,Fe.b)(n)?yv(t,e):-1===n?xv(t,e):Le(t.registry.createType("Index",n)),(0,Fe.b)(r)||(0,Lt.E)(r)&&r>0?gv(t):Le(null)]).pipe(ze((([e,n])=>({header:n,mortalLength:Math.min(t.consts.system?.blockHashCount?.toNumber()||pv,mv.div(vv(t)||hv).iadd(bv).toNumber()),nonce:e}))))}const Vv={accounts:o,alliance:c,bagsList:d,balances:u,bounties:l,chain:f,contracts:p,council:h,crowdloan:b,democracy:m,elections:y,imOnline:x,membership:g,parachains:v,session:w,society:V,staking:T,technicalCommittee:S,treasury:k,tx:_},Tv={allianceMotion:{instances:["allianceMotion"],methods:[]},bagsList:{instances:["voterBagsList","voterList","bagsList"],methods:[],withDetect:!0},contracts:{instances:["contracts"],methods:[]},council:{instances:["council"],methods:[],withDetect:!0},crowdloan:{instances:["crowdloan"],methods:[]},democracy:{instances:["democracy"],methods:[]},elections:{instances:["phragmenElection","electionsPhragmen","elections","council"],methods:[],withDetect:!0},imOnline:{instances:["imOnline"],methods:[]},membership:{instances:["membership"],methods:[]},parachains:{instances:["parachains","registrar"],methods:[]},session:{instances:["session"],methods:[]},society:{instances:["society"],methods:[]},staking:{instances:["staking"],methods:["erasRewardPoints"]},technicalCommittee:{instances:["technicalCommittee"],methods:[],withDetect:!0},treasury:{instances:["treasury"],methods:[]}};function Sv(e,t,n){const r={},a=Object.keys(n),i=Object.keys(t.query),s=t.runtimeVersion.specName,o=e=>i.includes(e),c=e=>function(e,t,n){return e.registry.getModuleInstances(t,n)||[]}(t,s,e).some(o),d=e=>Object.keys(n[e]),u=(r,a)=>n[r][a](e,t),l=e=>{return!Tv[e]||Tv[e].instances.some(o)&&(!Tv[e].methods.length||Tv[e].methods.every((n=Tv[e].instances,e=>n.some((n=>i.includes(n)&&t.query[n][e])))))||Tv[e].withDetect&&Tv[e].instances.some(c);var n};for(let f=0,p=a.length;fObject.entries(i[e].rpc||{}).forEach((([t,n])=>{const r=n.aliasSection||e;_v[r]||(_v[r]={}),_v[r][t]=(0,M.b)({},n,{isSubscription:!!n.pubsub,jsonrpc:`${r}_${t}`,method:t,section:r})}))));const Pv=_v,Mv=(0,it.v)("rpc-core"),Iv={fallback:void 0,modifier:{isOptional:!0},type:{asMap:{linked:{isTrue:!1}},isMap:!1}};function Nv(e,{noErrorLog:t,params:n,type:r},a){t||Mv.error(`${e}(${n.map((({isOptional:e,name:t,type:n})=>`${t}${e?"?":""}: ${n}`)).join(", ")}): ${r}:: ${a.message}`)}function Ev(e){return["0x3a636f6465"].includes(e.toHex())}class Ov{__internal__instanceId;__internal__isPedantic;__internal__registryDefault;__internal__storageCache;__internal__storageCacheHits=0;__internal__getBlockRegistry;__internal__getBlockHash;mapping=new Map;provider;sections=[];constructor(e,t,{isPedantic:n=!0,provider:r,rpcCacheCapacity:a,userRpc:i={}}){if(!r||!(0,qe.T)(r.send))throw new Error("Expected Provider to API create");this.__internal__instanceId=e,this.__internal__isPedantic=n,this.__internal__registryDefault=t,this.provider=r;const s=Object.keys(Pv);this.sections.push(...s),this.__internal__storageCache=new kv.q(a||102400),this.addUserInterfaces(i)}get isConnected(){return this.provider.isConnected}connect(){return this.provider.connect()}async disconnect(){return this.provider.disconnect()}get stats(){const e=this.provider.stats;return e?{...e,core:{cacheHits:this.__internal__storageCacheHits,cacheSize:this.__internal__storageCache.length}}:void 0}setRegistrySwap(e){this.__internal__getBlockRegistry=Fh(e,{getInstanceId:()=>this.__internal__instanceId})}setResolveBlockHash(e){this.__internal__getBlockHash=Fh(e,{getInstanceId:()=>this.__internal__instanceId})}addUserInterfaces(e){this.sections.push(...Object.keys(e).filter((e=>!this.sections.includes(e))));for(let t=0,n=this.sections.length;te?this._createMethodSubscribe(n,t,i):this._createMethodSend(n,t,i)))}}}}_memomize(e,t){const n={getInstanceId:()=>this.__internal__instanceId},r=Fh(e(!0),n);return r.raw=Fh(e(!1),n),r.meta=t,r}_formatResult(e,t,n,r,a,i,s){return e?this._formatOutput(t,n,r,a,i,s):s}_createMethodSend(e,t,n){const r=n.endpoint||`${e}_${t}`,a=n.params.findIndex((({isHistoric:e})=>e));let i=null;const s=async(e,i)=>{const s=-1===a?null:i[a],o=s&&"BlockNumber"===n.params[a].type?await(this.__internal__getBlockHash?.(s)):s,{registry:c}=e&&o&&this.__internal__getBlockRegistry?await this.__internal__getBlockRegistry((0,E.e)(o)):{registry:this.__internal__registryDefault},d=this._formatParams(c,null,n,i),u=await this.provider.send(r,d.map((e=>e.toJSON())),!!o);return this._formatResult(e,c,o,t,n,d,u)};return i=this._memomize((e=>(...r)=>{const o=e&&-1!==a&&!!r[a];return new he((a=>(s(e,r).then((e=>{a.next(e),a.complete()})).catch((e=>{Nv(t,n,e),a.error(e),a.complete()})),()=>{e?i?.unmemoize(...r):i?.raw.unmemoize(...r)}))).pipe($h(1),o?pb():Kh())}),n),i}_createSubscriber({paramsJson:e,subName:t,subType:n,update:r},a){return new Promise(((i,s)=>{this.provider.subscribe(n,t,e,r).then(i).catch((e=>{a(e),s(e)}))}))}_createMethodSubscribe(e,t,n){const[r,a,i]=n.pubsub,s=`${e}_${a}`,o=`${e}_${i}`,c=`${e}_${r}`;let d=null;return d=this._memomize((e=>(...r)=>new he((a=>{let i=Promise.resolve(null);const u=this.__internal__registryDefault,l=e=>{Nv(t,n,e),a.error(e)};try{const o=this._formatParams(u,null,n,r),d=(r,i)=>{if(r)Nv(t,n,r);else try{a.next(this._formatResult(e,u,null,t,n,o,i))}catch(r){a.error(r)}};i=this._createSubscriber({paramsJson:o.map((e=>e.toJSON())),subName:s,subType:c,update:d},l)}catch(f){l(f)}return()=>{e?d?.unmemoize(...r):d?.raw.unmemoize(...r),i.then((e=>(0,Kt.k)(e)?Promise.resolve(!1):this.provider.unsubscribe(c,o,e))).catch((e=>Nv(t,n,e)))}})).pipe(yb())),n),d}_formatParams(e,t,n,r){const a=r.length,i=n.params.filter((({isOptional:e})=>!e)).length;if(an.params.length)throw new Error(`Expected ${n.params.length} parameters${i===n.params.length?"":` (${n.params.length-i} optional)`}, ${a} found instead`);const s=new Array(a);for(let o=0;o"===r.type){const t=i,r=t.length,s=new Array(r);for(let n=0;ne===s)),c=(0,Fe.b)(o);if(c&&a){const e=this.__internal__storageCache.get(s);if(e)return this.__internal__storageCacheHits++,e}const d=c?null:o[1],u=(0,Kt.k)(d),l=u||Ev(n)?d:(0,E.e)(d),f=this._newType(e,t,n,l,u,i);return this._setToCache(s,f),f}_setToCache(e,t){this.__internal__storageCache.set(e,t)}_newType(e,t,n,r,a,i=-1){const s=n.outputType||"Raw",o=n.meta||Iv,c=-1===i?"":` entry ${i}:`;try{return e.createTypeUnsafe(s,[a?o.fallback?s.includes("Linkage<")?Mt((0,es.V)(o.fallback.toHex()),new Uint8Array(2)):(0,es.V)(o.fallback.toHex()):void 0:o.modifier.isOptional?e.createTypeUnsafe(s,[r],{blockHash:t,isPedantic:this.__internal__isPedantic}):r],{blockHash:t,isFallback:a&&!!o.fallback,isOptional:o.modifier.isOptional,isPedantic:this.__internal__isPedantic&&!o.modifier.isOptional})}catch(d){throw new Error(`Unable to decode storage ${n.section||"unknown"}.${n.method||"unknown"}:${c}: ${d.message}`)}}}var Av=n(19588),Cv=n(98967);const Hv=(0,Cv.Q)(0),Rv=(0,Cv.Q)(1),Bv=(Number.MAX_SAFE_INTEGER,(0,Cv.Q)("11400714785074694791")),Lv=(0,Cv.Q)("14029467366897019727"),zv=(0,Cv.Q)("1609587929392839161"),Uv=(0,Cv.Q)("9650029242287828579"),Dv=(0,Cv.Q)("2870177450012600261"),qv=(0,Cv.Q)("0xffffffffffffffff"),jv=(0,Cv.Q)(7),Fv=(0,Cv.Q)(11),Xv=(0,Cv.Q)(12),Wv=(0,Cv.Q)(16),Zv=(0,Cv.Q)(18),Gv=(0,Cv.Q)(23),Kv=(0,Cv.Q)(27),Jv=(0,Cv.Q)(29),Yv=(0,Cv.Q)(31),Qv=(0,Cv.Q)(32),$v=(0,Cv.Q)(33),ew=(0,Cv.Q)(64),tw=(0,Cv.Q)(256);function nw(e,t){const n=e&qv;return(n<>ew-t)&qv}function rw(e,t,n){const r=new Array(n);let a=0;for(let s=0;s=0;s--)i=(i<=0){const e=e=>Bv*nw(e+Lv*rw(t,a,4),Yv);do{n.v1=e(n.v1),a+=8,n.v2=e(n.v2),a+=8,n.v3=e(n.v3),a+=8,n.v4=e(n.v4),a+=8}while(a<=r)}return a=32?((((nw(i,Rv)+nw(s,jv)+nw(o,Xv)+nw(c,Zv)^Bv*nw(i*Lv,Yv))*Bv+Uv^Bv*nw(s*Lv,Yv))*Bv+Uv^Bv*nw(o*Lv,Yv))*Bv+Uv^Bv*nw(c*Lv,Yv))*Bv+Uv:n+Dv);for(;d<=a-8;)u=qv&Uv+Bv*nw(u^Bv*nw(Lv*rw(r,d,4),Yv),Kv),d+=8;for(d+4<=a&&(u=qv&zv+Lv*nw(u^Bv*rw(r,d,2),Gv),d+=4);d>$v),u=qv&zv*(u^u>>Jv),u=qv&(u^u>>Qv);const l=new Uint8Array(8);for(let f=7;f>=0;f--)l[f]=Number(u%tw),u/=tw;return l}function iw(e,t=64,n){const r=Math.ceil(t/64),a=(0,E.e)(e);if(!Ba.CW||!n&&Ti())return Vi(a,r);const i=new Uint8Array(8*r);for(let s=0;siw(e,128),ow={Blake2_128:e=>Pi(e,128),Blake2_128Concat:e=>Mt(Pi(e,128),(0,E.e)(e)),Blake2_256:e=>Pi(e,256),Identity:e=>(0,E.e)(e),Twox128:e=>iw(e,128),Twox256:e=>iw(e,256),Twox64Concat:e=>Mt(iw(e,64),(0,E.e)(e))};const cw={args:[],hashers:[],keys:[]};function dw(e){return!(0,Fe.b)(e)}function uw({method:e,section:t},{args:n,keys:r}){if(!Array.isArray(n))throw new Error(`Call to ${jt(t||"unknown")}.${jt(e||"unknown")} needs ${r.length} arguments`);if(n.filter(dw).length!==r.length)throw new Error(`Call to ${jt(t||"unknown")}.${jt(e||"unknown")} needs ${r.length} arguments, found [${n.join(", ")}]`)}function lw(e,t,{args:n,hashers:r,keys:a}){const i=a.length,s=new Array(i);for(let c=0;c`${t[r].type}(${du(e.lookup,n)})`))}const o=["module","method"].concat(...n.args.map(((e,t)=>s[t])));return{inner:a.concat(...i).map(((e,t)=>({name:o[t],outer:[e]})))}}function pw(e,t,n){const[r,a]=lw(e,t,n);return Mt(...r,...a)}function hw(e,t,n){return uw(t,n),ar(pw(e,t,n))}function bw(e,t,n){const{meta:r,method:a,prefix:i,section:s}=t,o=function(e,t,n){const{meta:{type:r}}=t;let a=null;return(...i)=>{if(r.isPlain)return a||(a=n.skipHashing?ar((0,E.e)(n.key)):hw(e,t,cw)),a;const{hashers:s,key:o}=r.asMap;return 1===s.length?hw(e,t,{args:i,hashers:s,keys:[o]}):hw(e,t,{args:i,hashers:s,keys:e.lookup.getSiType(o).def.asTuple})}}(e,t,n);return o.inspect=function(e,t,n){const{meta:{type:r}}=t;return(...a)=>{if(r.isPlain)return n.skipHashing?{inner:[],name:"wellKnown",outer:[(0,E.e)(n.key)]}:fw(e,t,cw);const{hashers:i,key:s}=r.asMap;return 1===i.length?fw(e,t,{args:a,hashers:i,keys:[s]}):fw(e,t,{args:a,hashers:i,keys:e.lookup.getSiType(s).def.asTuple})}}(e,t,n),o.meta=r,o.method=jt(a),o.prefix=i,o.section=s,o.toJSON=()=>(0,M.b)({storage:{method:a,prefix:i,section:s}},r.toJSON()),o}function mw(e,t,n){const{meta:{type:r}}=t,a=bw(e,t,n);return r.isMap&&function(e,t,n){const{meta:{type:r},method:a,section:i}=t;n.iterKey=function(e,{meta:{docs:t,name:n,type:r},section:a},{method:i},s){const o=e.createTypeUnsafe("StorageEntryMetadataLatest",[{docs:t,fallback:e.createTypeUnsafe("Bytes",[]),modifier:e.createTypeUnsafe("StorageEntryModifierLatest",[1]),name:n,type:e.createTypeUnsafe("StorageEntryTypeLatest",[r.asMap.key,0])}]);s.meta=o;const c=(...t)=>e.createTypeUnsafe("StorageKey",[s(...t),{method:i,section:a}]);return c.meta=o,c}(e,t,n,((...n)=>{if(n.length&&(r.isPlain||n.length>=r.asMap.hashers.length))throw new Error(`Iteration of ${jt(i||"unknown")}.${jt(a||"unknown")} needs arguments to be at least one less than the full arguments, found [${n.join(", ")}]`);if(n.length&&r.isMap){const{hashers:a,key:i}=r.asMap,s=1===a.length?[i]:e.lookup.getSiType(i).def.asTuple;return new rt(e,pw(e,t,{args:n,hashers:a.slice(0,n.length),keys:s.slice(0,n.length)}))}return new rt(e,pw(e,t,cw))}))}(e,t,a),a.keyPrefix=(...e)=>a.iterKey&&a.iterKey(...e)||pr(a())[1],a}function yw(e,t){const n=t.toLowerCase();return e.lookup.types.find((e=>e.type.def.isPrimitive&&e.type.def.asPrimitive.toString().toLowerCase()===n||e.type.def.isHistoricMetaCompat&&e.type.def.asHistoricMetaCompat.toString().toLowerCase()===n))}function xw(e,t){let n=yw(e,t);if(!n&&("Bytes"===t||t.startsWith("[u8;"))){const r=yw(e,"u8");if(r)if("Bytes"===t)n=e.lookup.types.find((e=>e.type.def.isSequence&&e.type.def.asSequence.type.eq(r.id)||e.type.def.isHistoricMetaCompat&&e.type.def.asHistoricMetaCompat.eq(t)));else{const a=Rr(t);n=e.lookup.types.find((e=>e.type.def.isArray&&e.type.def.asArray.eq({len:a.length,type:r.id})||e.type.def.isHistoricMetaCompat&&e.type.def.asHistoricMetaCompat.eq(t)))}}return n||console.warn(`Unable to map ${t} to a lookup index`),n}function gw({method:e,prefix:t,section:n},r,{docs:a,type:i}){return s=>mw(s,{meta:s.createTypeUnsafe("StorageEntryMetadataLatest",[{docs:s.createTypeUnsafe("Vec",[[a]]),modifier:s.createTypeUnsafe("StorageEntryModifierLatest",["Required"]),name:s.createTypeUnsafe("Text",[e]),toJSON:()=>r,type:s.createTypeUnsafe("StorageEntryTypeLatest",[{Plain:xw(s,i)?.id||0}])}]),method:e,prefix:t,section:n},{key:r,skipHashing:!0})}function vw(e,t,n){return gw({method:e,prefix:"Substrate",section:"substrate"},t,n)}const ww={changesTrieConfig:vw("changesTrieConfig",":changes_trie",{docs:"Changes trie configuration is stored under this key.",type:"u32"}),childStorageKeyPrefix:vw("childStorageKeyPrefix",":child_storage:",{docs:"Prefix of child storage keys.",type:"u32"}),code:vw("code",":code",{docs:"Wasm code of the runtime.",type:"Bytes"}),extrinsicIndex:vw("extrinsicIndex",":extrinsic_index",{docs:"Current extrinsic index (u32) is stored under this key.",type:"u32"}),heapPages:vw("heapPages",":heappages",{docs:"Number of wasm linear memory pages required for execution of the runtime.",type:"u64"}),intrablockEntropy:vw("intrablockEntropy",":intrablock_entropy",{docs:"Current intra-block entropy (a universally unique `[u8; 32]` value) is stored here.",type:"[u8; 32]"})};const Vw={docs:"Returns the current pallet version from storage",type:"u16"};function Tw(e,{pallets:t},n){const r=function(e){const t={},n=Object.entries(ww);for(let r=0,a=n.length;r$r({palletVersion:gw({method:"palletVersion",prefix:o,section:t},pw(e,{method:":__STORAGE_VERSION__:",prefix:n.toString()},cw),Vw)(e)},a,(n=>mw(e,{meta:n,method:n.name.toString(),prefix:o,section:t},{})),_f)))}}return r}function Sw(e){return t=>t?e[t.charCodeAt(0)]+t.slice(1):""}const kw=Sw(zt);function _w(){return new B}function Pw(e,t){var n=arguments.length>=2;return function(r){return r.pipe(e?function(e,t){return _e((function(n,r){var a=0;n.subscribe(Pe(r,(function(n){return e.call(t,n,a++)&&r.next(n)})))}))}((function(t,n){return e(t,n,r)})):fe,(i=1)<=0?function(){return py}:_e((function(e,t){var n=0;e.subscribe(Pe(t,(function(e){++n<=i&&(t.next(e),i<=n&&t.complete())})))})),n?function(e){return _e((function(t,n){var r=!1;t.subscribe(Pe(n,(function(e){r=!0,n.next(e)}),(function(){r||n.next(e),n.complete()})))}))}(t):(void 0===(a=function(){return new B})&&(a=_w),_e((function(e,t){var n=!1;e.subscribe(Pe(t,(function(e){n=!0,t.next(e)}),(function(){return n?t.complete():t.error(a())})))}))));var a,i}}function Mw(e){return(0,qe.T)(e.sign)}const Iw=(0,it.v)("api/util");function Nw(e,{block:{extrinsics:t,header:n}},r,a){for(const[i,s]of t.entries())if(s.hash.eq(e))return{blockNumber:Rm(n.number)?n.number.unwrap():n.number,events:r.filter((({phase:e})=>e.isApplyExtrinsic&&e.asApplyExtrinsic.eqn(i))),txIndex:i};if(a.isInBlock){const r=t.map((e=>e.hash.toHex()));Iw.warn(`block ${n.hash.toHex()}: Unable to find extrinsic ${e.toHex()} inside ${r.join(", ")}`)}return{}}const Ew=e=>e;function Ow(e,t,n,r){return e.filter((({event:e})=>t===e.section&&n.includes(e.method))).map((e=>r(e)))}function Aw({event:{data:[e]}}){return e}function Cw({event:{data:e,method:t}}){return"ExtrinsicSuccess"===t?e[0]:e[1]}class Hw{dispatchError;dispatchInfo;internalError;events;status;txHash;txIndex;blockNumber;constructor({blockNumber:e,dispatchError:t,dispatchInfo:n,events:r,internalError:a,status:i,txHash:s,txIndex:o}){this.dispatchError=t||function(e=[]){return Ow(e,"system",["ExtrinsicFailed"],Aw)[0]}(r),this.dispatchInfo=n||function(e=[]){return Ow(e,"system",["ExtrinsicFailed","ExtrinsicSuccess"],Cw)[0]}(r),this.events=r||[],this.internalError=a,this.status=i,this.txHash=s,this.txIndex=o,this.blockNumber=e}get isCompleted(){return this.isError||this.status.isInBlock||this.status.isFinalized}get isError(){return this.status.isDropped||this.status.isFinalityTimeout||this.status.isInvalid||this.status.isUsurped}get isFinalized(){return this.status.isFinalized}get isInBlock(){return this.status.isInBlock}get isWarning(){return this.status.isRetracted}filterRecords(e,t){return Ow(this.events,e,Array.isArray(t)?t:[t],Ew)}findRecord(e,t){return this.filterRecords(e,t)[0]}toHuman(e){return{dispatchError:this.dispatchError?.toHuman(),dispatchInfo:this.dispatchInfo?.toHuman(),events:this.events.map((t=>t.toHuman(e))),internalError:this.internalError?.message.toString(),status:this.status.toHuman(e)}}}function Rw(e,t,n,{header:r,mortalLength:a,nonce:i}){if(!r){if(n.era&&!n.blockHash)throw new Error("Expected blockHash to be passed alongside non-immortal era options");return(0,Lt.E)(n.era)&&(delete n.era,delete n.blockHash),Lw(e,n,{nonce:i})}return Lw(e,n,{blockHash:r.hash,era:t.createTypeUnsafe("ExtrinsicEra",[{current:r.number,period:n.era||a}]),nonce:i})}function Bw(e,t){let n={};return(0,qe.T)(e)?t=e:n=(0,M.b)({},e),[n,t]}function Lw(e,t,n){return(0,M.b)({blockHash:e.genesisHash,genesisHash:e.genesisHash},t,n,{runtimeVersion:e.runtimeVersion,signedExtensions:e.registry.signedExtensions,version:e.extrinsicType})}function zw({api:e,apiType:t,blockHash:n,decorateMethod:r}){const a=e.registry.createClass("Extrinsic");return class extends a{__internal__ignoreStatusCb;__internal__transformResult=P.D;constructor(n,r){super(n,r,{version:e.extrinsicType}),this.__internal__ignoreStatusCb="rxjs"===t}get hasDryRun(){return(0,qe.T)(e.rpc.system?.dryRun)}get hasPaymentInfo(){return(0,qe.T)(e.call.transactionPaymentApi?.queryInfo)}dryRun(t,a){if(!this.hasDryRun)throw new Error("The system.dryRun RPC call is not available in your environment");return n||(0,I.K)(a)||(0,ut.b)(a)?r((()=>e.rpc.system.dryRun(this.toHex(),n||a))):r((()=>this.__internal__observeSign(t,a).pipe(Ie((()=>e.rpc.system.dryRun(this.toHex()))))))()}paymentInfo(t,a){if(!this.hasPaymentInfo)throw new Error("The transactionPaymentApi.queryInfo runtime call is not available in your environment");if(n||(0,I.K)(a)||(0,ut.b)(a))return r((()=>e.callAt(n||a).pipe(Ie((e=>{const t=this.toU8a();return e.transactionPaymentApi.queryInfo(t,t.length)})))));const[i]=Bw(a),s=Mw(t)?t.address:t.toString();return r((()=>e.derive.tx.signingInfo(s,i.nonce,i.era).pipe(Pw(),Ie((t=>{const n=Rw(e,this.registry,i,t),r=Lw(e,n,{}),a=e.tx(this.toU8a()).signFake(s,r).toU8a();return e.call.transactionPaymentApi.queryInfo(a,a.length)})))))()}send(t){const n=e.hasSubscriptions&&(this.__internal__ignoreStatusCb||!!t);return r(n?this.__internal__observeSubscribe:this.__internal__observeSend)(t)}signAsync(e,t){return r((()=>this.__internal__observeSign(e,t).pipe(ze((()=>this)))))()}signAndSend(t,n,a){const[i,s]=Bw(n,a),o=e.hasSubscriptions&&(this.__internal__ignoreStatusCb||!!s);return r((()=>this.__internal__observeSign(t,i).pipe(Ie((e=>o?this.__internal__observeSubscribe(e):this.__internal__observeSend(e))))))(s)}withResultTransform(e){return this.__internal__transformResult=e,this}__internal__observeSign=(t,n)=>{const r=Mw(t)?t.address:t.toString(),a=function(e={}){return(0,pn.f)(e)||(0,Lt.E)(e)?{nonce:e}:e}(n);return e.derive.tx.signingInfo(r,a.nonce,a.era).pipe(Pw(),Ab((async n=>{const i=Rw(e,this.registry,a,n);let s=-1,o=null;if(Mw(t))this.sign(t,i);else{const e=await this.__internal__signViaSigner(r,i,n.header);s=e.id,e.signedTransaction&&(o=e.signedTransaction)}return{options:i,signedTransaction:o,updateId:s}})))};__internal__observeStatus=(t,n)=>{if(!n.isFinalized&&!n.isInBlock)return Le(this.__internal__transformResult(new Hw({status:n,txHash:t})));const r=n.isInBlock?n.asInBlock:n.asFinalized;return e.derive.tx.events(r).pipe(ze((({block:e,events:r})=>this.__internal__transformResult(new Hw({...Nw(t,e,r,n),status:n,txHash:t})))),Xh((e=>Le(this.__internal__transformResult(new Hw({internalError:e,status:n,txHash:t}))))))};__internal__observeSend=t=>e.rpc.author.submitExtrinsic(t?.signedTransaction||this).pipe(Lh((e=>{this.__internal__updateSigner(e,t)})));__internal__observeSubscribe=t=>{const n=this.hash;return e.rpc.author.submitAndWatchExtrinsic(t?.signedTransaction||this).pipe(Ie((e=>this.__internal__observeStatus(n,e))),Lh((e=>{this.__internal__updateSigner(e,t)})))};__internal__signViaSigner=async(t,n,r)=>{const a=n.signer||e.signer,i=n.allowCallDataAlteration??!0;if(!a)throw new Error("No signer specified, either via api.setSigner or via sign options. You possibly need to pass through an explicit keypair for the origin so it can be used for signing.");const s=this.registry.createTypeUnsafe("SignerPayload",[(0,M.b)({},n,{address:t,blockNumber:r?r.number:0,method:this.method})]);let o;if((0,qe.T)(a.signPayload)){if(o=await a.signPayload(s.toPayload()),o.signedTransaction&&!n.withSignedTransaction)throw new Error("The `signedTransaction` field may not be submitted when `withSignedTransaction` is disabled");if(o.signedTransaction&&n.withSignedTransaction){const e=this.registry.createTypeUnsafe("Extrinsic",[o.signedTransaction]),n=this.registry.createTypeUnsafe("SignerPayload",[(0,M.b)({},{address:t,assetId:e.assetId&&e.assetId.isSome?e.assetId.toHex():null,blockHash:s.blockHash,blockNumber:r?r.number:0,era:e.era.toHex(),genesisHash:s.genesisHash,metadataHash:e.metadataHash?e.metadataHash.toHex():null,method:e.method.toHex(),mode:e.mode?e.mode.toHex():null,nonce:e.nonce.toHex(),runtimeVersion:s.runtimeVersion,signedExtensions:s.signedExtensions,tip:e.tip?e.tip.toHex():null,version:s.version})]);if(!e.isSigned)throw new Error(`When using the signedTransaction field, the transaction must be signed. Recieved isSigned: ${e.isSigned}`);return i||this.__internal__validateSignedTransaction(s,e),super.addSignature(t,o.signature,n.toPayload()),{id:o.id,signedTransaction:o.signedTransaction}}}else{if(!(0,qe.T)(a.signRaw))throw new Error("Invalid signer interface, it should implement either signPayload or signRaw (or both)");o=await a.signRaw(s.toRaw())}return super.addSignature(t,o.signature,s.toPayload()),{id:o.id}};__internal__updateSigner=(t,n)=>{if(n&&-1!==n.updateId){const{options:r,updateId:a}=n,i=r.signer||e.signer;i&&(0,qe.T)(i.update)&&i.update(a,t)}};__internal__validateSignedTransaction=(e,t)=>{if(e.toPayload().method!==t.method.toHex())throw new Error(`signAndSend: ${"call data"} does not match the original payload`)}}}function Uw(e,t,n,r,a){const i=zw({api:t,apiType:e,blockHash:a,decorateMethod:n});return e=>new i(r||t.registry,e)}const Dw=(0,it.v)("api/augment");function qw(e,t,n=[]){return t.length?` ${t.length} ${e}${n.length?" and":""}`:""}function jw(e,t){return t.length?`\n\t${e.padStart(7)}: ${t.sort().join(", ")}`:""}function Fw(e,t,[n,r]){(n.length||r.length)&&Dw.warn(`api.${e}: Found${qw("added",n,r)}${qw("removed",r)} ${t}:${jw("added",n)}${jw("removed",r)}`)}function Xw(e,t){return e.filter((e=>!t.includes(e)))}function Ww(e,t){const n=Object.keys(e),r=(a=Object.keys(t),i=n,a.filter((e=>i.includes(e))));var a,i;const s=[];for(let o=0,c=r.length;or[e]))}return n}function Gw(e,t){const n=e=>Object.keys(t[e]),r=(n,r)=>e(t[n][r]),a={},i=Object.keys(t);for(let s=0,o=i.length;se.getTypeDef(t).type)).join(", ")})`}function Jw(e,t,n){const r=n.filter((e=>!(0,Fe.b)(e)));if(t.meta.type.isPlain){if(0!==r.length)throw new Error(`${Kw(e,t,[])} does not take any arguments, ${r.length} found`)}else{const{hashers:n,key:a}=t.meta.type.asMap,i=1===n.length?[a]:e.lookup.getSiType(a).def.asTuple.map((e=>e));if(r.length!==i.length)throw new Error(`${Kw(e,t,i)} is a map, requiring ${i.length} arguments, ${r.length} found`)}return[t,r]}var Yw=n(74486);class Qw{__internal__eventemitter=new Yw.b;emit(e,...t){return this.__internal__eventemitter.emit(e,...t)}on(e,t){return this.__internal__eventemitter.on(e,t),this}off(e,t){return this.__internal__eventemitter.removeListener(e,t),this}once(e,t){return this.__internal__eventemitter.once(e,t),this}}const $w=1e3,eV=(0,it.v)("api/init");let tV=0;function nV(e,{method:t,section:n}){return ea(e.rx.query[n]&&e.rx.query[n][t],(()=>`query.${n}.${t} is not available in this version of the metadata`))}class rV extends Qw{__internal__instanceId;__internal__runtimeLog={};__internal__registry;__internal__storageGetQ=[];__internal__storageSubQ=[];__phantom=new st(0);_type;_call={};_consts={};_derive;_errors={};_events={};_extrinsics;_extrinsicType=Qi.LATEST_EXTRINSIC_VERSION;_genesisHash;_isConnected;_isReady=!1;_query={};_queryMulti;_rpc;_rpcCore;_runtimeMap={};_runtimeChain;_runtimeMetadata;_runtimeVersion;_rx={call:{},consts:{},query:{},tx:{}};_options;_decorateMethod;constructor(e,t,n){super(),this.__internal__instanceId=""+ ++tV,this.__internal__registry=e.source?.registry||e.registry||new th,this._rx.callAt=(e,t)=>Be(this.at(e,t)).pipe(ze((e=>e.rx.call))),this._rx.queryAt=(e,t)=>Be(this.at(e,t)).pipe(ze((e=>e.rx.query))),this._rx.registry=this.__internal__registry,this._decorateMethod=n,this._options=e,this._type=t;const r=e.source?e.source._rpcCore.provider.isClonable?e.source._rpcCore.provider.clone():e.source._rpcCore.provider:e.provider||new Av.E;this._rpcCore=new Ov(this.__internal__instanceId,this.__internal__registry,{isPedantic:this._options.isPedantic,provider:r,rpcCacheCapacity:this._options.rpcCacheCapacity,userRpc:this._options.rpc}),this._isConnected=new Mh(this._rpcCore.provider.isConnected),this._rx.hasSubscriptions=this._rpcCore.provider.hasSubscriptions}get registry(){return this.__internal__registry}createType(e,...t){return this.__internal__registry.createType(e,...t)}registerTypes(e){e&&this.__internal__registry.register(e)}get hasSubscriptions(){return this._rpcCore.provider.hasSubscriptions}get supportMulti(){return this._rpcCore.provider.hasSubscriptions||!!this._rpcCore.state.queryStorageAt}_emptyDecorated(e,t){return{call:{},consts:{},errors:{},events:{},query:{},registry:e,rx:{call:{},query:{}},tx:Uw(this._type,this._rx,this._decorateMethod,e,t)}}_createDecorated(e,t,n,r){n||(n=this._emptyDecorated(e.registry,r)),!t&&e.decoratedMeta||(e.decoratedMeta=function(e,t){if(!(t instanceof wp))throw new Error("You need to pass a valid Metadata instance to Decorated");const n=t.asLatest,r=t.version;return{consts:Hf(e,n),errors:Of(e,n,r),events:Cf(e,n,r),query:Tw(e,n),registry:e,tx:Nf(e,n,r)}}(e.registry,e.metadata));const a=this._decorateCalls(e,this._decorateMethod,r),i=this._decorateCalls(e,this._rxDecorateMethod,r),s=this._decorateStorage(e.decoratedMeta,this._decorateMethod,r),o=this._decorateStorage(e.decoratedMeta,this._rxDecorateMethod,r);return Zw("consts",e.decoratedMeta.consts,n.consts,t),Zw("errors",e.decoratedMeta.errors,n.errors,t),Zw("events",e.decoratedMeta.events,n.events,t),Zw("query",s,n.query,t),Zw("query",o,n.rx.query,t),Zw("call",a,n.call,t),Zw("call",i,n.rx.call,t),n.findCall=t=>C(e.registry,t),n.findError=t=>H(e.registry,t),n.queryMulti=r?this._decorateMultiAt(n,this._decorateMethod,r):this._decorateMulti(this._decorateMethod),n.runtimeVersion=e.runtimeVersion,{createdAt:r,decoratedApi:n,decoratedMeta:e.decoratedMeta}}_injectMetadata(e,t=!1){!t&&e.decoratedApi||(e.decoratedApi=this._emptyDecorated(e.registry));const{decoratedApi:n,decoratedMeta:r}=this._createDecorated(e,t,e.decoratedApi);this._call=n.call,this._consts=n.consts,this._errors=n.errors,this._events=n.events,this._query=n.query,this._rx.call=n.rx.call,this._rx.query=n.rx.query;const a=this._decorateExtrinsics(r,this._decorateMethod),i=this._decorateExtrinsics(r,this._rxDecorateMethod);t||!this._extrinsics?(this._extrinsics=a,this._rx.tx=i):(Zw("tx",a,this._extrinsics,!1),Zw(null,i,this._rx.tx,!1)),Zw(null,r.consts,this._rx.consts,t),this.emit("decorated")}injectMetadata(e,t,n){this._injectMetadata({counter:0,metadata:e,registry:n||this.__internal__registry,runtimeVersion:this.__internal__registry.createType("RuntimeVersionPartial")},t)}_decorateFunctionMeta(e,t){return t.meta=e.meta,t.method=e.method,t.section=e.section,t.toJSON=e.toJSON,e.callIndex&&(t.callIndex=e.callIndex),t}_filterRpc(e,t){0!==Object.keys(t).length&&(this._rpcCore.addUserInterfaces(t),this._decorateRpc(this._rpcCore,this._decorateMethod,this._rpc),this._decorateRpc(this._rpcCore,this._rxDecorateMethod,this._rx.rpc));const n={};for(let a=0,i=e.length;a!r.includes(e)&&!e.includes("_unstable_")));i.length&&!this._options.noInitWarn&&eV.warn(`RPC methods not decorated: ${i.join(", ")}`);for(let s=0;sBe(this._rpcCore.provider.send(e,t))))}_decorateRpc(e,t,n=this._rpcSubmitter(t)){const r=n,a=(n,r)=>{const a=e[n][r],i=t(a,{methodName:r});return i.meta=a.meta,i.raw=t(a.raw,{methodName:r}),i};for(let i=0,s=e.sections.length;ia(t,e);for(let e=0,a=n.length;er.version===e));i?(0,M.b)(i.methods,r.methods):e[t].push(r)}else e[t]=a}}_getRuntimeDefs(e,t,n=""){const r={},a=Object.values(i);for(let i=0,s=a.length;i({...e.typesBundle?.spec?.[n]?.runtime??{},...e.typesBundle?.chain?.[t]?.runtime??{}})))}(e,n,t)),this._addRuntimeDef(r,this._options.runtime),Object.entries(r)}_getMethods(e,t){const n={};return t.forEach((t=>{const{docs:r,inputs:a,name:i,output:s}=t;n[i.toString()]={description:r.map((e=>e.toString())).join(),params:a.map((({name:t,type:n})=>({name:t.toString(),type:e.lookup.getName(n)||e.lookup.getTypeDef(n).type}))),type:e.lookup.getName(s)||e.lookup.getTypeDef(s).type}})),n}_getRuntimeDefsViaMetadata(e){const t={},{apis:n}=e.metadata;for(let r=0,a=n.length;r0,u=d?this._getRuntimeDefsViaMetadata(e):this._getRuntimeDefs(e,n,this._runtimeChain),l=[],f=`${n.toString()}/${r.toString()}`,p=this.__internal__runtimeLog[f]||!1;if(this.__internal__runtimeLog[f]=!0,d)for(let y=0,x=u.length;ye.eq(a)));if(c[a]=!0,i){const t=r.map((({version:e})=>e)).sort(),n=r.find((({version:e})=>i[1].eq(e)));if(n){const t=jt(e),r=Object.entries(n.methods);if(r.length){o[t]||(o[t]={});for(let n=0,i=r.length;n[e.toHex(),t.toString()])).filter((([e])=>!c[e])).map((([e,t])=>`${this._runtimeMap[e]||e}/${t}`));this._options.noInitWarn||p||(l.length&&eV.warn(`${f}: Not decorating runtime apis without matching versions: ${l.join(", ")}`),e.length&&eV.warn(`${f}: Not decorating unknown runtime apis: ${e.join(", ")}`))}const h=i?(e,t)=>this._rpcCore.state.call(e,t,i):(e,t)=>this._rpcCore.state.call(e,t),b=t=>$r({},Object.keys(o[t]),(n=>this._decorateCall(e,o[t][n],h,a))),m=Object.keys(o);for(let y=0,x=m.length;y{if(r.length!==t.params.length)throw new Error(`${t.name}:: Expected ${t.params.length} arguments, found ${r.length}`);const a=e.createType("Raw",It(r.map(((n,r)=>e.createTypeUnsafe(t.params[r].type,[n]).toU8a()))));return n(t.name,a).pipe(ze((n=>e.createTypeUnsafe(t.type,[n]))))}));return a.meta=t,a}_decorateMulti(e){return e((e=>e.length?(this.hasSubscriptions?this._rpcCore.state.subscribeStorage:this._rpcCore.state.queryStorageAt)(e.map((e=>Array.isArray(e)?e[0].creator.meta.type.isPlain?[e[0].creator]:1===e[0].creator.meta.type.asMap.hashers.length?[e[0].creator,e.slice(1)]:[e[0].creator,...e.slice(1)]:[e.creator]))):Le([])))}_decorateMultiAt(e,t,n){return t((t=>t.length?this._rpcCore.state.queryStorageAt(t.map((t=>{if(Array.isArray(t)){const{creator:n}=nV(e,t[0].creator);return n.meta.type.isPlain?[n]:1===n.meta.type.asMap.hashers.length?[n,t.slice(1)]:[n,...t.slice(1)]}return[nV(e,t.creator).creator]})),n):Le([])))}_decorateExtrinsics({tx:e},t){const n=Uw(this._type,this._rx,t),r=t=>$r({},Object.keys(e[t]),(r=>r.startsWith("$")?e[t][r]:this._decorateExtrinsicEntry(e[t][r],n))),a=Object.keys(e);for(let i=0,s=a.length;it(e(...n));return n.is=t=>e.is(t),this._decorateFunctionMeta(e,n)}_decorateStorage({query:e,registry:t},n,r){const a={},i=a=>$r({},Object.keys(e[a]),(i=>r?this._decorateStorageEntryAt(t,e[a][i],n,r):this._decorateStorageEntry(e[a][i],n))),s=Object.keys(e);for(let o=0,c=s.length;oJw(n||this.__internal__registry,e,t),r=t=>Be(this.at(t)).pipe(ze((t=>nV(t,e)))),a=this._decorateStorageCall(e,t);return a.creator=e,a.at=t(((e,...t)=>r(e).pipe(Ie((e=>e(...t)))))),a.hash=t(((...e)=>this._rpcCore.state.getStorageHash(n(e)))),a.is=t=>t.section===e.section&&t.method===e.method,a.key=(...t)=>(0,N.X)(pr(e(...t))[1]),a.keyPrefix=(...t)=>(0,N.X)(e.keyPrefix(...t)),a.size=t(((...e)=>this._rpcCore.state.getStorageSize(n(e)))),a.sizeAt=t(((e,...t)=>r(e).pipe(Ie((r=>this._rpcCore.state.getStorageSize(n(t,r.creator.meta.registry),e)))))),e.iterKey&&e.meta.type.isMap&&(a.entries=t(xb(this.__internal__instanceId,((...t)=>this._retrieveMapEntries(e,null,t)))),a.entriesAt=t(xb(this.__internal__instanceId,((e,...t)=>r(e).pipe(Ie((n=>this._retrieveMapEntries(n.creator,e,t))))))),a.entriesPaged=t(xb(this.__internal__instanceId,(t=>this._retrieveMapEntriesPaged(e,void 0,t)))),a.keys=t(xb(this.__internal__instanceId,((...t)=>this._retrieveMapKeys(e,null,t)))),a.keysAt=t(xb(this.__internal__instanceId,((e,...t)=>r(e).pipe(Ie((n=>this._retrieveMapKeys(n.creator,e,t))))))),a.keysPaged=t(xb(this.__internal__instanceId,(t=>this._retrieveMapKeysPaged(e,void 0,t))))),this.supportMulti&&e.meta.type.isMap&&(a.multi=t((t=>1===e.meta.type.asMap.hashers.length?this._retrieveMulti(t.map((t=>[e,[t]]))):this._retrieveMulti(t.map((t=>[e,t])))))),this._decorateFunctionMeta(e,a)}_decorateStorageEntryAt(e,t,n,r){const a=n=>Jw(e,t,n),i=n(((...e)=>this._rpcCore.state.getStorage(a(e),r)));return i.creator=t,i.hash=n(((...e)=>this._rpcCore.state.getStorageHash(a(e),r))),i.is=e=>e.section===t.section&&e.method===t.method,i.key=(...e)=>(0,N.X)(pr(t(...e))[1]),i.keyPrefix=(...e)=>(0,N.X)(t.keyPrefix(...e)),i.size=n(((...e)=>this._rpcCore.state.getStorageSize(a(e),r))),t.iterKey&&t.meta.type.isMap&&(i.entries=n(xb(this.__internal__instanceId,((...e)=>this._retrieveMapEntries(t,r,e)))),i.entriesPaged=n(xb(this.__internal__instanceId,(e=>this._retrieveMapEntriesPaged(t,r,e)))),i.keys=n(xb(this.__internal__instanceId,((...e)=>this._retrieveMapKeys(t,r,e)))),i.keysPaged=n(xb(this.__internal__instanceId,(e=>this._retrieveMapKeysPaged(t,r,e))))),this.supportMulti&&t.meta.type.isMap&&(i.multi=n((e=>1===t.meta.type.asMap.hashers.length?this._retrieveMulti(e.map((e=>[t,[e]])),r):this._retrieveMulti(e.map((e=>[t,e])),r)))),this._decorateFunctionMeta(t,i)}_queueStorage(e,t){const n=t===this.__internal__storageSubQ?this._rpcCore.state.subscribeStorage:this._rpcCore.state.queryStorageAt;let r,a=t.length-1,i=0;return-1!==a&&t[a]&&50!==t[a][1].length?(r=t[a][0],i=t[a][1].length,t[a][1].push(e)):(a++,r=Be(new Promise((e=>{lm((()=>{const n=t[a][1];delete t[a],e(n)}))}))).pipe(Ie((e=>n(e)))),t.push([r,[e]])),r.pipe(ze((e=>e[i])))}_decorateStorageCall(e,t){return t(xb(this.__internal__instanceId,((...t)=>{const n=Jw(this.__internal__registry,e,t);return this.hasSubscriptions?this._queueStorage(n,this.__internal__storageSubQ):this._rpcCore.state.getStorage(n)})),{methodName:e.method,overrideNoSub:(...t)=>this._queueStorage(Jw(this.__internal__registry,e,t),this.__internal__storageGetQ)})}_retrieveMulti(e,t){if(!e.length)return Le([]);const n=this.hasSubscriptions&&!t?this._rpcCore.state.subscribeStorage:this._rpcCore.state.queryStorageAt;return e.length<=250?t?n(e,t):n(e):Rh(Gx(e,250).map((e=>t?n(e,t):n(e)))).pipe(ze(hy))}_retrieveMapKeys({iterKey:e,meta:t,method:n,section:r},a,i){if(!e||!t.type.isMap)throw new Error("keys can only be retrieved on maps");const s=e(...i).toHex(),o=new Mh(s),c=a?e=>this._rpcCore.state.getKeysPaged(s,$w,e,a):e=>this._rpcCore.state.getKeysPaged(s,$w,e),d=e=>e.setMeta(t,r,n);return o.pipe(Ie(c),ze((e=>e.map(d))),Lh((e=>lm((()=>{e.length===$w?o.next(e[999].toHex()):o.complete()})))),Dh(),ze(hy))}_retrieveMapKeysPaged({iterKey:e,meta:t,method:n,section:r},a,i){if(!e||!t.type.isMap)throw new Error("keys can only be retrieved on maps");const s=e=>e.setMeta(t,r,n);return(a?e=>this._rpcCore.state.getKeysPaged(e,i.pageSize,i.startKey||e,a):e=>this._rpcCore.state.getKeysPaged(e,i.pageSize,i.startKey||e))(e(...i.args).toHex()).pipe(ze((e=>e.map(s))))}_retrieveMapEntries(e,t,n){const r=t?e=>this._rpcCore.state.queryStorageAt(e,t):e=>this._rpcCore.state.queryStorageAt(e);return this._retrieveMapKeys(e,t,n).pipe(Ie((e=>e.length?Rh(Gx(e,250).map(r)).pipe(ze((t=>hy(t).map(((t,n)=>[e[n],t]))))):Le([]))))}_retrieveMapEntriesPaged(e,t,n){const r=t?e=>this._rpcCore.state.queryStorageAt(e,t):e=>this._rpcCore.state.queryStorageAt(e);return this._retrieveMapKeysPaged(e,t,n).pipe(Ie((e=>e.length?r(e).pipe(ze((t=>t.map(((t,n)=>[e[n],t]))))):Le([]))))}_decorateDeriveRx(e){const t=this._runtimeVersion?.specName.toString();return Gw(e,function(e,t,n={}){return{...Sv(e,t,Vv),...Sv(e,t,n)}}(this.__internal__instanceId,this._rx,(0,M.b)({},this._options.derives,this._options.typesBundle?.spec?.[t||""]?.derives)))}_decorateDerive(e){return Gw(e,this._rx.derive)}_rxDecorateMethod=e=>e}const aV=[15,14],iV=(0,it.v)("api/init");function sV(e){return e.toString()}class oV extends rV{__internal__atLast=null;__internal__healthTimer=null;__internal__registries=[];__internal__updateSub=null;__internal__waitingRegistries={};constructor(e,t,n){super(e,t,n),this.registry.setKnownTypes(e),e.source?this.__internal__registries=e.source.__internal__registries:this.registerTypes(e.types),this._rpc=this._decorateRpc(this._rpcCore,this._decorateMethod),this._rx.rpc=this._decorateRpc(this._rpcCore,this._rxDecorateMethod),this.supportMulti&&(this._queryMulti=this._decorateMulti(this._decorateMethod),this._rx.queryMulti=this._decorateMulti(this._rxDecorateMethod)),this._rx.signer=e.signer,this._rpcCore.setRegistrySwap((e=>this.getBlockRegistry(e))),this._rpcCore.setResolveBlockHash((e=>ce(this._rpcCore.chain.getBlockHash(e)))),this.hasSubscriptions?(this._rpcCore.provider.on("disconnected",(()=>this.__internal__onProviderDisconnect())),this._rpcCore.provider.on("error",(e=>this.__internal__onProviderError(e))),this._rpcCore.provider.on("connected",(()=>this.__internal__onProviderConnect()))):this._options.noInitWarn||iV.warn("Api will be available in a limited mode since the provider does not support subscriptions"),this._rpcCore.provider.isConnected&&this.__internal__onProviderConnect().catch(P.l)}_initRegistry(e,t,n,r,a){e.clearCache(),e.setChainProperties(a||this.registry.getChainProperties()),e.setKnownTypes(this._options),e.register(function({knownTypes:e},t,n,r){const a=kt(r).toNumber();return Vh(t,n,((t,n)=>({...Th(mh[n],a),...Th(nh[t],a),...Th(e.typesBundle?.spec?.[n]?.types,a),...Th(e.typesBundle?.chain?.[t]?.types,a),...e.typesSpec?.[n]??{},...e.typesChain?.[t]??{},...e.types??{}})))}(e,t,n.specName,n.specVersion)),e.setHasher(function({knownTypes:e},t,n){return Vh(t,n,((t,n)=>e.hasher||e.typesBundle?.chain?.[t]?.hasher||e.typesBundle?.spec?.[n]?.hasher||null))}(e,t,n.specName)),e.knownTypes.typesBundle&&(e.knownTypes.typesAlias=function({knownTypes:e},t,n){return Vh(t,n,((t,n)=>({...e.typesBundle?.spec?.[n]?.alias??{},...e.typesBundle?.chain?.[t]?.alias??{},...e.typesAlias??{}})))}(e,t,n.specName)),e.setMetadata(r,void 0,(0,M.b)({},function({knownTypes:e},t,n){return Vh(t,n,((t,n)=>({...e.typesBundle?.spec?.[n]?.signedExtensions??{},...e.typesBundle?.chain?.[t]?.signedExtensions??{}})))}(e,t,n.specName),this._options.signedExtensions),this._options.noInitWarn)}_getDefaultRegistry(){return ea(this.__internal__registries.find((({isDefault:e})=>e)),"Initialization error, cannot find the default registry")}async at(e,t){const n=(0,E.e)(e),r=(0,N.X)(n),a=await this.getBlockRegistry(n,t);return this.__internal__atLast&&this.__internal__atLast[0]===r||(this.__internal__atLast=[r,this._createDecorated(a,!0,null,n).decoratedApi]),this.__internal__atLast[1]}async _createBlockRegistry(e,t,n){const r=new th(e),a=await this._retrieveMetadata(n.apis,t.parentHash,r),i=this._runtimeChain;if(!i)throw new Error("Invalid initializion order, runtimeChain is not available");this._initRegistry(r,i,n,a);const s={counter:0,lastBlockHash:e,metadata:a,registry:r,runtimeVersion:n};return this.__internal__registries.push(s),s}_cacheBlockRegistryProgress(e,t){let n=this.__internal__waitingRegistries[e];return(0,Fe.b)(n)&&(n=this.__internal__waitingRegistries[e]=new Promise(((n,r)=>{t().then((t=>{delete this.__internal__waitingRegistries[e],n(t)})).catch((t=>{delete this.__internal__waitingRegistries[e],r(t)}))}))),n}_getBlockRegistryViaVersion(e,t){if(t){const n=this.__internal__registries.find((({runtimeVersion:{specName:e,specVersion:n}})=>e.eq(t.specName)&&n.eq(t.specVersion)));if(n)return n.counter++,n.lastBlockHash=e,n}return null}async _getBlockRegistryViaHash(e){if(!this._genesisHash||!this._runtimeVersion)throw new Error("Cannot retrieve data on an uninitialized chain");const t=this.registry.createType("HeaderPartial",this._genesisHash.eq(e)?{number:lt,parentHash:this._genesisHash}:await ce(this._rpcCore.chain.getHeader.raw(e)));if(t.parentHash.isEmpty)throw new Error("Unable to retrieve header and parent from supplied hash");const[n,r]=function(e,t){const n=wh.find((t=>e.eq(t.genesisHash)));return n?[n.versions.reduce(((e,n)=>t.gt(n.blockNumber)?n:e),void 0),n.versions.find((e=>t.lte(e.blockNumber)))]:[void 0,void 0]}(this._genesisHash,t.number),a=this.registry.createType("RuntimeVersionPartial",await ce(this._rpcCore.state.getRuntimeVersion.raw(t.parentHash)));return this._getBlockRegistryViaVersion(e,a)||await this._cacheBlockRegistryProgress(a.toHex(),(()=>this._createBlockRegistry(e,t,a)))}async getBlockRegistry(e,t){return this.__internal__registries.find((({lastBlockHash:t})=>t&&Gr(t,e)))||this._getBlockRegistryViaVersion(e,t)||await this._cacheBlockRegistryProgress((0,N.X)(e),(()=>this._getBlockRegistryViaHash(e)))}async _loadMeta(){return this._isReady?(this._options.source||this._subscribeUpdates(),!0):(this._unsubscribeUpdates(),[this._genesisHash,this._runtimeMetadata]=this._options.source?._isReady?await this._metaFromSource(this._options.source):await this._metaFromChain(this._options.metadata),this._initFromMeta(this._runtimeMetadata))}async _metaFromSource(e){this._extrinsicType=e.extrinsicVersion,this._runtimeChain=e.runtimeChain,this._runtimeVersion=e.runtimeVersion;const t=Object.keys(e.rpc),n=[];for(let r=0,a=t.length;rthis._runtimeVersion?.specVersion.eq(e.specVersion)?Le(!1):this._rpcCore.state.getMetadata().pipe(ze((t=>{iV.log(`Runtime version updated to spec=${e.specVersion.toString()}, tx=${e.transactionVersion.toString()}`),this._runtimeMetadata=t,this._runtimeVersion=e,this._rx.runtimeVersion=e;const n=this._getDefaultRegistry(),r=this._runtimeChain;if(!r)throw new Error("Invalid initializion order, runtimeChain is not available");return n.metadata=t,n.runtimeVersion=e,this._initRegistry(this.registry,r,e,t),this._injectMetadata(n,!0),!0})))))).subscribe())}async _metaFromChain(e){const[t,n,r,a,i]=await Promise.all([ce(this._rpcCore.chain.getBlockHash(0)),ce(this._rpcCore.state.getRuntimeVersion()),ce(this._rpcCore.system.chain()),ce(this._rpcCore.system.properties()),ce(this._rpcCore.rpc.methods())]);this._runtimeChain=r,this._runtimeVersion=n,this._rx.runtimeVersion=n;const s=`${t.toHex()||"0x"}-${n.specVersion.toString()}`,o=e?.[s]?new wp(this.registry,e[s]):await this._retrieveMetadata(n.apis);return this._initRegistry(this.registry,r,n,o,a),this._filterRpc(i.methods.map(sV),Sh(this.registry,r,n.specName)),this._subscribeUpdates(),this.__internal__registries.length||this.__internal__registries.push({counter:0,isDefault:!0,metadata:o,registry:this.registry,runtimeVersion:n}),o.getUniqTypes(this._options.throwOnUnknown||!1),[t,o]}_initFromMeta(e){const t=this._runtimeVersion;if(!t)throw new Error("Invalid initializion order, runtimeVersion is not available");return this._extrinsicType=e.asLatest.extrinsic.version.toNumber(),this._rx.extrinsicType=this._extrinsicType,this._rx.genesisHash=this._genesisHash,this._rx.runtimeVersion=t,this._injectMetadata(this._getDefaultRegistry(),!0),this._rx.derive=this._decorateDeriveRx(this._rxDecorateMethod),this._derive=this._decorateDerive(this._decorateMethod),!0}async _retrieveMetadata(e,t,n){let r=null;const a=e.find((([e])=>e.eq(Mi("Metadata",64)))),i=n||this.registry;if(!a||a[1].toNumber()<2)return iV.warn("MetadataApi not available, rpc::state::get_metadata will be used."),t?new wp(i,await ce(this._rpcCore.state.getMetadata.raw(t))):await ce(this._rpcCore.state.getMetadata());try{const e=t?await ce(this._rpcCore.state.call.raw("Metadata_metadata_versions","0x",t)):await ce(this._rpcCore.state.call("Metadata_metadata_versions","0x"));r=i.createType("Vec",e).filter((e=>aV.includes(e.toNumber()))).reduce(((e,t)=>t.gt(e)?t:e))}catch(s){iV.debug(s.message),iV.warn("error with state_call::Metadata_metadata_versions, rpc::state::get_metadata will be used")}if(r&&!aV.includes(r.toNumber())&&(r=null),r)try{const e=t?await ce(this._rpcCore.state.call.raw("Metadata_metadata_at_version",(0,N.X)(r.toU8a()),t)):await ce(this._rpcCore.state.call("Metadata_metadata_at_version",(0,N.X)(r.toU8a()))),n=t?i.createType("Raw",e).toU8a():e,a=i.createType("Option",n).unwrapOr(null);if(a)return new wp(i,a.toHex())}catch(s){iV.debug(s.message),iV.warn("error with state_call::Metadata_metadata_at_version, rpc::state::get_metadata will be used")}return t?new wp(i,await ce(this._rpcCore.state.getMetadata.raw(t))):await ce(this._rpcCore.state.getMetadata())}_subscribeHealth(){this._unsubscribeHealth(),this.__internal__healthTimer=this.hasSubscriptions?setInterval((()=>{ce(this._rpcCore.system.health.raw()).catch(P.l)}),1e4):null}_unsubscribeHealth(){this.__internal__healthTimer&&(clearInterval(this.__internal__healthTimer),this.__internal__healthTimer=null)}_unsubscribeUpdates(){this.__internal__updateSub&&(this.__internal__updateSub.unsubscribe(),this.__internal__updateSub=null)}_unsubscribe(){this._unsubscribeHealth(),this._unsubscribeUpdates()}async __internal__onProviderConnect(){this._isConnected.next(!0),this.emit("connected");try{const e=!1===this._options.initWasm||await Si().then((()=>{if(!Ti())throw new Error("Unable to initialize @polkadot/util-crypto");return!0})).catch((()=>!1)),t=await this._loadMeta();this._subscribeHealth(),t&&!this._isReady&&e&&(this._isReady=!0,this.emit("ready",this))}catch(e){const t=new Error(`FATAL: Unable to initialize the API: ${e.message}`);iV.error(t),this.emit("error",t)}}__internal__onProviderDisconnect(){this._isConnected.next(!1),this._unsubscribe(),this.emit("disconnected")}__internal__onProviderError(e){this.emit("error",e)}}function cV(e){if(void 0===e)throw new Error("Api interfaces needs to be initialized before using, wait for 'isReady'");return e}class dV extends oV{get call(){return cV(this._call)}get consts(){return cV(this._consts)}get derive(){return cV(this._derive)}get errors(){return cV(this._errors)}get events(){return cV(this._events)}get extrinsicVersion(){return this._extrinsicType}get genesisHash(){return cV(this._genesisHash)}get isConnected(){return this._isConnected.getValue()}get libraryInfo(){return`${O} v${A}`}get query(){return cV(this._query)}get queryMulti(){return cV(this._queryMulti)}get rpc(){return cV(this._rpc)}get runtimeChain(){return cV(this._runtimeChain)}get runtimeMetadata(){return cV(this._runtimeMetadata)}get runtimeVersion(){return cV(this._runtimeVersion)}get rx(){return cV(this._rx)}get stats(){return this._rpcCore.stats}get type(){return this._type}get tx(){return cV(this._extrinsics)}findCall(e){return C(this.registry,e)}findError(e){return H(this.registry,e)}}class uV extends dV{constructor(e={},t,n){super(e,t,n)}connect(){return this._rpcCore.connect()}disconnect(){return this._unsubscribe(),this._rpcCore.disconnect()}setSigner(e){this._rx.signer=e}async sign(e,t,{signer:n}={}){if((0,I.K)(e)){const r=n||this._rx.signer;if(!r?.signRaw)throw new Error("No signer exists with a signRaw interface. You possibly need to pass through an explicit keypair for the origin so it can be used for signing.");return(await r.signRaw((0,M.b)({type:"bytes"},t,{address:e}))).signature}return(0,N.X)(e.sign((0,E.e)(t.data)))}}class lV{__internal__allHasFired=!1;__internal__callback;__internal__fired=[];__internal__fns=[];__internal__isActive=!0;__internal__results=[];__internal__subscriptions=[];constructor(e,t){this.__internal__callback=t,this.__internal__subscriptions=e.map((async(e,t)=>{const[n,...r]=Array.isArray(e)?e:[e];return this.__internal__fired.push(!1),this.__internal__fns.push(n),n(...r,this._createCallback(t))}))}_allHasFired(){return this.__internal__allHasFired||=0===this.__internal__fired.filter((e=>!e)).length,this.__internal__allHasFired}_createCallback(e){return t=>{this.__internal__fired[e]=!0,this.__internal__results[e]=t,this._triggerUpdate()}}_triggerUpdate(){if(this.__internal__isActive&&(0,qe.T)(this.__internal__callback)&&this._allHasFired())try{Promise.resolve(this.__internal__callback(this.__internal__results)).catch(P.l)}catch{}}unsubscribe(){this.__internal__isActive&&(this.__internal__isActive=!1,Promise.all(this.__internal__subscriptions.map((async e=>{try{const t=await e;(0,qe.T)(t)&&t()}catch{}}))).catch((()=>{})))}}function fV(e,t){let n=!1;return{reject:e=>(n||(n=!0,t(e)),py),resolve:t=>{n||(n=!0,e(t))}}}function pV(e,t){const n=!(!t?.methodName||!t.methodName.includes("subscribe"));return function(...r){const[a,i]=function(e,t){const n=e.slice(),r=e.length&&(0,qe.T)(e[e.length-1])?n.pop():void 0;if(t&&!(0,qe.T)(r))throw new Error("Expected a callback to be passed with subscriptions");return[n,r]}(r,n);return i?function(e,t,n){return new Promise(((r,a)=>{const i=fV(r,a),s=e(...t).pipe(Xh((e=>i.reject(e))),Lh((()=>i.resolve((()=>s.unsubscribe()))))).subscribe((e=>{lm((()=>n(e)))}))}))}(e,a,i):function(e,t){return new Promise(((n,r)=>{const a=fV(n,r),i=e(...t).pipe(Xh((e=>a.reject(e)))).subscribe((e=>{a.resolve(e),lm((()=>i.unsubscribe()))}))}))}(t?.overrideNoSub||e,a)}}class hV extends uV{__internal__isReadyPromise;__internal__isReadyOrErrorPromise;constructor(e){super(e,"promise",pV),this.__internal__isReadyPromise=new Promise((e=>{super.once("ready",(()=>e(this)))})),this.__internal__isReadyOrErrorPromise=new Promise(((e,t)=>{const n=fV(e,t);super.once("ready",(()=>n.resolve(this))),super.once("error",(e=>n.reject(e)))}))}static create(e){const t=new hV(e);return e&&e.throwOnConnect?t.isReadyOrError:(t.isReadyOrError.catch(P.l),t.isReady)}get isReady(){return this.__internal__isReadyPromise}get isReadyOrError(){return this.__internal__isReadyOrErrorPromise}clone(){return new hV((0,M.b)({},this._options,{source:this}))}async combineLatest(e,t){const n=new lV(e,t);return()=>{n.unsubscribe()}}}},94645:(e,t,n)=>{"use strict";n.d(t,{b:()=>r,q:()=>i});const r=1024;class a{key;__internal__expires;__internal__ttl;createdAt;next;prev;constructor(e,t){this.key=e,this.__internal__ttl=t,this.__internal__expires=Date.now()+t,this.createdAt=Date.now(),this.next=this.prev=this}refresh(){this.__internal__expires=Date.now()+this.__internal__ttl}get expiry(){return this.__internal__expires}}class i{capacity;__internal__data=new Map;__internal__refs=new Map;__internal__length=0;__internal__head;__internal__tail;__internal__ttl;constructor(e=r,t=3e4){this.capacity=e,this.__internal__ttl=t,this.__internal__head=this.__internal__tail=new a("",t)}get ttl(){return this.__internal__ttl}get length(){return this.__internal__length}get lengthData(){return this.__internal__data.size}get lengthRefs(){return this.__internal__refs.size}entries(){const e=this.keys(),t=e.length,n=new Array(t);for(let r=0;r0;)this.__internal__refs.delete(this.__internal__tail.key),this.__internal__data.delete(this.__internal__tail.key),this.__internal__length-=1,this.__internal__tail=this.__internal__tail.prev,this.__internal__tail.next=this.__internal__head;0===this.__internal__length&&(this.__internal__head=this.__internal__tail=new a("",this.__internal__ttl))}__internal__toHead(e){const t=this.__internal__refs.get(e);t&&t!==this.__internal__head&&(t.refresh(),t.prev.next=t.next,t.next.prev=t.prev,t.next=this.__internal__head,this.__internal__head.prev=t,this.__internal__head=t)}}},19588:(e,t,n)=>{"use strict";n.d(t,{E:()=>P});var r=n(74486),a=n(52502),i=n(56199);const s=(0,n(77389).MJ)("isPrototypeOf","hasOwnProperty");var o=n(81138),c=n(74032),d=n(48827),u=n(76284),l=n(75487);const f=l.Mn.WebSocket;var p=n(25311),h=n(55471),b=n(8514);const m=-99999;function y(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})}class x extends Error{code;data;message;name;stack;constructor(e="",t=-99999,n){if(super(),y(this,"message",String(e)),y(this,"name",this.constructor.name),y(this,"data",n),y(this,"code",t),(0,b.T)(Error.captureStackTrace))Error.captureStackTrace(this,this.constructor);else{const{stack:t}=new Error(e);t&&y(this,"stack",t)}}static CODES={ASSERT:-90009,INVALID_JSONRPC:-99998,METHOD_NOT_FOUND:-32601,UNKNOWN:m}}function g(e){if(e){const{code:t,data:n,message:r}=e;throw new x(`${t}: ${r}${function(e){if((0,c.b)(e))return"";const t=`: ${(0,p.K)(e)?e.replace(/Error\("/g,"").replace(/\("/g,"(").replace(/"\)/g,")").replace(/\(/g,", ").replace(/\)/g,""):(0,o.A)(e)}`;return t.length<=256?t:`${t.substring(0,255)}\u2026`}(n)}`,t,n)}}class v{__internal__id=0;decodeResponse(e){if(!e||"2.0"!==e.jsonrpc)throw new Error("Invalid jsonrpc field in decoded object");const t=!(0,c.b)(e.params)&&!(0,c.b)(e.method);if(!((0,h.E)(e.id)||t&&((0,h.E)(e.params.subscription)||(0,p.K)(e.params.subscription))))throw new Error("Invalid id field in decoded object");if(g(e.error),void 0===e.result&&!t)throw new Error("No result found in jsonrpc response");return t?(g(e.params.error),e.params.result):e.result}encodeJson(e,t){const[n,r]=this.encodeObject(e,t);return[n,(0,o.A)(r)]}encodeObject(e,t){const n=++this.__internal__id;return[n,{id:n,jsonrpc:"2.0",method:e,params:t}]}}const w="ws://127.0.0.1:9944";var V=n(94645);const T={1e3:"Normal Closure",1001:"Going Away",1002:"Protocol Error",1003:"Unsupported Data",1004:"(For future)",1005:"No Status Received",1006:"Abnormal Closure",1007:"Invalid frame payload data",1008:"Policy Violation",1009:"Message too big",1010:"Missing Extension",1011:"Internal Error",1012:"Service Restart",1013:"Try Again Later",1014:"Bad Gateway",1015:"TLS Handshake"};const S={chain_finalisedHead:"chain_finalizedHead",chain_subscribeFinalisedHeads:"chain_subscribeFinalizedHeads",chain_unsubscribeFinalisedHeads:"chain_unsubscribeFinalizedHeads"},k=(0,a.v)("api-ws");function _(e,t){Object.keys(e).forEach((n=>{t&&t(e[n]),delete e[n]}))}class P{__internal__callCache;__internal__coder;__internal__endpoints;__internal__headers;__internal__eventemitter;__internal__handlers={};__internal__isReadyPromise;__internal__stats;__internal__waitingForId={};__internal__cacheCapacity;__internal__autoConnectMs;__internal__endpointIndex;__internal__endpointStats;__internal__isConnected=!1;__internal__subscriptions={};__internal__timeoutId=null;__internal__websocket;__internal__timeout;constructor(e=w,t=2500,n={},a,s){const o=Array.isArray(e)?e:[e];if(0===o.length)throw new Error("WsProvider requires at least one Endpoint");o.forEach((e=>{if(!/^(wss|ws):\/\//.test(e))throw new Error(`Endpoint should start with 'ws://', received '${e}'`)})),this.__internal__callCache=new V.q(s||V.b),this.__internal__cacheCapacity=s||V.b,this.__internal__eventemitter=new r.b,this.__internal__autoConnectMs=t||0,this.__internal__coder=new v,this.__internal__endpointIndex=-1,this.__internal__endpoints=o,this.__internal__headers=n,this.__internal__websocket=null,this.__internal__stats={active:{requests:0,subscriptions:0},total:{bytesRecv:0,bytesSent:0,cached:0,errors:0,requests:0,subscriptions:0,timeout:0}},this.__internal__endpointStats={bytesRecv:0,bytesSent:0,cached:0,errors:0,requests:0,subscriptions:0,timeout:0},this.__internal__timeout=a||6e4,t&&t>0&&this.connectWithRetry().catch(i.l),this.__internal__isReadyPromise=new Promise((e=>{this.__internal__eventemitter.once("connected",(()=>{e(this)}))}))}get hasSubscriptions(){return!0}get isClonable(){return!0}get isConnected(){return this.__internal__isConnected}get isReady(){return this.__internal__isReadyPromise}get endpoint(){return this.__internal__endpoints[this.__internal__endpointIndex]}clone(){return new P(this.__internal__endpoints)}selectEndpointIndex(e){return(this.__internal__endpointIndex+1)%e.length}async connect(){if(this.__internal__websocket)throw new Error("WebSocket is already connected");try{this.__internal__endpointIndex=this.selectEndpointIndex(this.__internal__endpoints),this.__internal__websocket=void 0!==l.Mn.WebSocket&&(e=l.Mn.WebSocket,s(t=f)&&s(e)&&(e===t||e.isPrototypeOf(t)))?new f(this.endpoint):new f(this.endpoint,void 0,{headers:this.__internal__headers}),this.__internal__websocket&&(this.__internal__websocket.onclose=this.__internal__onSocketClose,this.__internal__websocket.onerror=this.__internal__onSocketError,this.__internal__websocket.onmessage=this.__internal__onSocketMessage,this.__internal__websocket.onopen=this.__internal__onSocketOpen),this.__internal__timeoutId=setInterval((()=>this.__internal__timeoutHandlers()),5e3)}catch(n){throw k.error(n),this.__internal__emit("error",n),n}var e,t}async connectWithRetry(){if(this.__internal__autoConnectMs>0)try{await this.connect()}catch{setTimeout((()=>{this.connectWithRetry().catch(i.l)}),this.__internal__autoConnectMs)}}async disconnect(){this.__internal__autoConnectMs=0;try{this.__internal__websocket&&this.__internal__websocket.close(1e3)}catch(e){throw k.error(e),this.__internal__emit("error",e),e}}get stats(){return{active:{requests:Object.keys(this.__internal__handlers).length,subscriptions:Object.keys(this.__internal__subscriptions).length},total:this.__internal__stats.total}}get endpointStats(){return this.__internal__endpointStats}on(e,t){return this.__internal__eventemitter.on(e,t),()=>{this.__internal__eventemitter.removeListener(e,t)}}send(e,t,n,r){this.__internal__endpointStats.requests++,this.__internal__stats.total.requests++;const[a,i]=this.__internal__coder.encodeJson(e,t);if(0===this.__internal__cacheCapacity)return this.__internal__send(a,i,e,t,r);const s=n?`${e}::${(0,o.A)(t)}`:"";let c=n?this.__internal__callCache.get(s):null;return c?(this.__internal__endpointStats.cached++,this.__internal__stats.total.cached++):(c=this.__internal__send(a,i,e,t,r),n&&this.__internal__callCache.set(s,c)),c}async __internal__send(e,t,n,r,a){return new Promise(((i,s)=>{try{if(!this.isConnected||null===this.__internal__websocket)throw new Error("WebSocket is not connected");const o=(e,t)=>{e?s(e):i(t)};k.debug((()=>["calling",n,t])),this.__internal__handlers[e]={callback:o,method:n,params:r,start:Date.now(),subscription:a};const c=t.length;this.__internal__endpointStats.bytesSent+=c,this.__internal__stats.total.bytesSent+=c,this.__internal__websocket.send(t)}catch(o){this.__internal__endpointStats.errors++,this.__internal__stats.total.errors++,s(o)}}))}subscribe(e,t,n,r){return this.__internal__endpointStats.subscriptions++,this.__internal__stats.total.subscriptions++,this.send(t,n,!1,{callback:r,type:e})}async unsubscribe(e,t,n){const r=`${e}::${n}`;if((0,c.b)(this.__internal__subscriptions[r]))return k.debug((()=>`Unable to find active subscription=${r}`)),!1;delete this.__internal__subscriptions[r];try{return!(this.isConnected&&!(0,d.k)(this.__internal__websocket))||this.send(t,[n])}catch{return!1}}__internal__emit=(e,...t)=>{this.__internal__eventemitter.emit(e,...t)};__internal__onSocketClose=e=>{const t=new Error(`disconnected from ${this.endpoint}: ${e.code}:: ${e.reason||function(e){if(e>=0&&e<=999)return"(Unused)";if(e>=1016){if(e<=1999)return"(For WebSocket standard)";if(e<=2999)return"(For WebSocket extensions)";if(e<=3999)return"(For libraries and frameworks)";if(e<=4999)return"(For applications)"}return T[e]||"(Unknown)"}(e.code)}`);this.__internal__autoConnectMs>0&&k.error(t.message),this.__internal__isConnected=!1,this.__internal__websocket&&(this.__internal__websocket.onclose=null,this.__internal__websocket.onerror=null,this.__internal__websocket.onmessage=null,this.__internal__websocket.onopen=null,this.__internal__websocket=null),this.__internal__timeoutId&&(clearInterval(this.__internal__timeoutId),this.__internal__timeoutId=null),_(this.__internal__handlers,(e=>{try{e.callback(t,void 0)}catch(n){k.error(n)}})),_(this.__internal__waitingForId),this.__internal__endpointStats={bytesRecv:0,bytesSent:0,cached:0,errors:0,requests:0,subscriptions:0,timeout:0},this.__internal__emit("disconnected"),this.__internal__autoConnectMs>0&&setTimeout((()=>{this.connectWithRetry().catch(i.l)}),this.__internal__autoConnectMs)};__internal__onSocketError=e=>{k.debug((()=>["socket error",e])),this.__internal__emit("error",e)};__internal__onSocketMessage=e=>{k.debug((()=>["received",e.data]));const t=e.data.length;this.__internal__endpointStats.bytesRecv+=t,this.__internal__stats.total.bytesRecv+=t;const n=JSON.parse(e.data);return(0,c.b)(n.method)?this.__internal__onSocketMessageResult(n):this.__internal__onSocketMessageSubscribe(n)};__internal__onSocketMessageResult=e=>{const t=this.__internal__handlers[e.id];if(t){try{const{method:n,params:r,subscription:a}=t,i=this.__internal__coder.decodeResponse(e);if(t.callback(null,i),a){const e=`${a.type}::${i}`;this.__internal__subscriptions[e]=(0,u.b)({},a,{method:n,params:r}),this.__internal__waitingForId[e]&&this.__internal__onSocketMessageSubscribe(this.__internal__waitingForId[e])}}catch(n){this.__internal__endpointStats.errors++,this.__internal__stats.total.errors++,t.callback(n,void 0)}delete this.__internal__handlers[e.id]}else k.debug((()=>`Unable to find handler for id=${e.id}`))};__internal__onSocketMessageSubscribe=e=>{if(!e.method)throw new Error("No method found in JSONRPC response");const t=`${S[e.method]||e.method}::${e.params.subscription}`,n=this.__internal__subscriptions[t];if(!n)return this.__internal__waitingForId[t]=e,void k.debug((()=>`Unable to find handler for subscription=${t}`));delete this.__internal__waitingForId[t];try{const t=this.__internal__coder.decodeResponse(e);n.callback(null,t)}catch(r){this.__internal__endpointStats.errors++,this.__internal__stats.total.errors++,n.callback(r,void 0)}};__internal__onSocketOpen=()=>{if(null===this.__internal__websocket)throw new Error("WebSocket cannot be null in onOpen");return k.debug((()=>["connected to",this.endpoint])),this.__internal__isConnected=!0,this.__internal__resubscribe(),this.__internal__emit("connected"),!0};__internal__resubscribe=()=>{const e=this.__internal__subscriptions;this.__internal__subscriptions={},Promise.all(Object.keys(e).map((async t=>{const{callback:n,method:r,params:a,type:i}=e[t];if(!i.startsWith("author_"))try{await this.subscribe(i,r,a,n)}catch(s){k.error(s)}}))).catch(k.error)};__internal__timeoutHandlers=()=>{const e=Date.now(),t=Object.keys(this.__internal__handlers);for(let n=0,r=t.length;nthis.__internal__timeout){try{r.callback(new Error(`No response received from RPC endpoint in ${this.__internal__timeout/1e3}s`),void 0)}catch{}this.__internal__endpointStats.timeout++,this.__internal__stats.total.timeout++,delete this.__internal__handlers[t[n]]}}}}},8319:(e,t,n)=>{"use strict";n.d(t,{CW:()=>i,Ze:()=>s});var r=n(98967),a=n(75487);const i="function"==typeof r.Q&&"function"==typeof r.Q.asIntN,s="function"==typeof a.Mn.Buffer&&"function"==typeof a.Mn.Buffer.isBuffer;a.Mn.process},72598:(e,t,n)=>{"use strict";n.d(t,{V:()=>s});const r="0123456789abcdef",a=new Uint8Array(256),i=new Uint8Array(65536);for(let o=0,c=16;o9&&(a[0|r[o].toUpperCase().charCodeAt(0)]=0|o);for(let o=0;o<256;o++){const e=o<<8;for(let t=0;t<256;t++)i[e|t]=a[o]<<4|a[t]}function s(e,t=-1){if(!e)return new Uint8Array;let n=e.startsWith("0x")?2:0;const r=Math.ceil((e.length-n)/2),a=Math.ceil(-1===t?r:t/8),s=new Uint8Array(a);for(let o=a>r?a-r:0;o{"use strict";function r(e){return"bigint"==typeof e}n.d(t,{s:()=>r})},24466:(e,t,n)=>{"use strict";n.d(t,{f:()=>a});var r=n(39404);function a(e){return r.isBN(e)}},67536:(e,t,n)=>{"use strict";n.d(t,{P:()=>s});var r=n(75487),a=n(8319),i=n(8514);function s(e){return a.Ze&&!!e&&(0,i.T)(e.readDoubleLE)&&r.Mn.Buffer.isBuffer(e)}},8514:(e,t,n)=>{"use strict";function r(e){return"function"==typeof e}n.d(t,{T:()=>r})},77389:(e,t,n)=>{"use strict";n.d(t,{D8:()=>o,MJ:()=>s,Mp:()=>i});var r=n(8514),a=n(34501);function i(...e){return t=>((0,a.G)(t)||(0,r.T)(t))&&e.every((e=>(0,r.T)(t[e])))}function s(...e){return t=>(0,r.T)(t)&&e.every((e=>(0,r.T)(t[e])))}function o(...e){return t=>(0,a.G)(t)&&e.every((e=>(0,r.T)(t[e])))}},74749:(e,t,n)=>{"use strict";n.d(t,{Ed:()=>a,eR:()=>r,qv:()=>i});const r=/^0x[\da-fA-F]+$/,a=/^[\da-fA-F]+$/;function i(e,t=-1,n){return"string"==typeof e&&("0x"===e||r.test(e))&&(-1===t?n||e.length%2==0:e.length===2+Math.ceil(t/4))}},48827:(e,t,n)=>{"use strict";function r(e){return null===e}n.d(t,{k:()=>r})},55471:(e,t,n)=>{"use strict";function r(e){return"number"==typeof e}n.d(t,{E:()=>r})},34501:(e,t,n)=>{"use strict";function r(e){return!!e&&"object"==typeof e}n.d(t,{G:()=>r})},25311:(e,t,n)=>{"use strict";function r(e){return"string"==typeof e||e instanceof String}n.d(t,{K:()=>r})},336:(e,t,n)=>{"use strict";function r(e){return(e&&e.constructor)===Uint8Array||e instanceof Uint8Array}n.d(t,{b:()=>r})},74032:(e,t,n)=>{"use strict";function r(e){return void 0===e}n.d(t,{b:()=>r})},52502:(e,t,n)=>{"use strict";n.d(t,{v:()=>g});var r=n(75487);function a(e){return e.toString().padStart(2,"0")}var i=n(24466),s=n(67536),o=n(8514),c=n(34501),d=n(336),u=n(82422),l=n(79931),f=n(56199);const p={debug:"log",error:"error",log:"log",warn:"warn"};function h(e){return Array.isArray(e)?e.map(h):(0,i.f)(e)?e.toString():(0,d.b)(e)||(0,s.P)(e)?(0,u.X)((0,l.e)(e)):function(e){if(e&&(0,c.G)(e)&&e.constructor===Object){const t={};for(const[n,r]of Object.entries(e))t[n]=h(r);return t}return e}(e)}function b(e,t,n,r=-1){if(1===n.length&&(0,o.T)(n[0])){const a=n[0]();return b(e,t,Array.isArray(a)?a:[a],r)}var i,s;console[p[e]](`${(s=new Date).getFullYear().toString()}-${a(s.getMonth()+1)}-${a(s.getDate())} ${a(s.getHours())}:${a(s.getMinutes())}:${a(s.getSeconds())}`,t,...n.map(h).map((i=r,e=>{if(i<=0)return e;const t=`${e}`;return t.lengthb("debug",t,e,a):f.l,error:(...e)=>b("error",t,e),log:(...e)=>b("log",t,e),noop:f.l,warn:(...e)=>b("warn",t,e)}}},56199:(e,t,n)=>{"use strict";function r(e){return e}function a(){}n.d(t,{D:()=>r,l:()=>a})},76284:(e,t,n)=>{"use strict";function r(e,...t){for(let n=0,r=t.length;nr})},58861:(e,t,n)=>{"use strict";n.d(t,{j:()=>s});var r=n(75487);class a{encode(e){const t=e.length,n=new Uint8Array(t);for(let r=0;r{"use strict";n.d(t,{A:()=>i});var r=n(26805);function a(e,t){return(0,r.s)(t)?t.toString():t}function i(e,t){return JSON.stringify(e,a,t)}},82422:(e,t,n)=>{"use strict";n.d(t,{X:()=>s});const r=new Array(256),a=new Array(65536);for(let o=0;o<256;o++)r[o]=o.toString(16).padStart(2,"0");for(let o=0;o<256;o++){const e=o<<8;for(let t=0;t<256;t++)a[e|t]=r[o]+r[t]}function i(e,t){const n=e.length%2|0,i=e.length-n|0;for(let r=0;r0){const n=Math.ceil(t/8);if(e.length>n)return`${i(e.subarray(0,n/2),r)}\u2026${i(e.subarray(e.length-n/2),"")}`}return i(e,r)}},79931:(e,t,n)=>{"use strict";n.d(t,{e:()=>c});var r=n(72598),a=n(67536),i=n(74749),s=n(336),o=n(58861);function c(e){return(0,s.b)(e)?(0,a.P)(e)?new Uint8Array(e):e:(0,i.qv)(e)?(0,r.V)(e):Array.isArray(e)?new Uint8Array(e):(0,o.j)(e)}},98967:(e,t,n)=>{"use strict";function r(){return Number.NaN}n.d(t,{Q:()=>a});const a=(0,n(75487).pc)("BigInt",r)},75487:(e,t,n)=>{"use strict";n.d(t,{Mn:()=>r,pc:()=>a});const r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this");function a(e,t){return void 0===r[e]?t:r[e]}},74486:(e,t,n)=>{"use strict";n.d(t,{b:()=>r});var r=n(30228)}}]); \ No newline at end of file diff --git a/assets/js/3482.dc74d0a4.js.LICENSE.txt b/assets/js/3482.bc9a25f8.js.LICENSE.txt similarity index 100% rename from assets/js/3482.dc74d0a4.js.LICENSE.txt rename to assets/js/3482.bc9a25f8.js.LICENSE.txt diff --git a/assets/js/48d75399.296ea37f.js b/assets/js/48d75399.296ea37f.js new file mode 100644 index 00000000000..77df18f5fe4 --- /dev/null +++ b/assets/js/48d75399.296ea37f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[230],{76984:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"general/faq","title":"Frequently Asked Questions (FAQs)","description":"FAQs to Help you Navigate on Polkadot.","source":"@site/../docs/general/faq.md","sourceDirName":"general","slug":"/faq","permalink":"/docs/faq","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/faq.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1734535671000,"frontMatter":{"id":"faq","title":"Frequently Asked Questions (FAQs)","sidebar_label":"FAQ","description":"FAQs to Help you Navigate on Polkadot.","keywords":["FAQ","questions"],"slug":"../faq"},"sidebar":"docs","previous":{"title":"Build on Polkadot","permalink":"/docs/start-building"},"next":{"title":"Glossary","permalink":"/docs/glossary"}}');var o=a(74848),i=a(28453);const s={id:"faq",title:"Frequently Asked Questions (FAQs)",sidebar_label:"FAQ",description:"FAQs to Help you Navigate on Polkadot.",keywords:["FAQ","questions"],slug:"../faq"},r=void 0,l={},h=[{value:"Polkadot Launch",id:"polkadot-launch",level:2},{value:"Polkadot Roadmap",id:"polkadot-roadmap",level:2},{value:"Consensus",id:"consensus",level:2},{value:"Why do we need Consensus?",id:"why-do-we-need-consensus",level:3},{value:"What are PoW and PoS?",id:"what-are-pow-and-pos",level:3},{value:"Why not Proof of Work?",id:"why-not-proof-of-work",level:3},{value:"Validators",id:"validators",level:2},{value:"How do I apply to be a validator?",id:"how-do-i-apply-to-be-a-validator",level:3},{value:"How are validators rewarded?",id:"how-are-validators-rewarded",level:3},{value:"What is the minimum stake necessary to be elected as an active validator?",id:"what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator",level:3},{value:"Why Polkadot targets 1000 validators while other projects have hundreds of thousands?",id:"why-polkadot-targets-1000-validators-while-other-projects-have-hundreds-of-thousands",level:3},{value:"Relay Chain",id:"relay-chain",level:2},{value:"What is the block time of the relay chain?",id:"what-is-the-block-time-of-the-relay-chain",level:3},{value:"Does Polkadot have smart contracts?",id:"does-polkadot-have-smart-contracts",level:3},{value:"How does the Polkadot relay chain connect to external chains in the ecosystem?",id:"how-does-the-polkadot-relay-chain-connect-to-external-chains-in-the-ecosystem",level:3},{value:"What is Polkadot's Transactions Per Second (TPS)?",id:"what-is-polkadots-transactions-per-second-tps",level:3},{value:"DOT",id:"dot",level:2},{value:"What is the difference between DOT (old) and new DOT?",id:"what-is-the-difference-between-dot-old-and-new-dot",level:3},{value:"What is the inflation rate of the DOT?",id:"what-is-the-inflation-rate-of-the-dot",level:3},{value:"Why can't crowdloaned DOT be staked?",id:"why-cant-crowdloaned-dot-be-staked",level:3},{value:"Governance",id:"governance",level:2},{value:"What prevents Polkadot governance from failing?",id:"what-prevents-polkadot-governance-from-failing",level:3},{value:"What prevents Polkadot governance from becoming plutocratic?",id:"what-prevents-polkadot-governance-from-becoming-plutocratic",level:3},{value:"Parachains",id:"parachains",level:2},{value:"How do parachain economics work?",id:"how-do-parachain-economics-work",level:3},{value:"Are parachains ephemeral? What happens when a parachain fails to renew its coretime?",id:"are-parachains-ephemeral-what-happens-when-a-parachain-fails-to-renew-its-coretime",level:3},{value:"Networking",id:"networking",level:2},{value:"What is libp2p?",id:"what-is-libp2p",level:3},{value:"Does Polkadot use libp2p?",id:"does-polkadot-use-libp2p",level:3},{value:"How does libp2p differ from IPFS?",id:"how-does-libp2p-differ-from-ipfs",level:3},{value:"Kusama",id:"kusama",level:2},{value:"What is the minimum amount of KSM / DOT I can have in my account?",id:"what-is-the-minimum-amount-of-ksm--dot-i-can-have-in-my-account",level:3},{value:"What are the transfer fees for Kusama?",id:"what-are-the-transfer-fees-for-kusama",level:3},{value:"Answered by Gav series",id:"answered-by-gav-series",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.admonition,{type:"info",children:(0,o.jsxs)(t.p,{children:["This FAQ focuses on technical questions for users interested in developing applications for\nPolkadot. If you have a more general question, you may wish to search for the answer on our support\n",(0,o.jsx)(t.a,{href:"https://support.polkadot.network/support/home",children:"Knowledge Base"})," or the main\n",(0,o.jsx)(t.a,{href:"https://polkadot.network/faq",children:"Polkadot network FAQ"}),". If you have a question that is not answered,\nplease feel free to ask on the Polkadot Watercooler\n",(0,o.jsx)(t.a,{href:"https://app.element.io/#/room/#polkadot-watercooler:web3.foundation",children:"Element channel"})," or contact\n",(0,o.jsx)(t.a,{href:"https://support.polkadot.network",children:"Polkadot Support"}),"."]})}),"\n",(0,o.jsx)(t.h2,{id:"polkadot-launch",children:"Polkadot Launch"}),"\n",(0,o.jsx)(t.p,{children:"The Genesis block of the Polkadot network was launched on May 26, 2020 at 15:36:21 UTC, as a Proof\nof Authority (PoA) network, with governance controlled by the single Sudo (super-user) account.\nDuring this time, validators started joining the network and signaling their intention to\nparticipate in consensus."}),"\n",(0,o.jsx)(t.p,{children:"The network evolved to become a Proof of Stake (PoS) network on June 18, 2020. With the chain\nsecured by the decentralized community of validators, the Sudo module was removed on July 20, 2020,\ntransitioning the governance of the chain into the hands of the token (DOT) holders. This is the\npoint where Polkadot became decentralized."}),"\n",(0,o.jsx)(t.p,{children:"The final step of the transition to full-functioning Polkadot was the enabling of transfer\nfunctionality, which occurred on Polkadot at block number 1_205_128 on August 18, 2020, at 16:39\nUTC."}),"\n",(0,o.jsx)(t.p,{children:"On August 21, 2020, Redenomination of DOT occurred. From this date, one DOT (old) equals 100 new\nDOT."}),"\n",(0,o.jsx)(t.h2,{id:"polkadot-roadmap",children:"Polkadot Roadmap"}),"\n",(0,o.jsxs)(t.p,{children:["For more information on the Polkadot roadmap please visit the\n",(0,o.jsx)(t.a,{href:"https://www.opengov.watch/polkadot-roadmap",children:"official Polkadot website"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"consensus",children:"Consensus"}),"\n",(0,o.jsx)(t.h3,{id:"why-do-we-need-consensus",children:"Why do we need Consensus?"}),"\n",(0,o.jsxs)(t.p,{children:["Consensus is a method for coming to agreement over a shared state. In order for the state of the\nblockchain to continue to build and move forward, all nodes in the network must agree and come to\nconsensus. It is the way that the nodes in a decentralized network are able to stay synced with each\nother. Without consensus for the decentralized network of nodes in a blockchain, there is no way to\nensure that the state one node believes is true will be shared by the other nodes. Consensus aims to\nprovide the ",(0,o.jsx)(t.em,{children:"objective"})," view of the state amid participants who each have their own ",(0,o.jsx)(t.em,{children:"subjective"}),"\nviews of the network. It is the process by which these nodes communicate and come to agreement, and\nare able to build new blocks."]}),"\n",(0,o.jsx)(t.h3,{id:"what-are-pow-and-pos",children:"What are PoW and PoS?"}),"\n",(0,o.jsxs)(t.p,{children:["Proof of Work (PoW) and Proof of Stake (PoS) have been inaccurately used as short hand to refer to\nconsensus mechanisms of blockchains, but that does not capture the full picture. PoW is the method\nfor agreeing on a block author and part of the fuller\n",(0,o.jsx)(t.a,{href:"/docs/learn-consensus#nakamoto-consensus",children:"Nakamoto consensus"})," that also encompasses a chain\nselection algorithm (longest chain rule in Bitcoin). Similarly, PoS is a set of rules for selecting\nthe validator set and does not specify a chain selection rule or how a chain might reach finality.\nPoS algorithms have traditionally been paired with an algorithm for coming to Byzantine agreement\nbetween nodes. For example, ",(0,o.jsx)(t.a,{href:"/docs/learn-comparisons-cosmos",children:"Tendermint"})," is a practical\nByzantine fault tolerant algorithm that uses PoS as its validator set selection method."]}),"\n",(0,o.jsx)(t.h3,{id:"why-not-proof-of-work",children:"Why not Proof of Work?"}),"\n",(0,o.jsx)(t.p,{children:"Although simple and effective in coming to a decentralized consensus on the next block producer,\nproof of work with Nakamoto consensus consumes an incredible amount of energy, has no economic or\nprovable finality, and has no effective strategy in resisting cartels."}),"\n",(0,o.jsx)(t.h2,{id:"validators",children:"Validators"}),"\n",(0,o.jsx)(t.h3,{id:"how-do-i-apply-to-be-a-validator",children:"How do I apply to be a validator?"}),"\n",(0,o.jsxs)(t.p,{children:["There is no central authority that decides on validators, so there is not per se an ",(0,o.jsx)(t.em,{children:"application"}),"\nthat you can fill out. Registering as a validator is permissionless; in order to become one you must\nonly set up a validator node and mark your intention to validate on chain. For detailed instruction\non how to do validate you can consult the\n",(0,o.jsx)(t.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"validator guide"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["However, once you've set up a validator and have registered your intention it does not mean that you\nwill be included in the ",(0,o.jsx)(t.em,{children:"active set"})," right away. The validators are elected to the active set based\non the results of an election algorithm known as ",(0,o.jsx)(t.a,{href:"/docs/learn-phragmen",children:"Phragm\xe9n's method"}),".\nPhragm\xe9n's method tries to accomplish two goals: 1) select ",(0,o.jsx)(t.code,{children:"n"})," members from a larger set based on\nstake-weighted votes and 2) equalize the stake backing each validator as much as possible."]}),"\n",(0,o.jsxs)(t.p,{children:["You will likely want to campaign your validator to the community in order to get more backing. You\nare looking for ",(0,o.jsx)(t.em,{children:"nominators"})," that will put up their tokens to increase the stake for your validator.\nFor validators who cannot acquire the minimum stake from the community, Parity and Web3 Foundation\nalso run a joint programme called ",(0,o.jsx)(t.a,{href:"https://nodes.web3.foundation/",children:"Decentralized Nodes"})," that will\nnominate validators if they apply and fit the requirements."]}),"\n",(0,o.jsx)(t.h3,{id:"how-are-validators-rewarded",children:"How are validators rewarded?"}),"\n",(0,o.jsxs)(t.p,{children:["Validators are rewarded from the ",(0,o.jsx)(t.a,{href:"/docs/learn-inflation",children:"inflation of the relay chain"}),",\n",(0,o.jsx)(t.a,{href:"/docs/learn-transactions#transaction-fees",children:"transaction fees"}),", and tips. However, they only\ntake a percentage of the former two. More details can be read on the page for\n",(0,o.jsx)(t.a,{href:"/docs/maintain-guides-validator-payout",children:"validator payouts"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator",children:"What is the minimum stake necessary to be elected as an active validator?"}),"\n",(0,o.jsx)(t.p,{children:"The minimum stake that is necessary to be elected as an active validator is dynamic and can change\nover time. It depends not only on how much stake is being put behind each validator, but also the\nsize of the active set and how many validators are waiting in the pool."}),"\n",(0,o.jsx)(t.p,{children:"There are a few ways to estimate the minimum stake."}),"\n",(0,o.jsxs)(t.p,{children:["One way can be to navigate to the\n",(0,o.jsx)(t.a,{href:"https://cloudflare-ipfs.com/ipns/polkadot.dotapps.io/#/staking/targets",children:"Polkadot Apps Targets tab"}),'.\nThe value at the top of the screen saying "Lowest" is the least staked validator. You need at least\nthis much + 1 to enter the set.']}),"\n",(0,o.jsx)(t.p,{children:"You can also use some tools some to perform estimations."}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://github.com/paritytech/substrate-debug-kit/tree/master/offline-election",children:"Offline Election"}),"\ncan provide exact results of running an election on the current set of validators using the same\nRust code that is ran in Polkadot."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://github.com/w3f/validator-stats",children:"Validator stats script"})," can give you an estimate that is\nbased on the currently elected set, as well as some statistics about Kusama validators."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.h3,{id:"why-polkadot-targets-1000-validators-while-other-projects-have-hundreds-of-thousands",children:"Why Polkadot targets 1000 validators while other projects have hundreds of thousands?"}),"\n",(0,o.jsx)(t.p,{children:"Polkadot's goal to have 1000 validators is set to be something that is practically achievable in the\nshort term with high confidence of good performance in a live environment. Furthermore, validators\nin Polkadot are not the only stakers, and if we consider the number of stakers that can be possible\non Polkadot the number can scale up to hundreds of thousands. Since validators are performing\ncritical consensus work to maintain the security of the chain including all of its shards, a more\nmodest number of validators is estimated to start. Upon later improvements, such as implementing\nsignature aggregation for finalization messages, the number of validators could reasonably scale up.\nHowever, increasing validators above one thousand remains a goal for later iterations of Polkadot."}),"\n",(0,o.jsxs)(t.p,{children:["Additionally, other projects sometimes have a different definition of ",(0,o.jsx)(t.em,{children:"validator"}),' that approximates\nmore closely to remote signing keys without the full operation of a validating node. On Polkadot,\neach validator is running their own validating node and performing full verification of the Relay\nChain, voting on finality, producing blocks in their decided slots, and verifying parachain state\ntransitions. Other projects may consider validators and "validating nodes" as separate entities.']}),"\n",(0,o.jsxs)(t.p,{children:["Finally, individuals may participate in the block production process indirectly by\n",(0,o.jsx)(t.a,{href:"/docs/learn-nominator",children:"nominating"})," validators. In this way, individuals who are not running a\nnode can still share in staking rewards."]}),"\n",(0,o.jsx)(t.h2,{id:"relay-chain",children:"Relay Chain"}),"\n",(0,o.jsx)(t.h3,{id:"what-is-the-block-time-of-the-relay-chain",children:"What is the block time of the relay chain?"}),"\n",(0,o.jsx)(t.p,{children:"Both the Kusama and Polkadot networks are currently operating at a rate of one block every six\nseconds."}),"\n",(0,o.jsx)(t.p,{children:"This may be changed in the future. It may go as low as two to three seconds after optimizations, or\npotentially increase in order to handle the capacity of the parachain networking in a live\nenvironment."}),"\n",(0,o.jsx)(t.h3,{id:"does-polkadot-have-smart-contracts",children:"Does Polkadot have smart contracts?"}),"\n",(0,o.jsx)(t.p,{children:"No - and yes. The Polkadot relay chain does not implement smart contracts natively. The reason for\nnot having smart contracts on the relay chain is part of the design philosophy for Polkadot that\ndictates that the relay chain should be the minimal logic required to accomplish its job."}),"\n",(0,o.jsx)(t.p,{children:"While the Polkadot relay chain does not implement smart contracts directly, there are numerous\nparachains that do. It's possible for parachains to enable smart contract functionality and then\nbenefit from the security and interoperability features of Polkadot. Additionally, existing smart\ncontract chains can connect to Polkadot as a parachain, or via a bridge."}),"\n",(0,o.jsxs)(t.p,{children:["So it's better to say that the Polkadot ",(0,o.jsx)(t.em,{children:"ecosystem"}),' has smart contracts versus "Polkadot has smart\ncontracts."']}),"\n",(0,o.jsx)(t.h3,{id:"how-does-the-polkadot-relay-chain-connect-to-external-chains-in-the-ecosystem",children:"How does the Polkadot relay chain connect to external chains in the ecosystem?"}),"\n",(0,o.jsxs)(t.p,{children:["One of the cornerstone interoperability technologies being researched and developed for deployment\non Polkadot is cross-chain ",(0,o.jsx)(t.a,{href:"/docs/learn-bridges",children:"bridges"}),". Bridges come in a variety of\nflavors with varying levels of trust associated with them. Polkadot is predominantly researching the\ntrust-minimized flavor that imposes economic costs on the operators of the bridge, and therefore\nmakes it economically secure. Bridge efforts are being worked on in concert with other projects in\nthe ecosystem."]}),"\n",(0,o.jsx)(t.h3,{id:"what-is-polkadots-transactions-per-second-tps",children:"What is Polkadot's Transactions Per Second (TPS)?"}),"\n",(0,o.jsxs)(t.p,{children:["Polkadot is a heterogeneous sharded network comprising a relay chain and numerous parachains, which\nare all individual blockchains built on ",(0,o.jsx)(t.a,{href:"https://substrate.io/",children:"Substrate"})," executing in parallel.\nHence, the Transactions Per Second (TPS) of Polkadot is a number that encompasses all the\ntransactions on the relay chain as well as parachains. As the transactions on these Substrate-based\nblockchains are ",(0,o.jsx)(t.a,{href:"https://docs.substrate.io/build/tx-weights-fees/",children:"weights based"}),", it makes sense to\nuse TPS as a measure for the network performance if all the transactions carry the same weight.\n",(0,o.jsx)(t.a,{href:"https://twitter.com/gavofyork/status/1270025498580656134",children:"Performance benchmark tests"})," show that\nSubstrate-based blockchains can achieve over 1000 TPS for balance transfer transactions. Assuming\nPolkadot is running over 100 parachains; the projected TPS is well over 100,000. With\n",(0,o.jsx)(t.a,{href:"/docs/learn-async-backing",children:"asynchronous backing upgrade"}),", the TPS is expected to increase\ntenfold to 1,000,000."]}),"\n",(0,o.jsxs)(t.p,{children:["It is essential to realize that TPS is inherently a subjective measurement with numerous factors\nthat can contribute to it. It's hard to gauge the usefulness of TPS in isolation (when compared to\nother chains), as it depends on what a transaction does for a particular network. To view how\nPolkadot measures TPS see the Polkadot sTPS\n(",(0,o.jsx)(t.a,{href:"https://github.com/paritytech/polkadot-stps/blob/main/docs/introduction.md",children:"Standard Transaction Per Second"}),")\nto consider precisely how benchmarking was performed for Polkadot."]}),"\n",(0,o.jsx)(t.h2,{id:"dot",children:"DOT"}),"\n",(0,o.jsx)(t.h3,{id:"what-is-the-difference-between-dot-old-and-new-dot",children:"What is the difference between DOT (old) and new DOT?"}),"\n",(0,o.jsxs)(t.p,{children:["The DOT (old) unit on Polkadot was at twelve decimal places, otherwise known as 1e12 Plancks. On 21\nAugust, 2020, Denomination Day, the DOT (old) value was redenominated to 1e10 (10_000_000_000, or\nten billion) Plancks, meaning that the new DOT was valued at ten decimal places. Following the\n",(0,o.jsx)(t.a,{href:"/docs/learn/learn-redenomination",children:"redenomination"}),", the new DOT is called DOT."]}),"\n",(0,o.jsx)(t.h3,{id:"what-is-the-inflation-rate-of-the-dot",children:"What is the inflation rate of the DOT?"}),"\n",(0,o.jsx)(t.p,{children:"The inflation rate is approximately 120,000,000 DOT per year."}),"\n",(0,o.jsxs)(t.p,{children:["The 85% of inflation is rewarded to validators for performing their duties, while the 15% goes to\nthe treasury. Please see the article on ",(0,o.jsx)(t.a,{href:"/docs/learn-inflation",children:"inflation"})," for more\ninformation."]}),"\n",(0,o.jsx)(t.h3,{id:"why-cant-crowdloaned-dot-be-staked",children:"Why can't crowdloaned DOT be staked?"}),"\n",(0,o.jsx)(t.p,{children:"DOTs contributed to a successful crowdloan campaign by a parachain are bonded for the entire lease\nperiod, which is two years on Polkadot. The crowdloaned DOT cannot be used for any other DOT utility\nfunctionalities like staking and democracy. In exchange to the lost staking rewards or liquidity of\nDOTs, the parachain team may offer rewards to the contributor."}),"\n",(0,o.jsxs)(t.p,{children:["The utility of crowdloaned DOT is to provide a lease for a parachain. The utility of staked DOT is\nto secure the network through a reward/",(0,o.jsx)(t.a,{href:"/docs/learn-offenses",children:"slash"})," mechanism. Allowing\ncrowdloaned DOT to be staked results in complex consequences like applying a slash on crowdloaned\nDOT that was meant to be bonded for the entire lease period of a parachain. In a way, the\ninaccessibility of crowdloaned DOTs and the lack of staking rewards for the entire lease duration\nencourages the contributors to back projects that are valuable to the ecosystem."]}),"\n",(0,o.jsx)(t.h2,{id:"governance",children:"Governance"}),"\n",(0,o.jsx)(t.h3,{id:"what-prevents-polkadot-governance-from-failing",children:"What prevents Polkadot governance from failing?"}),"\n",(0,o.jsxs)(t.p,{children:["Polkadot's governance has already been shown to work. Examples can be found in the runtime upgrades\nthat have successfully taken place through on the testnets as well as in a real economic environment\non ",(0,o.jsx)(t.a,{href:"https://guide.kusama.network",children:"Kusama"})," and Polkadot itself."]}),"\n",(0,o.jsx)(t.p,{children:"It is fair to say that the field of on-chain blockchain governance is still new, and no one can\nclaim to know exactly what the optimal version of on-chain governance is yet. However, Polkadot\ntakes a brave step forward in pioneering thought-through mechanisms for evolving a blockchain."}),"\n",(0,o.jsx)(t.p,{children:"Blockchains need a method to adapt and evolve. Therefore, an on-chain governance system was\nnecessary for the long-term success of Polkadot. Ultimately, it is the token holders that are\nresponsible for preventing Polkadot's governance from failing by using their economic value and\nconviction to sway the progression of the protocol."}),"\n",(0,o.jsx)(t.h3,{id:"what-prevents-polkadot-governance-from-becoming-plutocratic",children:"What prevents Polkadot governance from becoming plutocratic?"}),"\n",(0,o.jsxs)(t.p,{children:["A savvy reader might have noticed that the answer to the previous question endowed the token holder\nwith the ultimate responsibility to ensure that Polkadot's governance does not fail. By following\nthe train of this assertion, one might assume that Polkadot's governance is susceptible to becoming\nruled by a few large token holders (called ",(0,o.jsx)(t.em,{children:"whales"})," in trading parlance) and therefore become a mere\nplutocracy (rule of the rich)."]}),"\n",(0,o.jsxs)(t.p,{children:["There are several other mechanisms that are built-in to the governance system to resist this\nplutocratic tendency. One of these mechanisms is called conviction voting, and imbues greater voting\npower to token holders who are willing to lock their tokens on the protocol for longer lengths of\ntime. Longer lock-ups display ",(0,o.jsx)(t.em,{children:"conviction"})," in a vote. Conviction voting could allow a highly\ndetermined minority to overrule the vote of an apathetic majority in certain situations. Another\nmechanism is known as Adaptive Quorum Biasing. This makes proposals have a varying threshold for\napproval or rejection based on what part of the governance protocol the proposal originated in. For\ndetails on the subtleties of Polkadot's governance system, please see the\n",(0,o.jsx)(t.a,{href:"/docs/learn-polkadot-opengov",children:"governance page"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"parachains",children:"Parachains"}),"\n",(0,o.jsx)(t.h3,{id:"how-do-parachain-economics-work",children:"How do parachain economics work?"}),"\n",(0,o.jsx)(t.p,{children:"Parachains have the flexibility to implement their own monetary system or incentive structure for\ncollators. However, this is not strictly necessary. Since the collator's job is to continue to give\nrecent state transitions to the validators on the relay chain who validate each transition, the\nsecurity of the parachain and the Polkadot network is completely separate from parachain economics.\nParachains need collators to continue to progress, so it wouldn't be unreasonable to see them\nincentivize collator nodes in some way, but the specific mechanism is completely up to parachain\nimplementers."}),"\n",(0,o.jsx)(t.h3,{id:"are-parachains-ephemeral-what-happens-when-a-parachain-fails-to-renew-its-coretime",children:"Are parachains ephemeral? What happens when a parachain fails to renew its coretime?"}),"\n",(0,o.jsxs)(t.p,{children:["Parachains are not ephemeral. As long as someone is keeping the data for a parachain, the parachain\ncan move between being a parachain, an\n",(0,o.jsx)(t.a,{href:"/docs/learn-parachains#on-demand-parachains",children:"on-demand parachain"}),", or a separate sovereign\nchain at different points of its lifetime. Especially with on-demand parachains, parachains can\nproduce blocks when their usage and throughput makes it necessary."]}),"\n",(0,o.jsxs)(t.p,{children:["When a parachain could not renew its bulk coretime and needs to keep its chain live, there are a\ncouple of options to consider. One option is to explore secondary coretime marketplaces on\n",(0,o.jsx)(t.a,{href:"https://www.lastic.xyz/",children:"Lastic"})," or ",(0,o.jsx)(t.a,{href:"https://app.regionx.tech/?network=polkadot",children:"RegionX"}),". The\nother option is run as an on-demand parachain, and purchase coretime to produce one block at a time.\nOn-demand parachains are still secured by the relay chain but don't need to hold a core and can\nproduce a block when it's economically feasible for them. For more information, please refer to the\n",(0,o.jsx)(t.a,{href:"/docs/learn-parachains#parachains-vs-on-demand-parachains",children:"parachains page"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"networking",children:"Networking"}),"\n",(0,o.jsx)(t.h3,{id:"what-is-libp2p",children:"What is libp2p?"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://libp2p.io",children:"Libp2p"})," is a modular and extensible networking stack that is used by IPFS,\nSubstrate, and many other projects. It is a collection of peer-to-peer protocols for finding peers\nand connecting to them. Its modules have logic for content routing, peer routing, peer discovery,\ndifferent transports, and NAT traversals. It is intended to be used by applications for building\nlarge scale peer-to-peer networks by only selecting the parts of the protocol suite that are needed."]}),"\n",(0,o.jsxs)(t.p,{children:["The Rust implementation of the specification was built and primarily maintained by a team of\ncontributors at Parity Technologies. The Go and JavaScript versions are maintained by Protocol Labs\nas well as community contributors. A ",(0,o.jsx)(t.a,{href:"https://github.com/status-im/nim-libp2p",children:"Nim"})," version of the\nlibrary also exists. Libp2p as a whole is an open source project that is actively developed and\nexpanded on various code repositories hosted on ",(0,o.jsx)(t.a,{href:"https://github.com/libp2p",children:"their GitHub"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"does-polkadot-use-libp2p",children:"Does Polkadot use libp2p?"}),"\n",(0,o.jsx)(t.p,{children:"Yes, since Polkadot is built with Substrate. Substrate uses a networking protocol that is based on\nlibp2p (specifically the Rust libp2p library). However, Substrate uses a mix of standard libp2p\nprotocols and protocols that are homegrown and not official libp2p standards. Of the standards\nprotocols, those which are shared with other implementations of libp2p such as IPFS, are\nconnection-checking (ping), asking for information on a peer (identity), and Kademlia random walks\n(kad)."}),"\n",(0,o.jsxs)(t.p,{children:["Of the protocols that are custom to Substrate, there are the legacy Substrate stream, a\nrequest-response for getting information on blocks (sync), a light client protocol, a notification\nprotocol for transactions, and block announcement. For detailed information on how Substrate uses\nlibp2p and the standard and custom protocols, please see the\n",(0,o.jsx)(t.a,{href:"https://paritytech.github.io/substrate/master/sc_network/index.html",children:"networking documentation"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"how-does-libp2p-differ-from-ipfs",children:"How does libp2p differ from IPFS?"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.a,{href:"https://ipfs.tech/",children:"Interplanetary File System"}),' (IPFS) is a peer-to-peer hypermedia protocol\nused primarily for storage of files. It allows one to upload a file onto the network and share it\nwith its content addressable URI. IPFS, like Substrate, is an application of libp2p and exists\nhigher on the technology stack. Although both IPFS and Substrate use libp2p, it cannot be said that\nSubstrate "uses" IPFS since besides sharing the underlying library for networking there is no native\nintegration between the two applications.']}),"\n",(0,o.jsx)(t.h2,{id:"kusama",children:"Kusama"}),"\n",(0,o.jsx)(t.h3,{id:"what-is-the-minimum-amount-of-ksm--dot-i-can-have-in-my-account",children:"What is the minimum amount of KSM / DOT I can have in my account?"}),"\n",(0,o.jsxs)(t.p,{children:["Please see information about ",(0,o.jsx)(t.a,{href:"/docs/build-protocol-info",children:"Existential Deposits"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"what-are-the-transfer-fees-for-kusama",children:"What are the transfer fees for Kusama?"}),"\n",(0,o.jsx)(t.p,{children:"It is important to note that the cost of transferring KSM is dynamic. Currently, the minimum cost of\ntransferring KSM is 0.01 KSM (the base fee), although this can be changed via governance. However,\nactual transaction fees vary based on a variety of factors. Specifically, fee calculation follows\nthe following formula:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{children:"base_fee + (tx_length * length_fee) + WeightToFee(weight)\n"})}),"\n",(0,o.jsxs)(t.p,{children:["Please see the\n",(0,o.jsx)(t.a,{href:"https://docs.substrate.io/reference/how-to-guides/weights/calculate-fees/",children:"fee calculation"})," page in\nthe Substrate documentation for more detailed information."]}),"\n",(0,o.jsx)(t.h2,{id:"answered-by-gav-series",children:"Answered by Gav series"}),"\n",(0,o.jsx)(t.p,{children:'The "Answered by Gav" series is a collection of posts uploaded to Reddit of questions that have been\nasked in the Polkadot Watercooler Riot channel and answered by Polkadot founder Gavin Wood.'}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/b87d96/answered_by_gav_reason_for_using_asynchronous/",children:"Reason for using asynchronous rather than synchronous communication? Difference in terms of TPS?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/b87awr/answered_by_gav_how_exactly_do_validators_in_an/",children:"How exactly do validators in an ETH parachain keep moving around and how is communication between zones trustless?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/b87bua/answered_by_gav_what_are_the_main_issues_with/",children:"What are the main issues with Bitcoin integration and will it ever be possible? Same problem with other POW chains? Is Polkadot only going to work with POS chains? How is it trust-less in comparison to Cosmos though?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/b87cjz/answered_by_gav_what_are_the_current_thoughts/",children:"What are the current thoughts around governance especially since projects have to be voted in to receive the parachains security?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/b87ds8/answered_by_gav_also_is_there_any_detailed/",children:"Also is there any detailed overview of how exactly a token transfer from ETH could be exchanged with another chain's currency?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/bcqrx9/answered_by_gav_can_i_run_multiple_validators/",children:"Can I run multiple Validators with the same Session Key?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/bcqwit/answered_by_gav_how_to_tackle_the_concentration/",children:"How to tackle the concentration risk of Validators in data centers?"})}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},28453:(e,t,a)=>{a.d(t,{R:()=>s,x:()=>r});var n=a(96540);const o={},i=n.createContext(o);function s(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/48d75399.d917a4ee.js b/assets/js/48d75399.d917a4ee.js deleted file mode 100644 index a7454d30bd9..00000000000 --- a/assets/js/48d75399.d917a4ee.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[230],{76984:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"general/faq","title":"Frequently Asked Questions (FAQs)","description":"FAQs to Help you Navigate on Polkadot.","source":"@site/../docs/general/faq.md","sourceDirName":"general","slug":"/faq","permalink":"/docs/faq","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/faq.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1731940640000,"frontMatter":{"id":"faq","title":"Frequently Asked Questions (FAQs)","sidebar_label":"FAQ","description":"FAQs to Help you Navigate on Polkadot.","keywords":["FAQ","questions"],"slug":"../faq"},"sidebar":"docs","previous":{"title":"Build on Polkadot","permalink":"/docs/start-building"},"next":{"title":"Glossary","permalink":"/docs/glossary"}}');var o=a(74848),i=a(28453);const s={id:"faq",title:"Frequently Asked Questions (FAQs)",sidebar_label:"FAQ",description:"FAQs to Help you Navigate on Polkadot.",keywords:["FAQ","questions"],slug:"../faq"},r=void 0,l={},h=[{value:"Polkadot Launch",id:"polkadot-launch",level:2},{value:"Polkadot Roadmap",id:"polkadot-roadmap",level:2},{value:"Consensus",id:"consensus",level:2},{value:"Why do we need Consensus?",id:"why-do-we-need-consensus",level:3},{value:"What are PoW and PoS?",id:"what-are-pow-and-pos",level:3},{value:"Why not Proof of Work?",id:"why-not-proof-of-work",level:3},{value:"Validators",id:"validators",level:2},{value:"How do I apply to be a validator?",id:"how-do-i-apply-to-be-a-validator",level:3},{value:"How are validators rewarded?",id:"how-are-validators-rewarded",level:3},{value:"What is the minimum stake necessary to be elected as an active validator?",id:"what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator",level:3},{value:"Why Polkadot targets 1000 validators while other projects have hundreds of thousands?",id:"why-polkadot-targets-1000-validators-while-other-projects-have-hundreds-of-thousands",level:3},{value:"Relay Chain",id:"relay-chain",level:2},{value:"What is the block time of the relay chain?",id:"what-is-the-block-time-of-the-relay-chain",level:3},{value:"Does Polkadot have smart contracts?",id:"does-polkadot-have-smart-contracts",level:3},{value:"How does the Polkadot relay chain connect to external chains in the ecosystem?",id:"how-does-the-polkadot-relay-chain-connect-to-external-chains-in-the-ecosystem",level:3},{value:"What is Polkadot's Transactions Per Second (TPS)?",id:"what-is-polkadots-transactions-per-second-tps",level:3},{value:"DOT",id:"dot",level:2},{value:"What is the difference between DOT (old) and new DOT?",id:"what-is-the-difference-between-dot-old-and-new-dot",level:3},{value:"What is the inflation rate of the DOT?",id:"what-is-the-inflation-rate-of-the-dot",level:3},{value:"Why can't crowdloaned DOT be staked?",id:"why-cant-crowdloaned-dot-be-staked",level:3},{value:"Governance",id:"governance",level:2},{value:"What prevents Polkadot governance from failing?",id:"what-prevents-polkadot-governance-from-failing",level:3},{value:"What prevents Polkadot governance from becoming plutocratic?",id:"what-prevents-polkadot-governance-from-becoming-plutocratic",level:3},{value:"Parachains",id:"parachains",level:2},{value:"How do parachain economics work?",id:"how-do-parachain-economics-work",level:3},{value:"Are parachains ephemeral? What happens when a parachain fails to renew its coretime?",id:"are-parachains-ephemeral-what-happens-when-a-parachain-fails-to-renew-its-coretime",level:3},{value:"Networking",id:"networking",level:2},{value:"What is libp2p?",id:"what-is-libp2p",level:3},{value:"Does Polkadot use libp2p?",id:"does-polkadot-use-libp2p",level:3},{value:"How does libp2p differ from IPFS?",id:"how-does-libp2p-differ-from-ipfs",level:3},{value:"Kusama",id:"kusama",level:2},{value:"What is the minimum amount of KSM / DOT I can have in my account?",id:"what-is-the-minimum-amount-of-ksm--dot-i-can-have-in-my-account",level:3},{value:"What are the transfer fees for Kusama?",id:"what-are-the-transfer-fees-for-kusama",level:3},{value:"Answered by Gav series",id:"answered-by-gav-series",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.admonition,{type:"info",children:(0,o.jsxs)(t.p,{children:["This FAQ focuses on technical questions for users interested in developing applications for\nPolkadot. If you have a more general question, you may wish to search for the answer on our support\n",(0,o.jsx)(t.a,{href:"https://support.polkadot.network/support/home",children:"Knowledge Base"})," or the main\n",(0,o.jsx)(t.a,{href:"https://polkadot.network/faq",children:"Polkadot network FAQ"}),". If you have a question that is not answered,\nplease feel free to ask on the Polkadot Watercooler\n",(0,o.jsx)(t.a,{href:"https://app.element.io/#/room/#polkadot-watercooler:web3.foundation",children:"Element channel"})," or contact\n",(0,o.jsx)(t.a,{href:"https://support.polkadot.network",children:"Polkadot Support"}),"."]})}),"\n",(0,o.jsx)(t.h2,{id:"polkadot-launch",children:"Polkadot Launch"}),"\n",(0,o.jsx)(t.p,{children:"The Genesis block of the Polkadot network was launched on May 26, 2020 at 15:36:21 UTC, as a Proof\nof Authority (PoA) network, with governance controlled by the single Sudo (super-user) account.\nDuring this time, validators started joining the network and signaling their intention to\nparticipate in consensus."}),"\n",(0,o.jsx)(t.p,{children:"The network evolved to become a Proof of Stake (PoS) network on June 18, 2020. With the chain\nsecured by the decentralized community of validators, the Sudo module was removed on July 20, 2020,\ntransitioning the governance of the chain into the hands of the token (DOT) holders. This is the\npoint where Polkadot became decentralized."}),"\n",(0,o.jsx)(t.p,{children:"The final step of the transition to full-functioning Polkadot was the enabling of transfer\nfunctionality, which occurred on Polkadot at block number 1_205_128 on August 18, 2020, at 16:39\nUTC."}),"\n",(0,o.jsx)(t.p,{children:"On August 21, 2020, Redenomination of DOT occurred. From this date, one DOT (old) equals 100 new\nDOT."}),"\n",(0,o.jsx)(t.h2,{id:"polkadot-roadmap",children:"Polkadot Roadmap"}),"\n",(0,o.jsxs)(t.p,{children:["For more information on the Polkadot roadmap please visit the\n",(0,o.jsx)(t.a,{href:"https://polkadot.network/technology/#roadmap",children:"official Polkadot website"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"consensus",children:"Consensus"}),"\n",(0,o.jsx)(t.h3,{id:"why-do-we-need-consensus",children:"Why do we need Consensus?"}),"\n",(0,o.jsxs)(t.p,{children:["Consensus is a method for coming to agreement over a shared state. In order for the state of the\nblockchain to continue to build and move forward, all nodes in the network must agree and come to\nconsensus. It is the way that the nodes in a decentralized network are able to stay synced with each\nother. Without consensus for the decentralized network of nodes in a blockchain, there is no way to\nensure that the state one node believes is true will be shared by the other nodes. Consensus aims to\nprovide the ",(0,o.jsx)(t.em,{children:"objective"})," view of the state amid participants who each have their own ",(0,o.jsx)(t.em,{children:"subjective"}),"\nviews of the network. It is the process by which these nodes communicate and come to agreement, and\nare able to build new blocks."]}),"\n",(0,o.jsx)(t.h3,{id:"what-are-pow-and-pos",children:"What are PoW and PoS?"}),"\n",(0,o.jsxs)(t.p,{children:["Proof of Work (PoW) and Proof of Stake (PoS) have been inaccurately used as short hand to refer to\nconsensus mechanisms of blockchains, but that does not capture the full picture. PoW is the method\nfor agreeing on a block author and part of the fuller\n",(0,o.jsx)(t.a,{href:"/docs/learn-consensus#nakamoto-consensus",children:"Nakamoto consensus"})," that also encompasses a chain\nselection algorithm (longest chain rule in Bitcoin). Similarly, PoS is a set of rules for selecting\nthe validator set and does not specify a chain selection rule or how a chain might reach finality.\nPoS algorithms have traditionally been paired with an algorithm for coming to Byzantine agreement\nbetween nodes. For example, ",(0,o.jsx)(t.a,{href:"/docs/learn-comparisons-cosmos",children:"Tendermint"})," is a practical\nByzantine fault tolerant algorithm that uses PoS as its validator set selection method."]}),"\n",(0,o.jsx)(t.h3,{id:"why-not-proof-of-work",children:"Why not Proof of Work?"}),"\n",(0,o.jsx)(t.p,{children:"Although simple and effective in coming to a decentralized consensus on the next block producer,\nproof of work with Nakamoto consensus consumes an incredible amount of energy, has no economic or\nprovable finality, and has no effective strategy in resisting cartels."}),"\n",(0,o.jsx)(t.h2,{id:"validators",children:"Validators"}),"\n",(0,o.jsx)(t.h3,{id:"how-do-i-apply-to-be-a-validator",children:"How do I apply to be a validator?"}),"\n",(0,o.jsxs)(t.p,{children:["There is no central authority that decides on validators, so there is not per se an ",(0,o.jsx)(t.em,{children:"application"}),"\nthat you can fill out. Registering as a validator is permissionless; in order to become one you must\nonly set up a validator node and mark your intention to validate on chain. For detailed instruction\non how to do validate you can consult the\n",(0,o.jsx)(t.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"validator guide"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["However, once you've set up a validator and have registered your intention it does not mean that you\nwill be included in the ",(0,o.jsx)(t.em,{children:"active set"})," right away. The validators are elected to the active set based\non the results of an election algorithm known as ",(0,o.jsx)(t.a,{href:"/docs/learn-phragmen",children:"Phragm\xe9n's method"}),".\nPhragm\xe9n's method tries to accomplish two goals: 1) select ",(0,o.jsx)(t.code,{children:"n"})," members from a larger set based on\nstake-weighted votes and 2) equalize the stake backing each validator as much as possible."]}),"\n",(0,o.jsxs)(t.p,{children:["You will likely want to campaign your validator to the community in order to get more backing. You\nare looking for ",(0,o.jsx)(t.em,{children:"nominators"})," that will put up their tokens to increase the stake for your validator.\nFor validators who cannot acquire the minimum stake from the community, Parity and Web3 Foundation\nalso run a joint programme called ",(0,o.jsx)(t.a,{href:"https://nodes.web3.foundation/",children:"Decentralized Nodes"})," that will\nnominate validators if they apply and fit the requirements."]}),"\n",(0,o.jsx)(t.h3,{id:"how-are-validators-rewarded",children:"How are validators rewarded?"}),"\n",(0,o.jsxs)(t.p,{children:["Validators are rewarded from the ",(0,o.jsx)(t.a,{href:"/docs/learn-inflation",children:"inflation of the relay chain"}),",\n",(0,o.jsx)(t.a,{href:"/docs/learn-transactions#transaction-fees",children:"transaction fees"}),", and tips. However, they only\ntake a percentage of the former two. More details can be read on the page for\n",(0,o.jsx)(t.a,{href:"/docs/maintain-guides-validator-payout",children:"validator payouts"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator",children:"What is the minimum stake necessary to be elected as an active validator?"}),"\n",(0,o.jsx)(t.p,{children:"The minimum stake that is necessary to be elected as an active validator is dynamic and can change\nover time. It depends not only on how much stake is being put behind each validator, but also the\nsize of the active set and how many validators are waiting in the pool."}),"\n",(0,o.jsx)(t.p,{children:"There are a few ways to estimate the minimum stake."}),"\n",(0,o.jsxs)(t.p,{children:["One way can be to navigate to the\n",(0,o.jsx)(t.a,{href:"https://cloudflare-ipfs.com/ipns/polkadot.dotapps.io/#/staking/targets",children:"Polkadot Apps Targets tab"}),'.\nThe value at the top of the screen saying "Lowest" is the least staked validator. You need at least\nthis much + 1 to enter the set.']}),"\n",(0,o.jsx)(t.p,{children:"You can also use some tools some to perform estimations."}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://github.com/paritytech/substrate-debug-kit/tree/master/offline-election",children:"Offline Election"}),"\ncan provide exact results of running an election on the current set of validators using the same\nRust code that is ran in Polkadot."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://github.com/w3f/validator-stats",children:"Validator stats script"})," can give you an estimate that is\nbased on the currently elected set, as well as some statistics about Kusama validators."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.h3,{id:"why-polkadot-targets-1000-validators-while-other-projects-have-hundreds-of-thousands",children:"Why Polkadot targets 1000 validators while other projects have hundreds of thousands?"}),"\n",(0,o.jsx)(t.p,{children:"Polkadot's goal to have 1000 validators is set to be something that is practically achievable in the\nshort term with high confidence of good performance in a live environment. Furthermore, validators\nin Polkadot are not the only stakers, and if we consider the number of stakers that can be possible\non Polkadot the number can scale up to hundreds of thousands. Since validators are performing\ncritical consensus work to maintain the security of the chain including all of its shards, a more\nmodest number of validators is estimated to start. Upon later improvements, such as implementing\nsignature aggregation for finalization messages, the number of validators could reasonably scale up.\nHowever, increasing validators above one thousand remains a goal for later iterations of Polkadot."}),"\n",(0,o.jsxs)(t.p,{children:["Additionally, other projects sometimes have a different definition of ",(0,o.jsx)(t.em,{children:"validator"}),' that approximates\nmore closely to remote signing keys without the full operation of a validating node. On Polkadot,\neach validator is running their own validating node and performing full verification of the Relay\nChain, voting on finality, producing blocks in their decided slots, and verifying parachain state\ntransitions. Other projects may consider validators and "validating nodes" as separate entities.']}),"\n",(0,o.jsxs)(t.p,{children:["Finally, individuals may participate in the block production process indirectly by\n",(0,o.jsx)(t.a,{href:"/docs/learn-nominator",children:"nominating"})," validators. In this way, individuals who are not running a\nnode can still share in staking rewards."]}),"\n",(0,o.jsx)(t.h2,{id:"relay-chain",children:"Relay Chain"}),"\n",(0,o.jsx)(t.h3,{id:"what-is-the-block-time-of-the-relay-chain",children:"What is the block time of the relay chain?"}),"\n",(0,o.jsx)(t.p,{children:"Both the Kusama and Polkadot networks are currently operating at a rate of one block every six\nseconds."}),"\n",(0,o.jsx)(t.p,{children:"This may be changed in the future. It may go as low as two to three seconds after optimizations, or\npotentially increase in order to handle the capacity of the parachain networking in a live\nenvironment."}),"\n",(0,o.jsx)(t.h3,{id:"does-polkadot-have-smart-contracts",children:"Does Polkadot have smart contracts?"}),"\n",(0,o.jsx)(t.p,{children:"No - and yes. The Polkadot relay chain does not implement smart contracts natively. The reason for\nnot having smart contracts on the relay chain is part of the design philosophy for Polkadot that\ndictates that the relay chain should be the minimal logic required to accomplish its job."}),"\n",(0,o.jsx)(t.p,{children:"While the Polkadot relay chain does not implement smart contracts directly, there are numerous\nparachains that do. It's possible for parachains to enable smart contract functionality and then\nbenefit from the security and interoperability features of Polkadot. Additionally, existing smart\ncontract chains can connect to Polkadot as a parachain, or via a bridge."}),"\n",(0,o.jsxs)(t.p,{children:["So it's better to say that the Polkadot ",(0,o.jsx)(t.em,{children:"ecosystem"}),' has smart contracts versus "Polkadot has smart\ncontracts."']}),"\n",(0,o.jsx)(t.h3,{id:"how-does-the-polkadot-relay-chain-connect-to-external-chains-in-the-ecosystem",children:"How does the Polkadot relay chain connect to external chains in the ecosystem?"}),"\n",(0,o.jsxs)(t.p,{children:["One of the cornerstone interoperability technologies being researched and developed for deployment\non Polkadot is cross-chain ",(0,o.jsx)(t.a,{href:"/docs/learn-bridges",children:"bridges"}),". Bridges come in a variety of\nflavors with varying levels of trust associated with them. Polkadot is predominantly researching the\ntrust-minimized flavor that imposes economic costs on the operators of the bridge, and therefore\nmakes it economically secure. Bridge efforts are being worked on in concert with other projects in\nthe ecosystem."]}),"\n",(0,o.jsx)(t.h3,{id:"what-is-polkadots-transactions-per-second-tps",children:"What is Polkadot's Transactions Per Second (TPS)?"}),"\n",(0,o.jsxs)(t.p,{children:["Polkadot is a heterogeneous sharded network comprising a relay chain and numerous parachains, which\nare all individual blockchains built on ",(0,o.jsx)(t.a,{href:"https://substrate.io/",children:"Substrate"})," executing in parallel.\nHence, the Transactions Per Second (TPS) of Polkadot is a number that encompasses all the\ntransactions on the relay chain as well as parachains. As the transactions on these Substrate-based\nblockchains are ",(0,o.jsx)(t.a,{href:"https://docs.substrate.io/build/tx-weights-fees/",children:"weights based"}),", it makes sense to\nuse TPS as a measure for the network performance if all the transactions carry the same weight.\n",(0,o.jsx)(t.a,{href:"https://twitter.com/gavofyork/status/1270025498580656134",children:"Performance benchmark tests"})," show that\nSubstrate-based blockchains can achieve over 1000 TPS for balance transfer transactions. Assuming\nPolkadot is running over 100 parachains; the projected TPS is well over 100,000. With\n",(0,o.jsx)(t.a,{href:"/docs/learn-async-backing",children:"asynchronous backing upgrade"}),", the TPS is expected to increase\ntenfold to 1,000,000."]}),"\n",(0,o.jsxs)(t.p,{children:["It is essential to realize that TPS is inherently a subjective measurement with numerous factors\nthat can contribute to it. It's hard to gauge the usefulness of TPS in isolation (when compared to\nother chains), as it depends on what a transaction does for a particular network. To view how\nPolkadot measures TPS see the Polkadot sTPS\n(",(0,o.jsx)(t.a,{href:"https://github.com/paritytech/polkadot-stps/blob/main/docs/introduction.md",children:"Standard Transaction Per Second"}),")\nto consider precisely how benchmarking was performed for Polkadot."]}),"\n",(0,o.jsx)(t.h2,{id:"dot",children:"DOT"}),"\n",(0,o.jsx)(t.h3,{id:"what-is-the-difference-between-dot-old-and-new-dot",children:"What is the difference between DOT (old) and new DOT?"}),"\n",(0,o.jsxs)(t.p,{children:["The DOT (old) unit on Polkadot was at twelve decimal places, otherwise known as 1e12 Plancks. On 21\nAugust, 2020, Denomination Day, the DOT (old) value was redenominated to 1e10 (10_000_000_000, or\nten billion) Plancks, meaning that the new DOT was valued at ten decimal places. Following the\n",(0,o.jsx)(t.a,{href:"/docs/learn/learn-redenomination",children:"redenomination"}),", the new DOT is called DOT."]}),"\n",(0,o.jsx)(t.h3,{id:"what-is-the-inflation-rate-of-the-dot",children:"What is the inflation rate of the DOT?"}),"\n",(0,o.jsx)(t.p,{children:"The inflation rate is approximately 120,000,000 DOT per year."}),"\n",(0,o.jsxs)(t.p,{children:["The 85% of inflation is rewarded to validators for performing their duties, while the 15% goes to\nthe treasury. Please see the article on ",(0,o.jsx)(t.a,{href:"../learn/learn-staking.md/#inflation",children:"inflation"})," for more\ninformation."]}),"\n",(0,o.jsx)(t.h3,{id:"why-cant-crowdloaned-dot-be-staked",children:"Why can't crowdloaned DOT be staked?"}),"\n",(0,o.jsx)(t.p,{children:"DOTs contributed to a successful crowdloan campaign by a parachain are bonded for the entire lease\nperiod, which is two years on Polkadot. The crowdloaned DOT cannot be used for any other DOT utility\nfunctionalities like staking and democracy. In exchange to the lost staking rewards or liquidity of\nDOTs, the parachain team may offer rewards to the contributor."}),"\n",(0,o.jsxs)(t.p,{children:["The utility of crowdloaned DOT is to provide a lease for a parachain. The utility of staked DOT is\nto secure the network through a reward/",(0,o.jsx)(t.a,{href:"/docs/learn-offenses",children:"slash"})," mechanism. Allowing\ncrowdloaned DOT to be staked results in complex consequences like applying a slash on crowdloaned\nDOT that was meant to be bonded for the entire lease period of a parachain. In a way, the\ninaccessibility of crowdloaned DOTs and the lack of staking rewards for the entire lease duration\nencourages the contributors to back projects that are valuable to the ecosystem."]}),"\n",(0,o.jsx)(t.h2,{id:"governance",children:"Governance"}),"\n",(0,o.jsx)(t.h3,{id:"what-prevents-polkadot-governance-from-failing",children:"What prevents Polkadot governance from failing?"}),"\n",(0,o.jsxs)(t.p,{children:["Polkadot's governance has already been shown to work. Examples can be found in the runtime upgrades\nthat have successfully taken place through on the testnets as well as in a real economic environment\non ",(0,o.jsx)(t.a,{href:"https://guide.kusama.network",children:"Kusama"})," and Polkadot itself."]}),"\n",(0,o.jsx)(t.p,{children:"It is fair to say that the field of on-chain blockchain governance is still new, and no one can\nclaim to know exactly what the optimal version of on-chain governance is yet. However, Polkadot\ntakes a brave step forward in pioneering thought-through mechanisms for evolving a blockchain."}),"\n",(0,o.jsx)(t.p,{children:"Blockchains need a method to adapt and evolve. Therefore, an on-chain governance system was\nnecessary for the long-term success of Polkadot. Ultimately, it is the token holders that are\nresponsible for preventing Polkadot's governance from failing by using their economic value and\nconviction to sway the progression of the protocol."}),"\n",(0,o.jsx)(t.h3,{id:"what-prevents-polkadot-governance-from-becoming-plutocratic",children:"What prevents Polkadot governance from becoming plutocratic?"}),"\n",(0,o.jsxs)(t.p,{children:["A savvy reader might have noticed that the answer to the previous question endowed the token holder\nwith the ultimate responsibility to ensure that Polkadot's governance does not fail. By following\nthe train of this assertion, one might assume that Polkadot's governance is susceptible to becoming\nruled by a few large token holders (called ",(0,o.jsx)(t.em,{children:"whales"})," in trading parlance) and therefore become a mere\nplutocracy (rule of the rich)."]}),"\n",(0,o.jsxs)(t.p,{children:["There are several other mechanisms that are built-in to the governance system to resist this\nplutocratic tendency. One of these mechanisms is called conviction voting, and imbues greater voting\npower to token holders who are willing to lock their tokens on the protocol for longer lengths of\ntime. Longer lock-ups display ",(0,o.jsx)(t.em,{children:"conviction"})," in a vote. Conviction voting could allow a highly\ndetermined minority to overrule the vote of an apathetic majority in certain situations. Another\nmechanism is known as Adaptive Quorum Biasing. This makes proposals have a varying threshold for\napproval or rejection based on what part of the governance protocol the proposal originated in. For\ndetails on the subtleties of Polkadot's governance system, please see the\n",(0,o.jsx)(t.a,{href:"/docs/learn-polkadot-opengov",children:"governance page"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"parachains",children:"Parachains"}),"\n",(0,o.jsx)(t.h3,{id:"how-do-parachain-economics-work",children:"How do parachain economics work?"}),"\n",(0,o.jsx)(t.p,{children:"Parachains have the flexibility to implement their own monetary system or incentive structure for\ncollators. However, this is not strictly necessary. Since the collator's job is to continue to give\nrecent state transitions to the validators on the relay chain who validate each transition, the\nsecurity of the parachain and the Polkadot network is completely separate from parachain economics.\nParachains need collators to continue to progress, so it wouldn't be unreasonable to see them\nincentivize collator nodes in some way, but the specific mechanism is completely up to parachain\nimplementers."}),"\n",(0,o.jsx)(t.h3,{id:"are-parachains-ephemeral-what-happens-when-a-parachain-fails-to-renew-its-coretime",children:"Are parachains ephemeral? What happens when a parachain fails to renew its coretime?"}),"\n",(0,o.jsxs)(t.p,{children:["Parachains are not ephemeral. As long as someone is keeping the data for a parachain, the parachain\ncan move between being a parachain, an\n",(0,o.jsx)(t.a,{href:"/docs/learn-parachains#on-demand-parachains",children:"on-demand parachain"}),", or a separate sovereign\nchain at different points of its lifetime. Especially with on-demand parachains, parachains can\nproduce blocks when their usage and throughput makes it necessary."]}),"\n",(0,o.jsxs)(t.p,{children:["When a parachain could not renew its bulk coretime and needs to keep its chain live, there are a\ncouple of options to consider. One option is to explore secondary coretime marketplaces on\n",(0,o.jsx)(t.a,{href:"https://www.lastic.xyz/",children:"Lastic"})," or ",(0,o.jsx)(t.a,{href:"https://app.regionx.tech/?network=polkadot",children:"RegionX"}),". The\nother option is run as an on-demand parachain, and purchase coretime to produce one block at a time.\nOn-demand parachains are still secured by the relay chain but don't need to hold a core and can\nproduce a block when it's economically feasible for them. For more information, please refer to the\n",(0,o.jsx)(t.a,{href:"/docs/learn-parachains#parachains-vs-on-demand-parachains",children:"parachains page"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"networking",children:"Networking"}),"\n",(0,o.jsx)(t.h3,{id:"what-is-libp2p",children:"What is libp2p?"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://libp2p.io",children:"Libp2p"})," is a modular and extensible networking stack that is used by IPFS,\nSubstrate, and many other projects. It is a collection of peer-to-peer protocols for finding peers\nand connecting to them. Its modules have logic for content routing, peer routing, peer discovery,\ndifferent transports, and NAT traversals. It is intended to be used by applications for building\nlarge scale peer-to-peer networks by only selecting the parts of the protocol suite that are needed."]}),"\n",(0,o.jsxs)(t.p,{children:["The Rust implementation of the specification was built and primarily maintained by a team of\ncontributors at Parity Technologies. The Go and JavaScript versions are maintained by Protocol Labs\nas well as community contributors. A ",(0,o.jsx)(t.a,{href:"https://github.com/status-im/nim-libp2p",children:"Nim"})," version of the\nlibrary also exists. Libp2p as a whole is an open source project that is actively developed and\nexpanded on various code repositories hosted on ",(0,o.jsx)(t.a,{href:"https://github.com/libp2p",children:"their GitHub"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"does-polkadot-use-libp2p",children:"Does Polkadot use libp2p?"}),"\n",(0,o.jsx)(t.p,{children:"Yes, since Polkadot is built with Substrate. Substrate uses a networking protocol that is based on\nlibp2p (specifically the Rust libp2p library). However, Substrate uses a mix of standard libp2p\nprotocols and protocols that are homegrown and not official libp2p standards. Of the standards\nprotocols, those which are shared with other implementations of libp2p such as IPFS, are\nconnection-checking (ping), asking for information on a peer (identity), and Kademlia random walks\n(kad)."}),"\n",(0,o.jsxs)(t.p,{children:["Of the protocols that are custom to Substrate, there are the legacy Substrate stream, a\nrequest-response for getting information on blocks (sync), a light client protocol, a notification\nprotocol for transactions, and block announcement. For detailed information on how Substrate uses\nlibp2p and the standard and custom protocols, please see the\n",(0,o.jsx)(t.a,{href:"https://paritytech.github.io/substrate/master/sc_network/index.html",children:"networking documentation"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"how-does-libp2p-differ-from-ipfs",children:"How does libp2p differ from IPFS?"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.a,{href:"https://ipfs.tech/",children:"Interplanetary File System"}),' (IPFS) is a peer-to-peer hypermedia protocol\nused primarily for storage of files. It allows one to upload a file onto the network and share it\nwith its content addressable URI. IPFS, like Substrate, is an application of libp2p and exists\nhigher on the technology stack. Although both IPFS and Substrate use libp2p, it cannot be said that\nSubstrate "uses" IPFS since besides sharing the underlying library for networking there is no native\nintegration between the two applications.']}),"\n",(0,o.jsx)(t.h2,{id:"kusama",children:"Kusama"}),"\n",(0,o.jsx)(t.h3,{id:"what-is-the-minimum-amount-of-ksm--dot-i-can-have-in-my-account",children:"What is the minimum amount of KSM / DOT I can have in my account?"}),"\n",(0,o.jsxs)(t.p,{children:["Please see information about ",(0,o.jsx)(t.a,{href:"/docs/build-protocol-info",children:"Existential Deposits"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"what-are-the-transfer-fees-for-kusama",children:"What are the transfer fees for Kusama?"}),"\n",(0,o.jsx)(t.p,{children:"It is important to note that the cost of transferring KSM is dynamic. Currently, the minimum cost of\ntransferring KSM is 0.01 KSM (the base fee), although this can be changed via governance. However,\nactual transaction fees vary based on a variety of factors. Specifically, fee calculation follows\nthe following formula:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{children:"base_fee + (tx_length * length_fee) + WeightToFee(weight)\n"})}),"\n",(0,o.jsxs)(t.p,{children:["Please see the\n",(0,o.jsx)(t.a,{href:"https://docs.substrate.io/reference/how-to-guides/weights/calculate-fees/",children:"fee calculation"})," page in\nthe Substrate documentation for more detailed information."]}),"\n",(0,o.jsx)(t.h2,{id:"answered-by-gav-series",children:"Answered by Gav series"}),"\n",(0,o.jsx)(t.p,{children:'The "Answered by Gav" series is a collection of posts uploaded to Reddit of questions that have been\nasked in the Polkadot Watercooler Riot channel and answered by Polkadot founder Gavin Wood.'}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/b87d96/answered_by_gav_reason_for_using_asynchronous/",children:"Reason for using asynchronous rather than synchronous communication? Difference in terms of TPS?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/b87awr/answered_by_gav_how_exactly_do_validators_in_an/",children:"How exactly do validators in an ETH parachain keep moving around and how is communication between zones trustless?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/b87bua/answered_by_gav_what_are_the_main_issues_with/",children:"What are the main issues with Bitcoin integration and will it ever be possible? Same problem with other POW chains? Is Polkadot only going to work with POS chains? How is it trust-less in comparison to Cosmos though?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/b87cjz/answered_by_gav_what_are_the_current_thoughts/",children:"What are the current thoughts around governance especially since projects have to be voted in to receive the parachains security?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/b87ds8/answered_by_gav_also_is_there_any_detailed/",children:"Also is there any detailed overview of how exactly a token transfer from ETH could be exchanged with another chain's currency?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/bcqrx9/answered_by_gav_can_i_run_multiple_validators/",children:"Can I run multiple Validators with the same Session Key?"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.reddit.com/r/dot/comments/bcqwit/answered_by_gav_how_to_tackle_the_concentration/",children:"How to tackle the concentration risk of Validators in data centers?"})}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},28453:(e,t,a)=>{a.d(t,{R:()=>s,x:()=>r});var n=a(96540);const o={},i=n.createContext(o);function s(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4d9b9869.68664c1d.js b/assets/js/4d9b9869.6262bfed.js similarity index 99% rename from assets/js/4d9b9869.68664c1d.js rename to assets/js/4d9b9869.6262bfed.js index 0638e733c7e..7dc3ce050cc 100644 --- a/assets/js/4d9b9869.68664c1d.js +++ b/assets/js/4d9b9869.6262bfed.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9550],{90986:(e,a,i)=>{i.r(a),i.d(a,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"learn/learn-parachains-protocol","title":"Security Protocol Overview","description":"Actors and Protocols involved in Polkadot and its Parachains\' Block Finality.","source":"@site/../docs/learn/learn-parachains-protocol.md","sourceDirName":"learn","slug":"/learn-parachains-protocol","permalink":"/docs/learn-parachains-protocol","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-parachains-protocol.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1731316364000,"frontMatter":{"id":"learn-parachains-protocol","title":"Security Protocol Overview","sidebar_label":"Security Protocol","description":"Actors and Protocols involved in Polkadot and its Parachains\' Block Finality.","keywords":["parachains","application-specific","sharding","protocol","validator","collator","nominator","AnV","availability","validity"],"slug":"../learn-parachains-protocol"},"sidebar":"docs","previous":{"title":"Consensus","permalink":"/docs/learn-consensus"},"next":{"title":"Pipelining","permalink":"/docs/learn-async-backing"}}');var t=i(74848),o=i(28453);const s={id:"learn-parachains-protocol",title:"Security Protocol Overview",sidebar_label:"Security Protocol",description:"Actors and Protocols involved in Polkadot and its Parachains' Block Finality.",keywords:["parachains","application-specific","sharding","protocol","validator","collator","nominator","AnV","availability","validity"],slug:"../learn-parachains-protocol"},r=void 0,l={},c=[{value:"Main Actors",id:"main-actors",level:2},{value:"Validators",id:"validators",level:3},{value:"Collators",id:"collators",level:3},{value:"Fishermen: Deprecated",id:"fishermen-deprecated",level:3},{value:"Protocols' Summary",id:"protocols-summary",level:2},{value:"Parachain Protocol",id:"parachain-protocol",level:3},{value:"Availability and Validity (AnV) Protocol",id:"availability-and-validity-anv-protocol",level:3},{value:"Inclusion Pipeline",id:"inclusion-pipeline",level:2},{value:"Overview",id:"overview",level:3},{value:"Parachain Phase",id:"parachain-phase",level:3},{value:"Relay Chain Submission Phase",id:"relay-chain-submission-phase",level:3},{value:"Availability and Unavailability Phase",id:"availability-and-unavailability-phase",level:3},{value:"Failure to Inclusion",id:"failure-to-inclusion",level:3},{value:"Approval Process",id:"approval-process",level:2},{value:"Overview",id:"overview-1",level:3},{value:"Assignments & Secondary Checks",id:"assignments--secondary-checks",level:3},{value:"Chain Selection",id:"chain-selection",level:3},{value:"Candidate Receipts",id:"candidate-receipts",level:2},{value:"Erasure Codes",id:"erasure-codes",level:2},{value:"Disputes",id:"disputes",level:2},{value:"Network Asynchrony",id:"network-asynchrony",level:2},{value:"Further Resources",id:"further-resources",level:2}];function h(e){const a={a:"a",admonition:"admonition",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(a.admonition,{type:"info",children:(0,t.jsxs)(a.p,{children:["This page is a summary of the\n",(0,t.jsxs)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-overview.html",children:["Protocol Overview chapter in ",(0,t.jsx)(a.strong,{children:"The Polkadot Parachain Host Implementer's Guide"})]}),"\nand the\n",(0,t.jsxs)(a.a,{href:"https://spec.polkadot.network/chapter-anv",children:["Availability and Validity (AnV) chapter in ",(0,t.jsx)(a.strong,{children:"The Polkadot Protocol Specification"})]}),"."]})}),"\n",(0,t.jsx)(a.p,{children:"The Parachains' Protocol aims to carry a parachain's block from authoring to inclusion through a\nprocess that can be carried out repeatedly and in parallel for each parachain connected to the Relay\nChain. The protocol allows the network to be efficiently sharded among parachains while maintaining\nstrong security guarantees. The Availability and Validity (AnV) Protocol describes the Parachain\nProtocol from the perspective of availability and validity. on)."}),"\n",(0,t.jsx)(a.h2,{id:"main-actors",children:"Main Actors"}),"\n",(0,t.jsx)(a.h3,{id:"validators",children:(0,t.jsx)(a.a,{href:"/docs/learn-validator",children:"Validators"})}),"\n",(0,t.jsxs)(a.p,{children:["They are responsible for validating the proposed parachain's blocks by checking the\n",(0,t.jsx)(a.strong,{children:"Proof-of-Validity"}),' (PoV) of the blocks and ensuring the PoV remains available for a designated\nperiod. They have "skin in the game", meaning they have funds bonded on-chain that can be partially\nor fully confiscated by the network in case of misbehavior.']}),"\n",(0,t.jsx)(a.h3,{id:"collators",children:(0,t.jsx)(a.a,{href:"/docs/learn-collator",children:"Collators"})}),"\n",(0,t.jsx)(a.p,{children:"They create the PoV that validators know how to check. Creating PoV requires familiarity with\ntransaction format and block authoring rules of a specific parachain, as well as having access to\nits full state."}),"\n",(0,t.jsx)(a.h3,{id:"fishermen-deprecated",children:"Fishermen: Deprecated"}),"\n",(0,t.jsxs)(a.p,{children:["Fishermen are not planned for formal implementation, despite previous proposals in the\n",(0,t.jsx)(a.a,{href:"/docs/learn-parachains-protocol#availability-and-validity-anv-protocol",children:"AnV protocol"}),"."]}),"\n",(0,t.jsx)(a.p,{children:"The idea behind Fishermen is that they are full nodes of parachains, like collators, but perform a\ndifferent role in relation to the network. Instead of packaging the state transitions and producing\nthe next parachain blocks as collators do, fishermen will watch this process and ensure no invalid\nstate transitions are included."}),"\n",(0,t.jsxs)(a.p,{children:["To address the motivation behind the Fishermen design consideration, the current\n",(0,t.jsx)(a.a,{href:"#assignments--secondary-checks",children:"secondary backing checkers"})," perform a similar role in relation to\nthe network. From a security standpoint, security is based on having at least one honest validator\neither among parachain validators or secondary checker (more about this later on)."]}),"\n",(0,t.jsx)(a.h2,{id:"protocols-summary",children:"Protocols' Summary"}),"\n",(0,t.jsx)(a.h3,{id:"parachain-protocol",children:"Parachain Protocol"}),"\n",(0,t.jsx)(a.p,{children:"The parachain protocol is divided into two main phases:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"#inclusion-pipeline",children:(0,t.jsx)(a.strong,{children:"Inclusion Pipeline"})}),": Collators send parachain blocks (parablocks) with\nPoV to Validators. Validators verify if the parablocks follow the state transition rules of the\nparachain and sign statements that can have a positive or negative outcome. With enough positive\nstatements, the block is ",(0,t.jsx)(a.strong,{children:"backed"})," and ",(0,t.jsx)(a.strong,{children:"included"})," in the relay chain, but is still pending\napproval."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"#approval-process",children:(0,t.jsx)(a.strong,{children:"Approval Process"})}),": Validators perform additional checks that, if positive,\nallow the parablock to be ",(0,t.jsx)(a.strong,{children:"approved"}),"."]}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"The figure below shows a representation of a parachain with collators and validators. The figure\nalso shows the journey of a parachain block (white square) through the Inclusion Pipeline and the\nApproval Process."}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"parachain-protocol-summary",src:i(67937).A+"",width:"1920",height:"800"})}),"\n",(0,t.jsx)(a.h3,{id:"availability-and-validity-anv-protocol",children:"Availability and Validity (AnV) Protocol"}),"\n",(0,t.jsxs)(a.p,{children:["The Availability and Validity (AnV) Protocol is a way of looking at the Parachain Protocol from\nanother perspective, emphasizing the importance of a parablock being available and valid before\nbeing included in the finalized relay chain. It is divided into five different phases, three within\nthe ",(0,t.jsx)(a.a,{href:"#inclusion-pipeline",children:"Inclusion Pipeline"})," and two within the\n",(0,t.jsx)(a.a,{href:"#approval-process",children:"Approval Process"}),":"]}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:"Inclusion Pipeline"}),"\n",(0,t.jsxs)(a.ol,{children:["\n",(0,t.jsx)(a.li,{children:(0,t.jsx)(a.a,{href:"#parachain-phase",children:"Parachain phase"})}),"\n",(0,t.jsx)(a.li,{children:(0,t.jsx)(a.a,{href:"#relay-chain-submission-phase",children:"Relay chain submission phase"})}),"\n",(0,t.jsx)(a.li,{children:(0,t.jsx)(a.a,{href:"#availability-and-unavailability-phase",children:"Availability and unavailability phase"})}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:"Approval Process"}),"\n",(0,t.jsxs)(a.ol,{children:["\n",(0,t.jsx)(a.li,{children:(0,t.jsx)(a.a,{href:"#assignments--secondary-checks",children:"Assignments and secondary (validity) checks"})}),"\n",(0,t.jsx)(a.li,{children:(0,t.jsx)(a.a,{href:"#chain-selection",children:"Chain Selection"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"In the Inclusion Pipeline, a parablock is made available (or unavailable), while in the Approval\nProcess a parablock is checked if it is valid or not."}),"\n",(0,t.jsx)(a.h2,{id:"inclusion-pipeline",children:"Inclusion Pipeline"}),"\n",(0,t.jsx)(a.h3,{id:"overview",children:"Overview"}),"\n",(0,t.jsx)(a.p,{children:"The inclusion pipeline is the path of a parachain block (or parablock) from its creation to its\ninclusion into the non-finalized relay chain (i.e. in a fork of the relay chain)."}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"parachain-inclusion-pipeline",src:i(45379).A+"",width:"1920",height:"800"})}),"\n",(0,t.jsx)(a.p,{children:"The figure above shows the path of a candidate block through the Inclusion pipeline. The block\nchanges its status through this path as follows:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"Candidate: A block with its PoV is put forward by a collator to a para-validator (in this case\nV1). The candidate block is shown as a white square with one white tick mark at the side (PoV from\nthe collator). Note the candidate is not valid yet and can still fail to be included in the Relay\nChain."}),"\n",(0,t.jsx)(a.li,{children:"Seconded: The block is put forward by the para-validator V1 to other para-validators (in this case\nV2 and V3). The seconded block is shown as a white square with a white tick mark and a yellow tick\nmark on top of it. The yellow mark show the PoV from para-validator V1."}),"\n",(0,t.jsx)(a.li,{children:"Backable: The block validity is attested by a majority of the para-validators. The backable block\nis shown as white square with a white tick mark and three yellow tick marks on top of it. The\nyellow marks show the PoV from the para-validators, while the white mark the PoV from the\ncollator."}),"\n",(0,t.jsx)(a.li,{children:'Backed: The block is backed and noted in a fork on the relay chain by a relay chain block author\n(in this case V4). The backed block is shown as a square with white background and yellow border\nenclosing a "B". The backed block can still fail to be included in the relay chain. Note that for\nsimplicity here the backed parachain block is represented within the relay chain block, but in\nreality a relay chain block does not contain the parablocks themselves (more about this later).'}),"\n",(0,t.jsx)(a.li,{children:"Pending availability: The block is backed but not considered available yet."}),"\n",(0,t.jsx)(a.li,{children:'Included: The block is backed and considered available (we have a parablock). Included parablocks\nare shown as square with white background and yellow border enclosing an "I".'}),"\n"]}),"\n",(0,t.jsx)(a.admonition,{title:"Asynchronous Backing",type:"info",children:(0,t.jsxs)(a.p,{children:["Parablocks' backing and inclusion take 12 seconds to be recorded on the relay chain, i.e. backing\nhappens in one relay chain block (6 seconds) and inclusion in another relay chain block (additional\n6 seconds, see Figure above). With ",(0,t.jsx)(a.a,{href:"/docs/learn-async-backing",children:(0,t.jsx)(a.strong,{children:"asynchronous backing"})}),", backing and\ninclusion can be recorded in just one relay chain block."]})}),"\n",(0,t.jsx)(a.h3,{id:"parachain-phase",children:"Parachain Phase"}),"\n",(0,t.jsxs)(a.p,{children:["In the parachain phase, some validators are assigned to parachains by the ",(0,t.jsx)(a.strong,{children:"Validator Assignment\nRoutine"})," (these validators are called para-validators). Para-validators establish a connection with\ncollators, which propose candidate blocks together with Proof-of-Validity (PoV) to para-validators\nvia the ",(0,t.jsx)(a.strong,{children:"Collator Distribution Subsystem"}),"."]}),"\n",(0,t.jsxs)(a.p,{children:["Para-validators participate in the ",(0,t.jsx)(a.strong,{children:"Candidate Backing Subsystem"}),". A para-validator needs to check\nif the candidate block follows the\n",(0,t.jsx)(a.a,{href:"/docs/learn-parachains#state-transitions",children:"state transition"})," rules of the parachain. Because\nstates are stored within Merkle trees, a para-validator can verify state transitions without having\naccess to the entire state, but it needs:"]}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"The block candidate (list of state transitions)"}),"\n",(0,t.jsx)(a.li,{children:"The values in the parachain's database that the block modifies"}),"\n",(0,t.jsx)(a.li,{children:"The hashes of the unaffected points in the Merkle tree"}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"This set of information is the proof-of-validity (PoV)."}),"\n",(0,t.jsxs)(a.p,{children:["Once a para-validator has the PoV, it gossips this information to the other para-validators, who\ncheck the candidate block against the PoV. Candidates that gather more than half of signed validity\nstatements are considered ",(0,t.jsx)(a.strong,{children:"backable"})," (i.e. they ",(0,t.jsx)(a.em,{children:"seem"})," to represent a valid state transition), and\ntheir backing is the set of signed statements. The para-validators can then start to construct the\n",(0,t.jsx)(a.a,{href:"#candidate-receipts",children:(0,t.jsx)(a.strong,{children:"candidate receipt"})})," (this is what goes into the relay chain block) and an\n",(0,t.jsx)(a.a,{href:"#erasure-codes",children:(0,t.jsx)(a.strong,{children:"erasure coding"})})," (this is what will make the parablock available, more on this\nlater on) that will be sent to all validators in the network."]}),"\n",(0,t.jsx)(a.admonition,{title:"Polkadot guarantees valid state transitions, not valid states",type:"info",children:(0,t.jsx)(a.p,{children:"Validators do not inspect every value in a parachain's state, only those that are modified. This\ninsures that the modification is valid."})}),"\n",(0,t.jsxs)(a.p,{children:["Previously, we said that backable blocks ",(0,t.jsx)(a.em,{children:"seem"})," to represent valid state transitions because\npara-validators are a small subset of all validators. Thus, it is possible to have the majority of\nthem dishonest. Later on, we will see that more validators with come in to help to make sure the\nparablock is fully valid."]}),"\n",(0,t.jsx)(a.h3,{id:"relay-chain-submission-phase",children:"Relay Chain Submission Phase"}),"\n",(0,t.jsxs)(a.p,{children:["The ",(0,t.jsx)(a.a,{href:"#candidate-receipts",children:"receipt"})," of the backable parablock is added to the relay chain transaction\nqueue together with other receipts from other parachains. Receipts are gossiped around, and when a\nrelay chain block author wins ",(0,t.jsx)(a.a,{href:"/docs/learn-consensus#block-production-babe",children:"BABE"})," slot leadership, it\nwill select a candidate receipt to include in a block on a fork of the relay chain."]}),"\n",(0,t.jsxs)(a.p,{children:["A block author can note up to 1 backable candidate for each parachain to be included in the Relay\nChain block alongside its backing. Once included in a fork of the relay chain the candidate is\nconsidered ",(0,t.jsx)(a.strong,{children:"backed"})," in that fork. The candidate is considered to be in ",(0,t.jsx)(a.strong,{children:'"pending availability"'}),"\nstatus, and it can only be considered a part of the parachain once proven available. Remember, at\nthis stage validators of the relay chain already received the\n",(0,t.jsx)(a.a,{href:"#erasure-codes",children:"erasure coding information"})," of that specific parablock."]}),"\n",(0,t.jsx)(a.h3,{id:"availability-and-unavailability-phase",children:"Availability and Unavailability Phase"}),"\n",(0,t.jsxs)(a.p,{children:["During the availability and unavailability phases, the validators will participate to ",(0,t.jsx)(a.strong,{children:"Availability\nDistribution Subsystem"})," to ensure availability of the candidate. They gossip the\n",(0,t.jsx)(a.a,{href:"#erasure-codes",children:"erasure coded"})," pieces among the network. At least 1/3 + 1 validators must report\nthat they possess their piece of the code word. Once this threshold of validators has been reached,\nthe network can consider the candidate block available. The block is graduated to being a full\nparachain block, and its header will be included in that fork of the relay chain. The information\nabout the candidate availability is noted in the subsequent relay chain blocks of that fork."]}),"\n",(0,t.jsxs)(a.p,{children:["The availability check by the block author ensures that the relay chain will only include blocks for\nwhich the validators distributed their erasure-coded chunks, but it does not guarantee their\nvalidity. Because the number of para-validators on each parachain is so low, collusion is a\nreasonable concern. By separating block production\n(",(0,t.jsx)(a.a,{href:"/docs/learn-consensus#block-production-babe",children:"BABE"}),") from finality\n(",(0,t.jsx)(a.a,{href:"./learn-consensus.md/#finality-gadget-grandpa",children:"GRANDPA"}),"), validators can perform extra validity\nchecks after a block is produced but before it is finalized."]}),"\n",(0,t.jsxs)(a.p,{children:['Thus, once the parablock is considered available and part of the parachain, it is still "pending\napproval". The Inclusion Pipeline must conclude for a specific parachain before a new block can be\naccepted on that parachain. After inclusion, the ',(0,t.jsx)(a.a,{href:"#approval-process",children:"Approval Process"})," starts and it\nmakes sure the block is valid, and it can run for many parachain blocks at once."]}),"\n",(0,t.jsx)(a.admonition,{title:"Data Availability - Erasure Codes of Parachain Blocks and PoVs",type:"info",children:(0,t.jsxs)(a.p,{children:["The erasure code chunks necessary for reconstructing parachain blocks and their respective\nProofs-of-Validity (PoV) are stored on the relay chain validator\u2019s hardware (disk) and made\navailable to the relay chain network for up to 24 hours. It is important to note that this data is\nneither stored within the relay chain blocks nor in the chain state. Only the root of those chunks\nis embedded within the ",(0,t.jsx)(a.a,{href:"#candidate-receipts",children:"candidate receipt"})," and is stored in the relay chain\nblocks."]})}),"\n",(0,t.jsx)(a.h3,{id:"failure-to-inclusion",children:"Failure to Inclusion"}),"\n",(0,t.jsx)(a.p,{children:"The candidate can fail to be included in the parachain in any of the following ways:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"The collator cannot propagate the block to any of the assigned validators."}),"\n",(0,t.jsx)(a.li,{children:"The candidate is not backed by validators participating in the Candidate Backing subsystem."}),"\n",(0,t.jsx)(a.li,{children:"A relay chain block author does not select the candidate."}),"\n",(0,t.jsx)(a.li,{children:"The candidate's PoV is not considered available within a timeout, and the block is discarded from\nthe relay chain."}),"\n"]}),"\n",(0,t.jsx)(a.h2,{id:"approval-process",children:"Approval Process"}),"\n",(0,t.jsx)(a.h3,{id:"overview-1",children:"Overview"}),"\n",(0,t.jsxs)(a.p,{children:['Once the parablock is considered available and part of the parachain, it is still "pending\napproval". At this stage, the parablock is tentatively included in the parachain, although more\nconfirmation is necessary. The validators assigned to the parachain (i.e. the parachain validators)\nare sampled from a validator set assumed to be 1/3 dishonest in the worst-case scenario. In this\ncase, it is likely that the majority of the random para-validators sampled for a specific parachain\nare dishonest and can back a candidate wrongly. To address this, the ',(0,t.jsx)(a.strong,{children:"Approval Process"})," allows\ndetecting misbehavior after the fact without allocating more para-validators, which would ultimately\nreduce the system's throughput. As a parablock can accept children blocks after being considered\navailable, failure to pass the approval process will invalidate the parablock and its descendants\n(children blocks). Only the validators who backed the block in question will be\n",(0,t.jsx)(a.a,{href:"/docs/learn-offenses",children:"slashed"}),", not those who backed the descendants."]}),"\n",(0,t.jsx)(a.p,{children:"The approval pipeline can be divided into the following steps:"}),"\n",(0,t.jsxs)(a.ol,{children:["\n",(0,t.jsxs)(a.li,{children:["Parablocks included by the Inclusion Pipeline are pending approval for a time window known as the\n",(0,t.jsx)(a.strong,{children:"secondary checking window"}),"."]}),"\n",(0,t.jsxs)(a.li,{children:["During the secondary checking window, validators (secondary checkers) randomly self-select based\non a ",(0,t.jsx)(a.a,{href:"./learn-cryptography#vrf",children:"VRF"})," lottery to perform secondary checks on each of the\nparablock."]}),"\n",(0,t.jsx)(a.li,{children:"Secondary checkers acquire the parablock with PoV (erasure codings are necessary to reconstruct\nPoV) and re-run the validation function."}),"\n",(0,t.jsx)(a.li,{children:"Secondary checkers gossip about the results of their checks. Contradictory results lead to an\nescalation in which all validators must check the block. The validators on the losing side will\nbe slashed."}),"\n",(0,t.jsx)(a.li,{children:"At the end of the process the parablock is either approved or rejected."}),"\n"]}),"\n",(0,t.jsxs)(a.p,{children:["The figure below shows the path of a parachain block when it exits the Inclusion Pipeline, and\nenters the Approval Process. The parablock becomes accepted when it is backed, available and\n",(0,t.jsx)(a.strong,{children:"undisputed"}),'. The parablock is checked a second time by a subset of validators (V5, V6 and V7),\nand if there are no contradictory results the block is approved and gossiped to other relay chain\nvalidators. Note the parablock after secondary checks is shown as a square with a white background a\nyellow border enclosing an "I" (stands for ',(0,t.jsx)(a.em,{children:"included"}),"), and three white ticks (one for each\nsecondary check). Approved para-blocks are shown as yellow squares."]}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"parachain-approval-process",src:i(60187).A+"",width:"1920",height:"800"})}),"\n",(0,t.jsx)(a.h3,{id:"assignments--secondary-checks",children:"Assignments & Secondary Checks"}),"\n",(0,t.jsxs)(a.p,{children:["Having a bad parablock on a fork of the relay chain is not catastrophic as long as the block is not\napproved and finalized by the finality gadget\n",(0,t.jsx)(a.a,{href:"./learn-consensus.md/#finality-gadget-grandpa",children:"GRANDPA"}),". If the block is not finalized, the fork on\nthe chain containing that block can be ignored in favor of another fork containing good blocks.\nDealing with a bad parablock includes the following stages:"]}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"Detection: the bad block must be detected by honest validators."}),"\n",(0,t.jsxs)(a.li,{children:["Escalation: the honest validators must start a ",(0,t.jsx)(a.a,{href:"#disputes",children:"dispute"}),"."]}),"\n",(0,t.jsxs)(a.li,{children:["Consequences: the backer for that parablock is ",(0,t.jsx)(a.a,{href:"/docs/learn-offenses",children:"slashed"}),"."]}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"The result of the dispute must be transplantable to all other forks so that malicious validators are\nslashed in all possible histories and so that honest validators will ignore any forks containing\nthat parablock."}),"\n",(0,t.jsx)(a.admonition,{title:"Parablocks vs. relay chain Blocks",type:"info",children:(0,t.jsx)(a.p,{children:"It is important to understand that a relay chain block does not contain parablocks, but\npara-headers. Parachain blocks are within the parachain. Thus, it makes more sense to think of relay\nchain blocks as having been approved instead of parablocks that have been approved. A relay chain\nblock containing information about approved parablocks can be considered approved as long as its\nparent relay chain block is also approved. Thus, the validity of a relay chain block depends on the\nvalidity of its ancestry."})}),"\n",(0,t.jsx)(a.p,{children:"Validators perform two main actions in the Approval Process:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#assignments",children:"Assignments"})}),"\ndetermine which validators perform approval checks on which candidates, ensuring each candidate\nreceives enough random checkers. This stage tracks approval votes to identify when\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#no-shows",children:"no-show"})," approval\nchecks take suspiciously long. It also tracks relay chain\n",(0,t.jsx)(a.a,{href:"/docs/learn-offenses#slash-for-equivocation",children:"equivocations"})," to determine when adversaries\npossibly gained foreknowledge about assignments and add more checks in those cases. Assignees\ndetermine their own assignments to check specific candidates using two or three\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#assignment-criteria",children:"assignment criteria"}),",\nwhich are based on two possible\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#stories",children:"stories"})," about the\nrelay chain block that included the candidate (i.e. declared the candidate available).\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#announcements--notices",children:"Assignment notices"}),"\nare gossiped among nodes so that all validators know which validators should check which\ncandidates, and if any candidate requires more checkers."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:"Approval checks"})," perform the checks by obtaining the candidate, verifying its validity, sending\nout the approval vote, or initiating a dispute. Approval checks have a no-show timeout window\n(i.e. longer than one relay chain slot) to succeed in reconstructing the candidate block, redo its\nerasure coding to check the candidate receipt, and recheck the candidate block itself. A validator\nbecomes tagged as a no-show if it does not approve or dispute within the no-show timeout window.\nBecause validators can be overloaded with assignments, they can intentionally delay sending their\nassignment notice to avoid creating no-shows (see more in\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#assignment-postponement",children:"Assignment postponement"}),")."]}),"\n"]}),"\n",(0,t.jsxs)(a.p,{children:["These two steps first run as off-chain consensus protocols using messages gossiped among all\nvalidators, and then as on-chain record of those protocols' progress. The on-chain protocol is\nneeded to provide rewards for the off-chain protocol. The\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#on-chain-verification",children:"on-chain verification"}),"\nhas two phases: a) assignments notices and approval votes are recorded in a relay chain block, and\nb) in another relay chain block notes are fed into the approval code."]}),"\n",(0,t.jsxs)(a.p,{children:["The gossiped messages are of two types, assignment notices, and approval votes, and are signed with\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#approval-keys",children:"approval keys"}),".\nSuch keys are part of the ",(0,t.jsx)(a.a,{href:"./learn-cryptography.md/#session-keys",children:"session keys"})," used by validators.\nBriefly, approval keys are:"]}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:"Approval assignment keys"})," that are sr25519 keys used only for assignment criteria\n",(0,t.jsx)(a.a,{href:"/docs/learn-cryptography#vrf",children:"VRF"}),"."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:"Approval vote keys"})," that are ed25519 and would only sign off on a candidate parablock validity."]}),"\n"]}),"\n",(0,t.jsx)(a.admonition,{type:"info",children:(0,t.jsxs)(a.p,{children:["For detailed information about the approval process, see dedicated section in\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html",children:"The Polkadot Parachain Host Implementers' Guide"}),"."]})}),"\n",(0,t.jsx)(a.p,{children:"Accepting a parablock is the result of having passed through the detection stage without dispute, or\nhaving passed through and escalation/dispute stage with a positive outcome."}),"\n",(0,t.jsx)(a.h3,{id:"chain-selection",children:"Chain Selection"}),"\n",(0,t.jsx)(a.p,{children:"After enough secondary checks have been performed on all candidate receipts within a block,\nvalidators can vote for that block (and all previous blocks) in GRANDPA. Once the block has more\nthan 2/3 of positive votes, the block is finalized on chain."}),"\n",(0,t.jsxs)(a.p,{children:["Chain selection is used to select blocks to build on and finalize. These processes need to\nconsistent among nodes and resilient to a maximum proportion of malicious nodes. The parachain host\nuses a block authoring system and a finality gadget. The chain selection strategy involves a\n",(0,t.jsx)(a.em,{children:(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-chain-selection.html",children:"leaf-selection rule"})}),"\nand a set of\n",(0,t.jsx)(a.em,{children:(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-chain-selection.html#the-best-chain-containing-rule",children:"finality constraints"})}),"."]}),"\n",(0,t.jsx)(a.admonition,{type:"info",children:(0,t.jsxs)(a.p,{children:["For detailed information about chain selection, see dedicated section in\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-chain-selection.html",children:"The Polkadot Parachain Host Implementers' Guide"}),"."]})}),"\n",(0,t.jsx)(a.h2,{id:"candidate-receipts",children:"Candidate Receipts"}),"\n",(0,t.jsx)(a.p,{children:"PoV are typically between 1 MB and 10 MB in size and are not included in the relay chain blocks. For\nPolkadot to scale to hundreds of parachains, PoV need to be represented by something smaller on the\nrelay chain: candidate receipts. A para-validator constructs a candidate receipt for a parachain\nblock by signing:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"The parachain ID."}),"\n",(0,t.jsx)(a.li,{children:"The collator's ID and signature."}),"\n",(0,t.jsx)(a.li,{children:"A hash of the parent block's candidate receipt."}),"\n",(0,t.jsx)(a.li,{children:"A Merkle root of the block's erasure-coded pieces."}),"\n",(0,t.jsx)(a.li,{children:"A Merkle root of any outgoing messages."}),"\n",(0,t.jsx)(a.li,{children:"A hash of the block."}),"\n",(0,t.jsx)(a.li,{children:"The state root of the parachain before block execution."}),"\n",(0,t.jsx)(a.li,{children:"The state root of the parachain after block execution."}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"This information is of constant size, while the actual PoV block of the parachain can be variable\nlength. It is enough information for anyone that obtains the full PoV block to verify the state\ntransition contained inside of it."}),"\n",(0,t.jsx)(a.h2,{id:"erasure-codes",children:"Erasure Codes"}),"\n",(0,t.jsx)(a.p,{children:"Before sending the candidate receipt to the relay chain transaction queue, the para-validator who\nconstructs the receipt must also construct an erasure coding of the parachain block."}),"\n",(0,t.jsx)(a.p,{children:"An erasure coding takes a message (in this case, the parachain block and PoV) and creates a set of\nsmaller messages such that you can reconstruct the original message by obtaining a fraction of the\nsmaller messages. In the case of Polkadot, the total number of smaller messages is equal to the\ntotal number of validators and the fraction is 1/3."}),"\n",(0,t.jsx)(a.p,{children:"The para-validator creates the erasure coding chunks, puts them into their Merkle tree, and sends\nout each chunk (together with the candidate receipt) to a corresponding validator on the Relay\nChain. Validators who receive the receipts with an erasure coding chunk will include the receipt in\nthe relay chain queue, where an author can include it in a block."}),"\n",(0,t.jsxs)(a.p,{children:["The type of erasure codes used by Polkadot's availability scheme are\n",(0,t.jsx)(a.a,{href:"https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction",children:"Reed-Solomon"})," codes, which\nalready enjoy a battle-tested application in technology outside the blockchain industry. One example\nis found in the compact disk industry. CDs use Reed-Solomon codes to correct any missing data due to\ninconsistencies on the disk face such as dust particles or scratches."]}),"\n",(0,t.jsx)(a.p,{children:"In Polkadot, the erasure codes are used to keep parachain state available to the system without\nrequiring all validators to keep tabs on all the parachains. Instead, validators share smaller\npieces of the data and can later reconstruct the entire data under the assumption that 1/3+1 of the\nvalidators can provide their pieces of the data."}),"\n",(0,t.jsx)(a.admonition,{type:"note",children:(0,t.jsx)(a.p,{children:"The 1/3+1 threshold of validators that must be responsive to construct the full parachain state data\ncorresponds to Polkadot's security assumption about Byzantine nodes."})}),"\n",(0,t.jsx)(a.h2,{id:"disputes",children:"Disputes"}),"\n",(0,t.jsx)(a.p,{children:"All parachain blocks that are in the finalized relay chain should be valid. This does not apply to\nbacked blocks that are not included. To ensure nothing invalid ends up in the finalized relay chain,\nthere are approval checks (described above) and disputes. The latter ensures that each attempt to\ninclude something invalid is caught and the offending validators are punished."}),"\n",(0,t.jsxs)(a.p,{children:["False positives can happen; those actors responsible for it will be ",(0,t.jsx)(a.a,{href:"/docs/learn-offenses",children:"slashed"}),".\nTo detect false positives, PoV information must be available after the block has been included to\nthe relay chain via the ",(0,t.jsx)(a.a,{href:"#availability-and-unavailability-phase",children:"availability scheme"}),"."]}),"\n",(0,t.jsxs)(a.p,{children:["Disputes are ",(0,t.jsx)(a.em,{children:"independent from a particular fork"}),", while backing and approval operate on particular\nforks. The approval voting stops if an alternative fork (which might not contain the\ncurrently-approved candidate) is finalized. The sole purpose of the approval process is to make sure\ninvalid blocks are not finalized. However, even though the danger is past and the offending\nvalidators did not manage to get the invalid block approved, those validators need to get slashed\nfor the attempt."]}),"\n",(0,t.jsx)(a.p,{children:"A dispute stems from a disagreement between two or more validators. For this to happen, a bad actor\nneeds to distribute an invalid block to honest validators. Scenarios leading to a dispute can be one\nof the followings (ordered from most to least important):"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"A parablock included on a branch of the relay chain is bad"}),"\n",(0,t.jsx)(a.li,{children:"A parablock backed on a branch of the relay chain is bad"}),"\n",(0,t.jsx)(a.li,{children:"A parablock seconded, but not backed on any branch of the relay chain, is bad"}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"Checking a parachain block requires three pieces of data: the parachain validator code, the\navailability of data, and the candidate receipt. The validator code is available on-chain and\npublished ahead of time. Thus, a dispute process begins with the availability to ensure the\navailability of the data. Such a process will conclude quickly if the data is already available,\notherwise, the initiator of the dispute must make it available."}),"\n",(0,t.jsxs)(a.p,{children:["Disputes have both off- and on-chain components. Slashing is handled on-chain, so votes by\nvalidators on either side of the dispute must be placed on-chain. Moreover, a dispute on one branch\nof the chain must be transposed to all active branches so that misbehavior can be punished in all\npossible histories. There is, thus, a distinction between ",(0,t.jsx)(a.em,{children:"local"})," (the one we are looking at) and\n",(0,t.jsx)(a.em,{children:"remote"})," disputes relative to a particular branch of the relay chain."]}),"\n",(0,t.jsx)(a.p,{children:"Disputes can be divided into three different phases:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-disputes.html#initiation",children:"Dispute initiation"}),":\nDisputes are initiated by any validator who finds their opinion on the validity of a parablock in\nopposition to another issued statement. The initiation begins off-chain by only nodes perceiving\nthat a parablock is bad. The validator can be one of the para-validators (i.e. one of the backers)\nor one of the approval checkers. Note that if the dispute occurs during the backing phase, the\ninitiator must make the data available while if the dispute occurs during the approval process the\ndata is already available."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-disputes.html#dispute-participation",children:"Dispute participation"}),":\nOnce becoming aware of the dispute, all validators must participate."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-disputes.html#dispute-conclusion",children:"Dispute conclusion"}),":\nDisputes conclude after a 2/3 supermajority is reached on either side. Disputes may also conclude\nafter a timeout. This will only happen if the majority of validators are unable to vote for some\nreason."]}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"The on-chain component of the dispute can be initiated by providing any two conflicting votes and it\nalso waits for a 2/3 supermajority on either side. The component also tracks which parablocks have\nalready been disputed so that the same parablock can be disputed only once on any branch of the\nrelay chain. Inclusion is halted for the parachain until the dispute resolves."}),"\n",(0,t.jsx)(a.admonition,{type:"info",children:(0,t.jsxs)(a.p,{children:["For detailed information about disputes, see dedicated section in\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-disputes.html",children:"The Polkadot Parachain Host Implementers' Guide"}),".\nIn the Guide, there are also more details about\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/disputes-flow.html",children:"disputes' flows"}),"."]})}),"\n",(0,t.jsx)(a.h2,{id:"network-asynchrony",children:"Network Asynchrony"}),"\n",(0,t.jsxs)(a.p,{children:["We have mentioned how a relay chain block author must select the candidate and note it on the Relay\nChain (we say the block is backed). The relay chain block author is selected by\n",(0,t.jsx)(a.a,{href:"/docs/learn-consensus#block-production-babe",children:"BABE"}),", which is a forkful algorithm. This means that\ndifferent block authors are chosen at the same time, and they may not work on the same block parent\n(i.e. the representations in the previous figures are simplistic). Also, the sets of validators and\nparachains are not fixed, and the validators' assignments to parachains is also flexible."]}),"\n",(0,t.jsxs)(a.p,{children:["We say that the network is ",(0,t.jsx)(a.strong,{children:"asynchronous"})," since there will be validators who have received a block\nand other validators who did not. Thus, the network is variable, and it exists in multiple states.\nIn the figure below (",(0,t.jsx)(a.em,{children:"left"}),"), Group 1 received block C while Group 2 did not due to network\nasynchrony. Validators in Group 2 can build another block on top of B, called C'. Assume that\nafterward, some validators become aware of both C and C' while others remain aware of one of them\n(",(0,t.jsx)(a.em,{children:"right"}),"). Validators in Group 3 must be aware of the network state in each head (C and C\u2019), and\nthey may contribute to some or full extent on both. It is possible that due to network asynchrony,\ntwo forks may grow in parallel for some time, but eventually, one fork will be chosen by the\nfinality gadget. In the absence of an adversarial network, it is unlikely that two forks will\ncoexist for some time as there will be validators aware of both chain heads."]}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"parachain-forks",src:i(76091).A+"",width:"1920",height:"800"})}),"\n",(0,t.jsx)(a.h2,{id:"further-resources",children:"Further Resources"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"https://polkadot.network/the-path-of-a-parachain-block/",children:"Path of a Parachain Block"})," - Article by\nParity analyst Joe Petrowski expounds on the validity checks that a parachain block must pass in\norder to progress the parachain."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"https://github.com/w3f/research/tree/85cd4adfccb7d435f21cd9fd249cd1b7f5167537/docs/papers/AnV",children:"Availability and Validity"})," -\nPaper by the W3F Research Team that specifies the availability and validity protocol in detail."]}),"\n"]})]})}function d(e={}){const{wrapper:a}={...(0,o.R)(),...e.components};return a?(0,t.jsx)(a,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},60187:(e,a,i)=>{i.d(a,{A:()=>n});const n=i.p+"assets/images/parachain-approval-process-a025570e14282288fee420715c4e3030.png"},76091:(e,a,i)=>{i.d(a,{A:()=>n});const n=i.p+"assets/images/parachain-forks-b3d4a4e9161292fb63e1b86888a18579.png"},45379:(e,a,i)=>{i.d(a,{A:()=>n});const n=i.p+"assets/images/parachain-inclusion-pipeline-134e3949a7f607efc561d4992b52767c.png"},67937:(e,a,i)=>{i.d(a,{A:()=>n});const n=i.p+"assets/images/parachain-protocol-summary-7c052aadda3eee685f56bcc65d59fc71.png"},28453:(e,a,i)=>{i.d(a,{R:()=>s,x:()=>r});var n=i(96540);const t={},o=n.createContext(t);function s(e){const a=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(a):{...a,...e}}),[a,e])}function r(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),n.createElement(o.Provider,{value:a},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9550],{90986:(e,a,i)=>{i.r(a),i.d(a,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"learn/learn-parachains-protocol","title":"Security Protocol Overview","description":"Actors and Protocols involved in Polkadot and its Parachains\' Block Finality.","source":"@site/../docs/learn/learn-parachains-protocol.md","sourceDirName":"learn","slug":"/learn-parachains-protocol","permalink":"/docs/learn-parachains-protocol","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-parachains-protocol.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1734535671000,"frontMatter":{"id":"learn-parachains-protocol","title":"Security Protocol Overview","sidebar_label":"Security Protocol","description":"Actors and Protocols involved in Polkadot and its Parachains\' Block Finality.","keywords":["parachains","application-specific","sharding","protocol","validator","collator","nominator","AnV","availability","validity"],"slug":"../learn-parachains-protocol"},"sidebar":"docs","previous":{"title":"Consensus","permalink":"/docs/learn-consensus"},"next":{"title":"Pipelining","permalink":"/docs/learn-async-backing"}}');var t=i(74848),o=i(28453);const s={id:"learn-parachains-protocol",title:"Security Protocol Overview",sidebar_label:"Security Protocol",description:"Actors and Protocols involved in Polkadot and its Parachains' Block Finality.",keywords:["parachains","application-specific","sharding","protocol","validator","collator","nominator","AnV","availability","validity"],slug:"../learn-parachains-protocol"},r=void 0,l={},c=[{value:"Main Actors",id:"main-actors",level:2},{value:"Validators",id:"validators",level:3},{value:"Collators",id:"collators",level:3},{value:"Fishermen: Deprecated",id:"fishermen-deprecated",level:3},{value:"Protocols' Summary",id:"protocols-summary",level:2},{value:"Parachain Protocol",id:"parachain-protocol",level:3},{value:"Availability and Validity (AnV) Protocol",id:"availability-and-validity-anv-protocol",level:3},{value:"Inclusion Pipeline",id:"inclusion-pipeline",level:2},{value:"Overview",id:"overview",level:3},{value:"Parachain Phase",id:"parachain-phase",level:3},{value:"Relay Chain Submission Phase",id:"relay-chain-submission-phase",level:3},{value:"Availability and Unavailability Phase",id:"availability-and-unavailability-phase",level:3},{value:"Failure to Inclusion",id:"failure-to-inclusion",level:3},{value:"Approval Process",id:"approval-process",level:2},{value:"Overview",id:"overview-1",level:3},{value:"Assignments & Secondary Checks",id:"assignments--secondary-checks",level:3},{value:"Chain Selection",id:"chain-selection",level:3},{value:"Candidate Receipts",id:"candidate-receipts",level:2},{value:"Erasure Codes",id:"erasure-codes",level:2},{value:"Disputes",id:"disputes",level:2},{value:"Network Asynchrony",id:"network-asynchrony",level:2},{value:"Further Resources",id:"further-resources",level:2}];function h(e){const a={a:"a",admonition:"admonition",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(a.admonition,{type:"info",children:(0,t.jsxs)(a.p,{children:["This page is a summary of the\n",(0,t.jsxs)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-overview.html",children:["Protocol Overview chapter in ",(0,t.jsx)(a.strong,{children:"The Polkadot Parachain Host Implementer's Guide"})]}),"\nand the\n",(0,t.jsxs)(a.a,{href:"https://spec.polkadot.network/chapter-anv",children:["Availability and Validity (AnV) chapter in ",(0,t.jsx)(a.strong,{children:"The Polkadot Protocol Specification"})]}),"."]})}),"\n",(0,t.jsx)(a.p,{children:"The Parachains' Protocol aims to carry a parachain's block from authoring to inclusion through a\nprocess that can be carried out repeatedly and in parallel for each parachain connected to the Relay\nChain. The protocol allows the network to be efficiently sharded among parachains while maintaining\nstrong security guarantees. The Availability and Validity (AnV) Protocol describes the Parachain\nProtocol from the perspective of availability and validity. on)."}),"\n",(0,t.jsx)(a.h2,{id:"main-actors",children:"Main Actors"}),"\n",(0,t.jsx)(a.h3,{id:"validators",children:(0,t.jsx)(a.a,{href:"/docs/learn-validator",children:"Validators"})}),"\n",(0,t.jsxs)(a.p,{children:["They are responsible for validating the proposed parachain's blocks by checking the\n",(0,t.jsx)(a.strong,{children:"Proof-of-Validity"}),' (PoV) of the blocks and ensuring the PoV remains available for a designated\nperiod. They have "skin in the game", meaning they have funds bonded on-chain that can be partially\nor fully confiscated by the network in case of misbehavior.']}),"\n",(0,t.jsx)(a.h3,{id:"collators",children:(0,t.jsx)(a.a,{href:"/docs/learn-collator",children:"Collators"})}),"\n",(0,t.jsx)(a.p,{children:"They create the PoV that validators know how to check. Creating PoV requires familiarity with\ntransaction format and block authoring rules of a specific parachain, as well as having access to\nits full state."}),"\n",(0,t.jsx)(a.h3,{id:"fishermen-deprecated",children:"Fishermen: Deprecated"}),"\n",(0,t.jsxs)(a.p,{children:["Fishermen are not planned for formal implementation, despite previous proposals in the\n",(0,t.jsx)(a.a,{href:"/docs/learn-parachains-protocol#availability-and-validity-anv-protocol",children:"AnV protocol"}),"."]}),"\n",(0,t.jsx)(a.p,{children:"The idea behind Fishermen is that they are full nodes of parachains, like collators, but perform a\ndifferent role in relation to the network. Instead of packaging the state transitions and producing\nthe next parachain blocks as collators do, fishermen will watch this process and ensure no invalid\nstate transitions are included."}),"\n",(0,t.jsxs)(a.p,{children:["To address the motivation behind the Fishermen design consideration, the current\n",(0,t.jsx)(a.a,{href:"#assignments--secondary-checks",children:"secondary backing checkers"})," perform a similar role in relation to\nthe network. From a security standpoint, security is based on having at least one honest validator\neither among parachain validators or secondary checker (more about this later on)."]}),"\n",(0,t.jsx)(a.h2,{id:"protocols-summary",children:"Protocols' Summary"}),"\n",(0,t.jsx)(a.h3,{id:"parachain-protocol",children:"Parachain Protocol"}),"\n",(0,t.jsx)(a.p,{children:"The parachain protocol is divided into two main phases:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"#inclusion-pipeline",children:(0,t.jsx)(a.strong,{children:"Inclusion Pipeline"})}),": Collators send parachain blocks (parablocks) with\nPoV to Validators. Validators verify if the parablocks follow the state transition rules of the\nparachain and sign statements that can have a positive or negative outcome. With enough positive\nstatements, the block is ",(0,t.jsx)(a.strong,{children:"backed"})," and ",(0,t.jsx)(a.strong,{children:"included"})," in the relay chain, but is still pending\napproval."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"#approval-process",children:(0,t.jsx)(a.strong,{children:"Approval Process"})}),": Validators perform additional checks that, if positive,\nallow the parablock to be ",(0,t.jsx)(a.strong,{children:"approved"}),"."]}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"The figure below shows a representation of a parachain with collators and validators. The figure\nalso shows the journey of a parachain block (white square) through the Inclusion Pipeline and the\nApproval Process."}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"parachain-protocol-summary",src:i(67937).A+"",width:"1920",height:"800"})}),"\n",(0,t.jsx)(a.h3,{id:"availability-and-validity-anv-protocol",children:"Availability and Validity (AnV) Protocol"}),"\n",(0,t.jsxs)(a.p,{children:["The Availability and Validity (AnV) Protocol is a way of looking at the Parachain Protocol from\nanother perspective, emphasizing the importance of a parablock being available and valid before\nbeing included in the finalized relay chain. It is divided into five different phases, three within\nthe ",(0,t.jsx)(a.a,{href:"#inclusion-pipeline",children:"Inclusion Pipeline"})," and two within the\n",(0,t.jsx)(a.a,{href:"#approval-process",children:"Approval Process"}),":"]}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:"Inclusion Pipeline"}),"\n",(0,t.jsxs)(a.ol,{children:["\n",(0,t.jsx)(a.li,{children:(0,t.jsx)(a.a,{href:"#parachain-phase",children:"Parachain phase"})}),"\n",(0,t.jsx)(a.li,{children:(0,t.jsx)(a.a,{href:"#relay-chain-submission-phase",children:"Relay chain submission phase"})}),"\n",(0,t.jsx)(a.li,{children:(0,t.jsx)(a.a,{href:"#availability-and-unavailability-phase",children:"Availability and unavailability phase"})}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:"Approval Process"}),"\n",(0,t.jsxs)(a.ol,{children:["\n",(0,t.jsx)(a.li,{children:(0,t.jsx)(a.a,{href:"#assignments--secondary-checks",children:"Assignments and secondary (validity) checks"})}),"\n",(0,t.jsx)(a.li,{children:(0,t.jsx)(a.a,{href:"#chain-selection",children:"Chain Selection"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"In the Inclusion Pipeline, a parablock is made available (or unavailable), while in the Approval\nProcess a parablock is checked if it is valid or not."}),"\n",(0,t.jsx)(a.h2,{id:"inclusion-pipeline",children:"Inclusion Pipeline"}),"\n",(0,t.jsx)(a.h3,{id:"overview",children:"Overview"}),"\n",(0,t.jsx)(a.p,{children:"The inclusion pipeline is the path of a parachain block (or parablock) from its creation to its\ninclusion into the non-finalized relay chain (i.e. in a fork of the relay chain)."}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"parachain-inclusion-pipeline",src:i(45379).A+"",width:"1920",height:"800"})}),"\n",(0,t.jsx)(a.p,{children:"The figure above shows the path of a candidate block through the Inclusion pipeline. The block\nchanges its status through this path as follows:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"Candidate: A block with its PoV is put forward by a collator to a para-validator (in this case\nV1). The candidate block is shown as a white square with one white tick mark at the side (PoV from\nthe collator). Note the candidate is not valid yet and can still fail to be included in the Relay\nChain."}),"\n",(0,t.jsx)(a.li,{children:"Seconded: The block is put forward by the para-validator V1 to other para-validators (in this case\nV2 and V3). The seconded block is shown as a white square with a white tick mark and a yellow tick\nmark on top of it. The yellow mark show the PoV from para-validator V1."}),"\n",(0,t.jsx)(a.li,{children:"Backable: The block validity is attested by a majority of the para-validators. The backable block\nis shown as white square with a white tick mark and three yellow tick marks on top of it. The\nyellow marks show the PoV from the para-validators, while the white mark the PoV from the\ncollator."}),"\n",(0,t.jsx)(a.li,{children:'Backed: The block is backed and noted in a fork on the relay chain by a relay chain block author\n(in this case V4). The backed block is shown as a square with white background and yellow border\nenclosing a "B". The backed block can still fail to be included in the relay chain. Note that for\nsimplicity here the backed parachain block is represented within the relay chain block, but in\nreality a relay chain block does not contain the parablocks themselves (more about this later).'}),"\n",(0,t.jsx)(a.li,{children:"Pending availability: The block is backed but not considered available yet."}),"\n",(0,t.jsx)(a.li,{children:'Included: The block is backed and considered available (we have a parablock). Included parablocks\nare shown as square with white background and yellow border enclosing an "I".'}),"\n"]}),"\n",(0,t.jsx)(a.admonition,{title:"Asynchronous Backing",type:"info",children:(0,t.jsxs)(a.p,{children:["Parablocks' backing and inclusion take 12 seconds to be recorded on the relay chain, i.e. backing\nhappens in one relay chain block (6 seconds) and inclusion in another relay chain block (additional\n6 seconds, see Figure above). With ",(0,t.jsx)(a.a,{href:"/docs/learn-async-backing",children:(0,t.jsx)(a.strong,{children:"asynchronous backing"})}),", backing and\ninclusion can be recorded in just one relay chain block."]})}),"\n",(0,t.jsx)(a.h3,{id:"parachain-phase",children:"Parachain Phase"}),"\n",(0,t.jsxs)(a.p,{children:["In the parachain phase, some validators are assigned to parachains by the ",(0,t.jsx)(a.strong,{children:"Validator Assignment\nRoutine"})," (these validators are called para-validators). Para-validators establish a connection with\ncollators, which propose candidate blocks together with Proof-of-Validity (PoV) to para-validators\nvia the ",(0,t.jsx)(a.strong,{children:"Collator Distribution Subsystem"}),"."]}),"\n",(0,t.jsxs)(a.p,{children:["Para-validators participate in the ",(0,t.jsx)(a.strong,{children:"Candidate Backing Subsystem"}),". A para-validator needs to check\nif the candidate block follows the\n",(0,t.jsx)(a.a,{href:"/docs/learn-parachains#state-transitions",children:"state transition"})," rules of the parachain. Because\nstates are stored within Merkle trees, a para-validator can verify state transitions without having\naccess to the entire state, but it needs:"]}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"The block candidate (list of state transitions)"}),"\n",(0,t.jsx)(a.li,{children:"The values in the parachain's database that the block modifies"}),"\n",(0,t.jsx)(a.li,{children:"The hashes of the unaffected points in the Merkle tree"}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"This set of information is the proof-of-validity (PoV)."}),"\n",(0,t.jsxs)(a.p,{children:["Once a para-validator has the PoV, it gossips this information to the other para-validators, who\ncheck the candidate block against the PoV. Candidates that gather more than half of signed validity\nstatements are considered ",(0,t.jsx)(a.strong,{children:"backable"})," (i.e. they ",(0,t.jsx)(a.em,{children:"seem"})," to represent a valid state transition), and\ntheir backing is the set of signed statements. The para-validators can then start to construct the\n",(0,t.jsx)(a.a,{href:"#candidate-receipts",children:(0,t.jsx)(a.strong,{children:"candidate receipt"})})," (this is what goes into the relay chain block) and an\n",(0,t.jsx)(a.a,{href:"#erasure-codes",children:(0,t.jsx)(a.strong,{children:"erasure coding"})})," (this is what will make the parablock available, more on this\nlater on) that will be sent to all validators in the network."]}),"\n",(0,t.jsx)(a.admonition,{title:"Polkadot guarantees valid state transitions, not valid states",type:"info",children:(0,t.jsx)(a.p,{children:"Validators do not inspect every value in a parachain's state, only those that are modified. This\ninsures that the modification is valid."})}),"\n",(0,t.jsxs)(a.p,{children:["Previously, we said that backable blocks ",(0,t.jsx)(a.em,{children:"seem"})," to represent valid state transitions because\npara-validators are a small subset of all validators. Thus, it is possible to have the majority of\nthem dishonest. Later on, we will see that more validators with come in to help to make sure the\nparablock is fully valid."]}),"\n",(0,t.jsx)(a.h3,{id:"relay-chain-submission-phase",children:"Relay Chain Submission Phase"}),"\n",(0,t.jsxs)(a.p,{children:["The ",(0,t.jsx)(a.a,{href:"#candidate-receipts",children:"receipt"})," of the backable parablock is added to the relay chain transaction\nqueue together with other receipts from other parachains. Receipts are gossiped around, and when a\nrelay chain block author wins ",(0,t.jsx)(a.a,{href:"/docs/learn-consensus#block-production-babe",children:"BABE"})," slot leadership, it\nwill select a candidate receipt to include in a block on a fork of the relay chain."]}),"\n",(0,t.jsxs)(a.p,{children:["A block author can note up to 1 backable candidate for each parachain to be included in the Relay\nChain block alongside its backing. Once included in a fork of the relay chain the candidate is\nconsidered ",(0,t.jsx)(a.strong,{children:"backed"})," in that fork. The candidate is considered to be in ",(0,t.jsx)(a.strong,{children:'"pending availability"'}),"\nstatus, and it can only be considered a part of the parachain once proven available. Remember, at\nthis stage validators of the relay chain already received the\n",(0,t.jsx)(a.a,{href:"#erasure-codes",children:"erasure coding information"})," of that specific parablock."]}),"\n",(0,t.jsx)(a.h3,{id:"availability-and-unavailability-phase",children:"Availability and Unavailability Phase"}),"\n",(0,t.jsxs)(a.p,{children:["During the availability and unavailability phases, the validators will participate to ",(0,t.jsx)(a.strong,{children:"Availability\nDistribution Subsystem"})," to ensure availability of the candidate. They gossip the\n",(0,t.jsx)(a.a,{href:"#erasure-codes",children:"erasure coded"})," pieces among the network. At least 1/3 + 1 validators must report\nthat they possess their piece of the code word. Once this threshold of validators has been reached,\nthe network can consider the candidate block available. The block is graduated to being a full\nparachain block, and its header will be included in that fork of the relay chain. The information\nabout the candidate availability is noted in the subsequent relay chain blocks of that fork."]}),"\n",(0,t.jsxs)(a.p,{children:["The availability check by the block author ensures that the relay chain will only include blocks for\nwhich the validators distributed their erasure-coded chunks, but it does not guarantee their\nvalidity. Because the number of para-validators on each parachain is so low, collusion is a\nreasonable concern. By separating block production\n(",(0,t.jsx)(a.a,{href:"/docs/learn-consensus#block-production-babe",children:"BABE"}),") from finality\n(",(0,t.jsx)(a.a,{href:"/docs/learn-consensus#finality-gadget-grandpa",children:"GRANDPA"}),"), validators can perform extra validity\nchecks after a block is produced but before it is finalized."]}),"\n",(0,t.jsxs)(a.p,{children:['Thus, once the parablock is considered available and part of the parachain, it is still "pending\napproval". The Inclusion Pipeline must conclude for a specific parachain before a new block can be\naccepted on that parachain. After inclusion, the ',(0,t.jsx)(a.a,{href:"#approval-process",children:"Approval Process"})," starts and it\nmakes sure the block is valid, and it can run for many parachain blocks at once."]}),"\n",(0,t.jsx)(a.admonition,{title:"Data Availability - Erasure Codes of Parachain Blocks and PoVs",type:"info",children:(0,t.jsxs)(a.p,{children:["The erasure code chunks necessary for reconstructing parachain blocks and their respective\nProofs-of-Validity (PoV) are stored on the relay chain validator\u2019s hardware (disk) and made\navailable to the relay chain network for up to 24 hours. It is important to note that this data is\nneither stored within the relay chain blocks nor in the chain state. Only the root of those chunks\nis embedded within the ",(0,t.jsx)(a.a,{href:"#candidate-receipts",children:"candidate receipt"})," and is stored in the relay chain\nblocks."]})}),"\n",(0,t.jsx)(a.h3,{id:"failure-to-inclusion",children:"Failure to Inclusion"}),"\n",(0,t.jsx)(a.p,{children:"The candidate can fail to be included in the parachain in any of the following ways:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"The collator cannot propagate the block to any of the assigned validators."}),"\n",(0,t.jsx)(a.li,{children:"The candidate is not backed by validators participating in the Candidate Backing subsystem."}),"\n",(0,t.jsx)(a.li,{children:"A relay chain block author does not select the candidate."}),"\n",(0,t.jsx)(a.li,{children:"The candidate's PoV is not considered available within a timeout, and the block is discarded from\nthe relay chain."}),"\n"]}),"\n",(0,t.jsx)(a.h2,{id:"approval-process",children:"Approval Process"}),"\n",(0,t.jsx)(a.h3,{id:"overview-1",children:"Overview"}),"\n",(0,t.jsxs)(a.p,{children:['Once the parablock is considered available and part of the parachain, it is still "pending\napproval". At this stage, the parablock is tentatively included in the parachain, although more\nconfirmation is necessary. The validators assigned to the parachain (i.e. the parachain validators)\nare sampled from a validator set assumed to be 1/3 dishonest in the worst-case scenario. In this\ncase, it is likely that the majority of the random para-validators sampled for a specific parachain\nare dishonest and can back a candidate wrongly. To address this, the ',(0,t.jsx)(a.strong,{children:"Approval Process"})," allows\ndetecting misbehavior after the fact without allocating more para-validators, which would ultimately\nreduce the system's throughput. As a parablock can accept children blocks after being considered\navailable, failure to pass the approval process will invalidate the parablock and its descendants\n(children blocks). Only the validators who backed the block in question will be\n",(0,t.jsx)(a.a,{href:"/docs/learn-offenses",children:"slashed"}),", not those who backed the descendants."]}),"\n",(0,t.jsx)(a.p,{children:"The approval pipeline can be divided into the following steps:"}),"\n",(0,t.jsxs)(a.ol,{children:["\n",(0,t.jsxs)(a.li,{children:["Parablocks included by the Inclusion Pipeline are pending approval for a time window known as the\n",(0,t.jsx)(a.strong,{children:"secondary checking window"}),"."]}),"\n",(0,t.jsxs)(a.li,{children:["During the secondary checking window, validators (secondary checkers) randomly self-select based\non a ",(0,t.jsx)(a.a,{href:"./learn-cryptography#vrf",children:"VRF"})," lottery to perform secondary checks on each of the\nparablock."]}),"\n",(0,t.jsx)(a.li,{children:"Secondary checkers acquire the parablock with PoV (erasure codings are necessary to reconstruct\nPoV) and re-run the validation function."}),"\n",(0,t.jsx)(a.li,{children:"Secondary checkers gossip about the results of their checks. Contradictory results lead to an\nescalation in which all validators must check the block. The validators on the losing side will\nbe slashed."}),"\n",(0,t.jsx)(a.li,{children:"At the end of the process the parablock is either approved or rejected."}),"\n"]}),"\n",(0,t.jsxs)(a.p,{children:["The figure below shows the path of a parachain block when it exits the Inclusion Pipeline, and\nenters the Approval Process. The parablock becomes accepted when it is backed, available and\n",(0,t.jsx)(a.strong,{children:"undisputed"}),'. The parablock is checked a second time by a subset of validators (V5, V6 and V7),\nand if there are no contradictory results the block is approved and gossiped to other relay chain\nvalidators. Note the parablock after secondary checks is shown as a square with a white background a\nyellow border enclosing an "I" (stands for ',(0,t.jsx)(a.em,{children:"included"}),"), and three white ticks (one for each\nsecondary check). Approved para-blocks are shown as yellow squares."]}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"parachain-approval-process",src:i(60187).A+"",width:"1920",height:"800"})}),"\n",(0,t.jsx)(a.h3,{id:"assignments--secondary-checks",children:"Assignments & Secondary Checks"}),"\n",(0,t.jsxs)(a.p,{children:["Having a bad parablock on a fork of the relay chain is not catastrophic as long as the block is not\napproved and finalized by the finality gadget\n",(0,t.jsx)(a.a,{href:"/docs/learn-consensus#finality-gadget-grandpa",children:"GRANDPA"}),". If the block is not finalized, the fork on\nthe chain containing that block can be ignored in favor of another fork containing good blocks.\nDealing with a bad parablock includes the following stages:"]}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"Detection: the bad block must be detected by honest validators."}),"\n",(0,t.jsxs)(a.li,{children:["Escalation: the honest validators must start a ",(0,t.jsx)(a.a,{href:"#disputes",children:"dispute"}),"."]}),"\n",(0,t.jsxs)(a.li,{children:["Consequences: the backer for that parablock is ",(0,t.jsx)(a.a,{href:"/docs/learn-offenses",children:"slashed"}),"."]}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"The result of the dispute must be transplantable to all other forks so that malicious validators are\nslashed in all possible histories and so that honest validators will ignore any forks containing\nthat parablock."}),"\n",(0,t.jsx)(a.admonition,{title:"Parablocks vs. relay chain Blocks",type:"info",children:(0,t.jsx)(a.p,{children:"It is important to understand that a relay chain block does not contain parablocks, but\npara-headers. Parachain blocks are within the parachain. Thus, it makes more sense to think of relay\nchain blocks as having been approved instead of parablocks that have been approved. A relay chain\nblock containing information about approved parablocks can be considered approved as long as its\nparent relay chain block is also approved. Thus, the validity of a relay chain block depends on the\nvalidity of its ancestry."})}),"\n",(0,t.jsx)(a.p,{children:"Validators perform two main actions in the Approval Process:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#assignments",children:"Assignments"})}),"\ndetermine which validators perform approval checks on which candidates, ensuring each candidate\nreceives enough random checkers. This stage tracks approval votes to identify when\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#no-shows",children:"no-show"})," approval\nchecks take suspiciously long. It also tracks relay chain\n",(0,t.jsx)(a.a,{href:"/docs/learn-offenses#slash-for-equivocation",children:"equivocations"})," to determine when adversaries\npossibly gained foreknowledge about assignments and add more checks in those cases. Assignees\ndetermine their own assignments to check specific candidates using two or three\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#assignment-criteria",children:"assignment criteria"}),",\nwhich are based on two possible\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#stories",children:"stories"})," about the\nrelay chain block that included the candidate (i.e. declared the candidate available).\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#announcements--notices",children:"Assignment notices"}),"\nare gossiped among nodes so that all validators know which validators should check which\ncandidates, and if any candidate requires more checkers."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:"Approval checks"})," perform the checks by obtaining the candidate, verifying its validity, sending\nout the approval vote, or initiating a dispute. Approval checks have a no-show timeout window\n(i.e. longer than one relay chain slot) to succeed in reconstructing the candidate block, redo its\nerasure coding to check the candidate receipt, and recheck the candidate block itself. A validator\nbecomes tagged as a no-show if it does not approve or dispute within the no-show timeout window.\nBecause validators can be overloaded with assignments, they can intentionally delay sending their\nassignment notice to avoid creating no-shows (see more in\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#assignment-postponement",children:"Assignment postponement"}),")."]}),"\n"]}),"\n",(0,t.jsxs)(a.p,{children:["These two steps first run as off-chain consensus protocols using messages gossiped among all\nvalidators, and then as on-chain record of those protocols' progress. The on-chain protocol is\nneeded to provide rewards for the off-chain protocol. The\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#on-chain-verification",children:"on-chain verification"}),"\nhas two phases: a) assignments notices and approval votes are recorded in a relay chain block, and\nb) in another relay chain block notes are fed into the approval code."]}),"\n",(0,t.jsxs)(a.p,{children:["The gossiped messages are of two types, assignment notices, and approval votes, and are signed with\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html#approval-keys",children:"approval keys"}),".\nSuch keys are part of the ",(0,t.jsx)(a.a,{href:"/docs/learn-cryptography#session-keys",children:"session keys"})," used by validators.\nBriefly, approval keys are:"]}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:"Approval assignment keys"})," that are sr25519 keys used only for assignment criteria\n",(0,t.jsx)(a.a,{href:"/docs/learn-cryptography#vrf",children:"VRF"}),"."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.strong,{children:"Approval vote keys"})," that are ed25519 and would only sign off on a candidate parablock validity."]}),"\n"]}),"\n",(0,t.jsx)(a.admonition,{type:"info",children:(0,t.jsxs)(a.p,{children:["For detailed information about the approval process, see dedicated section in\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-approval.html",children:"The Polkadot Parachain Host Implementers' Guide"}),"."]})}),"\n",(0,t.jsx)(a.p,{children:"Accepting a parablock is the result of having passed through the detection stage without dispute, or\nhaving passed through and escalation/dispute stage with a positive outcome."}),"\n",(0,t.jsx)(a.h3,{id:"chain-selection",children:"Chain Selection"}),"\n",(0,t.jsx)(a.p,{children:"After enough secondary checks have been performed on all candidate receipts within a block,\nvalidators can vote for that block (and all previous blocks) in GRANDPA. Once the block has more\nthan 2/3 of positive votes, the block is finalized on chain."}),"\n",(0,t.jsxs)(a.p,{children:["Chain selection is used to select blocks to build on and finalize. These processes need to\nconsistent among nodes and resilient to a maximum proportion of malicious nodes. The parachain host\nuses a block authoring system and a finality gadget. The chain selection strategy involves a\n",(0,t.jsx)(a.em,{children:(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-chain-selection.html",children:"leaf-selection rule"})}),"\nand a set of\n",(0,t.jsx)(a.em,{children:(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-chain-selection.html#the-best-chain-containing-rule",children:"finality constraints"})}),"."]}),"\n",(0,t.jsx)(a.admonition,{type:"info",children:(0,t.jsxs)(a.p,{children:["For detailed information about chain selection, see dedicated section in\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-chain-selection.html",children:"The Polkadot Parachain Host Implementers' Guide"}),"."]})}),"\n",(0,t.jsx)(a.h2,{id:"candidate-receipts",children:"Candidate Receipts"}),"\n",(0,t.jsx)(a.p,{children:"PoV are typically between 1 MB and 10 MB in size and are not included in the relay chain blocks. For\nPolkadot to scale to hundreds of parachains, PoV need to be represented by something smaller on the\nrelay chain: candidate receipts. A para-validator constructs a candidate receipt for a parachain\nblock by signing:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"The parachain ID."}),"\n",(0,t.jsx)(a.li,{children:"The collator's ID and signature."}),"\n",(0,t.jsx)(a.li,{children:"A hash of the parent block's candidate receipt."}),"\n",(0,t.jsx)(a.li,{children:"A Merkle root of the block's erasure-coded pieces."}),"\n",(0,t.jsx)(a.li,{children:"A Merkle root of any outgoing messages."}),"\n",(0,t.jsx)(a.li,{children:"A hash of the block."}),"\n",(0,t.jsx)(a.li,{children:"The state root of the parachain before block execution."}),"\n",(0,t.jsx)(a.li,{children:"The state root of the parachain after block execution."}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"This information is of constant size, while the actual PoV block of the parachain can be variable\nlength. It is enough information for anyone that obtains the full PoV block to verify the state\ntransition contained inside of it."}),"\n",(0,t.jsx)(a.h2,{id:"erasure-codes",children:"Erasure Codes"}),"\n",(0,t.jsx)(a.p,{children:"Before sending the candidate receipt to the relay chain transaction queue, the para-validator who\nconstructs the receipt must also construct an erasure coding of the parachain block."}),"\n",(0,t.jsx)(a.p,{children:"An erasure coding takes a message (in this case, the parachain block and PoV) and creates a set of\nsmaller messages such that you can reconstruct the original message by obtaining a fraction of the\nsmaller messages. In the case of Polkadot, the total number of smaller messages is equal to the\ntotal number of validators and the fraction is 1/3."}),"\n",(0,t.jsx)(a.p,{children:"The para-validator creates the erasure coding chunks, puts them into their Merkle tree, and sends\nout each chunk (together with the candidate receipt) to a corresponding validator on the Relay\nChain. Validators who receive the receipts with an erasure coding chunk will include the receipt in\nthe relay chain queue, where an author can include it in a block."}),"\n",(0,t.jsxs)(a.p,{children:["The type of erasure codes used by Polkadot's availability scheme are\n",(0,t.jsx)(a.a,{href:"https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction",children:"Reed-Solomon"})," codes, which\nalready enjoy a battle-tested application in technology outside the blockchain industry. One example\nis found in the compact disk industry. CDs use Reed-Solomon codes to correct any missing data due to\ninconsistencies on the disk face such as dust particles or scratches."]}),"\n",(0,t.jsx)(a.p,{children:"In Polkadot, the erasure codes are used to keep parachain state available to the system without\nrequiring all validators to keep tabs on all the parachains. Instead, validators share smaller\npieces of the data and can later reconstruct the entire data under the assumption that 1/3+1 of the\nvalidators can provide their pieces of the data."}),"\n",(0,t.jsx)(a.admonition,{type:"note",children:(0,t.jsx)(a.p,{children:"The 1/3+1 threshold of validators that must be responsive to construct the full parachain state data\ncorresponds to Polkadot's security assumption about Byzantine nodes."})}),"\n",(0,t.jsx)(a.h2,{id:"disputes",children:"Disputes"}),"\n",(0,t.jsx)(a.p,{children:"All parachain blocks that are in the finalized relay chain should be valid. This does not apply to\nbacked blocks that are not included. To ensure nothing invalid ends up in the finalized relay chain,\nthere are approval checks (described above) and disputes. The latter ensures that each attempt to\ninclude something invalid is caught and the offending validators are punished."}),"\n",(0,t.jsxs)(a.p,{children:["False positives can happen; those actors responsible for it will be ",(0,t.jsx)(a.a,{href:"/docs/learn-offenses",children:"slashed"}),".\nTo detect false positives, PoV information must be available after the block has been included to\nthe relay chain via the ",(0,t.jsx)(a.a,{href:"#availability-and-unavailability-phase",children:"availability scheme"}),"."]}),"\n",(0,t.jsxs)(a.p,{children:["Disputes are ",(0,t.jsx)(a.em,{children:"independent from a particular fork"}),", while backing and approval operate on particular\nforks. The approval voting stops if an alternative fork (which might not contain the\ncurrently-approved candidate) is finalized. The sole purpose of the approval process is to make sure\ninvalid blocks are not finalized. However, even though the danger is past and the offending\nvalidators did not manage to get the invalid block approved, those validators need to get slashed\nfor the attempt."]}),"\n",(0,t.jsx)(a.p,{children:"A dispute stems from a disagreement between two or more validators. For this to happen, a bad actor\nneeds to distribute an invalid block to honest validators. Scenarios leading to a dispute can be one\nof the followings (ordered from most to least important):"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"A parablock included on a branch of the relay chain is bad"}),"\n",(0,t.jsx)(a.li,{children:"A parablock backed on a branch of the relay chain is bad"}),"\n",(0,t.jsx)(a.li,{children:"A parablock seconded, but not backed on any branch of the relay chain, is bad"}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"Checking a parachain block requires three pieces of data: the parachain validator code, the\navailability of data, and the candidate receipt. The validator code is available on-chain and\npublished ahead of time. Thus, a dispute process begins with the availability to ensure the\navailability of the data. Such a process will conclude quickly if the data is already available,\notherwise, the initiator of the dispute must make it available."}),"\n",(0,t.jsxs)(a.p,{children:["Disputes have both off- and on-chain components. Slashing is handled on-chain, so votes by\nvalidators on either side of the dispute must be placed on-chain. Moreover, a dispute on one branch\nof the chain must be transposed to all active branches so that misbehavior can be punished in all\npossible histories. There is, thus, a distinction between ",(0,t.jsx)(a.em,{children:"local"})," (the one we are looking at) and\n",(0,t.jsx)(a.em,{children:"remote"})," disputes relative to a particular branch of the relay chain."]}),"\n",(0,t.jsx)(a.p,{children:"Disputes can be divided into three different phases:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-disputes.html#initiation",children:"Dispute initiation"}),":\nDisputes are initiated by any validator who finds their opinion on the validity of a parablock in\nopposition to another issued statement. The initiation begins off-chain by only nodes perceiving\nthat a parablock is bad. The validator can be one of the para-validators (i.e. one of the backers)\nor one of the approval checkers. Note that if the dispute occurs during the backing phase, the\ninitiator must make the data available while if the dispute occurs during the approval process the\ndata is already available."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-disputes.html#dispute-participation",children:"Dispute participation"}),":\nOnce becoming aware of the dispute, all validators must participate."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-disputes.html#dispute-conclusion",children:"Dispute conclusion"}),":\nDisputes conclude after a 2/3 supermajority is reached on either side. Disputes may also conclude\nafter a timeout. This will only happen if the majority of validators are unable to vote for some\nreason."]}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"The on-chain component of the dispute can be initiated by providing any two conflicting votes and it\nalso waits for a 2/3 supermajority on either side. The component also tracks which parablocks have\nalready been disputed so that the same parablock can be disputed only once on any branch of the\nrelay chain. Inclusion is halted for the parachain until the dispute resolves."}),"\n",(0,t.jsx)(a.admonition,{type:"info",children:(0,t.jsxs)(a.p,{children:["For detailed information about disputes, see dedicated section in\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/protocol-disputes.html",children:"The Polkadot Parachain Host Implementers' Guide"}),".\nIn the Guide, there are also more details about\n",(0,t.jsx)(a.a,{href:"https://paritytech.github.io/polkadot/book/disputes-flow.html",children:"disputes' flows"}),"."]})}),"\n",(0,t.jsx)(a.h2,{id:"network-asynchrony",children:"Network Asynchrony"}),"\n",(0,t.jsxs)(a.p,{children:["We have mentioned how a relay chain block author must select the candidate and note it on the Relay\nChain (we say the block is backed). The relay chain block author is selected by\n",(0,t.jsx)(a.a,{href:"/docs/learn-consensus#block-production-babe",children:"BABE"}),", which is a forkful algorithm. This means that\ndifferent block authors are chosen at the same time, and they may not work on the same block parent\n(i.e. the representations in the previous figures are simplistic). Also, the sets of validators and\nparachains are not fixed, and the validators' assignments to parachains is also flexible."]}),"\n",(0,t.jsxs)(a.p,{children:["We say that the network is ",(0,t.jsx)(a.strong,{children:"asynchronous"})," since there will be validators who have received a block\nand other validators who did not. Thus, the network is variable, and it exists in multiple states.\nIn the figure below (",(0,t.jsx)(a.em,{children:"left"}),"), Group 1 received block C while Group 2 did not due to network\nasynchrony. Validators in Group 2 can build another block on top of B, called C'. Assume that\nafterward, some validators become aware of both C and C' while others remain aware of one of them\n(",(0,t.jsx)(a.em,{children:"right"}),"). Validators in Group 3 must be aware of the network state in each head (C and C\u2019), and\nthey may contribute to some or full extent on both. It is possible that due to network asynchrony,\ntwo forks may grow in parallel for some time, but eventually, one fork will be chosen by the\nfinality gadget. In the absence of an adversarial network, it is unlikely that two forks will\ncoexist for some time as there will be validators aware of both chain heads."]}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"parachain-forks",src:i(76091).A+"",width:"1920",height:"800"})}),"\n",(0,t.jsx)(a.h2,{id:"further-resources",children:"Further Resources"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"https://polkadot.network/the-path-of-a-parachain-block/",children:"Path of a Parachain Block"})," - Article by\nParity analyst Joe Petrowski expounds on the validity checks that a parachain block must pass in\norder to progress the parachain."]}),"\n",(0,t.jsxs)(a.li,{children:[(0,t.jsx)(a.a,{href:"https://github.com/w3f/research/tree/85cd4adfccb7d435f21cd9fd249cd1b7f5167537/docs/papers/AnV",children:"Availability and Validity"})," -\nPaper by the W3F Research Team that specifies the availability and validity protocol in detail."]}),"\n"]})]})}function d(e={}){const{wrapper:a}={...(0,o.R)(),...e.components};return a?(0,t.jsx)(a,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},60187:(e,a,i)=>{i.d(a,{A:()=>n});const n=i.p+"assets/images/parachain-approval-process-a025570e14282288fee420715c4e3030.png"},76091:(e,a,i)=>{i.d(a,{A:()=>n});const n=i.p+"assets/images/parachain-forks-b3d4a4e9161292fb63e1b86888a18579.png"},45379:(e,a,i)=>{i.d(a,{A:()=>n});const n=i.p+"assets/images/parachain-inclusion-pipeline-134e3949a7f607efc561d4992b52767c.png"},67937:(e,a,i)=>{i.d(a,{A:()=>n});const n=i.p+"assets/images/parachain-protocol-summary-7c052aadda3eee685f56bcc65d59fc71.png"},28453:(e,a,i)=>{i.d(a,{R:()=>s,x:()=>r});var n=i(96540);const t={},o=n.createContext(t);function s(e){const a=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(a):{...a,...e}}),[a,e])}function r(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),n.createElement(o.Provider,{value:a},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/60738e36.a3c57e57.js b/assets/js/60738e36.c1496cbb.js similarity index 99% rename from assets/js/60738e36.a3c57e57.js rename to assets/js/60738e36.c1496cbb.js index 6728174081d..d4ea79f5176 100644 --- a/assets/js/60738e36.a3c57e57.js +++ b/assets/js/60738e36.c1496cbb.js @@ -1 +1 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[7777],{513:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>X,contentTitle:()=>Q,default:()=>ee,frontMatter:()=>Y,metadata:()=>s,toc:()=>Z});const s=JSON.parse('{"id":"general/metadata","title":"Metadata Explorer","description":"Visualize Metadata and related Documentation.","source":"@site/../docs/general/metadata.md","sourceDirName":"general","slug":"/metadata","permalink":"/docs/metadata","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/metadata.md","tags":[],"version":"current","lastUpdatedBy":"github-actions[bot]","lastUpdatedAt":1730712423000,"frontMatter":{"id":"metadata","title":"Metadata Explorer","sidebar_label":"Metadata Explorer","description":"Visualize Metadata and related Documentation.","keywords":["docs","substrate","metadata","explorer","search","api","tools","js","javascript"],"slug":"../metadata"},"sidebar":"docs","previous":{"title":"Developer Heroes","permalink":"/docs/dev-heroes"},"next":{"title":"Chain State","permalink":"/docs/chain-state-values"}}');var n=a(74848),r=a(28453),i=a(43845);var l=a(90675),c=a(10467),o=a(96540),d=a(19588),p=a(2026);var h,u=JSON.parse('{"rh":{"Cn":"^15.0.1"}}').rh.Cn.substring(1),m=[{name:"Polkadot",rpc:"wss://rpc.ibp.network/polkadot"},{name:"Polkadot Asset Hub",rpc:"wss://polkadot-asset-hub-rpc.polkadot.io"},{name:"Polkadot People",rpc:"wss://polkadot-people-rpc.polkadot.io"},{name:"Polkadot Bridge Hub",rpc:"wss://polkadot-bridge-hub-rpc.polkadot.io"},{name:"Polkadot Collectives",rpc:"wss://polkadot-collectives-rpc.polkadot.io"},{name:"Polkadot Coretime",rpc:"wss://polkadot-coretime-rpc.polkadot.io"},{name:"Kusama",rpc:"wss://rpc.ibp.network/kusama"},{name:"Kusama Asset Hub",rpc:"wss://kusama-asset-hub-rpc.polkadot.io"},{name:"Kusama People",rpc:"wss://kusama-people-rpc.polkadot.io"},{name:"Kusama Bridge Hub",rpc:"wss://kusama-bridge-hub-rpc.polkadot.io"},{name:"Kusama Coretime",rpc:"wss://kusama-coretime-rpc.polkadot.io"},{name:"Westend",rpc:"wss://westend-rpc.polkadot.io"}],x=["auctions","claims","crowdloan","registrar","slots"],j=["configuration","hrmp","initializer","paras_inherent","paras","disputes","disputes/slashing"],f={registrar:"paras_registrar",xcmpallet:"xcm",voterlist:"bags_list",fastunstake:"fast_unstake",childbounties:"child_bounties",nominationpools:"nomination_pools",convictionvoting:"conviction_voting",imonline:"im_online",parasdisputes:"disputes",parasslashing:"disputes/slashing",parainherent:"paras_inherent",messagequeue:"message_queue",electionprovidermultiphase:"election_provider_multi_phase",system:"frame_system"},y=[];function b(e){var t=e.version,a=(0,o.useState)(""),s=a[0],r=a[1];return(0,o.useEffect)((function(){var e=function(){var e=(0,c.A)((0,l.A)().mark((function e(){var a,s,i,c,o;return(0,l.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a="Polkadot","Metadata Explorer \xb7 Guide"===document.title&&(a="Kusama"),s=m.find((function(e){return e.name===a})),i=s.rpc,c=[],m.forEach((function(e){var t=(0,n.jsx)("option",{value:e.rpc,children:""+(e.name.charAt(0).toUpperCase()+e.name.slice(1))},e.name);c.push(t)})),o=(0,n.jsx)("select",{defaultValue:s.rpc,style:U,onChange:function(e){return g(t,e.target.value,o,r)},children:c}),r((0,n.jsx)("div",{style:B,children:(0,n.jsx)("b",{children:"Loading Metadata Explorer..."})})),e.next=10,g(t,i,o,r);case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();e()}),[t]),s}function g(e,t,a,s){return v.apply(this,arguments)}function v(){return(v=(0,c.A)((0,l.A)().mark((function e(t,a,s,r){var i,c,o,h,m,x,j,f,b;return(0,l.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return S("metadataLoading",!1),i=new d.E(a),e.next=4,p.G.create({provider:i});case 4:return c=e.sent,y=[],e.next=8,c.rpc.state.getMetadata();case 8:o=e.sent,h=o.toHuman(),m=h.metadata[t].lookup.types,(x=h.metadata[t].pallets).sort((function(e,t){return e.name.localeCompare(t.name)})),j=[],x.forEach((function(e){var t=k(e,c.consts[""+E(e.name)],"constants",m),a=k(e,c.errors[""+E(e.name)],"errors",m),s=k(e,c.events[""+E(e.name)],"events",m),r=k(e,c.tx[""+E(e.name)],"extrinsics",m),i=k(e,c.query[E(e.name)],"storage",m),l=P(e.name,"constants",t),o=P(e.name,"errors",a),d=P(e.name,"events",s),p=P(e.name,"extrinsics",r),h=P(e.name,"storage",i);j.push((0,n.jsxs)("div",{style:G,children:[(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{id:e.name+"-button",style:W,onClick:function(){I(e.name)},children:"+"}),"\xa0",(0,n.jsx)("b",{children:e.name})]}),(0,n.jsxs)("div",{id:e.name,style:L,children:[l,o,d,p,h]})]},e.name)),y.push(e.name),y.push(e.name+"-constants",e.name+"-errors",e.name+"-events",e.name+"-extrinsics",e.name+"-storage")})),f=w(c.rpc,"rpc"),b=w(c.call,"runtime"),S("metadataLoading",!0),r((0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:D,children:[(0,n.jsx)("input",{id:"metaSearch",type:"text",placeholder:"Search Metadata",style:J,onInput:function(){return H()}}),(0,n.jsx)("br",{}),s,(0,n.jsxs)("div",{id:"buttonControls",children:[(0,n.jsx)("button",{style:K,onClick:function(){return M(!0)},children:(0,n.jsx)("span",{style:{fontSize:"10px"},children:"Expand All"})}),(0,n.jsx)("button",{style:K,onClick:function(){return M(!1)},children:(0,n.jsx)("span",{style:{fontSize:"10px"},children:"Collapse All"})})]}),(0,n.jsxs)("div",{style:{fontSize:"10px"},children:[(0,n.jsx)("b",{style:B,children:"metadata"}),(0,n.jsx)("b",{children:" "+t}),"\xa0",(0,n.jsx)("b",{style:B,children:"@polkadot/api"}),(0,n.jsx)("b",{children:" V"+u})]}),(0,n.jsx)("div",{id:"metadataLoading",style:q,children:(0,n.jsx)("b",{children:"Connecting to "+a+"..."})}),(0,n.jsx)("div",{id:"searchLoading",style:q,children:(0,n.jsx)("b",{children:"Searching..."})}),(0,n.jsxs)("div",{id:"searchResults",style:q,children:[(0,n.jsx)("b",{children:"Matches: "}),(0,n.jsx)("b",{id:"searchCount",style:B,children:"0"})]})]}),(0,n.jsx)("b",{style:F,children:"Pallets:"}),j,(0,n.jsx)("br",{}),(0,n.jsx)("b",{style:F,children:"RPC:"}),f,(0,n.jsx)("br",{}),(0,n.jsx)("b",{style:F,children:"Runtime:"}),b]}));case 19:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function k(e,t,a,s){var r=[];null!=t&&Object.keys(t).sort((function(e,t){return e.localeCompare(t)})).forEach((function(i){var l,c=t[i].meta.toHuman(),o=N(e.name.toLowerCase(),c.docs.join(" ")),d=i.charAt(0).toUpperCase()+i.slice(1);switch(a){case"constants":var p=s[c.type].type.def;l=(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",o]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.consts."+E(e.name)+"."+E(i)})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Chain Value"}),": ",(0,n.jsx)("span",{style:B,children:""+JSON.stringify(t[i])})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Chain Value Type"}),": ","("+Object.keys(p)[0]+": "+Object.values(p)[0]+")"]})]});break;case"errors":l=(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",o]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.errors."+E(e.name)+"."+E(i)})]})]});break;case"events":l=(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",o]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.events."+E(e.name)+"."+E(i)})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Fields"}),": ",T(c,"events")]})]});break;case"extrinsics":l=(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",o]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.tx."+E(e.name)+"."+E(i)})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Parameters"}),": ",T(c,"extrinsics")]})]});break;case"storage":l=(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",o]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.query."+E(e.name)+"."+E(i)})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Return Type"}),": ",T(c,"storage",s)]})]});break;default:!function(e){throw new TypeError('"'+e+'" is read-only')}("item")}var h=(0,n.jsxs)("li",{children:[(0,n.jsx)("b",{children:d}),l]},i);r.push(h)}));return r=C(r)}function w(e,t){var a=[],s=Object.keys(e);return s.sort((function(e,t){return e.localeCompare(t)})),s.forEach((function(s){var r=[],i=e[s],l=Object.keys(i);l.sort((function(e,t){return e.localeCompare(t)})),l.forEach((function(e){var a,l=i[e].meta,c=N("",l.description);switch(t){case"rpc":a=(0,n.jsxs)("ul",{style:V,children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",c]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.rpc."+s+"."+e})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Return Type"}),": ",l.type]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Parameters"}),": ",T(l,"rpc")]})]});break;case"runtime":a=(0,n.jsxs)("ul",{style:V,children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",c]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.call."+s+"."+e})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Type"}),": ",l.type]})]})}var o=(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{children:""+(e.charAt(0).toUpperCase()+e.slice(1))}),a]},s+"."+e);r.push(o)})),r=C(r);var c=s.charAt(0).toUpperCase()+s.slice(1),o=(0,n.jsxs)("div",{style:G,children:[(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{id:s+"-button",style:W,onClick:function(){I(s)},children:"+"}),"\xa0",(0,n.jsx)("b",{children:c})]}),(0,n.jsx)("div",{id:s,style:L,children:(0,n.jsx)("ul",{style:V,children:r})})]},s);a.push(o),y.push(s)})),a}function E(e){return e.charAt(0).toLowerCase()+e.slice(1)}function C(e){return 0===e.length?(0,n.jsx)("p",{style:V,children:"None"}):e}function P(e,t,a){return(0,n.jsxs)("ul",{style:V,children:[(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{id:e+"-"+t+"-button",style:W,onClick:function(){I(e+"-"+t)},children:"+"}),"\xa0",(0,n.jsx)("b",{children:t.charAt(0).toUpperCase()+t.slice(1)})]}),(0,n.jsx)("div",{id:e+"-"+t,style:O,children:(0,n.jsx)("ul",{children:a})})]})}function A(e,t){var a=null!=f[e]?f[e]:e;return x.includes(e)?"https://paritytech.github.io/polkadot-sdk/master/polkadot_runtime_common/"+a+"/pallet/struct.Pallet.html#method."+t:j.includes(a)?"https://paritytech.github.io/polkadot-sdk/master/polkadot_runtime_parachains/"+a+"/pallet/struct.Pallet.html#method."+t:"staking"==e?"https://paritytech.github.io/polkadot-sdk/master/pallet_"+a+"/struct.Pallet.html#method."+t:a.startsWith("frame_")?"https://paritytech.github.io/polkadot-sdk/master/"+a+"/pallet/struct.Pallet.html#method."+t:"https://paritytech.github.io/polkadot-sdk/master/pallet_"+a+"/pallet/struct.Pallet.html#method."+t}function N(e,t){for(var a=t.split("`"),s=[],r=0;r{}}]); \ No newline at end of file +(self.webpackChunk=self.webpackChunk||[]).push([[7777],{513:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>X,contentTitle:()=>Q,default:()=>ee,frontMatter:()=>Y,metadata:()=>s,toc:()=>Z});const s=JSON.parse('{"id":"general/metadata","title":"Metadata Explorer","description":"Visualize Metadata and related Documentation.","source":"@site/../docs/general/metadata.md","sourceDirName":"general","slug":"/metadata","permalink":"/docs/metadata","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/metadata.md","tags":[],"version":"current","lastUpdatedBy":"github-actions[bot]","lastUpdatedAt":1730712423000,"frontMatter":{"id":"metadata","title":"Metadata Explorer","sidebar_label":"Metadata Explorer","description":"Visualize Metadata and related Documentation.","keywords":["docs","substrate","metadata","explorer","search","api","tools","js","javascript"],"slug":"../metadata"},"sidebar":"docs","previous":{"title":"Developer Heroes","permalink":"/docs/dev-heroes"},"next":{"title":"Chain State","permalink":"/docs/chain-state-values"}}');var n=a(74848),r=a(28453),i=a(43845);var l=a(90675),c=a(10467),o=a(96540),d=a(19588),p=a(2026);var h,u=JSON.parse('{"rh":{"Cn":"^15.0.2"}}').rh.Cn.substring(1),m=[{name:"Polkadot",rpc:"wss://rpc.ibp.network/polkadot"},{name:"Polkadot Asset Hub",rpc:"wss://polkadot-asset-hub-rpc.polkadot.io"},{name:"Polkadot People",rpc:"wss://polkadot-people-rpc.polkadot.io"},{name:"Polkadot Bridge Hub",rpc:"wss://polkadot-bridge-hub-rpc.polkadot.io"},{name:"Polkadot Collectives",rpc:"wss://polkadot-collectives-rpc.polkadot.io"},{name:"Polkadot Coretime",rpc:"wss://polkadot-coretime-rpc.polkadot.io"},{name:"Kusama",rpc:"wss://rpc.ibp.network/kusama"},{name:"Kusama Asset Hub",rpc:"wss://kusama-asset-hub-rpc.polkadot.io"},{name:"Kusama People",rpc:"wss://kusama-people-rpc.polkadot.io"},{name:"Kusama Bridge Hub",rpc:"wss://kusama-bridge-hub-rpc.polkadot.io"},{name:"Kusama Coretime",rpc:"wss://kusama-coretime-rpc.polkadot.io"},{name:"Westend",rpc:"wss://westend-rpc.polkadot.io"}],x=["auctions","claims","crowdloan","registrar","slots"],j=["configuration","hrmp","initializer","paras_inherent","paras","disputes","disputes/slashing"],f={registrar:"paras_registrar",xcmpallet:"xcm",voterlist:"bags_list",fastunstake:"fast_unstake",childbounties:"child_bounties",nominationpools:"nomination_pools",convictionvoting:"conviction_voting",imonline:"im_online",parasdisputes:"disputes",parasslashing:"disputes/slashing",parainherent:"paras_inherent",messagequeue:"message_queue",electionprovidermultiphase:"election_provider_multi_phase",system:"frame_system"},y=[];function b(e){var t=e.version,a=(0,o.useState)(""),s=a[0],r=a[1];return(0,o.useEffect)((function(){var e=function(){var e=(0,c.A)((0,l.A)().mark((function e(){var a,s,i,c,o;return(0,l.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a="Polkadot","Metadata Explorer \xb7 Guide"===document.title&&(a="Kusama"),s=m.find((function(e){return e.name===a})),i=s.rpc,c=[],m.forEach((function(e){var t=(0,n.jsx)("option",{value:e.rpc,children:""+(e.name.charAt(0).toUpperCase()+e.name.slice(1))},e.name);c.push(t)})),o=(0,n.jsx)("select",{defaultValue:s.rpc,style:U,onChange:function(e){return g(t,e.target.value,o,r)},children:c}),r((0,n.jsx)("div",{style:B,children:(0,n.jsx)("b",{children:"Loading Metadata Explorer..."})})),e.next=10,g(t,i,o,r);case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();e()}),[t]),s}function g(e,t,a,s){return v.apply(this,arguments)}function v(){return(v=(0,c.A)((0,l.A)().mark((function e(t,a,s,r){var i,c,o,h,m,x,j,f,b;return(0,l.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return S("metadataLoading",!1),i=new d.E(a),e.next=4,p.G.create({provider:i});case 4:return c=e.sent,y=[],e.next=8,c.rpc.state.getMetadata();case 8:o=e.sent,h=o.toHuman(),m=h.metadata[t].lookup.types,(x=h.metadata[t].pallets).sort((function(e,t){return e.name.localeCompare(t.name)})),j=[],x.forEach((function(e){var t=k(e,c.consts[""+E(e.name)],"constants",m),a=k(e,c.errors[""+E(e.name)],"errors",m),s=k(e,c.events[""+E(e.name)],"events",m),r=k(e,c.tx[""+E(e.name)],"extrinsics",m),i=k(e,c.query[E(e.name)],"storage",m),l=P(e.name,"constants",t),o=P(e.name,"errors",a),d=P(e.name,"events",s),p=P(e.name,"extrinsics",r),h=P(e.name,"storage",i);j.push((0,n.jsxs)("div",{style:G,children:[(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{id:e.name+"-button",style:W,onClick:function(){I(e.name)},children:"+"}),"\xa0",(0,n.jsx)("b",{children:e.name})]}),(0,n.jsxs)("div",{id:e.name,style:L,children:[l,o,d,p,h]})]},e.name)),y.push(e.name),y.push(e.name+"-constants",e.name+"-errors",e.name+"-events",e.name+"-extrinsics",e.name+"-storage")})),f=w(c.rpc,"rpc"),b=w(c.call,"runtime"),S("metadataLoading",!0),r((0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:D,children:[(0,n.jsx)("input",{id:"metaSearch",type:"text",placeholder:"Search Metadata",style:J,onInput:function(){return H()}}),(0,n.jsx)("br",{}),s,(0,n.jsxs)("div",{id:"buttonControls",children:[(0,n.jsx)("button",{style:K,onClick:function(){return M(!0)},children:(0,n.jsx)("span",{style:{fontSize:"10px"},children:"Expand All"})}),(0,n.jsx)("button",{style:K,onClick:function(){return M(!1)},children:(0,n.jsx)("span",{style:{fontSize:"10px"},children:"Collapse All"})})]}),(0,n.jsxs)("div",{style:{fontSize:"10px"},children:[(0,n.jsx)("b",{style:B,children:"metadata"}),(0,n.jsx)("b",{children:" "+t}),"\xa0",(0,n.jsx)("b",{style:B,children:"@polkadot/api"}),(0,n.jsx)("b",{children:" V"+u})]}),(0,n.jsx)("div",{id:"metadataLoading",style:q,children:(0,n.jsx)("b",{children:"Connecting to "+a+"..."})}),(0,n.jsx)("div",{id:"searchLoading",style:q,children:(0,n.jsx)("b",{children:"Searching..."})}),(0,n.jsxs)("div",{id:"searchResults",style:q,children:[(0,n.jsx)("b",{children:"Matches: "}),(0,n.jsx)("b",{id:"searchCount",style:B,children:"0"})]})]}),(0,n.jsx)("b",{style:F,children:"Pallets:"}),j,(0,n.jsx)("br",{}),(0,n.jsx)("b",{style:F,children:"RPC:"}),f,(0,n.jsx)("br",{}),(0,n.jsx)("b",{style:F,children:"Runtime:"}),b]}));case 19:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function k(e,t,a,s){var r=[];null!=t&&Object.keys(t).sort((function(e,t){return e.localeCompare(t)})).forEach((function(i){var l,c=t[i].meta.toHuman(),o=N(e.name.toLowerCase(),c.docs.join(" ")),d=i.charAt(0).toUpperCase()+i.slice(1);switch(a){case"constants":var p=s[c.type].type.def;l=(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",o]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.consts."+E(e.name)+"."+E(i)})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Chain Value"}),": ",(0,n.jsx)("span",{style:B,children:""+JSON.stringify(t[i])})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Chain Value Type"}),": ","("+Object.keys(p)[0]+": "+Object.values(p)[0]+")"]})]});break;case"errors":l=(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",o]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.errors."+E(e.name)+"."+E(i)})]})]});break;case"events":l=(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",o]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.events."+E(e.name)+"."+E(i)})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Fields"}),": ",T(c,"events")]})]});break;case"extrinsics":l=(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",o]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.tx."+E(e.name)+"."+E(i)})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Parameters"}),": ",T(c,"extrinsics")]})]});break;case"storage":l=(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",o]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.query."+E(e.name)+"."+E(i)})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Return Type"}),": ",T(c,"storage",s)]})]});break;default:!function(e){throw new TypeError('"'+e+'" is read-only')}("item")}var h=(0,n.jsxs)("li",{children:[(0,n.jsx)("b",{children:d}),l]},i);r.push(h)}));return r=C(r)}function w(e,t){var a=[],s=Object.keys(e);return s.sort((function(e,t){return e.localeCompare(t)})),s.forEach((function(s){var r=[],i=e[s],l=Object.keys(i);l.sort((function(e,t){return e.localeCompare(t)})),l.forEach((function(e){var a,l=i[e].meta,c=N("",l.description);switch(t){case"rpc":a=(0,n.jsxs)("ul",{style:V,children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",c]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.rpc."+s+"."+e})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Return Type"}),": ",l.type]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Parameters"}),": ",T(l,"rpc")]})]});break;case"runtime":a=(0,n.jsxs)("ul",{style:V,children:[(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Description"}),": ",c]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"API Endpoint"}),": ",(0,n.jsx)("span",{style:B,children:"api.call."+s+"."+e})]}),(0,n.jsxs)("li",{className:"searchable",children:[(0,n.jsx)("u",{children:"Type"}),": ",l.type]})]})}var o=(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{children:""+(e.charAt(0).toUpperCase()+e.slice(1))}),a]},s+"."+e);r.push(o)})),r=C(r);var c=s.charAt(0).toUpperCase()+s.slice(1),o=(0,n.jsxs)("div",{style:G,children:[(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{id:s+"-button",style:W,onClick:function(){I(s)},children:"+"}),"\xa0",(0,n.jsx)("b",{children:c})]}),(0,n.jsx)("div",{id:s,style:L,children:(0,n.jsx)("ul",{style:V,children:r})})]},s);a.push(o),y.push(s)})),a}function E(e){return e.charAt(0).toLowerCase()+e.slice(1)}function C(e){return 0===e.length?(0,n.jsx)("p",{style:V,children:"None"}):e}function P(e,t,a){return(0,n.jsxs)("ul",{style:V,children:[(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{id:e+"-"+t+"-button",style:W,onClick:function(){I(e+"-"+t)},children:"+"}),"\xa0",(0,n.jsx)("b",{children:t.charAt(0).toUpperCase()+t.slice(1)})]}),(0,n.jsx)("div",{id:e+"-"+t,style:O,children:(0,n.jsx)("ul",{children:a})})]})}function A(e,t){var a=null!=f[e]?f[e]:e;return x.includes(e)?"https://paritytech.github.io/polkadot-sdk/master/polkadot_runtime_common/"+a+"/pallet/struct.Pallet.html#method."+t:j.includes(a)?"https://paritytech.github.io/polkadot-sdk/master/polkadot_runtime_parachains/"+a+"/pallet/struct.Pallet.html#method."+t:"staking"==e?"https://paritytech.github.io/polkadot-sdk/master/pallet_"+a+"/struct.Pallet.html#method."+t:a.startsWith("frame_")?"https://paritytech.github.io/polkadot-sdk/master/"+a+"/pallet/struct.Pallet.html#method."+t:"https://paritytech.github.io/polkadot-sdk/master/pallet_"+a+"/pallet/struct.Pallet.html#method."+t}function N(e,t){for(var a=t.split("`"),s=[],r=0;r{}}]); \ No newline at end of file diff --git a/assets/js/9528ac88.0c912946.js b/assets/js/9528ac88.0c912946.js deleted file mode 100644 index 877ec4c950e..00000000000 --- a/assets/js/9528ac88.0c912946.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1379],{88693:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"learn/learn-xcm-transport","title":"XCM Transport Methods (XCMP, HRMP, VMP)","description":"Methods to send XCM Messages across Networks.","source":"@site/../docs/learn/learn-xcm-transport.md","sourceDirName":"learn","slug":"/learn-xcm-transport","permalink":"/docs/learn-xcm-transport","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-xcm-transport.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1727991122000,"frontMatter":{"id":"learn-xcm-transport","title":"XCM Transport Methods (XCMP, HRMP, VMP)","sidebar_label":"XCM Transport","description":"Methods to send XCM Messages across Networks.","keywords":["cross-consensus","XCM","XCMP","interoperability","communication"],"slug":"../learn-xcm-transport"},"sidebar":"docs","previous":{"title":"XCM Use-cases","permalink":"/docs/learn-xcm-usecases"},"next":{"title":"XCM Virtual Machine (XCVM)","permalink":"/docs/learn-xcvm"}}');var i=n(74848),t=n(28453);const r={id:"learn-xcm-transport",title:"XCM Transport Methods (XCMP, HRMP, VMP)",sidebar_label:"XCM Transport",description:"Methods to send XCM Messages across Networks.",keywords:["cross-consensus","XCM","XCMP","interoperability","communication"],slug:"../learn-xcm-transport"},o=void 0,c={},l=[{value:"XCMP (Cross-Chain Message Passing)",id:"xcmp-cross-chain-message-passing",level:3},{value:"VMP (Vertical Message Passing)",id:"vmp-vertical-message-passing",level:3},{value:"UMP (Upward Message Passing)",id:"ump-upward-message-passing",level:4},{value:"DMP (Downward Message Passing)",id:"dmp-downward-message-passing",level:4},{value:"HRMP (XCMP-Lite)",id:"hrmp-xcmp-lite",level:3},{value:"XCMP (Cross Consensus Message Passing) Design Summary",id:"xcmp-cross-consensus-message-passing-design-summary",level:3},{value:"The Anatomy of an XCMP Interaction",id:"the-anatomy-of-an-xcmp-interaction",level:4}];function h(e){const s={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.admonition,{title:"XCM Documentation",type:"info",children:(0,i.jsxs)(s.p,{children:["For a more practical approach to utilizing XCM, refer to the ",(0,i.jsx)(s.a,{href:"./learn/xcm",children:"XCM Docs"}),". Please keep in\nmind that XCM is under active development."]})}),"\n",(0,i.jsx)(s.p,{children:"With the XCM format established, common patterns for protocols of these messages are needed.\nPolkadot implements two message passing protocols for acting on XCM messages between its constituent\nparachains."}),"\n",(0,i.jsx)(s.p,{children:"There are three primary methods for message passing, one of which is under development:"}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsx)(s.li,{children:"XCMP (Cross-Consensus Message Passing)"}),"\n",(0,i.jsx)(s.li,{children:"Horizontal Relay-routed Message Passing (HRMP/XCMP-lite)"}),"\n",(0,i.jsx)(s.li,{children:"VMP (Vertical Message Passing)"}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"xcmp-cross-chain-message-passing",children:"XCMP (Cross-Chain Message Passing)"}),"\n",(0,i.jsx)(s.admonition,{type:"caution",children:(0,i.jsx)(s.p,{children:"XCMP is currently under development, and most of the cross-chain messages pass through HRMP channels\nfor the time being."})}),"\n",(0,i.jsx)(s.p,{children:"XCM is related to XCMP in the same way that REST is related to RESTful."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.em,{children:"Cross-Consensus Message Passing"})," secure message passing between parachains. There are two variants:\n",(0,i.jsx)(s.em,{children:"Direct"})," and ",(0,i.jsx)(s.em,{children:"Relayed"}),"."]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["With ",(0,i.jsx)(s.em,{children:"Direct"}),", message data goes direct between parachains and is O(1) on the side of the relay\nchain and is very scalable."]}),"\n",(0,i.jsxs)(s.li,{children:["With ",(0,i.jsx)(s.em,{children:"Relayed"}),", message data is passed via the relay chain, and piggy-backs over VMP. It is much\nless scalable, and on-demand parachains in particular may not receive messages due to excessive\nqueue growth."]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"Cross-chain transactions are resolved using a simple queuing mechanism based around a Merkle tree to\nensure fidelity. It is the task of the relay chain validators to move transactions on the output\nqueue of one parachain into the input queue of the destination parachain. However, only the\nassociated metadata is stored as a hash in the relay chain storage."}),"\n",(0,i.jsxs)(s.p,{children:["The input and output queue are sometimes referred to in the Polkadot codebase and associated\ndocumentation as ",(0,i.jsx)(s.code,{children:"ingress"})," and ",(0,i.jsx)(s.code,{children:"egress"})," messages, respectively."]}),"\n",(0,i.jsx)(s.admonition,{type:"info",children:(0,i.jsxs)(s.p,{children:["For detailed information about VMP see dedicated section in\n",(0,i.jsx)(s.a,{href:"https://paritytech.github.io/polkadot/book/messaging.html#horizontal-message-passing",children:"The Polkadot Parachain Host Implementers' Guide"}),"."]})}),"\n",(0,i.jsx)(s.h3,{id:"vmp-vertical-message-passing",children:"VMP (Vertical Message Passing)"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.em,{children:"Vertical Message Passing"})," message passing between the relay chain itself and a parachain. Message\ndata in both cases exists on the relay chain and are interpreted by the relay chain according to\n",(0,i.jsx)(s.a,{href:"./learn-xcm.md/#cross-consensus-message-format-xcm",children:"XCM"})," standards. This includes:"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.h4,{id:"ump-upward-message-passing",children:"UMP (Upward Message Passing)"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.em,{children:"Upward Message Passing"})," message passing from a parachain to the relay chain."]}),"\n"]}),"\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.h4,{id:"dmp-downward-message-passing",children:"DMP (Downward Message Passing)"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.em,{children:"Downward Message Passing"})," message passing from the relay chain to a parachain."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(s.admonition,{type:"info",children:(0,i.jsxs)(s.p,{children:["For detailed information about VMP see dedicated section in\n",(0,i.jsx)(s.a,{href:"https://paritytech.github.io/polkadot/book/messaging.html#vertical-message-passing",children:"The Polkadot Parachain Host Implementers' Guide"}),"."]})}),"\n",(0,i.jsx)(s.h3,{id:"hrmp-xcmp-lite",children:"HRMP (XCMP-Lite)"}),"\n",(0,i.jsxs)(s.p,{children:["While XCMP is still being implemented, a stop-gap protocol (see definition below) known as\n",(0,i.jsx)(s.strong,{children:"Horizontal Relay-routed Message Passing (HRMP)"})," exists in its place. HRMP has the same interface\nand functionality as XCMP but is much more demanding on resources since it stores all messages in\nthe relay chain storage. When XCMP has been implemented, HRMP is planned to be deprecated and phased\nout in favor of it."]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"xcm",src:n(41612).A+"",width:"2664",height:"1754"})}),"\n",(0,i.jsx)(s.admonition,{type:"note",children:(0,i.jsx)(s.p,{children:"A stop-gap protocol is a temporary substitute for the functionality that is not fully complete.\nWhile XCMP proper is still in development, HRMP is a working replacement."})}),"\n",(0,i.jsxs)(s.p,{children:["A tutorial on how to open an HRMP channel on a parachain can be found\n",(0,i.jsx)(s.a,{href:"/docs/build-hrmp-channels",children:"here"}),"."]}),"\n",(0,i.jsx)(s.h3,{id:"xcmp-cross-consensus-message-passing-design-summary",children:"XCMP (Cross Consensus Message Passing) Design Summary"}),"\n",(0,i.jsx)("div",{className:"row",children:(0,i.jsxs)("div",{className:"col text--center",children:[(0,i.jsx)("a",{href:"https://www.youtube.com/watch?v=tOnzk4AROUY",children:(0,i.jsx)("img",{src:"https://img.youtube.com/vi/tOnzk4AROUY/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,i.jsx)("p",{children:(0,i.jsx)("a",{href:"https://www.youtube.com/watch?v=tOnzk4AROUY",children:"XCMP Explained"})})]})}),"\n",(0,i.jsx)(s.admonition,{type:"note",children:(0,i.jsx)(s.p,{children:"XCMP is not yet implemented. The following illustrates the overall design goals and expectations for\nXCMP."})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Cross-chain messages will ",(0,i.jsx)(s.em,{children:"not"})," be delivered to the relay chain."]}),"\n",(0,i.jsx)(s.li,{children:"Cross-chain messages will be constrained to a maximum size specified in bytes."}),"\n",(0,i.jsx)(s.li,{children:"Parachains are allowed to block messages from other parachains, in which case the dispatching\nparachain would be aware of this block."}),"\n",(0,i.jsx)(s.li,{children:"Collator nodes are responsible for routing messages between chains."}),"\n",(0,i.jsxs)(s.li,{children:["Collators produce a list of ",(0,i.jsx)(s.code,{children:"egress"})," messages and will receive the ",(0,i.jsx)(s.code,{children:"ingress"})," messages from other\nparachains."]}),"\n",(0,i.jsx)(s.li,{children:"On each block, parachains are expected to route messages from some subset of all other parachains."}),"\n",(0,i.jsx)(s.li,{children:"When a collator produces a new block to hand off to a validator, it will collect the latest\ningress queue information and process it."}),"\n",(0,i.jsx)(s.li,{children:"Validators will check the proof that the new candidate for the next parachain block includes the\nprocessing of the expected ingress messages to that parachain."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"XCMP queues must be initiated by first opening a channel between two parachains. The channel is\nidentified by both the sender and recipient parachains, meaning that it's a one-way channel. A pair\nof parachains can have at most establish two channels between them, one for sending messages to the\nother chain and another for receiving messages. The channel will require a deposit in DOT to be\nopened, which will get returned when the channel is closed."}),"\n",(0,i.jsx)(s.h4,{id:"the-anatomy-of-an-xcmp-interaction",children:"The Anatomy of an XCMP Interaction"}),"\n",(0,i.jsxs)(s.p,{children:["A smart contract that exists on parachain ",(0,i.jsx)(s.code,{children:"A"})," will route a message to parachain ",(0,i.jsx)(s.code,{children:"B"})," in which another\nsmart contract is called that makes a transfer of some assets within that chain."]}),"\n",(0,i.jsxs)(s.p,{children:["Charlie executes the smart contract on parachain ",(0,i.jsx)(s.code,{children:"A"}),", which initiates a new cross-chain message for\nthe destination of a smart contract on parachain ",(0,i.jsx)(s.code,{children:"B"}),"."]}),"\n",(0,i.jsxs)(s.p,{children:["The collator node of parachain ",(0,i.jsx)(s.code,{children:"A"})," will place this new cross-chain message into its outbound\nmessages queue, along with a ",(0,i.jsx)(s.code,{children:"destination"})," and a ",(0,i.jsx)(s.code,{children:"timestamp"}),"."]}),"\n",(0,i.jsxs)(s.p,{children:["The collator node of parachain ",(0,i.jsx)(s.code,{children:"B"})," routinely pings all other collator nodes asking for new messages\n(filtering by the ",(0,i.jsx)(s.code,{children:"destination"})," field). When the collator of parachain ",(0,i.jsx)(s.code,{children:"B"})," makes its next ping, it\nwill see this new message on parachain ",(0,i.jsx)(s.code,{children:"A"})," and add it into its own inbound queue for processing into\nthe next block."]}),"\n",(0,i.jsxs)(s.p,{children:["Validators for parachain ",(0,i.jsx)(s.code,{children:"A"})," will also read the outbound queue and know the message. Validators for\nparachain ",(0,i.jsx)(s.code,{children:"B"})," will do the same. This is so that they will be able to verify the message transmission\nhappened."]}),"\n",(0,i.jsxs)(s.p,{children:["When the collator of parachain ",(0,i.jsx)(s.code,{children:"B"})," is building the next block in its chain, it will process the new\nmessage in its inbound queue as well as any other messages it may have found/received."]}),"\n",(0,i.jsxs)(s.p,{children:["During processing, the message will execute the smart contract on parachain ",(0,i.jsx)(s.code,{children:"B"})," and complete the\nasset transfer as intended."]}),"\n",(0,i.jsxs)(s.p,{children:["The collator now hands this block to the validator, which itself will verify that this message was\nprocessed. If the message was processed and all other aspects of the block are valid, the validator\nwill include this block for parachain ",(0,i.jsx)(s.code,{children:"B"})," into the relay chain."]})]})}function d(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},41612:(e,s,n)=>{n.d(s,{A:()=>a});const a=n.p+"assets/images/hrmp-ex-d985c82747b653714ff4cde293e1eccc.png"},28453:(e,s,n)=>{n.d(s,{R:()=>r,x:()=>o});var a=n(96540);const i={},t=a.createContext(i);function r(e){const s=a.useContext(t);return a.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),a.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9528ac88.290777cf.js b/assets/js/9528ac88.290777cf.js new file mode 100644 index 00000000000..d76aef11d7f --- /dev/null +++ b/assets/js/9528ac88.290777cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1379],{88693:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"learn/learn-xcm-transport","title":"XCM Transport Methods (XCMP, HRMP, VMP)","description":"Methods to send XCM Messages across Networks.","source":"@site/../docs/learn/learn-xcm-transport.md","sourceDirName":"learn","slug":"/learn-xcm-transport","permalink":"/docs/learn-xcm-transport","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-xcm-transport.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1734535671000,"frontMatter":{"id":"learn-xcm-transport","title":"XCM Transport Methods (XCMP, HRMP, VMP)","sidebar_label":"XCM Transport","description":"Methods to send XCM Messages across Networks.","keywords":["cross-consensus","XCM","XCMP","interoperability","communication"],"slug":"../learn-xcm-transport"},"sidebar":"docs","previous":{"title":"XCM Use-cases","permalink":"/docs/learn-xcm-usecases"},"next":{"title":"XCM Virtual Machine (XCVM)","permalink":"/docs/learn-xcvm"}}');var i=n(74848),t=n(28453);const r={id:"learn-xcm-transport",title:"XCM Transport Methods (XCMP, HRMP, VMP)",sidebar_label:"XCM Transport",description:"Methods to send XCM Messages across Networks.",keywords:["cross-consensus","XCM","XCMP","interoperability","communication"],slug:"../learn-xcm-transport"},o=void 0,c={},l=[{value:"XCMP (Cross-Chain Message Passing)",id:"xcmp-cross-chain-message-passing",level:3},{value:"VMP (Vertical Message Passing)",id:"vmp-vertical-message-passing",level:3},{value:"UMP (Upward Message Passing)",id:"ump-upward-message-passing",level:4},{value:"DMP (Downward Message Passing)",id:"dmp-downward-message-passing",level:4},{value:"HRMP (XCMP-Lite)",id:"hrmp-xcmp-lite",level:3},{value:"XCMP (Cross Consensus Message Passing) Design Summary",id:"xcmp-cross-consensus-message-passing-design-summary",level:3},{value:"The Anatomy of an XCMP Interaction",id:"the-anatomy-of-an-xcmp-interaction",level:4}];function h(e){const s={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.admonition,{title:"XCM Documentation",type:"info",children:(0,i.jsxs)(s.p,{children:["For a more practical approach to utilizing XCM, refer to the ",(0,i.jsx)(s.a,{href:"./learn/xcm",children:"XCM Docs"}),". Please keep in\nmind that XCM is under active development."]})}),"\n",(0,i.jsx)(s.p,{children:"With the XCM format established, common patterns for protocols of these messages are needed.\nPolkadot implements two message passing protocols for acting on XCM messages between its constituent\nparachains."}),"\n",(0,i.jsx)(s.p,{children:"There are three primary methods for message passing, one of which is under development:"}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsx)(s.li,{children:"XCMP (Cross-Consensus Message Passing)"}),"\n",(0,i.jsx)(s.li,{children:"Horizontal Relay-routed Message Passing (HRMP/XCMP-lite)"}),"\n",(0,i.jsx)(s.li,{children:"VMP (Vertical Message Passing)"}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"xcmp-cross-chain-message-passing",children:"XCMP (Cross-Chain Message Passing)"}),"\n",(0,i.jsx)(s.admonition,{type:"caution",children:(0,i.jsx)(s.p,{children:"XCMP is currently under development, and most of the cross-chain messages pass through HRMP channels\nfor the time being."})}),"\n",(0,i.jsx)(s.p,{children:"XCM is related to XCMP in the same way that REST is related to RESTful."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.em,{children:"Cross-Consensus Message Passing"})," secure message passing between parachains. There are two variants:\n",(0,i.jsx)(s.em,{children:"Direct"})," and ",(0,i.jsx)(s.em,{children:"Relayed"}),"."]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["With ",(0,i.jsx)(s.em,{children:"Direct"}),", message data goes direct between parachains and is O(1) on the side of the relay\nchain and is very scalable."]}),"\n",(0,i.jsxs)(s.li,{children:["With ",(0,i.jsx)(s.em,{children:"Relayed"}),", message data is passed via the relay chain, and piggy-backs over VMP. It is much\nless scalable, and on-demand parachains in particular may not receive messages due to excessive\nqueue growth."]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"Cross-chain transactions are resolved using a simple queuing mechanism based around a Merkle tree to\nensure fidelity. It is the task of the relay chain validators to move transactions on the output\nqueue of one parachain into the input queue of the destination parachain. However, only the\nassociated metadata is stored as a hash in the relay chain storage."}),"\n",(0,i.jsxs)(s.p,{children:["The input and output queue are sometimes referred to in the Polkadot codebase and associated\ndocumentation as ",(0,i.jsx)(s.code,{children:"ingress"})," and ",(0,i.jsx)(s.code,{children:"egress"})," messages, respectively."]}),"\n",(0,i.jsx)(s.admonition,{type:"info",children:(0,i.jsxs)(s.p,{children:["For detailed information about VMP see dedicated section in\n",(0,i.jsx)(s.a,{href:"https://paritytech.github.io/polkadot/book/messaging.html#horizontal-message-passing",children:"The Polkadot Parachain Host Implementers' Guide"}),"."]})}),"\n",(0,i.jsx)(s.h3,{id:"vmp-vertical-message-passing",children:"VMP (Vertical Message Passing)"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.em,{children:"Vertical Message Passing"})," message passing between the relay chain itself and a parachain. Message\ndata in both cases exists on the relay chain and are interpreted by the relay chain according to\n",(0,i.jsx)(s.a,{href:"/docs/learn-xcm#cross-consensus-message-format-xcm-format",children:"XCM"})," standards. This includes:"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.h4,{id:"ump-upward-message-passing",children:"UMP (Upward Message Passing)"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.em,{children:"Upward Message Passing"})," message passing from a parachain to the relay chain."]}),"\n"]}),"\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.h4,{id:"dmp-downward-message-passing",children:"DMP (Downward Message Passing)"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.em,{children:"Downward Message Passing"})," message passing from the relay chain to a parachain."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(s.admonition,{type:"info",children:(0,i.jsxs)(s.p,{children:["For detailed information about VMP see dedicated section in\n",(0,i.jsx)(s.a,{href:"https://paritytech.github.io/polkadot/book/messaging.html#vertical-message-passing",children:"The Polkadot Parachain Host Implementers' Guide"}),"."]})}),"\n",(0,i.jsx)(s.h3,{id:"hrmp-xcmp-lite",children:"HRMP (XCMP-Lite)"}),"\n",(0,i.jsxs)(s.p,{children:["While XCMP is still being implemented, a stop-gap protocol (see definition below) known as\n",(0,i.jsx)(s.strong,{children:"Horizontal Relay-routed Message Passing (HRMP)"})," exists in its place. HRMP has the same interface\nand functionality as XCMP but is much more demanding on resources since it stores all messages in\nthe relay chain storage. When XCMP has been implemented, HRMP is planned to be deprecated and phased\nout in favor of it."]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"xcm",src:n(41612).A+"",width:"2664",height:"1754"})}),"\n",(0,i.jsx)(s.admonition,{type:"note",children:(0,i.jsx)(s.p,{children:"A stop-gap protocol is a temporary substitute for the functionality that is not fully complete.\nWhile XCMP proper is still in development, HRMP is a working replacement."})}),"\n",(0,i.jsxs)(s.p,{children:["A tutorial on how to open an HRMP channel on a parachain can be found\n",(0,i.jsx)(s.a,{href:"/docs/build-hrmp-channels",children:"here"}),"."]}),"\n",(0,i.jsx)(s.h3,{id:"xcmp-cross-consensus-message-passing-design-summary",children:"XCMP (Cross Consensus Message Passing) Design Summary"}),"\n",(0,i.jsx)("div",{className:"row",children:(0,i.jsxs)("div",{className:"col text--center",children:[(0,i.jsx)("a",{href:"https://www.youtube.com/watch?v=tOnzk4AROUY",children:(0,i.jsx)("img",{src:"https://img.youtube.com/vi/tOnzk4AROUY/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,i.jsx)("p",{children:(0,i.jsx)("a",{href:"https://www.youtube.com/watch?v=tOnzk4AROUY",children:"XCMP Explained"})})]})}),"\n",(0,i.jsx)(s.admonition,{type:"note",children:(0,i.jsx)(s.p,{children:"XCMP is not yet implemented. The following illustrates the overall design goals and expectations for\nXCMP."})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Cross-chain messages will ",(0,i.jsx)(s.em,{children:"not"})," be delivered to the relay chain."]}),"\n",(0,i.jsx)(s.li,{children:"Cross-chain messages will be constrained to a maximum size specified in bytes."}),"\n",(0,i.jsx)(s.li,{children:"Parachains are allowed to block messages from other parachains, in which case the dispatching\nparachain would be aware of this block."}),"\n",(0,i.jsx)(s.li,{children:"Collator nodes are responsible for routing messages between chains."}),"\n",(0,i.jsxs)(s.li,{children:["Collators produce a list of ",(0,i.jsx)(s.code,{children:"egress"})," messages and will receive the ",(0,i.jsx)(s.code,{children:"ingress"})," messages from other\nparachains."]}),"\n",(0,i.jsx)(s.li,{children:"On each block, parachains are expected to route messages from some subset of all other parachains."}),"\n",(0,i.jsx)(s.li,{children:"When a collator produces a new block to hand off to a validator, it will collect the latest\ningress queue information and process it."}),"\n",(0,i.jsx)(s.li,{children:"Validators will check the proof that the new candidate for the next parachain block includes the\nprocessing of the expected ingress messages to that parachain."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"XCMP queues must be initiated by first opening a channel between two parachains. The channel is\nidentified by both the sender and recipient parachains, meaning that it's a one-way channel. A pair\nof parachains can have at most establish two channels between them, one for sending messages to the\nother chain and another for receiving messages. The channel will require a deposit in DOT to be\nopened, which will get returned when the channel is closed."}),"\n",(0,i.jsx)(s.h4,{id:"the-anatomy-of-an-xcmp-interaction",children:"The Anatomy of an XCMP Interaction"}),"\n",(0,i.jsxs)(s.p,{children:["A smart contract that exists on parachain ",(0,i.jsx)(s.code,{children:"A"})," will route a message to parachain ",(0,i.jsx)(s.code,{children:"B"})," in which another\nsmart contract is called that makes a transfer of some assets within that chain."]}),"\n",(0,i.jsxs)(s.p,{children:["Charlie executes the smart contract on parachain ",(0,i.jsx)(s.code,{children:"A"}),", which initiates a new cross-chain message for\nthe destination of a smart contract on parachain ",(0,i.jsx)(s.code,{children:"B"}),"."]}),"\n",(0,i.jsxs)(s.p,{children:["The collator node of parachain ",(0,i.jsx)(s.code,{children:"A"})," will place this new cross-chain message into its outbound\nmessages queue, along with a ",(0,i.jsx)(s.code,{children:"destination"})," and a ",(0,i.jsx)(s.code,{children:"timestamp"}),"."]}),"\n",(0,i.jsxs)(s.p,{children:["The collator node of parachain ",(0,i.jsx)(s.code,{children:"B"})," routinely pings all other collator nodes asking for new messages\n(filtering by the ",(0,i.jsx)(s.code,{children:"destination"})," field). When the collator of parachain ",(0,i.jsx)(s.code,{children:"B"})," makes its next ping, it\nwill see this new message on parachain ",(0,i.jsx)(s.code,{children:"A"})," and add it into its own inbound queue for processing into\nthe next block."]}),"\n",(0,i.jsxs)(s.p,{children:["Validators for parachain ",(0,i.jsx)(s.code,{children:"A"})," will also read the outbound queue and know the message. Validators for\nparachain ",(0,i.jsx)(s.code,{children:"B"})," will do the same. This is so that they will be able to verify the message transmission\nhappened."]}),"\n",(0,i.jsxs)(s.p,{children:["When the collator of parachain ",(0,i.jsx)(s.code,{children:"B"})," is building the next block in its chain, it will process the new\nmessage in its inbound queue as well as any other messages it may have found/received."]}),"\n",(0,i.jsxs)(s.p,{children:["During processing, the message will execute the smart contract on parachain ",(0,i.jsx)(s.code,{children:"B"})," and complete the\nasset transfer as intended."]}),"\n",(0,i.jsxs)(s.p,{children:["The collator now hands this block to the validator, which itself will verify that this message was\nprocessed. If the message was processed and all other aspects of the block are valid, the validator\nwill include this block for parachain ",(0,i.jsx)(s.code,{children:"B"})," into the relay chain."]})]})}function d(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},41612:(e,s,n)=>{n.d(s,{A:()=>a});const a=n.p+"assets/images/hrmp-ex-d985c82747b653714ff4cde293e1eccc.png"},28453:(e,s,n)=>{n.d(s,{R:()=>r,x:()=>o});var a=n(96540);const i={},t=a.createContext(i);function r(e){const s=a.useContext(t);return a.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),a.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a74a59a0.1a85786b.js b/assets/js/a74a59a0.1a85786b.js deleted file mode 100644 index ed0022f2f0b..00000000000 --- a/assets/js/a74a59a0.1a85786b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4975],{61861:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"maintain/maintain-guides-how-to-validate-polkadot","title":"Run a Validator (Polkadot)","description":"The fundamentals for running a Polkadot validator.","source":"@site/../docs/maintain/maintain-guides-how-to-validate-polkadot.md","sourceDirName":"maintain","slug":"/maintain-guides-how-to-validate-polkadot","permalink":"/docs/maintain-guides-how-to-validate-polkadot","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/maintain-guides-how-to-validate-polkadot.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1731067872000,"frontMatter":{"id":"maintain-guides-how-to-validate-polkadot","title":"Run a Validator (Polkadot)","sidebar_label":"How to run a Validator on Polkadot","description":"The fundamentals for running a Polkadot validator.","keywords":["validator setup","validator","validate","binary","runtime"],"slug":"../maintain-guides-how-to-validate-polkadot"},"sidebar":"docs","previous":{"title":"Validator Guides","permalink":"/docs/maintain-validator-index"},"next":{"title":"Validator Payout Overview","permalink":"/docs/maintain-guides-validator-payout"}}');var i=t(74848),o=t(28453);const s={id:"maintain-guides-how-to-validate-polkadot",title:"Run a Validator (Polkadot)",sidebar_label:"How to run a Validator on Polkadot",description:"The fundamentals for running a Polkadot validator.",keywords:["validator setup","validator","validate","binary","runtime"],slug:"../maintain-guides-how-to-validate-polkadot"},r=void 0,l={},d=[{value:"Preliminaries",id:"preliminaries",level:2},{value:"How many DOT do I need to become an active Validator?",id:"how-many-dot-do-i-need-to-become-an-active-validator",level:3},{value:"Initial Set-up",id:"initial-set-up",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Reference Hardware",id:"reference-hardware",level:4},{value:"Install & Configure Network Time Protocol (NTP) Client",id:"install--configure-network-time-protocol-ntp-client",level:3},{value:"Make Sure Landlock is Enabled",id:"make-sure-landlock-is-enabled",level:3},{value:"Installing the Polkadot binaries",id:"installing-the-polkadot-binaries",level:3},{value:"Installation from official releases",id:"installation-from-official-releases",level:4},{value:"Optional: Installation with Package Managers",id:"optional-installation-with-package-managers",level:4},{value:"Debian-based (Debian, Ubuntu)",id:"debian-based-debian-ubuntu",level:4},{value:"RPM-based (Fedora, CentOS)",id:"rpm-based-fedora-centos",level:4},{value:"Optional: Installation with Ansible",id:"optional-installation-with-ansible",level:4},{value:"Optional: Installation with Docker",id:"optional-installation-with-docker",level:4},{value:"Optional: Building the Polkadot binaries from sources",id:"optional-building-the-polkadot-binaries-from-sources",level:3},{value:"Prerequisites: Install Rust and Dependencies",id:"prerequisites-install-rust-and-dependencies",level:4},{value:"Building the binaries",id:"building-the-binaries",level:4},{value:"Verify the installation",id:"verify-the-installation",level:3},{value:"Synchronize Chain Data",id:"synchronize-chain-data",level:3},{value:"Database Snapshot Services",id:"database-snapshot-services",level:4},{value:"Bond DOT",id:"bond-dot",level:2},{value:"Set Session Keys",id:"set-session-keys",level:2},{value:"Generating the Session Keys",id:"generating-the-session-keys",level:3},{value:"Option 1: PolkadotJS-APPS",id:"option-1-polkadotjs-apps",level:4},{value:"Option 2: CLI",id:"option-2-cli",level:4},{value:"Submitting the setKeys Transaction",id:"submitting-the-setkeys-transaction",level:3},{value:"Setting the Node (aka Network) Key",id:"setting-the-node-aka-network-key",level:3},{value:"Validate",id:"validate",level:2},{value:"Setup via Validator Tab",id:"setup-via-validator-tab",level:3},{value:"Decentralized Nodes Program",id:"decentralized-nodes-program",level:2},{value:"Running a validator on a testnet",id:"running-a-validator-on-a-testnet",level:2},{value:"FAQ",id:"faq",level:2},{value:"Why am I unable to synchronize the chain with 0 peers?",id:"why-am-i-unable-to-synchronize-the-chain-with-0-peers",level:3},{value:"How do I clear all my chain data?",id:"how-do-i-clear-all-my-chain-data",level:3},{value:"Note about VPS",id:"note-about-vps",level:2},{value:"Disable SMT",id:"disable-smt",level:3},{value:"Disable automatic NUMA balancing",id:"disable-automatic-numa-balancing",level:3},{value:"Configure Spectre/Meltdown Mitigations",id:"configure-spectremeltdown-mitigations",level:3},{value:"For Linux >= 5.16",id:"for-linux--516",level:4},{value:"For Linux < 5.16",id:"for-linux--516-1",level:4},{value:"VPS List",id:"vps-list",level:3}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",del:"del",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["If you are a beginner, it is recommended that you start your validator journey on Kusama network.\nCheck the ",(0,i.jsx)(n.a,{href:"/docs/maintain-guides-how-to-validate-kusama",children:"Kusama guide"})," for details on how to get\nstarted."]})}),"\n",(0,i.jsx)(n.h2,{id:"preliminaries",children:"Preliminaries"}),"\n",(0,i.jsxs)(n.p,{children:["Running a validator on a live network is a lot of responsibility! You will be accountable for not\nonly your own stake, but also the stake of your current nominators. If you make a mistake and get\n",(0,i.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashed"}),", your tokens and your reputation will be at risk. However,\nrunning a validator can also be very rewarding, knowing that you contribute to the security of a\ndecentralized network while growing your stash."]}),"\n",(0,i.jsxs)(n.admonition,{type:"warning",children:[(0,i.jsx)(n.p,{children:"It is highly recommended that you have significant system administration experience before\nattempting to run your own validator."}),(0,i.jsx)(n.p,{children:"You must be able to handle technical issues and anomalies with your node which you must be able to\ntackle yourself. Being a validator involves more than just executing the Polkadot binary."})]}),"\n",(0,i.jsxs)(n.p,{children:["Since security is so important to running a successful validator, you should take a look at the\n",(0,i.jsx)(n.a,{href:"/docs/maintain-guides-secure-validator",children:"secure validator"})," information to make sure you understand the\nfactors to consider when constructing your infrastructure. As you progress in your journey as a\nvalidator, you will likely want to use this repository as a ",(0,i.jsx)(n.em,{children:"starting point"})," for your own\nmodifications and customizations."]}),"\n",(0,i.jsxs)(n.p,{children:["If you need help, please reach out on the\n",(0,i.jsx)(n.a,{href:"https://matrix.to/#/#polkadotvalidatorlounge:web3.foundation",children:"Polkadot Validator Lounge"})," on\nElement. The team and other validators are there to help answer questions and provide tips from\nexperience."]}),"\n",(0,i.jsx)(n.h3,{id:"how-many-dot-do-i-need-to-become-an-active-validator",children:"How many DOT do I need to become an active Validator?"}),"\n",(0,i.jsxs)(n.p,{children:["You can have a rough estimate on that by using the methods listed\n",(0,i.jsx)(n.a,{href:"../general/faq.md/#what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator",children:"here"}),".\nTo be elected into the set, you need a minimum stake behind your validator. This stake can come from\nyourself or from ",(0,i.jsx)(n.a,{href:"/docs/learn-nominator",children:"nominators"}),". This means that as a minimum, you will\nneed enough DOT to set up stash (and optionally a staking\n",(0,i.jsx)(n.a,{href:"/docs/learn-proxies",children:"proxy account"}),") with the existential deposit, plus a little extra for\ntransaction fees. The rest can come from nominators. To understand how validators are elected, check\nthe ",(0,i.jsx)(n.a,{href:"/docs/learn-phragmen",children:"NPoS Election algorithms"})," page."]}),"\n",(0,i.jsxs)(n.p,{children:["For further reference, you may look at the\n",(0,i.jsx)(n.a,{href:"https://polkadot.subscan.io/validator_list?status=validator",children:"statistics for current, active validators"}),".\nFor Kusama see ",(0,i.jsx)(n.a,{href:"https://kusama.subscan.io/validator_list?status=validator",children:"here"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Warning:"})," Any DOT that you stake for your validator is liable to be\n",(0,i.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashed"}),", meaning that an insecure or improper setup may result in loss\nof DOT tokens! If you are not confident in your ability to run a validator node, it is recommended\nto nominate your DOT to a trusted validator node instead."]}),"\n",(0,i.jsx)(n.h2,{id:"initial-set-up",children:"Initial Set-up"}),"\n",(0,i.jsx)(n.h3,{id:"requirements",children:"Requirements"}),"\n",(0,i.jsxs)(n.p,{children:["The most common way for a beginner to run a validator is on a cloud server running Linux. You may\nchoose whatever ",(0,i.jsx)(n.a,{href:"#note-about-vps",children:"VPS"})," provider that you prefer. As OS it is best to use a recent\nDebian Linux. For this guide we will be using ",(0,i.jsx)(n.strong,{children:"Ubuntu 22.04"}),", but the instructions should be\nsimilar for other platforms."]}),"\n",(0,i.jsx)(n.h4,{id:"reference-hardware",children:"Reference Hardware"}),"\n",(0,i.jsxs)(n.p,{children:["The transaction weights in Polkadot are benchmarked on reference hardware. We ran the benchmark on\nVM instances of two major cloud providers: Google Cloud Platform (GCP) and Amazon Web Services\n(AWS). To be specific, we used ",(0,i.jsx)(n.code,{children:"n2-standard-8"})," VM instance on GCP and ",(0,i.jsx)(n.code,{children:"c6i.4xlarge"})," on AWS. It is\nrecommended that the hardware used to run the validators at least matches the specs of the reference\nhardware in order to ensure they are able to process all blocks in time. If you use subpar hardware\nyou will possibly run into performance issues, get less era points, and potentially even get\nslashed."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"CPU"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"x86-64 compatible;"}),"\n",(0,i.jsx)(n.li,{children:"Intel Ice Lake, or newer (Xeon or Core series); AMD Zen3, or newer (EPYC or Ryzen);"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.del,{children:"4"})," 8 physical cores @ 3.4GHz; starting with January 2025, the recommendation is to use a\nhardware with at least ",(0,i.jsx)(n.strong,{children:"8"})," physical cores, see\n",(0,i.jsx)(n.a,{href:"https://polkadot.subsquare.io/referenda/1051",children:"referenda"})," for more details about the rationale;"]}),"\n",(0,i.jsx)(n.li,{children:"Simultaneous multithreading disabled (Hyper-Threading on Intel, SMT on AMD);"}),"\n",(0,i.jsxs)(n.li,{children:["Prefer single-threaded performance over higher cores count. A comparison of single-threaded\nperformance can be found ",(0,i.jsx)(n.a,{href:"https://www.cpubenchmark.net/singleThread.html",children:"here"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Storage"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["An NVMe SSD of 1 TB (As it should be reasonably sized to deal with blockchain growth). An\nestimation of current chain snapshot sizes can be found\n",(0,i.jsx)(n.a,{href:"https://stakeworld.io/docs/dbsize",children:"here"}),". In general, the latency is more important than the\nthroughput."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Memory"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"32 GB DDR4 ECC."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"System"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Linux Kernel 5.16 or newer."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Network"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The minimum symmetric networking speed is set to 500 Mbit/s (= 62.5 MB/s). This is required to\nsupport a large number of parachains and allow for proper congestion control in busy network\nsituations."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["The specs posted above are not a ",(0,i.jsx)(n.em,{children:"hard"})," requirement to run a validator, but are considered best\npractice. Running a validator is a responsible task; using professional hardware is a must in any\nway."]}),"\n",(0,i.jsx)(n.h3,{id:"install--configure-network-time-protocol-ntp-client",children:"Install & Configure Network Time Protocol (NTP) Client"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Network_Time_Protocol",children:"NTP"})," is a networking protocol designed to\nsynchronize the clocks of computers over a network. NTP allows you to synchronize the clocks of all\nthe systems within the network. Currently it is required that validators' local clocks stay\nreasonably in sync, so you should be running NTP or a similar service. You can check whether you\nhave the NTP client by running:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.em,{children:"If you are using Ubuntu 18.04 or a newer version, NTP Client should be installed by default."})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"timedatectl\n"})}),"\n",(0,i.jsxs)(n.p,{children:["If NTP is installed and running, you should see ",(0,i.jsx)(n.code,{children:"System clock synchronized: yes"})," (or a similar\nmessage). If you do not see it, you can install it by executing:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo apt-get install ntp\n"})}),"\n",(0,i.jsx)(n.p,{children:"ntpd will be started automatically after install. You can query ntpd for status information to\nverify that everything is working:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo ntpq -p\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"Skipping this can result in the validator node missing block authorship opportunities. If the clock\nis out of sync (even by a small amount), the blocks the validator produces may not get accepted by\nthe network."})}),"\n",(0,i.jsx)(n.h3,{id:"make-sure-landlock-is-enabled",children:"Make Sure Landlock is Enabled"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.kernel.org/userspace-api/landlock.html",children:"Landlock"})," is a Linux security feature used in\nPolkadot:"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Landlock empowers any process, including unprivileged ones, to securely restrict themselves."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"To make use of landlock, make sure you are on the reference kernel version or newer. Most Linux\ndistributions should already have landlock enabled, but you can check by running the following as\nroot:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"dmesg | grep landlock || journalctl -kg landlock\n"})}),"\n",(0,i.jsxs)(n.p,{children:["If it is not enabled, please see the\n",(0,i.jsx)(n.a,{href:"https://docs.kernel.org/userspace-api/landlock.html#kernel-support",children:'official docs ("Kernel support")'}),"\nif you would like to build Linux with landlock enabled."]}),"\n",(0,i.jsx)(n.h3,{id:"installing-the-polkadot-binaries",children:"Installing the Polkadot binaries"}),"\n",(0,i.jsx)(n.admonition,{title:"Multiple Validator Binaries",type:"info",children:(0,i.jsxs)(n.p,{children:["In addition to the ",(0,i.jsx)(n.code,{children:"polkadot"})," binary, recent changes have separated out functionality into two\nadditional needed binaries, ",(0,i.jsx)(n.code,{children:"polkadot-prepare-worker"}),", and ",(0,i.jsx)(n.code,{children:"polkadot-execute-worker"}),". All three\nbinaries are needed to properly run a validator node. More context on these changes can be found\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot/pull/7337",children:"here"})]})}),"\n",(0,i.jsx)(n.h4,{id:"installation-from-official-releases",children:"Installation from official releases"}),"\n",(0,i.jsxs)(n.p,{children:["The official binaries can be downloaded from the\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk/releases",children:"Github Releases"}),". You should download the\nlatest available version. You can also download the binaries by using the following direct links\n(replace X.Y.Z by the appropriate version):"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-vX.Y.Z/polkadot\nhttps://github.com/paritytech/polkadot-sdk/releases/download/polkadot-vX.Y.Z/polkadot-execute-worker\nhttps://github.com/paritytech/polkadot-sdk/releases/download/polkadot-vX.Y.Z/polkadot-prepare-worker\n"})}),"\n",(0,i.jsx)(n.h4,{id:"optional-installation-with-package-managers",children:"Optional: Installation with Package Managers"}),"\n",(0,i.jsxs)(n.p,{children:["The Polkadot Binary in included in ",(0,i.jsx)(n.code,{children:"Debian"})," derivatives (i.e. ",(0,i.jsx)(n.strong,{children:"Debian"}),", ",(0,i.jsx)(n.strong,{children:"Ubuntu"}),") and\n",(0,i.jsx)(n.code,{children:"RPM-based"})," distros (i.e. ",(0,i.jsx)(n.strong,{children:"Fedora"}),", ",(0,i.jsx)(n.strong,{children:"CentOS"}),")."]}),"\n",(0,i.jsx)(n.h4,{id:"debian-based-debian-ubuntu",children:"Debian-based (Debian, Ubuntu)"}),"\n",(0,i.jsx)(n.p,{children:"Run the following commands as the root user:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ssh",children:"# Import the security@parity.io GPG key\ngpg --recv-keys --keyserver hkps://keys.mailvelope.com 9D4B2B6EB8F97156D19669A9FF0812D491B96798\ngpg --export 9D4B2B6EB8F97156D19669A9FF0812D491B96798 > /usr/share/keyrings/parity.gpg\n# Add the Parity repository and update the package index\necho 'deb [signed-by=/usr/share/keyrings/parity.gpg] https://releases.parity.io/deb release main' > /etc/apt/sources.list.d/parity.list\napt update\n# Install the `parity-keyring` package - This will ensure the GPG key\n# used by APT remains up-to-date\napt install parity-keyring\n# Install polkadot\napt install polkadot\n"})}),"\n",(0,i.jsx)(n.h4,{id:"rpm-based-fedora-centos",children:"RPM-based (Fedora, CentOS)"}),"\n",(0,i.jsx)(n.p,{children:"Run the following commands as the root user:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"# Install dnf-plugins-core (This might already be installed)\ndnf install dnf-plugins-core\n# Add the repository and enable it\ndnf config-manager --add-repo https://releases.parity.io/rpm/polkadot.repo\ndnf config-manager --set-enabled polkadot\n# Install polkadot (You may have to confirm the import of the GPG key, which\n# should have the following fingerprint: 9D4B2B6EB8F97156D19669A9FF0812D491B96798)\ndnf install polkadot\n"})}),"\n",(0,i.jsx)(n.p,{children:'Make sure you verify the installation (see the "Verify the installation" section).'}),"\n",(0,i.jsxs)(n.admonition,{title:"By default, the Polkadot systemd service is disabled",type:"note",children:[(0,i.jsx)(n.p,{children:"To start the service, run:"}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"sudo systemctl start polkadot.service\n"})})]}),"\n",(0,i.jsx)(n.h4,{id:"optional-installation-with-ansible",children:"Optional: Installation with Ansible"}),"\n",(0,i.jsxs)(n.p,{children:["To manage Polkadot installation with Ansible, you can use the ",(0,i.jsx)(n.strong,{children:"Substrate node role"})," distributed on\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/ansible-galaxy/",children:"Parity chain operations Ansible collection"})]}),"\n",(0,i.jsx)(n.h4,{id:"optional-installation-with-docker",children:"Optional: Installation with Docker"}),"\n",(0,i.jsxs)(n.p,{children:["To run Polkadot on a Docker or an OCI compatible container runtime, you can use the official\n",(0,i.jsx)(n.a,{href:"https://hub.docker.com/r/parity/polkadot/tags",children:"parity/polkadot docker image"}),", available on Docker\nHub (replace X.Y.Z by the appropriate version):"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"docker.io/parity/polkadot:vX.Y.Z\n"})}),"\n",(0,i.jsx)(n.h3,{id:"optional-building-the-polkadot-binaries-from-sources",children:"Optional: Building the Polkadot binaries from sources"}),"\n",(0,i.jsx)(n.h4,{id:"prerequisites-install-rust-and-dependencies",children:"Prerequisites: Install Rust and Dependencies"}),"\n",(0,i.jsx)(n.p,{children:"If you have never installed Rust, you should do this first."}),"\n",(0,i.jsx)(n.p,{children:"If you have already installed Rust, run the following command to make sure you are using the latest\nversion."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"rustup update\n"})}),"\n",(0,i.jsx)(n.p,{children:"If not, this command will fetch the latest version of Rust and install it."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"curl https://sh.rustup.rs -sSf | sh -s -- -y\n"})}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsx)(n.p,{children:'If you do not have "curl" installed, run:'}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"sudo apt install curl\n"})}),(0,i.jsxs)(n.p,{children:['It will also be valuable to have "websocat" (Netcat, curl and socat for WebSockets) installed for\nRPC interactions. Installation instructions for various operating systems can be found\n',(0,i.jsx)(n.a,{href:"https://github.com/vi/websocat#installation",children:"here"}),"."]})]}),"\n",(0,i.jsx)(n.p,{children:"To configure your shell, run the following command."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"source $HOME/.cargo/env\n"})}),"\n",(0,i.jsx)(n.p,{children:"Verify your installation."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"rustc --version\n"})}),"\n",(0,i.jsx)(n.p,{children:"Finally, run this command to install the necessary dependencies for compiling and running the\nPolkadot node software."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo apt install make clang pkg-config libssl-dev build-essential\n"})}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsxs)(n.p,{children:["If you are using OSX and you have ",(0,i.jsx)(n.a,{href:"https://brew.sh",children:"Homebrew"})," installed, you can issue the following\nequivalent command INSTEAD of the previous one:"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"brew install cmake pkg-config openssl git llvm\n"})})]}),"\n",(0,i.jsx)(n.h4,{id:"building-the-binaries",children:"Building the binaries"}),"\n",(0,i.jsxs)(n.p,{children:["You can build the Polkadot binaries from the\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk",children:"paritytech/polkadot-sdk"})," repository on GitHub."]}),"\n",(0,i.jsxs)(n.p,{children:["You should generally use the latest ",(0,i.jsx)(n.strong,{children:"X.Y.Z"}),' tag. You should either review the output from the "git\ntag" command or view the ',(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk/tags",children:"Polkadot SDK Github tags"}),"\nto see a list of all the available release versions. You should replace ",(0,i.jsx)(n.code,{children:"VERSION"})," below with the\nlatest build (i.e., the highest number)."]}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsx)(n.p,{children:"If you prefer to use SSH rather than HTTPS, you can replace the first line of the below with"}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"git clone git@github.com:paritytech/polkadot-sdk.git\n"})})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"git clone https://github.com/paritytech/polkadot-sdk.git\ncd polkadot-sdk/polkadot\n"})}),"\n",(0,i.jsx)(n.p,{children:"Run the following command to find the latest version."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"git tag -l | sort -V | grep -v -- '-rc'\n"})}),"\n",(0,i.jsx)(n.p,{children:'Find the latest version; replace "VERSION" in the command below and run to change your branch.'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"git checkout VERSION\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Build native code with the production profile. The following will make sure that the binaries are\nall in your ",(0,i.jsx)(n.code,{children:"$PATH"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"cargo install --force --path . --profile production\n"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:"This step will take a while (generally 10 - 40 minutes, depending on your hardware)."})})}),"\n",(0,i.jsxs)(n.admonition,{title:"Compilation Errors",type:"note",children:[(0,i.jsxs)(n.p,{children:["If you run into compile errors, you may have to pin the version of Rust compiler to the one that was\nused to build the release. Check out ",(0,i.jsx)(n.code,{children:"Rust compiler versions"})," section in the release notes. This can\nbe done by running:"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"rustup install nightly-2022-05-18\nrustup target add wasm32-unknown-unknown --toolchain nightly-2022-05-18\ncargo +nightly-2022-05-18 build --release\n"})}),(0,i.jsx)(n.p,{children:"You may also need to run the build more than once."}),(0,i.jsx)(n.p,{children:"If you would like to execute the tests, run the following command:"}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"cargo test --all\n"})})]}),"\n",(0,i.jsxs)(n.p,{children:["If you are interested in generating keys locally, you can also install ",(0,i.jsx)(n.code,{children:"subkey"})," from the same\ndirectory. You may then take the generated ",(0,i.jsx)(n.code,{children:"subkey"})," executable and transfer it to an air-gapped\nmachine for extra security."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"cargo install --force --git https://github.com/paritytech/polkadot-sdk subkey\n"})}),"\n",(0,i.jsx)(n.h3,{id:"verify-the-installation",children:"Verify the installation"}),"\n",(0,i.jsx)(n.p,{children:"After installing Polkadot, you can verify the installation by running"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"polkadot --version\npolkadot-execute-worker --version\npolkadot-prepare-worker --version\n"})}),"\n",(0,i.jsx)(n.p,{children:"It should return something like this (the exact versions don't matter, but they must all be the\nsame):"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"0.9.43-36264cb36db\n0.9.43-36264cb36db\n0.9.43-36264cb36db\n"})}),"\n",(0,i.jsxs)(n.p,{children:["If not, make sure that you installed all the binaries, all the binaries are somewhere in your\n",(0,i.jsx)(n.code,{children:"$PATH"})," and they are all in the same folder."]}),"\n",(0,i.jsx)(n.h3,{id:"synchronize-chain-data",children:"Synchronize Chain Data"}),"\n",(0,i.jsx)(n.p,{children:"You can begin syncing your node by running the following command if you do not want to start in\nvalidator mode right away:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"polkadot\n"})}),"\n",(0,i.jsxs)(n.admonition,{type:"info",children:[(0,i.jsx)(n.p,{children:"If you want to run a validator on Kusama, you have an option to specify the chain. With no\nspecification, this would default to Polkadot."}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"polkadot --chain=kusama\n"})})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"2021-06-17 03:07:07 Parity Polkadot\n2021-06-17 03:07:07 \u270c\ufe0f version 0.9.5-95f6aa201-x86_64-linux-gnu\n2021-06-17 03:07:07 \u2764\ufe0f by Parity Technologies , 2017-2021\n2021-06-17 03:07:07 \ud83d\udccb Chain specification: Polkadot\n2021-06-17 03:07:07 \ud83c\udff7 Node name: boiling-pet-7554\n2021-06-17 03:07:07 \ud83d\udc64 Role: FULL\n2021-06-17 03:07:07 \ud83d\udcbe Database: RocksDb at /root/.local/share/polkadot/chains/polkadot/db\n2021-06-17 03:07:07 \u26d3 Native runtime: polkadot-9050 (parity-polkadot-0.tx7.au0)\n2021-06-17 03:07:10 \ud83c\udff7 Local node identity is: 12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u\n2021-06-17 03:07:10 \ud83d\udce6 Highest known block at #17914\n2021-06-17 03:07:10 \u303d\ufe0f Prometheus server started at 127.0.0.1:9615\n2021-06-17 03:07:10 Listening for new connections on 127.0.0.1:9944.\n"})}),"\n",(0,i.jsx)(n.admonition,{title:"Example of node sync",type:"info",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"2021-06-17 03:07:39 \ud83d\udd0d Discovered new external address for our node: /ip4/10.26.16.1/tcp/30333/ws/p2p/12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u\n2021-06-17 03:07:40 \u2699\ufe0f Syncing 218.8 bps, target=#5553764 (17 peers), best: #24034 (0x08af\u2026dcf5), finalized #23552 (0xd4f0\u20262642), \u2b07 173.5kiB/s \u2b06 12.7kiB/s\n2021-06-17 03:07:45 \u2699\ufe0f Syncing 214.8 bps, target=#5553765 (20 peers), best: #25108 (0xb272\u2026e800), finalized #25088 (0x94e6\u20268a9f), \u2b07 134.3kiB/s \u2b06 7.4kiB/s\n2021-06-17 03:07:50 \u2699\ufe0f Syncing 214.8 bps, target=#5553766 (21 peers), best: #26182 (0xe7a5\u202601a2), finalized #26112 (0xcc29\u2026b1a9), \u2b07 5.0kiB/s \u2b06 1.1kiB/s\n2021-06-17 03:07:55 \u2699\ufe0f Syncing 138.4 bps, target=#5553767 (21 peers), best: #26874 (0xcf4b\u20266553), finalized #26624 (0x9dd9\u202627f8), \u2b07 18.9kiB/s \u2b06 2.0kiB/s\n2021-06-17 03:08:00 \u2699\ufe0f Syncing 37.0 bps, target=#5553768 (22 peers), best: #27059 (0x5b73\u20266fc9), finalized #26624 (0x9dd9\u202627f8), \u2b07 14.3kiB/s \u2b06 4.4kiB/s\n"})})}),"\n",(0,i.jsxs)(n.admonition,{title:"Use Warp sync for faster syncing",type:"tip",children:[(0,i.jsxs)(n.p,{children:["By default, the node performs ",(0,i.jsx)(n.code,{children:"full"})," sync, which downloads and validates the full blockchain\nhistory. Full sync works by listening to announced blocks and requesting the blocks from the\nannouncing peers, or just the block headers in case of light clients."]}),(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Fast"})," sync is another option that works by downloading the block header history and validating the\nauthority set changes in order to arrive at a specific (usually the most recent) header. After the\ndesired header has been reached and verified, the state can be downloaded and imported. Once this\nprocess has been completed, the node can proceed with a full sync."]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"polkadot --sync warp\n"})}),(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Warp sync"})," initially downloads and validates the finality proofs from\n",(0,i.jsx)(n.a,{href:"/docs/learn-consensus#finality-gadget-grandpa",children:"GRANDPA"})," and then downloads the state of the\nlatest finalized block. After the warp sync, the node is ready to import the latest blocks from the\nnetwork and can be used as a Validator. The blocks from genesis will be downloaded in the\nbackground. Check\n",(0,i.jsx)(n.a,{href:"https://substrate.stackexchange.com/questions/334/what-kinds-of-sync-mechanisms-does-substrate-implement/",children:"this discussion"}),"\nfor more information about the different sync options available."]})]}),"\n",(0,i.jsxs)(n.admonition,{title:"Validators should sync using the RocksDb backend",type:"note",children:[(0,i.jsxs)(n.p,{children:["This is implicit by default, but can be explicit by passing the ",(0,i.jsx)(n.code,{children:"--database RocksDb"})," flag."]}),(0,i.jsxs)(n.p,{children:["In the future, it is recommended to switch to the faster and more efficient ParityDB option. Note\nthat ",(0,i.jsx)(n.strong,{children:"ParityDB is still experimental and should not be used in production."})," If you want to test\nout ParityDB, you can add the flag ",(0,i.jsx)(n.code,{children:"--database paritydb"}),". Switching between database backends will\nrequire a resync."]})]}),"\n",(0,i.jsx)(n.p,{children:"Depending on the size of the chain when you do this, this step may take anywhere from a few minutes\nto a few hours."}),"\n",(0,i.jsxs)(n.p,{children:["If you are interested in determining how much longer you have to go, your server logs (printed to\nSTDOUT from the ",(0,i.jsx)(n.code,{children:"polkadot"})," process) will tell you the latest block your node has processed and\nverified. You can then compare that to the current highest block via\n",(0,i.jsx)(n.a,{href:"https://telemetry.polkadot.io/#list/Polkadot%20CC1",children:"Telemetry"})," or the\n",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/explorer",children:"PolkadotJS Block Explorer"}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"database-snapshot-services",children:"Database Snapshot Services"}),"\n",(0,i.jsx)(n.p,{children:"If you start a node for the first time, it will start building from the genesis block. This process\ncan take a while depending on the database size. To make this process faster, snapshots can be used.\nSnapshots are compressed backups of the database directory of Polkadot/Kusama nodes, containing the\nwhole chain (or a pruned version of it, with states only from the latest 1000 or 256 blocks). Listed\nbelow are a few public snapshot providers for Polkadot and Kusama."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://stakeworld.io/snapshot",children:"Stakeworld"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://polkachu.com/snapshots",children:"Polkachu"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://polkashots.io/",children:"Polkashots"})}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsx)(n.p,{children:"For the security of the network, it is recommended that you sync from scratch, even if you are\nrunning your node in pruning mode for validation. The reason is that if these snapshots get\ncorrupted and a majority of nodes run based on these snapshots, the network could end up running on\na non-canonical chain."})}),"\n",(0,i.jsx)(n.h2,{id:"bond-dot",children:"Bond DOT"}),"\n",(0,i.jsxs)(n.p,{children:["There is a ",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#minimum-validator-bond",children:"minimum bond"})," to start a\nvalidator instance, but to enter the active validator set and be eligible to earn rewards, your\nvalidator node should be nominated by a minimum number of DOT tokens."]}),"\n",(0,i.jsx)(n.p,{children:"If you are validator who intends to get DOT/KSM nominations from the community, you will need to\nshow some skin in the game. For that, you need to bond some DOT/KSM as own stake. Make sure not to\nbond all your DOT balance since you will be unable to pay transaction fees from your bonded balance."}),"\n",(0,i.jsx)(n.admonition,{title:"Controller accounts are deprecated. Use Staking Proxy.",type:"info",children:(0,i.jsxs)(n.p,{children:["Controller accounts are deprecated. For more information, see\n",(0,i.jsx)(n.a,{href:"https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748",children:"this discussion"}),".\nIt is highly recommended that you setup an account with a staking proxy, which can be used for\nissuing start and stop validating calls. Read more about ",(0,i.jsx)(n.a,{href:"/docs/learn-proxies",children:"proxy accounts"}),"\nhere."]})}),"\n",(0,i.jsxs)(n.p,{children:["First, go to the ",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking/actions",children:"Staking"}),' section. Click on\n"Account Actions", and then the "+ Stash" button.']}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"bonding-JS-UI",src:t(46966).A+"",width:"2143",height:"847"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stash account"})," - Select your Stash account (which is the account with the DOT/KSM balance)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Value bonded"})," - How much DOT from the Stash account you want to bond/stake. Note that you do\nnot need to bond all of the DOT in that account. Also note that you can always bond ",(0,i.jsx)(n.em,{children:"more"})," DOT\nlater. However, ",(0,i.jsx)(n.em,{children:"withdrawing"})," any bonded amount requires the duration of the unbonding period. On\nKusama, the unbonding period is 7 days. On Polkadot, the planned unbonding period is 28 days."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Payment destination"})," - The account where the rewards from validating are sent. More info\n",(0,i.jsx)(n.a,{href:"../learn/learn-staking.md/#reward-distribution",children:"here"}),". Starting with runtime version v23 natively\nincluded in client version ",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot/releases/tag/v0.9.3",children:"0.9.3"}),",\npayouts can go to any custom address. If you'd like to redirect payments to an account that is not\nthe stash account, you can do it by entering the address here. Note that it is extremely unsafe to\nset an exchange address as the recipient of the staking rewards."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once everything is filled in properly, click ",(0,i.jsx)(n.code,{children:"Bond"})," and sign the transaction with your Stash\naccount."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"sign transaction",src:t(83402).A+"",width:"2141",height:"780"})}),"\n",(0,i.jsxs)(n.p,{children:["After a few seconds, you should see an ",(0,i.jsx)(n.code,{children:"ExtrinsicSuccess"})," message."]}),"\n",(0,i.jsxs)(n.p,{children:["Your bonded account will be available under ",(0,i.jsx)(n.code,{children:"Stashes"}),". You should now see a new card with all your\naccounts (note: you may need to refresh the screen). The bonded amount on the right corresponds to\nthe funds bonded by the Stash account."]}),"\n",(0,i.jsx)(n.h2,{id:"set-session-keys",children:"Set Session Keys"}),"\n",(0,i.jsx)(n.admonition,{title:"Session keys are consensus critical",type:"caution",children:(0,i.jsxs)(n.p,{children:["If you are not sure if your node has the current session keys that you made the ",(0,i.jsx)(n.code,{children:"setKeys"}),"\ntransaction then you can use one of the two available RPC methods to query your node:\n",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/docs/substrate/rpc/#haskeypublickey-bytes-keytype-text-bool",children:"hasKey"})," to\ncheck for a specific key or\n",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/docs/substrate/rpc/#hassessionkeyssessionkeys-bytes-bool",children:"hasSessionKeys"}),"\nto check the full session key public key string."]})}),"\n",(0,i.jsx)(n.p,{children:"Once your node is fully synced, stop the process by pressing Ctrl-C. At your terminal prompt, you\nwill now start running the node."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'polkadot --validator --name "name on telemetry"\n'})}),"\n",(0,i.jsx)(n.p,{children:"Similarly:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"2021-06-17 03:12:08 Parity Polkadot\n2021-06-17 03:12:08 \u270c\ufe0f version 0.9.5-95f6aa201-x86_64-linux-gnu\n2021-06-17 03:12:08 \u2764\ufe0f by Parity Technologies , 2017-2021\n2021-06-17 03:12:08 \ud83d\udccb Chain specification: Polkadot\n2021-06-17 03:12:08 \ud83c\udff7 Node name: nateched-test\n2021-06-17 03:12:08 \ud83d\udc64 Role: AUTHORITY\n2021-06-17 03:12:08 \ud83d\udcbe Database: RocksDb at /root/.local/share/polkadot/chains/polkadot/db\n2021-06-17 03:12:08 \u26d3 Native runtime: polkadot-9050 (parity-polkadot-0.tx7.au0)\n2021-06-17 03:12:12 \ud83c\udff7 Local node identity is: 12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u\n2021-06-17 03:12:12 \ud83d\udce6 Highest known block at #64673\n2021-06-17 03:12:12 \u303d\ufe0f Prometheus server started at 127.0.0.1:9615\n2021-06-17 03:12:12 Listening for new connections on 127.0.0.1:9944.\n2021-06-17 03:12:12 \ud83d\udc76 Starting BABE Authorship worker\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"2021-06-17 03:12:16 \ud83d\udd0d Discovered new external address for our node: /ip4/10.26.11.1/tcp/30333/p2p/12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u\n2021-06-17 03:12:17 \u2699\ufe0f Syncing, target=#5553810 (14 peers), best: #65068 (0x6da5\u20260662), finalized #65024 (0x4e84\u2026d170), \u2b07 352.2kiB/s \u2b06 75.6kiB/s\n"})}),"\n",(0,i.jsx)(n.p,{children:"You can give your validator any name that you like, but note that others will be able to see it, and\nit will be included in the list of all servers using the same telemetry server. Since numerous\npeople are using telemetry, it is recommended that you choose something likely to be unique."}),"\n",(0,i.jsx)(n.h3,{id:"generating-the-session-keys",children:"Generating the Session Keys"}),"\n",(0,i.jsx)(n.p,{children:"You need to tell the chain your Session keys by signing and submitting an extrinsic. This is what\nassociates your validator node with your stash account on Polkadot."}),"\n",(0,i.jsx)(n.h4,{id:"option-1-polkadotjs-apps",children:"Option 1: PolkadotJS-APPS"}),"\n",(0,i.jsxs)(n.p,{children:["You can generate your ",(0,i.jsx)(n.a,{href:"/docs/learn-cryptography",children:"Session keys"})," in the client via the apps RPC.\nIf you are doing this, make sure that you have the PolkadotJS-Apps explorer attached to your\nvalidator node. You can configure the apps dashboard to connect to the endpoint of your validator in\nthe Settings tab. If you are connected to a default endpoint hosted by Parity of Web3 Foundation,\nyou will not be able to use this method since making RPC requests to this node would effect the\nlocal keystore hosted on a ",(0,i.jsx)(n.em,{children:"public node"})," and you want to make sure you are interacting with the\nkeystore for ",(0,i.jsx)(n.em,{children:"your node"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Once ensuring that you have connected to your node, the easiest way to set session keys for your\nnode is by calling the ",(0,i.jsx)(n.code,{children:"author_rotateKeys"})," RPC request to create new keys in your validator's\nkeystore. Navigate to Toolbox tab and select RPC Calls then select the author > rotateKeys() option\nand remember to save the output that you get back for a later step."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Explorer RPC call",src:t(3106).A+"",width:"1700",height:"582"})}),"\n",(0,i.jsx)(n.h4,{id:"option-2-cli",children:"Option 2: CLI"}),"\n",(0,i.jsx)(n.p,{children:"If you are on a remote server, it is easier to run this command on the same machine (while the node\nis running with the default WS RPC port configured):"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl -H "Content-Type: application/json" -d \'{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}\' http://localhost:9944\n'})}),"\n",(0,i.jsx)(n.p,{children:'The output will have a hex-encoded "result" field. The result is the concatenation of the four\npublic keys. Save this result for a later step.'}),"\n",(0,i.jsx)(n.p,{children:"You can restart your node at this point."}),"\n",(0,i.jsxs)(n.h3,{id:"submitting-the-setkeys-transaction",children:["Submitting the ",(0,i.jsx)(n.code,{children:"setKeys"})," Transaction"]}),"\n",(0,i.jsx)(n.p,{children:"You need to tell the chain your Session keys by signing and submitting an extrinsic. This is what\nassociates your validator with your staking proxy."}),"\n",(0,i.jsxs)(n.p,{children:["Go to ",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking/actions",children:"Staking > Account Actions"}),', and click "Set\nSession Key" on the bonding account you generated earlier. Enter the output from ',(0,i.jsx)(n.code,{children:"author_rotateKeys"}),'\nin the field and click "Set Session Key".']}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.img,{alt:"staking-change-session",src:t(83215).A+"",width:"2792",height:"182"}),"\n",(0,i.jsx)(n.img,{alt:"staking-session-result",src:t(61748).A+"",width:"2146",height:"680"})]}),"\n",(0,i.jsx)(n.p,{children:"Submit this extrinsic and you are now ready to start validating."}),"\n",(0,i.jsx)(n.h3,{id:"setting-the-node-aka-network-key",children:"Setting the Node (aka Network) Key"}),"\n",(0,i.jsx)(n.p,{children:"Validators must use a static network key to maintain a stable node identity across restarts.\nStarting with Polkadot version 1.11, a check is performed on startup, and the following error will\nbe printed if a static node key is not set:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'Error:\n0: Starting an authority without network key\nThis is not a safe operation because other authorities in the network may depend on your node having a stable identity.\nOtherwise these other authorities may not being able to reach you.\n\nIf it is the first time running your node you could use one of the following methods:\n1. [Preferred] Separately generate the key with: key generate-node-key --base-path \n2. [Preferred] Separately generate the key with: key generate-node-key --file \n3. [Preferred] Separately generate the key with: key generate-node-key --default-base-path\n4. [Unsafe] Pass --unsafe-force-node-key-generation and make sure you remove it for subsequent node restarts"\n'})}),"\n",(0,i.jsxs)(n.p,{children:["The recommended solution is to generate a node key and save it to a file using\n",(0,i.jsx)(n.code,{children:"polkadot key generate-node-key --file "}),", then attach it to your node with\n",(0,i.jsx)(n.code,{children:"--node-key-file "}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Please see ",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk/pull/3852",children:"polkadot-sdk#3852"})," for the\nrationale behind this change."]}),"\n",(0,i.jsx)(n.h2,{id:"validate",children:"Validate"}),"\n",(0,i.jsxs)(n.p,{children:["To verify that your node is live and synchronized, head to\n",(0,i.jsx)(n.a,{href:"https://telemetry.polkadot.io/#list/Polkadot%20CC1",children:"Telemetry"})," and find your node. Note that this\nwill show all nodes on the Polkadot network, which is why it is important to select a unique name!"]}),"\n",(0,i.jsxs)(n.p,{children:["In this example, we used the name ",(0,i.jsx)(n.code,{children:"techedtest"})," and have successfully located it upon searching:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"polkadot-dashboard-telemetry",src:t(83517).A+"",width:"2862",height:"472"})}),"\n",(0,i.jsx)(n.h3,{id:"setup-via-validator-tab",children:"Setup via Validator Tab"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"polkadot-dashboard-validate-1",src:t(47526).A+"",width:"2128",height:"1022"})}),"\n",(0,i.jsxs)(n.p,{children:["Here you will need to input the Keys from ",(0,i.jsx)(n.code,{children:"rotateKeys"}),", which is the Hex output from\n",(0,i.jsx)(n.code,{children:"author_rotateKeys"}),". The keys will show as pending until applied at the start of a new session."]}),"\n",(0,i.jsx)(n.p,{children:'The "reward commission percentage" is the commission percentage that you can declare against your\nvalidator\'s rewards. This is the rate that your validator will be commissioned with.'}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Payment preferences"})," - You can specify the percentage of the rewards that will get paid to you.\nThe remaining will be split among your nominators."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Setting a commission rate of 100% suggests that you do not want your validator to receive",type:"caution",children:(0,i.jsx)(n.p,{children:"nominations"})}),"\n",(0,i.jsx)(n.p,{children:'You can also determine if you would like to receive nominations with the "allows new nominations"\noption.'}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"dashboard validate",src:t(28733).A+"",width:"2126",height:"694"})}),"\n",(0,i.jsx)(n.p,{children:'Click "Bond & Validate".'}),"\n",(0,i.jsx)(n.p,{children:'If you go to the "Staking" tab, you will see a list of active validators currently running on the\nnetwork. At the top of the page, it shows the number of validator slots that are available as well\nas the number of nodes that have signaled their intention to be a validator. You can go to the\n"Waiting" tab to double check to see whether your node is listed there.'}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"staking queue",src:t(72563).A+"",width:"2838",height:"1440"})}),"\n",(0,i.jsxs)(n.p,{children:["The validator set is refreshed every era. In the next era, if there is a slot available and your\nnode is selected to join the validator set, your node will become an active validator. Until then,\nit will remain in the ",(0,i.jsx)(n.em,{children:"waiting"})," queue. If your validator is not selected to become part of the\nvalidator set, it will remain in the ",(0,i.jsx)(n.em,{children:"waiting"})," queue until it is. There is no need to re-start if\nyou are not selected for the validator set in a particular era. However, it may be necessary to\nincrease the number of DOT staked or seek out nominators for your validator in order to join the\nvalidator set."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Congratulations!"})," If you have followed all of these steps, and been selected to be a part of the\nvalidator set, you are now running a Polkadot validator! If you need help, reach out on the\n",(0,i.jsx)(n.a,{href:"https://matrix.to/#/!NZrbtteFeqYKCUGQtr:matrix.parity.io?via=matrix.parity.io&via=matrix.org&via=web3.foundation",children:"Polkadot Validator chat"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"decentralized-nodes-program",children:"Decentralized Nodes Program"}),"\n",(0,i.jsxs)(n.p,{children:["The Decentralized Nodes program is a joint initiative by Web3 Foundation and Parity Technologies to\nprovide support for community validators. If you are interested in applying for the program, you can\nfind more information ",(0,i.jsx)(n.a,{href:"https://nodes.web3.foundation/",children:"here"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"running-a-validator-on-a-testnet",children:"Running a validator on a testnet"}),"\n",(0,i.jsx)(n.p,{children:"To verify your validator setup, it is possible to run it against a PoS test network such as Westend.\nHowever, validator slots are intentionally limited on Westend to ensure stability and availability\nof the testnet for the Polkadot release process."}),"\n",(0,i.jsx)(n.p,{children:"Here is a small comparison of each network characteristics as relevant to validators:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Network"}),(0,i.jsx)(n.th,{children:"Polkadot"}),(0,i.jsx)(n.th,{children:"Westend"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"epoch"}),(0,i.jsx)(n.td,{children:"4h"}),(0,i.jsx)(n.td,{children:"1h"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"era"}),(0,i.jsx)(n.td,{children:"1d"}),(0,i.jsx)(n.td,{children:"6h"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"token"}),(0,i.jsx)(n.td,{children:"DOT"}),(0,i.jsx)(n.td,{children:"WND (test)"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"active validators"}),(0,i.jsx)(n.td,{children:"~300"}),(0,i.jsx)(n.td,{children:"~20"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,i.jsx)(n.h3,{id:"why-am-i-unable-to-synchronize-the-chain-with-0-peers",children:"Why am I unable to synchronize the chain with 0 peers?"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"zero-peer",src:t(39664).A+"",width:"1350",height:"235"})}),"\n",(0,i.jsxs)(n.p,{children:["Make sure to enable ",(0,i.jsx)(n.code,{children:"30333"})," libp2p port. Eventually, it will take a little bit of time to discover\nother peers over the network."]}),"\n",(0,i.jsx)(n.h3,{id:"how-do-i-clear-all-my-chain-data",children:"How do I clear all my chain data?"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"polkadot purge-chain\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["Check out the ",(0,i.jsx)(n.a,{href:"https://substrate.stackexchange.com/",children:"Substrate StackExchange"})," to quickly get the\nanswers you need."]})}),"\n",(0,i.jsx)(n.h2,{id:"note-about-vps",children:"Note about VPS"}),"\n",(0,i.jsx)(n.p,{children:"VPS providers are very popular for running servers of any kind. Extensive benchmarking was conducted\nto ensure that VPS servers are able to keep up with the work load in general."}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsx)(n.p,{children:"Before you run a live Validator, please verify if the advertised performance is actually delivered\nconsistently by the VPS provider."}),(0,i.jsx)(n.p,{children:"::: The following server types showed acceptable performance during the benchmark tests. Please note\nthat this is not an endorsement in any way:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["GCP's ",(0,i.jsx)(n.em,{children:"c2"})," and ",(0,i.jsx)(n.em,{children:"c2d"})," machine families"]}),"\n",(0,i.jsxs)(n.li,{children:["AWS's ",(0,i.jsx)(n.em,{children:"c6id"})," machine family"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The following additional configurations were applied to the instances to tune their performance:"}),(0,i.jsxs)(n.h3,{id:"disable-smt",children:["Disable ",(0,i.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Simultaneous_multithreading",children:"SMT"})]}),(0,i.jsxs)(n.p,{children:["As critical path of Substrate is single-threaded we need to optimize for single-core CPU\nperformance. The node still profits from multiple cores when doing networking and other non-runtime\noperations. It is therefore still necessary to run it on at least the minimum required number of\ncores. Disabling SMT improves the performance as each vCPU becomes mapped to a physical CPU core\nrather than being presented to the OS as two logical cores. SMT implementation is called\n",(0,i.jsx)(n.em,{children:"Hyper-Threading"})," on Intel and ",(0,i.jsx)(n.em,{children:"2-way SMT"})," on AMD Zen. To disable SMT in runtime:"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"for cpunum in $(cat /sys/devices/system/cpu/cpu*/topology/thread_siblings_list | cut -s -d, -f2- | tr ',' '\\n' | sort -un)\ndo\n echo 0 > /sys/devices/system/cpu/cpu$cpunum/online\ndone\n"})}),(0,i.jsx)(n.p,{children:"It will disable every other (vCPU) core."}),(0,i.jsxs)(n.p,{children:["To save changes permanently add ",(0,i.jsx)(n.code,{children:"nosmt=force"})," as kernel parameter. Edit ",(0,i.jsx)(n.code,{children:"/etc/default/grub"})," and add\n",(0,i.jsx)(n.code,{children:"nosmt=force"})," to ",(0,i.jsx)(n.code,{children:"GRUB_CMDLINE_LINUX_DEFAULT"})," variable and run ",(0,i.jsx)(n.code,{children:"sudo update-grub"}),". After the reboot\nyou should see half of the cores are offline. Run ",(0,i.jsx)(n.code,{children:"lscpu --extended"})," to confirm."]}),(0,i.jsx)(n.h3,{id:"disable-automatic-numa-balancing",children:"Disable automatic NUMA balancing"}),(0,i.jsx)(n.p,{children:"If you have multiple physical CPUs (CPU0 and CPU1) in the system each with its own memory bank (MB0\nand MB1), then it is usually slower for a CPU0 to access MB1 due to the slower interconnection. To\nprevent the OS from automatically moving the running Substrate process from one CPU to another and\nthus causing an increased latency, it is recommended to disable automatic NUMA balancing."}),(0,i.jsx)(n.p,{children:"With automatic NUMA balancing disabled, an OS will always run a process on the same NUMA node where\nit was initially scheduled."}),(0,i.jsx)(n.p,{children:"To disable NUMA balancing in runtime:"}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"sysctl kernel.numa_balancing=0\n"})}),(0,i.jsxs)(n.p,{children:["To save changes permanently, update startup options and reconfigure GRUB. Edit ",(0,i.jsx)(n.code,{children:"/etc/default/grub"}),"\nand add ",(0,i.jsx)(n.code,{children:"numa_balancing=disable"})," to ",(0,i.jsx)(n.code,{children:"GRUB_CMDLINE_LINUX_DEFAULT"})," variable and run\n",(0,i.jsx)(n.code,{children:"sudo update-grub"}),". After reboot you can confirm the change by running\n",(0,i.jsx)(n.code,{children:"sysctl -a | grep 'kernel.numa_balancing'"})," and checking if the parameter is set to 0"]}),(0,i.jsx)(n.h3,{id:"configure-spectremeltdown-mitigations",children:"Configure Spectre/Meltdown Mitigations"}),(0,i.jsxs)(n.p,{children:["Spectre and Meltdown are vulnerabilities discovered in modern CPUs a few years ago. Mitigations were\nmade to the Linux kernel to cope with the multiple variations of these attacks. Check out\n",(0,i.jsx)(n.a,{href:"https://meltdownattack.com/",children:"https://meltdownattack.com/"})," for more info."]}),(0,i.jsxs)(n.p,{children:["Initially those mitigations added ~20% penalty to the performance of the workloads. As CPU\nmanufacturers started to roll-out mitigations implemented in hardware, the performance gap\n",(0,i.jsx)(n.a,{href:"https://www.phoronix.com/scan.php?page=article&item=3-years-specmelt&num=1",children:"narrowed down"}),". As the\nbenchmark demonstrates, the performance penalty got reduced to ~7% on Intel 10th Gen CPUs. This is\ntrue for the workloads running on both bare-metal and VMs. But the penalty remains high for the\ncontainerized workloads in some cases."]}),(0,i.jsxs)(n.p,{children:["As demonstrated in\n",(0,i.jsx)(n.a,{href:"http://mamememo.blogspot.com/2020/05/cpu-intensive-rubypython-code-runs.html",children:"Yusuke Endoh's article"}),",\na performance penalty for containerized workloads can be as high as 100%. This is due to SECCOMP\nprofile being overprotective about applying Spectre/Meltdown mitigations without providing real\nsecurity. A longer explanation is available in the\n",(0,i.jsx)(n.a,{href:"https://lkml.org/lkml/2020/11/4/1135",children:"kernel patch discussion"}),"."]}),(0,i.jsxs)(n.p,{children:["Linux 5.16\n",(0,i.jsx)(n.a,{href:"https://www.phoronix.com/scan.php?page=news_item&px=Linux-Spectre-SECCOMP-Default",children:"loosened the protections"}),"\napplied to SECCOMP threads by default. Containers running on kernel 5.16 and later now don't suffer\nfrom the performance penalty implied by using a SECCOMP profile in container runtimes."]}),(0,i.jsx)(n.h4,{id:"for-linux--516",children:"For Linux >= 5.16"}),(0,i.jsx)(n.p,{children:"You are all set. The performance of containerized workloads is on par with non-containerized ones.\nYou don't have to do anything."}),(0,i.jsx)(n.h4,{id:"for-linux--516-1",children:"For Linux < 5.16"}),(0,i.jsxs)(n.p,{children:["You'll need to disable mitigations for Spectre V2 for user-space tasks as well as Speculative Store\nBypass Disable (SSBD) for Spectre V4.\n",(0,i.jsx)(n.a,{href:"https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/commit/?h=for-next/seccomp&id=2f46993d83ff4abb310ef7b4beced56ba96f0d9d",children:"This patch message"}),"\ndescribes the reasoning for this default change in more detail:"]}),(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Ultimately setting SSBD and STIBP by default for all seccomp jails is a bad sweet spot and bad\ndefault with more cons than pros that end up reducing security in the public cloud (by giving an\nhuge incentive to not expose SPEC_CTRL which would be needed to get full security with IBPB after\nsetting nosmt in the guest) and by excessively hurting performance to more secure apps using\nseccomp that end up having to opt out with SECCOMP_FILTER_FLAG_SPEC_ALLOW."}),"\n"]}),(0,i.jsxs)(n.p,{children:["To disable the mitigations edit ",(0,i.jsx)(n.code,{children:"/etc/default/grub"})," and add\n",(0,i.jsx)(n.code,{children:"spec_store_bypass_disable=prctl spectre_v2_user=prctl"})," to ",(0,i.jsx)(n.code,{children:"GRUB_CMDLINE_LINUX_DEFAULT"})," variable,\nrun ",(0,i.jsx)(n.code,{children:"sudo update-grub"}),", then reboot."]}),(0,i.jsxs)(n.p,{children:["Note that mitigations are not disabled completely. You can fully disable all the available kernel\nmitigations by setting ",(0,i.jsx)(n.code,{children:"mitigations=off"}),". But we don't recommend doing this unless you run a fully\ntrusted code on the host."]}),(0,i.jsx)(n.h3,{id:"vps-list",children:"VPS List"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://cloud.google.com/",children:"Google Cloud"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://aws.amazon.com/",children:"Amazon AWS"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.ovh.com.au/",children:"OVH"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.digitalocean.com/",children:"Digital Ocean"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.vultr.com/",children:"Vultr"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.linode.com/",children:"Linode"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.scaleway.com/",children:"Scaleway"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://onfinality.io/",children:"OnFinality"})}),"\n"]}),(0,i.jsxs)(n.admonition,{type:"caution",children:[(0,i.jsxs)(n.mdxAdmonitionTitle,{children:["Beware of the ",(0,i.jsx)(n.strong,{children:"Terms and Conditions"})," and ",(0,i.jsx)(n.strong,{children:"Acceptable Use Policies"})," for each VPS"]}),(0,i.jsx)(n.p,{children:"provider"}),(0,i.jsxs)(n.p,{children:['You may be locked out of your account and your server shut down if you come in violation. For\ninstance, Digital Ocean lists "Mining of Cryptocurrencies" under the Network Abuse section of their\n',(0,i.jsx)(n.a,{href:"https://www.digitalocean.com/legal/acceptable-use-policy/",children:"Acceptable Use Policy"})," and requires\nexplicit permission to do so. This may extend to other cryptocurrency activity."]})]})]})]})}function c(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},46966:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/JS-UI-bond-7bdecad8831f3c1b20d96e426e7e47c1.png"},83402:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/JS-UI-sign-transaction-75b2e29fcaecc44c5eb1c4f5e3e364ae.png"},72563:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-dashboard-staking-4005504ef30291ebe1a243298c351a34.png"},83517:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-dashboard-telemetry-8930bdd60309c864ed682a1bdd4b1e31.png"},47526:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-dashboard-validate-1-4bf6a6488b4e128d12cab2617025d796.png"},28733:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-dashboard-validate-2-18a8869804f89ffebafa1b920e31ccd6.png"},3106:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-explorer-rotatekeys-rpc-6d5ba5d9ffb20fd9683432e9a6ccd0f9.jpg"},39664:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-zero-peer-2642d52b7e07893a66a0ddfd492cce38.jpg"},83215:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/set-session-key-1-b0cdb38a299d6ef6bcc24c6ab2bce66d.png"},61748:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/set-session-key-2-408efe22daa8d6533715987a1099828a.png"},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>r});var a=t(96540);const i={},o=a.createContext(i);function s(e){const n=a.useContext(o);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),a.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a74a59a0.7870a241.js b/assets/js/a74a59a0.7870a241.js new file mode 100644 index 00000000000..d3309c78dc3 --- /dev/null +++ b/assets/js/a74a59a0.7870a241.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4975],{61861:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"maintain/maintain-guides-how-to-validate-polkadot","title":"Run a Validator (Polkadot)","description":"The fundamentals for running a Polkadot validator.","source":"@site/../docs/maintain/maintain-guides-how-to-validate-polkadot.md","sourceDirName":"maintain","slug":"/maintain-guides-how-to-validate-polkadot","permalink":"/docs/maintain-guides-how-to-validate-polkadot","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/maintain-guides-how-to-validate-polkadot.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1734535671000,"frontMatter":{"id":"maintain-guides-how-to-validate-polkadot","title":"Run a Validator (Polkadot)","sidebar_label":"How to run a Validator on Polkadot","description":"The fundamentals for running a Polkadot validator.","keywords":["validator setup","validator","validate","binary","runtime"],"slug":"../maintain-guides-how-to-validate-polkadot"},"sidebar":"docs","previous":{"title":"Validator Guides","permalink":"/docs/maintain-validator-index"},"next":{"title":"Validator Payout Overview","permalink":"/docs/maintain-guides-validator-payout"}}');var i=t(74848),o=t(28453);const s={id:"maintain-guides-how-to-validate-polkadot",title:"Run a Validator (Polkadot)",sidebar_label:"How to run a Validator on Polkadot",description:"The fundamentals for running a Polkadot validator.",keywords:["validator setup","validator","validate","binary","runtime"],slug:"../maintain-guides-how-to-validate-polkadot"},r=void 0,l={},d=[{value:"Preliminaries",id:"preliminaries",level:2},{value:"How many DOT do I need to become an active Validator?",id:"how-many-dot-do-i-need-to-become-an-active-validator",level:3},{value:"Initial Set-up",id:"initial-set-up",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Reference Hardware",id:"reference-hardware",level:4},{value:"Install & Configure Network Time Protocol (NTP) Client",id:"install--configure-network-time-protocol-ntp-client",level:3},{value:"Make Sure Landlock is Enabled",id:"make-sure-landlock-is-enabled",level:3},{value:"Installing the Polkadot binaries",id:"installing-the-polkadot-binaries",level:3},{value:"Installation from official releases",id:"installation-from-official-releases",level:4},{value:"Optional: Installation with Package Managers",id:"optional-installation-with-package-managers",level:4},{value:"Debian-based (Debian, Ubuntu)",id:"debian-based-debian-ubuntu",level:4},{value:"RPM-based (Fedora, CentOS)",id:"rpm-based-fedora-centos",level:4},{value:"Optional: Installation with Ansible",id:"optional-installation-with-ansible",level:4},{value:"Optional: Installation with Docker",id:"optional-installation-with-docker",level:4},{value:"Optional: Building the Polkadot binaries from sources",id:"optional-building-the-polkadot-binaries-from-sources",level:3},{value:"Prerequisites: Install Rust and Dependencies",id:"prerequisites-install-rust-and-dependencies",level:4},{value:"Building the binaries",id:"building-the-binaries",level:4},{value:"Verify the installation",id:"verify-the-installation",level:3},{value:"Synchronize Chain Data",id:"synchronize-chain-data",level:3},{value:"Database Snapshot Services",id:"database-snapshot-services",level:4},{value:"Bond DOT",id:"bond-dot",level:2},{value:"Set Session Keys",id:"set-session-keys",level:2},{value:"Generating the Session Keys",id:"generating-the-session-keys",level:3},{value:"Option 1: PolkadotJS-APPS",id:"option-1-polkadotjs-apps",level:4},{value:"Option 2: CLI",id:"option-2-cli",level:4},{value:"Submitting the setKeys Transaction",id:"submitting-the-setkeys-transaction",level:3},{value:"Setting the Node (aka Network) Key",id:"setting-the-node-aka-network-key",level:3},{value:"Validate",id:"validate",level:2},{value:"Setup via Validator Tab",id:"setup-via-validator-tab",level:3},{value:"Decentralized Nodes Program",id:"decentralized-nodes-program",level:2},{value:"Running a validator on a testnet",id:"running-a-validator-on-a-testnet",level:2},{value:"FAQ",id:"faq",level:2},{value:"Why am I unable to synchronize the chain with 0 peers?",id:"why-am-i-unable-to-synchronize-the-chain-with-0-peers",level:3},{value:"How do I clear all my chain data?",id:"how-do-i-clear-all-my-chain-data",level:3},{value:"Note about VPS",id:"note-about-vps",level:2},{value:"Disable SMT",id:"disable-smt",level:3},{value:"Disable automatic NUMA balancing",id:"disable-automatic-numa-balancing",level:3},{value:"Configure Spectre/Meltdown Mitigations",id:"configure-spectremeltdown-mitigations",level:3},{value:"For Linux >= 5.16",id:"for-linux--516",level:4},{value:"For Linux < 5.16",id:"for-linux--516-1",level:4},{value:"VPS List",id:"vps-list",level:3}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",del:"del",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["If you are a beginner, it is recommended that you start your validator journey on Kusama network.\nCheck the ",(0,i.jsx)(n.a,{href:"/docs/maintain-guides-how-to-validate-kusama",children:"Kusama guide"})," for details on how to get\nstarted."]})}),"\n",(0,i.jsx)(n.h2,{id:"preliminaries",children:"Preliminaries"}),"\n",(0,i.jsxs)(n.p,{children:["Running a validator on a live network is a lot of responsibility! You will be accountable for not\nonly your own stake, but also the stake of your current nominators. If you make a mistake and get\n",(0,i.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashed"}),", your tokens and your reputation will be at risk. However,\nrunning a validator can also be very rewarding, knowing that you contribute to the security of a\ndecentralized network while growing your stash."]}),"\n",(0,i.jsxs)(n.admonition,{type:"warning",children:[(0,i.jsx)(n.p,{children:"It is highly recommended that you have significant system administration experience before\nattempting to run your own validator."}),(0,i.jsx)(n.p,{children:"You must be able to handle technical issues and anomalies with your node which you must be able to\ntackle yourself. Being a validator involves more than just executing the Polkadot binary."})]}),"\n",(0,i.jsxs)(n.p,{children:["Since security is so important to running a successful validator, you should take a look at the\n",(0,i.jsx)(n.a,{href:"/docs/maintain-guides-secure-validator",children:"secure validator"})," information to make sure you understand the\nfactors to consider when constructing your infrastructure. As you progress in your journey as a\nvalidator, you will likely want to use this repository as a ",(0,i.jsx)(n.em,{children:"starting point"})," for your own\nmodifications and customizations."]}),"\n",(0,i.jsxs)(n.p,{children:["If you need help, please reach out on the\n",(0,i.jsx)(n.a,{href:"https://matrix.to/#/#polkadotvalidatorlounge:web3.foundation",children:"Polkadot Validator Lounge"})," on\nElement. The team and other validators are there to help answer questions and provide tips from\nexperience."]}),"\n",(0,i.jsx)(n.h3,{id:"how-many-dot-do-i-need-to-become-an-active-validator",children:"How many DOT do I need to become an active Validator?"}),"\n",(0,i.jsxs)(n.p,{children:["You can have a rough estimate on that by using the methods listed\n",(0,i.jsx)(n.a,{href:"/docs/faq#what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator",children:"here"}),".\nTo be elected into the set, you need a minimum stake behind your validator. This stake can come from\nyourself or from ",(0,i.jsx)(n.a,{href:"/docs/learn-nominator",children:"nominators"}),". This means that as a minimum, you will\nneed enough DOT to set up stash (and optionally a staking\n",(0,i.jsx)(n.a,{href:"/docs/learn-proxies",children:"proxy account"}),") with the existential deposit, plus a little extra for\ntransaction fees. The rest can come from nominators. To understand how validators are elected, check\nthe ",(0,i.jsx)(n.a,{href:"/docs/learn-phragmen",children:"NPoS Election algorithms"})," page."]}),"\n",(0,i.jsxs)(n.p,{children:["For further reference, you may look at the\n",(0,i.jsx)(n.a,{href:"https://polkadot.subscan.io/validator_list?status=validator",children:"statistics for current, active validators"}),".\nFor Kusama see ",(0,i.jsx)(n.a,{href:"https://kusama.subscan.io/validator_list?status=validator",children:"here"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Warning:"})," Any DOT that you stake for your validator is liable to be\n",(0,i.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashed"}),", meaning that an insecure or improper setup may result in loss\nof DOT tokens! If you are not confident in your ability to run a validator node, it is recommended\nto nominate your DOT to a trusted validator node instead."]}),"\n",(0,i.jsx)(n.h2,{id:"initial-set-up",children:"Initial Set-up"}),"\n",(0,i.jsx)(n.h3,{id:"requirements",children:"Requirements"}),"\n",(0,i.jsxs)(n.p,{children:["The most common way for a beginner to run a validator is on a cloud server running Linux. You may\nchoose whatever ",(0,i.jsx)(n.a,{href:"#note-about-vps",children:"VPS"})," provider that you prefer. As OS it is best to use a recent\nDebian Linux. For this guide we will be using ",(0,i.jsx)(n.strong,{children:"Ubuntu 22.04"}),", but the instructions should be\nsimilar for other platforms."]}),"\n",(0,i.jsx)(n.h4,{id:"reference-hardware",children:"Reference Hardware"}),"\n",(0,i.jsxs)(n.p,{children:["The transaction weights in Polkadot are benchmarked on reference hardware. We ran the benchmark on\nVM instances of two major cloud providers: Google Cloud Platform (GCP) and Amazon Web Services\n(AWS). To be specific, we used ",(0,i.jsx)(n.code,{children:"n2-standard-8"})," VM instance on GCP and ",(0,i.jsx)(n.code,{children:"c6i.4xlarge"})," on AWS. It is\nrecommended that the hardware used to run the validators at least matches the specs of the reference\nhardware in order to ensure they are able to process all blocks in time. If you use subpar hardware\nyou will possibly run into performance issues, get less era points, and potentially even get\nslashed."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"CPU"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"x86-64 compatible;"}),"\n",(0,i.jsx)(n.li,{children:"Intel Ice Lake, or newer (Xeon or Core series); AMD Zen3, or newer (EPYC or Ryzen);"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.del,{children:"4"})," 8 physical cores @ 3.4GHz; starting with January 2025, the recommendation is to use a\nhardware with at least ",(0,i.jsx)(n.strong,{children:"8"})," physical cores, see\n",(0,i.jsx)(n.a,{href:"https://polkadot.subsquare.io/referenda/1051",children:"referenda"})," for more details about the rationale;"]}),"\n",(0,i.jsx)(n.li,{children:"Simultaneous multithreading disabled (Hyper-Threading on Intel, SMT on AMD);"}),"\n",(0,i.jsxs)(n.li,{children:["Prefer single-threaded performance over higher cores count. A comparison of single-threaded\nperformance can be found ",(0,i.jsx)(n.a,{href:"https://www.cpubenchmark.net/singleThread.html",children:"here"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Storage"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["An NVMe SSD of 1 TB (As it should be reasonably sized to deal with blockchain growth). An\nestimation of current chain snapshot sizes can be found\n",(0,i.jsx)(n.a,{href:"https://stakeworld.io/docs/dbsize",children:"here"}),". In general, the latency is more important than the\nthroughput."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Memory"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"32 GB DDR4 ECC."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"System"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Linux Kernel 5.16 or newer."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Network"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The minimum symmetric networking speed is set to 500 Mbit/s (= 62.5 MB/s). This is required to\nsupport a large number of parachains and allow for proper congestion control in busy network\nsituations."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["The specs posted above are not a ",(0,i.jsx)(n.em,{children:"hard"})," requirement to run a validator, but are considered best\npractice. Running a validator is a responsible task; using professional hardware is a must in any\nway."]}),"\n",(0,i.jsx)(n.h3,{id:"install--configure-network-time-protocol-ntp-client",children:"Install & Configure Network Time Protocol (NTP) Client"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Network_Time_Protocol",children:"NTP"})," is a networking protocol designed to\nsynchronize the clocks of computers over a network. NTP allows you to synchronize the clocks of all\nthe systems within the network. Currently it is required that validators' local clocks stay\nreasonably in sync, so you should be running NTP or a similar service. You can check whether you\nhave the NTP client by running:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.em,{children:"If you are using Ubuntu 18.04 or a newer version, NTP Client should be installed by default."})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"timedatectl\n"})}),"\n",(0,i.jsxs)(n.p,{children:["If NTP is installed and running, you should see ",(0,i.jsx)(n.code,{children:"System clock synchronized: yes"})," (or a similar\nmessage). If you do not see it, you can install it by executing:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo apt-get install ntp\n"})}),"\n",(0,i.jsx)(n.p,{children:"ntpd will be started automatically after install. You can query ntpd for status information to\nverify that everything is working:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo ntpq -p\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"Skipping this can result in the validator node missing block authorship opportunities. If the clock\nis out of sync (even by a small amount), the blocks the validator produces may not get accepted by\nthe network."})}),"\n",(0,i.jsx)(n.h3,{id:"make-sure-landlock-is-enabled",children:"Make Sure Landlock is Enabled"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.kernel.org/userspace-api/landlock.html",children:"Landlock"})," is a Linux security feature used in\nPolkadot:"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Landlock empowers any process, including unprivileged ones, to securely restrict themselves."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"To make use of landlock, make sure you are on the reference kernel version or newer. Most Linux\ndistributions should already have landlock enabled, but you can check by running the following as\nroot:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"dmesg | grep landlock || journalctl -kg landlock\n"})}),"\n",(0,i.jsxs)(n.p,{children:["If it is not enabled, please see the\n",(0,i.jsx)(n.a,{href:"https://docs.kernel.org/userspace-api/landlock.html#kernel-support",children:'official docs ("Kernel support")'}),"\nif you would like to build Linux with landlock enabled."]}),"\n",(0,i.jsx)(n.h3,{id:"installing-the-polkadot-binaries",children:"Installing the Polkadot binaries"}),"\n",(0,i.jsx)(n.admonition,{title:"Multiple Validator Binaries",type:"info",children:(0,i.jsxs)(n.p,{children:["In addition to the ",(0,i.jsx)(n.code,{children:"polkadot"})," binary, recent changes have separated out functionality into two\nadditional needed binaries, ",(0,i.jsx)(n.code,{children:"polkadot-prepare-worker"}),", and ",(0,i.jsx)(n.code,{children:"polkadot-execute-worker"}),". All three\nbinaries are needed to properly run a validator node. More context on these changes can be found\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot/pull/7337",children:"here"})]})}),"\n",(0,i.jsx)(n.h4,{id:"installation-from-official-releases",children:"Installation from official releases"}),"\n",(0,i.jsxs)(n.p,{children:["The official binaries can be downloaded from the\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk/releases",children:"Github Releases"}),". You should download the\nlatest available version. You can also download the binaries by using the following direct links\n(replace X.Y.Z by the appropriate version):"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-vX.Y.Z/polkadot\nhttps://github.com/paritytech/polkadot-sdk/releases/download/polkadot-vX.Y.Z/polkadot-execute-worker\nhttps://github.com/paritytech/polkadot-sdk/releases/download/polkadot-vX.Y.Z/polkadot-prepare-worker\n"})}),"\n",(0,i.jsx)(n.h4,{id:"optional-installation-with-package-managers",children:"Optional: Installation with Package Managers"}),"\n",(0,i.jsxs)(n.p,{children:["The Polkadot Binary in included in ",(0,i.jsx)(n.code,{children:"Debian"})," derivatives (i.e. ",(0,i.jsx)(n.strong,{children:"Debian"}),", ",(0,i.jsx)(n.strong,{children:"Ubuntu"}),") and\n",(0,i.jsx)(n.code,{children:"RPM-based"})," distros (i.e. ",(0,i.jsx)(n.strong,{children:"Fedora"}),", ",(0,i.jsx)(n.strong,{children:"CentOS"}),")."]}),"\n",(0,i.jsx)(n.h4,{id:"debian-based-debian-ubuntu",children:"Debian-based (Debian, Ubuntu)"}),"\n",(0,i.jsx)(n.p,{children:"Run the following commands as the root user:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ssh",children:"# Import the security@parity.io GPG key\ngpg --recv-keys --keyserver hkps://keys.mailvelope.com 9D4B2B6EB8F97156D19669A9FF0812D491B96798\ngpg --export 9D4B2B6EB8F97156D19669A9FF0812D491B96798 > /usr/share/keyrings/parity.gpg\n# Add the Parity repository and update the package index\necho 'deb [signed-by=/usr/share/keyrings/parity.gpg] https://releases.parity.io/deb release main' > /etc/apt/sources.list.d/parity.list\napt update\n# Install the `parity-keyring` package - This will ensure the GPG key\n# used by APT remains up-to-date\napt install parity-keyring\n# Install polkadot\napt install polkadot\n"})}),"\n",(0,i.jsx)(n.h4,{id:"rpm-based-fedora-centos",children:"RPM-based (Fedora, CentOS)"}),"\n",(0,i.jsx)(n.p,{children:"Run the following commands as the root user:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"# Install dnf-plugins-core (This might already be installed)\ndnf install dnf-plugins-core\n# Add the repository and enable it\ndnf config-manager --add-repo https://releases.parity.io/rpm/polkadot.repo\ndnf config-manager --set-enabled polkadot\n# Install polkadot (You may have to confirm the import of the GPG key, which\n# should have the following fingerprint: 9D4B2B6EB8F97156D19669A9FF0812D491B96798)\ndnf install polkadot\n"})}),"\n",(0,i.jsx)(n.p,{children:'Make sure you verify the installation (see the "Verify the installation" section).'}),"\n",(0,i.jsxs)(n.admonition,{title:"By default, the Polkadot systemd service is disabled",type:"note",children:[(0,i.jsx)(n.p,{children:"To start the service, run:"}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"sudo systemctl start polkadot.service\n"})})]}),"\n",(0,i.jsx)(n.h4,{id:"optional-installation-with-ansible",children:"Optional: Installation with Ansible"}),"\n",(0,i.jsxs)(n.p,{children:["To manage Polkadot installation with Ansible, you can use the ",(0,i.jsx)(n.strong,{children:"Substrate node role"})," distributed on\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/ansible-galaxy/",children:"Parity chain operations Ansible collection"})]}),"\n",(0,i.jsx)(n.h4,{id:"optional-installation-with-docker",children:"Optional: Installation with Docker"}),"\n",(0,i.jsxs)(n.p,{children:["To run Polkadot on a Docker or an OCI compatible container runtime, you can use the official\n",(0,i.jsx)(n.a,{href:"https://hub.docker.com/r/parity/polkadot/tags",children:"parity/polkadot docker image"}),", available on Docker\nHub (replace X.Y.Z by the appropriate version):"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"docker.io/parity/polkadot:vX.Y.Z\n"})}),"\n",(0,i.jsx)(n.h3,{id:"optional-building-the-polkadot-binaries-from-sources",children:"Optional: Building the Polkadot binaries from sources"}),"\n",(0,i.jsx)(n.h4,{id:"prerequisites-install-rust-and-dependencies",children:"Prerequisites: Install Rust and Dependencies"}),"\n",(0,i.jsx)(n.p,{children:"If you have never installed Rust, you should do this first."}),"\n",(0,i.jsx)(n.p,{children:"If you have already installed Rust, run the following command to make sure you are using the latest\nversion."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"rustup update\n"})}),"\n",(0,i.jsx)(n.p,{children:"If not, this command will fetch the latest version of Rust and install it."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"curl https://sh.rustup.rs -sSf | sh -s -- -y\n"})}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsx)(n.p,{children:'If you do not have "curl" installed, run:'}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"sudo apt install curl\n"})}),(0,i.jsxs)(n.p,{children:['It will also be valuable to have "websocat" (Netcat, curl and socat for WebSockets) installed for\nRPC interactions. Installation instructions for various operating systems can be found\n',(0,i.jsx)(n.a,{href:"https://github.com/vi/websocat#installation",children:"here"}),"."]})]}),"\n",(0,i.jsx)(n.p,{children:"To configure your shell, run the following command."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"source $HOME/.cargo/env\n"})}),"\n",(0,i.jsx)(n.p,{children:"Verify your installation."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"rustc --version\n"})}),"\n",(0,i.jsx)(n.p,{children:"Finally, run this command to install the necessary dependencies for compiling and running the\nPolkadot node software."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo apt install make clang pkg-config libssl-dev build-essential\n"})}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsxs)(n.p,{children:["If you are using OSX and you have ",(0,i.jsx)(n.a,{href:"https://brew.sh",children:"Homebrew"})," installed, you can issue the following\nequivalent command INSTEAD of the previous one:"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"brew install cmake pkg-config openssl git llvm\n"})})]}),"\n",(0,i.jsx)(n.h4,{id:"building-the-binaries",children:"Building the binaries"}),"\n",(0,i.jsxs)(n.p,{children:["You can build the Polkadot binaries from the\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk",children:"paritytech/polkadot-sdk"})," repository on GitHub."]}),"\n",(0,i.jsxs)(n.p,{children:["You should generally use the latest ",(0,i.jsx)(n.strong,{children:"X.Y.Z"}),' tag. You should either review the output from the "git\ntag" command or view the ',(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk/tags",children:"Polkadot SDK Github tags"}),"\nto see a list of all the available release versions. You should replace ",(0,i.jsx)(n.code,{children:"VERSION"})," below with the\nlatest build (i.e., the highest number)."]}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsx)(n.p,{children:"If you prefer to use SSH rather than HTTPS, you can replace the first line of the below with"}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"git clone git@github.com:paritytech/polkadot-sdk.git\n"})})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"git clone https://github.com/paritytech/polkadot-sdk.git\ncd polkadot-sdk/polkadot\n"})}),"\n",(0,i.jsx)(n.p,{children:"Run the following command to find the latest version."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"git tag -l | sort -V | grep -v -- '-rc'\n"})}),"\n",(0,i.jsx)(n.p,{children:'Find the latest version; replace "VERSION" in the command below and run to change your branch.'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"git checkout VERSION\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Build native code with the production profile. The following will make sure that the binaries are\nall in your ",(0,i.jsx)(n.code,{children:"$PATH"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"cargo install --force --path . --profile production\n"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:"This step will take a while (generally 10 - 40 minutes, depending on your hardware)."})})}),"\n",(0,i.jsxs)(n.admonition,{title:"Compilation Errors",type:"note",children:[(0,i.jsxs)(n.p,{children:["If you run into compile errors, you may have to pin the version of Rust compiler to the one that was\nused to build the release. Check out ",(0,i.jsx)(n.code,{children:"Rust compiler versions"})," section in the release notes. This can\nbe done by running:"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"rustup install nightly-2022-05-18\nrustup target add wasm32-unknown-unknown --toolchain nightly-2022-05-18\ncargo +nightly-2022-05-18 build --release\n"})}),(0,i.jsx)(n.p,{children:"You may also need to run the build more than once."}),(0,i.jsx)(n.p,{children:"If you would like to execute the tests, run the following command:"}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"cargo test --all\n"})})]}),"\n",(0,i.jsxs)(n.p,{children:["If you are interested in generating keys locally, you can also install ",(0,i.jsx)(n.code,{children:"subkey"})," from the same\ndirectory. You may then take the generated ",(0,i.jsx)(n.code,{children:"subkey"})," executable and transfer it to an air-gapped\nmachine for extra security."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"cargo install --force --git https://github.com/paritytech/polkadot-sdk subkey\n"})}),"\n",(0,i.jsx)(n.h3,{id:"verify-the-installation",children:"Verify the installation"}),"\n",(0,i.jsx)(n.p,{children:"After installing Polkadot, you can verify the installation by running"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"polkadot --version\npolkadot-execute-worker --version\npolkadot-prepare-worker --version\n"})}),"\n",(0,i.jsx)(n.p,{children:"It should return something like this (the exact versions don't matter, but they must all be the\nsame):"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"0.9.43-36264cb36db\n0.9.43-36264cb36db\n0.9.43-36264cb36db\n"})}),"\n",(0,i.jsxs)(n.p,{children:["If not, make sure that you installed all the binaries, all the binaries are somewhere in your\n",(0,i.jsx)(n.code,{children:"$PATH"})," and they are all in the same folder."]}),"\n",(0,i.jsx)(n.h3,{id:"synchronize-chain-data",children:"Synchronize Chain Data"}),"\n",(0,i.jsx)(n.p,{children:"You can begin syncing your node by running the following command if you do not want to start in\nvalidator mode right away:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"polkadot\n"})}),"\n",(0,i.jsxs)(n.admonition,{type:"info",children:[(0,i.jsx)(n.p,{children:"If you want to run a validator on Kusama, you have an option to specify the chain. With no\nspecification, this would default to Polkadot."}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"polkadot --chain=kusama\n"})})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"2021-06-17 03:07:07 Parity Polkadot\n2021-06-17 03:07:07 \u270c\ufe0f version 0.9.5-95f6aa201-x86_64-linux-gnu\n2021-06-17 03:07:07 \u2764\ufe0f by Parity Technologies , 2017-2021\n2021-06-17 03:07:07 \ud83d\udccb Chain specification: Polkadot\n2021-06-17 03:07:07 \ud83c\udff7 Node name: boiling-pet-7554\n2021-06-17 03:07:07 \ud83d\udc64 Role: FULL\n2021-06-17 03:07:07 \ud83d\udcbe Database: RocksDb at /root/.local/share/polkadot/chains/polkadot/db\n2021-06-17 03:07:07 \u26d3 Native runtime: polkadot-9050 (parity-polkadot-0.tx7.au0)\n2021-06-17 03:07:10 \ud83c\udff7 Local node identity is: 12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u\n2021-06-17 03:07:10 \ud83d\udce6 Highest known block at #17914\n2021-06-17 03:07:10 \u303d\ufe0f Prometheus server started at 127.0.0.1:9615\n2021-06-17 03:07:10 Listening for new connections on 127.0.0.1:9944.\n"})}),"\n",(0,i.jsx)(n.admonition,{title:"Example of node sync",type:"info",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"2021-06-17 03:07:39 \ud83d\udd0d Discovered new external address for our node: /ip4/10.26.16.1/tcp/30333/ws/p2p/12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u\n2021-06-17 03:07:40 \u2699\ufe0f Syncing 218.8 bps, target=#5553764 (17 peers), best: #24034 (0x08af\u2026dcf5), finalized #23552 (0xd4f0\u20262642), \u2b07 173.5kiB/s \u2b06 12.7kiB/s\n2021-06-17 03:07:45 \u2699\ufe0f Syncing 214.8 bps, target=#5553765 (20 peers), best: #25108 (0xb272\u2026e800), finalized #25088 (0x94e6\u20268a9f), \u2b07 134.3kiB/s \u2b06 7.4kiB/s\n2021-06-17 03:07:50 \u2699\ufe0f Syncing 214.8 bps, target=#5553766 (21 peers), best: #26182 (0xe7a5\u202601a2), finalized #26112 (0xcc29\u2026b1a9), \u2b07 5.0kiB/s \u2b06 1.1kiB/s\n2021-06-17 03:07:55 \u2699\ufe0f Syncing 138.4 bps, target=#5553767 (21 peers), best: #26874 (0xcf4b\u20266553), finalized #26624 (0x9dd9\u202627f8), \u2b07 18.9kiB/s \u2b06 2.0kiB/s\n2021-06-17 03:08:00 \u2699\ufe0f Syncing 37.0 bps, target=#5553768 (22 peers), best: #27059 (0x5b73\u20266fc9), finalized #26624 (0x9dd9\u202627f8), \u2b07 14.3kiB/s \u2b06 4.4kiB/s\n"})})}),"\n",(0,i.jsxs)(n.admonition,{title:"Use Warp sync for faster syncing",type:"tip",children:[(0,i.jsxs)(n.p,{children:["By default, the node performs ",(0,i.jsx)(n.code,{children:"full"})," sync, which downloads and validates the full blockchain\nhistory. Full sync works by listening to announced blocks and requesting the blocks from the\nannouncing peers, or just the block headers in case of light clients."]}),(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Fast"})," sync is another option that works by downloading the block header history and validating the\nauthority set changes in order to arrive at a specific (usually the most recent) header. After the\ndesired header has been reached and verified, the state can be downloaded and imported. Once this\nprocess has been completed, the node can proceed with a full sync."]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"polkadot --sync warp\n"})}),(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Warp sync"})," initially downloads and validates the finality proofs from\n",(0,i.jsx)(n.a,{href:"/docs/learn-consensus#finality-gadget-grandpa",children:"GRANDPA"})," and then downloads the state of the\nlatest finalized block. After the warp sync, the node is ready to import the latest blocks from the\nnetwork and can be used as a Validator. The blocks from genesis will be downloaded in the\nbackground. Check\n",(0,i.jsx)(n.a,{href:"https://substrate.stackexchange.com/questions/334/what-kinds-of-sync-mechanisms-does-substrate-implement/",children:"this discussion"}),"\nfor more information about the different sync options available."]})]}),"\n",(0,i.jsxs)(n.admonition,{title:"Validators should sync using the RocksDb backend",type:"note",children:[(0,i.jsxs)(n.p,{children:["This is implicit by default, but can be explicit by passing the ",(0,i.jsx)(n.code,{children:"--database RocksDb"})," flag."]}),(0,i.jsxs)(n.p,{children:["In the future, it is recommended to switch to the faster and more efficient ParityDB option. Note\nthat ",(0,i.jsx)(n.strong,{children:"ParityDB is still experimental and should not be used in production."})," If you want to test\nout ParityDB, you can add the flag ",(0,i.jsx)(n.code,{children:"--database paritydb"}),". Switching between database backends will\nrequire a resync."]})]}),"\n",(0,i.jsx)(n.p,{children:"Depending on the size of the chain when you do this, this step may take anywhere from a few minutes\nto a few hours."}),"\n",(0,i.jsxs)(n.p,{children:["If you are interested in determining how much longer you have to go, your server logs (printed to\nSTDOUT from the ",(0,i.jsx)(n.code,{children:"polkadot"})," process) will tell you the latest block your node has processed and\nverified. You can then compare that to the current highest block via\n",(0,i.jsx)(n.a,{href:"https://telemetry.polkadot.io/#list/Polkadot%20CC1",children:"Telemetry"})," or the\n",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/explorer",children:"PolkadotJS Block Explorer"}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"database-snapshot-services",children:"Database Snapshot Services"}),"\n",(0,i.jsx)(n.p,{children:"If you start a node for the first time, it will start building from the genesis block. This process\ncan take a while depending on the database size. To make this process faster, snapshots can be used.\nSnapshots are compressed backups of the database directory of Polkadot/Kusama nodes, containing the\nwhole chain (or a pruned version of it, with states only from the latest 1000 or 256 blocks). Listed\nbelow are a few public snapshot providers for Polkadot and Kusama."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://stakeworld.io/snapshot",children:"Stakeworld"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://polkachu.com/snapshots",children:"Polkachu"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://polkashots.io/",children:"Polkashots"})}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsx)(n.p,{children:"For the security of the network, it is recommended that you sync from scratch, even if you are\nrunning your node in pruning mode for validation. The reason is that if these snapshots get\ncorrupted and a majority of nodes run based on these snapshots, the network could end up running on\na non-canonical chain."})}),"\n",(0,i.jsx)(n.h2,{id:"bond-dot",children:"Bond DOT"}),"\n",(0,i.jsxs)(n.p,{children:["There is a ",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#minimum-validator-bond",children:"minimum bond"})," to start a\nvalidator instance, but to enter the active validator set and be eligible to earn rewards, your\nvalidator node should be nominated by a minimum number of DOT tokens."]}),"\n",(0,i.jsx)(n.p,{children:"If you are validator who intends to get DOT/KSM nominations from the community, you will need to\nshow some skin in the game. For that, you need to bond some DOT/KSM as own stake. Make sure not to\nbond all your DOT balance since you will be unable to pay transaction fees from your bonded balance."}),"\n",(0,i.jsx)(n.admonition,{title:"Controller accounts are deprecated. Use Staking Proxy.",type:"info",children:(0,i.jsxs)(n.p,{children:["Controller accounts are deprecated. For more information, see\n",(0,i.jsx)(n.a,{href:"https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748",children:"this discussion"}),".\nIt is highly recommended that you setup an account with a staking proxy, which can be used for\nissuing start and stop validating calls. Read more about ",(0,i.jsx)(n.a,{href:"/docs/learn-proxies",children:"proxy accounts"}),"\nhere."]})}),"\n",(0,i.jsxs)(n.p,{children:["First, go to the ",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking/actions",children:"Staking"}),' section. Click on\n"Account Actions", and then the "+ Stash" button.']}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"bonding-JS-UI",src:t(46966).A+"",width:"2143",height:"847"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stash account"})," - Select your Stash account (which is the account with the DOT/KSM balance)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Value bonded"})," - How much DOT from the Stash account you want to bond/stake. Note that you do\nnot need to bond all of the DOT in that account. Also note that you can always bond ",(0,i.jsx)(n.em,{children:"more"})," DOT\nlater. However, ",(0,i.jsx)(n.em,{children:"withdrawing"})," any bonded amount requires the duration of the unbonding period. On\nKusama, the unbonding period is 7 days. On Polkadot, the planned unbonding period is 28 days."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Payment destination"})," - The account where the rewards from validating are sent. More info\n",(0,i.jsx)(n.a,{href:"/docs/learn-staking#claiming-staking-rewards",children:"here"}),". Starting with runtime version v23\nnatively included in client version\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot/releases/tag/v0.9.3",children:"0.9.3"}),", payouts can go to any custom\naddress. If you'd like to redirect payments to an account that is not the stash account, you can\ndo it by entering the address here. Note that it is extremely unsafe to set an exchange address as\nthe recipient of the staking rewards."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once everything is filled in properly, click ",(0,i.jsx)(n.code,{children:"Bond"})," and sign the transaction with your Stash\naccount."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"sign transaction",src:t(83402).A+"",width:"2141",height:"780"})}),"\n",(0,i.jsxs)(n.p,{children:["After a few seconds, you should see an ",(0,i.jsx)(n.code,{children:"ExtrinsicSuccess"})," message."]}),"\n",(0,i.jsxs)(n.p,{children:["Your bonded account will be available under ",(0,i.jsx)(n.code,{children:"Stashes"}),". You should now see a new card with all your\naccounts (note: you may need to refresh the screen). The bonded amount on the right corresponds to\nthe funds bonded by the Stash account."]}),"\n",(0,i.jsx)(n.h2,{id:"set-session-keys",children:"Set Session Keys"}),"\n",(0,i.jsx)(n.admonition,{title:"Session keys are consensus critical",type:"caution",children:(0,i.jsxs)(n.p,{children:["If you are not sure if your node has the current session keys that you made the ",(0,i.jsx)(n.code,{children:"setKeys"}),"\ntransaction then you can use one of the two available RPC methods to query your node:\n",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/docs/substrate/rpc/#haskeypublickey-bytes-keytype-text-bool",children:"hasKey"})," to\ncheck for a specific key or\n",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/docs/substrate/rpc/#hassessionkeyssessionkeys-bytes-bool",children:"hasSessionKeys"}),"\nto check the full session key public key string."]})}),"\n",(0,i.jsx)(n.p,{children:"Once your node is fully synced, stop the process by pressing Ctrl-C. At your terminal prompt, you\nwill now start running the node."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'polkadot --validator --name "name on telemetry"\n'})}),"\n",(0,i.jsx)(n.p,{children:"Similarly:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"2021-06-17 03:12:08 Parity Polkadot\n2021-06-17 03:12:08 \u270c\ufe0f version 0.9.5-95f6aa201-x86_64-linux-gnu\n2021-06-17 03:12:08 \u2764\ufe0f by Parity Technologies , 2017-2021\n2021-06-17 03:12:08 \ud83d\udccb Chain specification: Polkadot\n2021-06-17 03:12:08 \ud83c\udff7 Node name: nateched-test\n2021-06-17 03:12:08 \ud83d\udc64 Role: AUTHORITY\n2021-06-17 03:12:08 \ud83d\udcbe Database: RocksDb at /root/.local/share/polkadot/chains/polkadot/db\n2021-06-17 03:12:08 \u26d3 Native runtime: polkadot-9050 (parity-polkadot-0.tx7.au0)\n2021-06-17 03:12:12 \ud83c\udff7 Local node identity is: 12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u\n2021-06-17 03:12:12 \ud83d\udce6 Highest known block at #64673\n2021-06-17 03:12:12 \u303d\ufe0f Prometheus server started at 127.0.0.1:9615\n2021-06-17 03:12:12 Listening for new connections on 127.0.0.1:9944.\n2021-06-17 03:12:12 \ud83d\udc76 Starting BABE Authorship worker\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"2021-06-17 03:12:16 \ud83d\udd0d Discovered new external address for our node: /ip4/10.26.11.1/tcp/30333/p2p/12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u\n2021-06-17 03:12:17 \u2699\ufe0f Syncing, target=#5553810 (14 peers), best: #65068 (0x6da5\u20260662), finalized #65024 (0x4e84\u2026d170), \u2b07 352.2kiB/s \u2b06 75.6kiB/s\n"})}),"\n",(0,i.jsx)(n.p,{children:"You can give your validator any name that you like, but note that others will be able to see it, and\nit will be included in the list of all servers using the same telemetry server. Since numerous\npeople are using telemetry, it is recommended that you choose something likely to be unique."}),"\n",(0,i.jsx)(n.h3,{id:"generating-the-session-keys",children:"Generating the Session Keys"}),"\n",(0,i.jsx)(n.p,{children:"You need to tell the chain your Session keys by signing and submitting an extrinsic. This is what\nassociates your validator node with your stash account on Polkadot."}),"\n",(0,i.jsx)(n.h4,{id:"option-1-polkadotjs-apps",children:"Option 1: PolkadotJS-APPS"}),"\n",(0,i.jsxs)(n.p,{children:["You can generate your ",(0,i.jsx)(n.a,{href:"/docs/learn-cryptography",children:"Session keys"})," in the client via the apps RPC.\nIf you are doing this, make sure that you have the PolkadotJS-Apps explorer attached to your\nvalidator node. You can configure the apps dashboard to connect to the endpoint of your validator in\nthe Settings tab. If you are connected to a default endpoint hosted by Parity of Web3 Foundation,\nyou will not be able to use this method since making RPC requests to this node would effect the\nlocal keystore hosted on a ",(0,i.jsx)(n.em,{children:"public node"})," and you want to make sure you are interacting with the\nkeystore for ",(0,i.jsx)(n.em,{children:"your node"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Once ensuring that you have connected to your node, the easiest way to set session keys for your\nnode is by calling the ",(0,i.jsx)(n.code,{children:"author_rotateKeys"})," RPC request to create new keys in your validator's\nkeystore. Navigate to Toolbox tab and select RPC Calls then select the author > rotateKeys() option\nand remember to save the output that you get back for a later step."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Explorer RPC call",src:t(3106).A+"",width:"1700",height:"582"})}),"\n",(0,i.jsx)(n.h4,{id:"option-2-cli",children:"Option 2: CLI"}),"\n",(0,i.jsx)(n.p,{children:"If you are on a remote server, it is easier to run this command on the same machine (while the node\nis running with the default WS RPC port configured):"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl -H "Content-Type: application/json" -d \'{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}\' http://localhost:9944\n'})}),"\n",(0,i.jsx)(n.p,{children:'The output will have a hex-encoded "result" field. The result is the concatenation of the four\npublic keys. Save this result for a later step.'}),"\n",(0,i.jsx)(n.p,{children:"You can restart your node at this point."}),"\n",(0,i.jsxs)(n.h3,{id:"submitting-the-setkeys-transaction",children:["Submitting the ",(0,i.jsx)(n.code,{children:"setKeys"})," Transaction"]}),"\n",(0,i.jsx)(n.p,{children:"You need to tell the chain your Session keys by signing and submitting an extrinsic. This is what\nassociates your validator with your staking proxy."}),"\n",(0,i.jsxs)(n.p,{children:["Go to ",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking/actions",children:"Staking > Account Actions"}),', and click "Set\nSession Key" on the bonding account you generated earlier. Enter the output from ',(0,i.jsx)(n.code,{children:"author_rotateKeys"}),'\nin the field and click "Set Session Key".']}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.img,{alt:"staking-change-session",src:t(83215).A+"",width:"2792",height:"182"}),"\n",(0,i.jsx)(n.img,{alt:"staking-session-result",src:t(61748).A+"",width:"2146",height:"680"})]}),"\n",(0,i.jsx)(n.p,{children:"Submit this extrinsic and you are now ready to start validating."}),"\n",(0,i.jsx)(n.h3,{id:"setting-the-node-aka-network-key",children:"Setting the Node (aka Network) Key"}),"\n",(0,i.jsx)(n.p,{children:"Validators must use a static network key to maintain a stable node identity across restarts.\nStarting with Polkadot version 1.11, a check is performed on startup, and the following error will\nbe printed if a static node key is not set:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'Error:\n0: Starting an authority without network key\nThis is not a safe operation because other authorities in the network may depend on your node having a stable identity.\nOtherwise these other authorities may not being able to reach you.\n\nIf it is the first time running your node you could use one of the following methods:\n1. [Preferred] Separately generate the key with: key generate-node-key --base-path \n2. [Preferred] Separately generate the key with: key generate-node-key --file \n3. [Preferred] Separately generate the key with: key generate-node-key --default-base-path\n4. [Unsafe] Pass --unsafe-force-node-key-generation and make sure you remove it for subsequent node restarts"\n'})}),"\n",(0,i.jsxs)(n.p,{children:["The recommended solution is to generate a node key and save it to a file using\n",(0,i.jsx)(n.code,{children:"polkadot key generate-node-key --file "}),", then attach it to your node with\n",(0,i.jsx)(n.code,{children:"--node-key-file "}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Please see ",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-sdk/pull/3852",children:"polkadot-sdk#3852"})," for the\nrationale behind this change."]}),"\n",(0,i.jsx)(n.h2,{id:"validate",children:"Validate"}),"\n",(0,i.jsxs)(n.p,{children:["To verify that your node is live and synchronized, head to\n",(0,i.jsx)(n.a,{href:"https://telemetry.polkadot.io/#list/Polkadot%20CC1",children:"Telemetry"})," and find your node. Note that this\nwill show all nodes on the Polkadot network, which is why it is important to select a unique name!"]}),"\n",(0,i.jsxs)(n.p,{children:["In this example, we used the name ",(0,i.jsx)(n.code,{children:"techedtest"})," and have successfully located it upon searching:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"polkadot-dashboard-telemetry",src:t(83517).A+"",width:"2862",height:"472"})}),"\n",(0,i.jsx)(n.h3,{id:"setup-via-validator-tab",children:"Setup via Validator Tab"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"polkadot-dashboard-validate-1",src:t(47526).A+"",width:"2128",height:"1022"})}),"\n",(0,i.jsxs)(n.p,{children:["Here you will need to input the Keys from ",(0,i.jsx)(n.code,{children:"rotateKeys"}),", which is the Hex output from\n",(0,i.jsx)(n.code,{children:"author_rotateKeys"}),". The keys will show as pending until applied at the start of a new session."]}),"\n",(0,i.jsx)(n.p,{children:'The "reward commission percentage" is the commission percentage that you can declare against your\nvalidator\'s rewards. This is the rate that your validator will be commissioned with.'}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Payment preferences"})," - You can specify the percentage of the rewards that will get paid to you.\nThe remaining will be split among your nominators."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Setting a commission rate of 100% suggests that you do not want your validator to receive",type:"caution",children:(0,i.jsx)(n.p,{children:"nominations"})}),"\n",(0,i.jsx)(n.p,{children:'You can also determine if you would like to receive nominations with the "allows new nominations"\noption.'}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"dashboard validate",src:t(28733).A+"",width:"2126",height:"694"})}),"\n",(0,i.jsx)(n.p,{children:'Click "Bond & Validate".'}),"\n",(0,i.jsx)(n.p,{children:'If you go to the "Staking" tab, you will see a list of active validators currently running on the\nnetwork. At the top of the page, it shows the number of validator slots that are available as well\nas the number of nodes that have signaled their intention to be a validator. You can go to the\n"Waiting" tab to double check to see whether your node is listed there.'}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"staking queue",src:t(72563).A+"",width:"2838",height:"1440"})}),"\n",(0,i.jsxs)(n.p,{children:["The validator set is refreshed every era. In the next era, if there is a slot available and your\nnode is selected to join the validator set, your node will become an active validator. Until then,\nit will remain in the ",(0,i.jsx)(n.em,{children:"waiting"})," queue. If your validator is not selected to become part of the\nvalidator set, it will remain in the ",(0,i.jsx)(n.em,{children:"waiting"})," queue until it is. There is no need to re-start if\nyou are not selected for the validator set in a particular era. However, it may be necessary to\nincrease the number of DOT staked or seek out nominators for your validator in order to join the\nvalidator set."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Congratulations!"})," If you have followed all of these steps, and been selected to be a part of the\nvalidator set, you are now running a Polkadot validator! If you need help, reach out on the\n",(0,i.jsx)(n.a,{href:"https://matrix.to/#/!NZrbtteFeqYKCUGQtr:matrix.parity.io?via=matrix.parity.io&via=matrix.org&via=web3.foundation",children:"Polkadot Validator chat"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"decentralized-nodes-program",children:"Decentralized Nodes Program"}),"\n",(0,i.jsxs)(n.p,{children:["The Decentralized Nodes program is a joint initiative by Web3 Foundation and Parity Technologies to\nprovide support for community validators. If you are interested in applying for the program, you can\nfind more information ",(0,i.jsx)(n.a,{href:"https://nodes.web3.foundation/",children:"here"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"running-a-validator-on-a-testnet",children:"Running a validator on a testnet"}),"\n",(0,i.jsx)(n.p,{children:"To verify your validator setup, it is possible to run it against a PoS test network such as Westend.\nHowever, validator slots are intentionally limited on Westend to ensure stability and availability\nof the testnet for the Polkadot release process."}),"\n",(0,i.jsx)(n.p,{children:"Here is a small comparison of each network characteristics as relevant to validators:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Network"}),(0,i.jsx)(n.th,{children:"Polkadot"}),(0,i.jsx)(n.th,{children:"Westend"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"epoch"}),(0,i.jsx)(n.td,{children:"4h"}),(0,i.jsx)(n.td,{children:"1h"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"era"}),(0,i.jsx)(n.td,{children:"1d"}),(0,i.jsx)(n.td,{children:"6h"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"token"}),(0,i.jsx)(n.td,{children:"DOT"}),(0,i.jsx)(n.td,{children:"WND (test)"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"active validators"}),(0,i.jsx)(n.td,{children:"~300"}),(0,i.jsx)(n.td,{children:"~20"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,i.jsx)(n.h3,{id:"why-am-i-unable-to-synchronize-the-chain-with-0-peers",children:"Why am I unable to synchronize the chain with 0 peers?"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"zero-peer",src:t(39664).A+"",width:"1350",height:"235"})}),"\n",(0,i.jsxs)(n.p,{children:["Make sure to enable ",(0,i.jsx)(n.code,{children:"30333"})," libp2p port. Eventually, it will take a little bit of time to discover\nother peers over the network."]}),"\n",(0,i.jsx)(n.h3,{id:"how-do-i-clear-all-my-chain-data",children:"How do I clear all my chain data?"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"polkadot purge-chain\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["Check out the ",(0,i.jsx)(n.a,{href:"https://substrate.stackexchange.com/",children:"Substrate StackExchange"})," to quickly get the\nanswers you need."]})}),"\n",(0,i.jsx)(n.h2,{id:"note-about-vps",children:"Note about VPS"}),"\n",(0,i.jsx)(n.p,{children:"VPS providers are very popular for running servers of any kind. Extensive benchmarking was conducted\nto ensure that VPS servers are able to keep up with the work load in general."}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsx)(n.p,{children:"Before you run a live Validator, please verify if the advertised performance is actually delivered\nconsistently by the VPS provider."}),(0,i.jsx)(n.p,{children:"::: The following server types showed acceptable performance during the benchmark tests. Please note\nthat this is not an endorsement in any way:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["GCP's ",(0,i.jsx)(n.em,{children:"c2"})," and ",(0,i.jsx)(n.em,{children:"c2d"})," machine families"]}),"\n",(0,i.jsxs)(n.li,{children:["AWS's ",(0,i.jsx)(n.em,{children:"c6id"})," machine family"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The following additional configurations were applied to the instances to tune their performance:"}),(0,i.jsxs)(n.h3,{id:"disable-smt",children:["Disable ",(0,i.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Simultaneous_multithreading",children:"SMT"})]}),(0,i.jsxs)(n.p,{children:["As critical path of Substrate is single-threaded we need to optimize for single-core CPU\nperformance. The node still profits from multiple cores when doing networking and other non-runtime\noperations. It is therefore still necessary to run it on at least the minimum required number of\ncores. Disabling SMT improves the performance as each vCPU becomes mapped to a physical CPU core\nrather than being presented to the OS as two logical cores. SMT implementation is called\n",(0,i.jsx)(n.em,{children:"Hyper-Threading"})," on Intel and ",(0,i.jsx)(n.em,{children:"2-way SMT"})," on AMD Zen. To disable SMT in runtime:"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"for cpunum in $(cat /sys/devices/system/cpu/cpu*/topology/thread_siblings_list | cut -s -d, -f2- | tr ',' '\\n' | sort -un)\ndo\n echo 0 > /sys/devices/system/cpu/cpu$cpunum/online\ndone\n"})}),(0,i.jsx)(n.p,{children:"It will disable every other (vCPU) core."}),(0,i.jsxs)(n.p,{children:["To save changes permanently add ",(0,i.jsx)(n.code,{children:"nosmt=force"})," as kernel parameter. Edit ",(0,i.jsx)(n.code,{children:"/etc/default/grub"})," and add\n",(0,i.jsx)(n.code,{children:"nosmt=force"})," to ",(0,i.jsx)(n.code,{children:"GRUB_CMDLINE_LINUX_DEFAULT"})," variable and run ",(0,i.jsx)(n.code,{children:"sudo update-grub"}),". After the reboot\nyou should see half of the cores are offline. Run ",(0,i.jsx)(n.code,{children:"lscpu --extended"})," to confirm."]}),(0,i.jsx)(n.h3,{id:"disable-automatic-numa-balancing",children:"Disable automatic NUMA balancing"}),(0,i.jsx)(n.p,{children:"If you have multiple physical CPUs (CPU0 and CPU1) in the system each with its own memory bank (MB0\nand MB1), then it is usually slower for a CPU0 to access MB1 due to the slower interconnection. To\nprevent the OS from automatically moving the running Substrate process from one CPU to another and\nthus causing an increased latency, it is recommended to disable automatic NUMA balancing."}),(0,i.jsx)(n.p,{children:"With automatic NUMA balancing disabled, an OS will always run a process on the same NUMA node where\nit was initially scheduled."}),(0,i.jsx)(n.p,{children:"To disable NUMA balancing in runtime:"}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"sysctl kernel.numa_balancing=0\n"})}),(0,i.jsxs)(n.p,{children:["To save changes permanently, update startup options and reconfigure GRUB. Edit ",(0,i.jsx)(n.code,{children:"/etc/default/grub"}),"\nand add ",(0,i.jsx)(n.code,{children:"numa_balancing=disable"})," to ",(0,i.jsx)(n.code,{children:"GRUB_CMDLINE_LINUX_DEFAULT"})," variable and run\n",(0,i.jsx)(n.code,{children:"sudo update-grub"}),". After reboot you can confirm the change by running\n",(0,i.jsx)(n.code,{children:"sysctl -a | grep 'kernel.numa_balancing'"})," and checking if the parameter is set to 0"]}),(0,i.jsx)(n.h3,{id:"configure-spectremeltdown-mitigations",children:"Configure Spectre/Meltdown Mitigations"}),(0,i.jsxs)(n.p,{children:["Spectre and Meltdown are vulnerabilities discovered in modern CPUs a few years ago. Mitigations were\nmade to the Linux kernel to cope with the multiple variations of these attacks. Check out\n",(0,i.jsx)(n.a,{href:"https://meltdownattack.com/",children:"https://meltdownattack.com/"})," for more info."]}),(0,i.jsxs)(n.p,{children:["Initially those mitigations added ~20% penalty to the performance of the workloads. As CPU\nmanufacturers started to roll-out mitigations implemented in hardware, the performance gap\n",(0,i.jsx)(n.a,{href:"https://www.phoronix.com/scan.php?page=article&item=3-years-specmelt&num=1",children:"narrowed down"}),". As the\nbenchmark demonstrates, the performance penalty got reduced to ~7% on Intel 10th Gen CPUs. This is\ntrue for the workloads running on both bare-metal and VMs. But the penalty remains high for the\ncontainerized workloads in some cases."]}),(0,i.jsxs)(n.p,{children:["As demonstrated in\n",(0,i.jsx)(n.a,{href:"http://mamememo.blogspot.com/2020/05/cpu-intensive-rubypython-code-runs.html",children:"Yusuke Endoh's article"}),",\na performance penalty for containerized workloads can be as high as 100%. This is due to SECCOMP\nprofile being overprotective about applying Spectre/Meltdown mitigations without providing real\nsecurity. A longer explanation is available in the\n",(0,i.jsx)(n.a,{href:"https://lkml.org/lkml/2020/11/4/1135",children:"kernel patch discussion"}),"."]}),(0,i.jsxs)(n.p,{children:["Linux 5.16\n",(0,i.jsx)(n.a,{href:"https://www.phoronix.com/scan.php?page=news_item&px=Linux-Spectre-SECCOMP-Default",children:"loosened the protections"}),"\napplied to SECCOMP threads by default. Containers running on kernel 5.16 and later now don't suffer\nfrom the performance penalty implied by using a SECCOMP profile in container runtimes."]}),(0,i.jsx)(n.h4,{id:"for-linux--516",children:"For Linux >= 5.16"}),(0,i.jsx)(n.p,{children:"You are all set. The performance of containerized workloads is on par with non-containerized ones.\nYou don't have to do anything."}),(0,i.jsx)(n.h4,{id:"for-linux--516-1",children:"For Linux < 5.16"}),(0,i.jsxs)(n.p,{children:["You'll need to disable mitigations for Spectre V2 for user-space tasks as well as Speculative Store\nBypass Disable (SSBD) for Spectre V4.\n",(0,i.jsx)(n.a,{href:"https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/commit/?h=for-next/seccomp&id=2f46993d83ff4abb310ef7b4beced56ba96f0d9d",children:"This patch message"}),"\ndescribes the reasoning for this default change in more detail:"]}),(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Ultimately setting SSBD and STIBP by default for all seccomp jails is a bad sweet spot and bad\ndefault with more cons than pros that end up reducing security in the public cloud (by giving an\nhuge incentive to not expose SPEC_CTRL which would be needed to get full security with IBPB after\nsetting nosmt in the guest) and by excessively hurting performance to more secure apps using\nseccomp that end up having to opt out with SECCOMP_FILTER_FLAG_SPEC_ALLOW."}),"\n"]}),(0,i.jsxs)(n.p,{children:["To disable the mitigations edit ",(0,i.jsx)(n.code,{children:"/etc/default/grub"})," and add\n",(0,i.jsx)(n.code,{children:"spec_store_bypass_disable=prctl spectre_v2_user=prctl"})," to ",(0,i.jsx)(n.code,{children:"GRUB_CMDLINE_LINUX_DEFAULT"})," variable,\nrun ",(0,i.jsx)(n.code,{children:"sudo update-grub"}),", then reboot."]}),(0,i.jsxs)(n.p,{children:["Note that mitigations are not disabled completely. You can fully disable all the available kernel\nmitigations by setting ",(0,i.jsx)(n.code,{children:"mitigations=off"}),". But we don't recommend doing this unless you run a fully\ntrusted code on the host."]}),(0,i.jsx)(n.h3,{id:"vps-list",children:"VPS List"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://cloud.google.com/",children:"Google Cloud"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://aws.amazon.com/",children:"Amazon AWS"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.ovh.com.au/",children:"OVH"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.digitalocean.com/",children:"Digital Ocean"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.vultr.com/",children:"Vultr"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.linode.com/",children:"Linode"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.scaleway.com/",children:"Scaleway"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://onfinality.io/",children:"OnFinality"})}),"\n"]}),(0,i.jsxs)(n.admonition,{type:"caution",children:[(0,i.jsxs)(n.mdxAdmonitionTitle,{children:["Beware of the ",(0,i.jsx)(n.strong,{children:"Terms and Conditions"})," and ",(0,i.jsx)(n.strong,{children:"Acceptable Use Policies"})," for each VPS"]}),(0,i.jsx)(n.p,{children:"provider"}),(0,i.jsxs)(n.p,{children:['You may be locked out of your account and your server shut down if you come in violation. For\ninstance, Digital Ocean lists "Mining of Cryptocurrencies" under the Network Abuse section of their\n',(0,i.jsx)(n.a,{href:"https://www.digitalocean.com/legal/acceptable-use-policy/",children:"Acceptable Use Policy"})," and requires\nexplicit permission to do so. This may extend to other cryptocurrency activity."]})]})]})]})}function c(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},46966:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/JS-UI-bond-7bdecad8831f3c1b20d96e426e7e47c1.png"},83402:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/JS-UI-sign-transaction-75b2e29fcaecc44c5eb1c4f5e3e364ae.png"},72563:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-dashboard-staking-4005504ef30291ebe1a243298c351a34.png"},83517:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-dashboard-telemetry-8930bdd60309c864ed682a1bdd4b1e31.png"},47526:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-dashboard-validate-1-4bf6a6488b4e128d12cab2617025d796.png"},28733:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-dashboard-validate-2-18a8869804f89ffebafa1b920e31ccd6.png"},3106:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-explorer-rotatekeys-rpc-6d5ba5d9ffb20fd9683432e9a6ccd0f9.jpg"},39664:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadot-zero-peer-2642d52b7e07893a66a0ddfd492cce38.jpg"},83215:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/set-session-key-1-b0cdb38a299d6ef6bcc24c6ab2bce66d.png"},61748:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/set-session-key-2-408efe22daa8d6533715987a1099828a.png"},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>r});var a=t(96540);const i={},o=a.createContext(i);function s(e){const n=a.useContext(o);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),a.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bb8b1738.c7c911a3.js b/assets/js/bb8b1738.c7c911a3.js deleted file mode 100644 index e55dcb2957a..00000000000 --- a/assets/js/bb8b1738.c7c911a3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2916],{77348:(a,e,i)=>{i.r(e),i.d(e,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"learn/learn-validator","title":"Validator","description":"Role of Validators within the Polkadot Ecosystem.","source":"@site/../docs/learn/learn-validator.md","sourceDirName":"learn","slug":"/learn-validator","permalink":"/docs/learn-validator","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-validator.md","tags":[],"version":"current","lastUpdatedBy":"github-actions[bot]","lastUpdatedAt":1733735923000,"frontMatter":{"id":"learn-validator","title":"Validator","sidebar_label":"Validator","description":"Role of Validators within the Polkadot Ecosystem.","keywords":["validate","validator","maintain","NPoS","stake"],"slug":"../learn-validator"},"sidebar":"docs","previous":{"title":"Nominator","permalink":"/docs/learn-nominator"},"next":{"title":"Offenses & Slashes","permalink":"/docs/learn-offenses"}}');var t=i(74848),o=i(28453);const r={id:"learn-validator",title:"Validator",sidebar_label:"Validator",description:"Role of Validators within the Polkadot Ecosystem.",keywords:["validate","validator","maintain","NPoS","stake"],slug:"../learn-validator"},s=void 0,l={},d=[{value:"Para-validators",id:"para-validators",level:2},{value:"Block Authors",id:"block-authors",level:2},{value:"Other Validators",id:"other-validators",level:2},{value:"Further Readings",id:"further-readings",level:2},{value:"Guides",id:"guides",level:3},{value:"Other References",id:"other-references",level:3},{value:"Security / Key Management",id:"security--key-management",level:3},{value:"Monitoring Tools",id:"monitoring-tools",level:3},{value:"Validator Stats",id:"validator-stats",level:3}];function c(a){const e={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...a.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.admonition,{type:"info",children:(0,t.jsxs)(e.p,{children:["This page provides a general overview of the role of validators in the Polkadot network. For more\ndetailed information you can read the ",(0,t.jsx)(e.a,{href:"/docs/learn-parachains-protocol",children:"Parachain Protocol Overview"}),"."]})}),"\n",(0,t.jsxs)(e.p,{children:["Validators secure the ",(0,t.jsx)(e.a,{href:"/docs/learn-architecture#relay-chain",children:"relay chain"})," by staking native tokens,\nvalidating proofs from collators and participating in consensus with other validators."]}),"\n",(0,t.jsx)(e.p,{children:"Validators play a crucial role in adding new blocks to the relay chain and, by extension, to all\nparachains. This allows parties to complete cross-chain transactions via the relay chain. They\nguarantee that each parachain follows its unique rules and can pass messages between shards in a\ntrust-free environment."}),"\n",(0,t.jsx)(e.h2,{id:"para-validators",children:"Para-validators"}),"\n",(0,t.jsxs)(e.p,{children:["Parachain validators (i.e. para-validators) participate to the\n",(0,t.jsx)(e.a,{href:"./learn-parachains-protocol.md/#parachain-phase",children:"Parachain Phase of the AnV Protocol"}),", and submit\n",(0,t.jsx)(e.a,{href:"./learn-parachains-protocol.md/#candidate-receipts",children:"candidate receipts"})," to the relay chain\ntransaction queue so that a block author can include information on the parablock in a fork of the\nrelay chain."]}),"\n",(0,t.jsxs)(e.p,{children:["Para-validators work in groups and are selected by the runtime in every epoch to validate parachain\nblocks for all parachains connected to the relay chain. The selected para-validators are part of the\n",(0,t.jsx)(e.a,{href:"/docs/chain-state-values#active-validator-count",children:"active validators"})," randomly selected (per\nepoch) to participate in the validation, creating a validator pool of 200 para-validators."]}),"\n",(0,t.jsxs)(e.p,{children:["Para-validators verify that the information contained in an assigned set of parachain blocks is\nvalid. They receive parachain block candidates from the ",(0,t.jsx)(e.a,{href:"/docs/learn-collator",children:"collators"})," together\nwith a Proof-of-Validity (PoV). The para-validators perform the first round of validity checks on\nthe block candidates. Candidates that gather enough signed validity statements are considered\n",(0,t.jsx)(e.em,{children:"backable"}),"."]}),"\n",(0,t.jsx)(e.h2,{id:"block-authors",children:"Block Authors"}),"\n",(0,t.jsxs)(e.p,{children:["There are validators on the relay chain who participate in the consensus mechanism to produce the\nrelay chain blocks based on validity statements from other validators. These validators are called\nblock authors, they are selected by ",(0,t.jsx)(e.a,{href:"./learn-consensus.md/#block-production-babe",children:"BABE"})," and can note\nup to one backable candidate for each parachain to include in the relay chain. A backable candidate\nincluded in the relay chain is considered ",(0,t.jsx)(e.em,{children:"backed"})," in that fork of the chain."]}),"\n",(0,t.jsxs)(e.p,{children:["In a relay chain block, block authors will only include\n",(0,t.jsx)(e.a,{href:"./learn-parachains-protocol.md/#candidate-receipts",children:"candidate receipts"})," that have a parent\ncandidate receipt in an earlier relay chain block. This ensures the parachain follows a valid chain.\nAlso, the block authors will only include a receipt for which they have an erasure coding chunk,\nensuring that the system can perform the next round of availability and validity checks."]}),"\n",(0,t.jsx)(e.h2,{id:"other-validators",children:"Other Validators"}),"\n",(0,t.jsxs)(e.p,{children:["Validators also contribute to the so-called ",(0,t.jsx)(e.strong,{children:"availability distribution"}),". In fact, once the\ncandidate is backed in a fork of the relay chain, it is still ",(0,t.jsx)(e.em,{children:"pending availability"}),", i.e. it is not\nfully included (only tentative included) as part of the parachain until it is proven available\n(together with the PoV). Information regarding the availability of the candidate will be noted in\nthe following relay chain blocks. Only when there is enough information, the candidate is considered\na full parachain block or ",(0,t.jsx)(e.em,{children:"parablock"}),"."]}),"\n",(0,t.jsxs)(e.p,{children:["Validators also participate in the so-called\n",(0,t.jsx)(e.a,{href:"./learn-parachains-protocol.md/#approval-process",children:(0,t.jsx)(e.strong,{children:"approval process"})}),". Once the parablock is\nconsidered available and part of the parachain, it is still ",(0,t.jsx)(e.em,{children:"pending approval"}),". Because\npara-validators are a small subset of all validators, there is a risk that by chance the majority of\npara-validators assigned to a parachain might be dishonest. It is thus necessary to run a secondary\nverification of the parablock before it can be considered approved. Having a secondary verification\nstep avoids the allocation of more para-validators that will ultimately reduce the throughput of the\nsystem."]}),"\n",(0,t.jsxs)(e.p,{children:["Any instances of non-compliance with the consensus algorithms result in\n",(0,t.jsx)(e.a,{href:"./learn-parachains-protocol.md/#disputes",children:(0,t.jsx)(e.strong,{children:"disputes"})})," with the punishment of the validators on\nthe wrong side by removing some or all their staked tokens, thereby discouraging bad actors. Good\nperformance, however, will be rewarded, with validators receiving block rewards (including\ntransaction fees) in the form of native tokens (DOT or KSM on Kusama) in exchange for their\nactivities."]}),"\n",(0,t.jsxs)(e.p,{children:["Finally, validators participate in the\n",(0,t.jsx)(e.a,{href:"./learn-parachains-protocol.md/#chain-selection",children:"chain selection process within GRANDPA"}),", ensuring\nthat only available and valid blocks end within the finalized relay chain."]}),"\n",(0,t.jsx)(e.admonition,{title:"Within an era roles can change",type:"info",children:(0,t.jsx)(e.p,{children:"Within the same era, a Validator can be a para-validator, block author, and participate in the\navailability distribution or the approval process. Those roles can change between sessions."})}),"\n",(0,t.jsx)(e.h2,{id:"further-readings",children:"Further Readings"}),"\n",(0,t.jsx)(e.h3,{id:"guides",children:"Guides"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"How to Validate on Polkadot"})," - Guide on\nhow to set up a validator on the Polkadot live network."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/maintain-guides-validator-payout",children:"Validator Payout Overview"})," - A short overview on\nhow the validator payout mechanism works."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/maintain-guides-how-to-systemd",children:"How to run your validator as a systemd process"})," -\nGuide on running your validator as a ",(0,t.jsx)(e.code,{children:"systemd"})," process so that it will run in the background and\nstart automatically on reboots."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/maintain-guides-how-to-upgrade",children:"How to Upgrade your Validator"})," - Guide for\nsecurely upgrading your validator when you want to switch to a different machine or begin running\nthe latest version of client code."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"How to Use Validator Setup"})," - Guide on\nhow to use Polkadot / Kusama validator setup."]}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"other-references",children:"Other References"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://medium.com/@acvlls/setting-up-a-maintain-the-easy-way-3a885283091f",children:"How to run a Polkadot node (Docker)"})}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://medium.com/hackernoon/a-serverless-failover-solution-for-web-3-0-validator-nodes-e26b9d24c71d",children:"A Serverless Failover Solution for Web3.0 Validator Nodes"})," -\nBlog that details how to create a robust failover solution for running validators."]}),"\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"/docs/maintain-guides-how-to-validate-kusama##vps-list",children:"VPS list"})}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://matrix.to/#/!NZrbtteFeqYKCUGQtr:matrix.parity.io?via=matrix.parity.io&via=matrix.org&via=web3.foundation",children:"Polkadot Validator Lounge"})," -\nA place to chat about being a validator."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/learn-offenses",children:"Slashing Consequences"})," - Learn more about slashing consequences for running\na validator node."]}),"\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://www.youtube.com/watch?v=0EmP0s6JOW4&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=2",children:"Why You Should be A Validator on Polkadot and Kusama"})}),"\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://www.youtube.com/watch?v=riVg_Up_fCg&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=15",children:"Roles and Responsibilities of a Validator"})}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://www.crowdcast.io/e/validating-on-polkadot",children:"Validating on Polkadot"})," - An explanation of\nhow to validate on Polkadot, with Joe Petrowski and David Dorgan of Parity Technologies, along\nwith Tim Ogilvie from Staked."]}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"security--key-management",children:"Security / Key Management"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://github.com/w3f/validator-security",children:"Validator Security Overview"})}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"monitoring-tools",children:"Monitoring Tools"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://github.com/SimplyVC/panic_polkadot",children:"PANIC for Polkadot"})," - A monitoring and alerting\nsolution for Polkadot / Kusama node"]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://telemetry.polkadot.io/#list/Kusama%20CC3",children:"Polkadot Telemetry Service"})," - Network\ninformation, including what nodes are running on a given chain, what software versions they are\nrunning, and sync status."]}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"validator-stats",children:"Validator Stats"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://polkastats.io/",children:"Polkastats"})," - Polkastats is a cleanly designed dashboard for validator\nstatistics."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://kusama.subscan.io/validator",children:"Subscan Validators Page"})," - Displays information on the\ncurrent validators - not as tailored for validators as the other sites."]}),"\n"]})]})}function h(a={}){const{wrapper:e}={...(0,o.R)(),...a.components};return e?(0,t.jsx)(e,{...a,children:(0,t.jsx)(c,{...a})}):c(a)}},28453:(a,e,i)=>{i.d(e,{R:()=>r,x:()=>s});var n=i(96540);const t={},o=n.createContext(t);function r(a){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof a?a(e):{...e,...a}}),[e,a])}function s(a){let e;return e=a.disableParentContext?"function"==typeof a.components?a.components(t):a.components||t:r(a.components),n.createElement(o.Provider,{value:e},a.children)}}}]); \ No newline at end of file diff --git a/assets/js/bb8b1738.fd7f88c7.js b/assets/js/bb8b1738.fd7f88c7.js new file mode 100644 index 00000000000..e92b7ee09ce --- /dev/null +++ b/assets/js/bb8b1738.fd7f88c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2916],{77348:(a,e,i)=>{i.r(e),i.d(e,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"learn/learn-validator","title":"Validator","description":"Role of Validators within the Polkadot Ecosystem.","source":"@site/../docs/learn/learn-validator.md","sourceDirName":"learn","slug":"/learn-validator","permalink":"/docs/learn-validator","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-validator.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1734534375000,"frontMatter":{"id":"learn-validator","title":"Validator","sidebar_label":"Validator","description":"Role of Validators within the Polkadot Ecosystem.","keywords":["validate","validator","maintain","NPoS","stake"],"slug":"../learn-validator"},"sidebar":"docs","previous":{"title":"Nominator","permalink":"/docs/learn-nominator"},"next":{"title":"Offenses & Slashes","permalink":"/docs/learn-offenses"}}');var t=i(74848),o=i(28453);const r={id:"learn-validator",title:"Validator",sidebar_label:"Validator",description:"Role of Validators within the Polkadot Ecosystem.",keywords:["validate","validator","maintain","NPoS","stake"],slug:"../learn-validator"},s=void 0,l={},d=[{value:"Para-validators",id:"para-validators",level:2},{value:"Block Authors",id:"block-authors",level:2},{value:"Other Validators",id:"other-validators",level:2},{value:"Further Readings",id:"further-readings",level:2},{value:"Guides",id:"guides",level:3},{value:"Other References",id:"other-references",level:3},{value:"Security / Key Management",id:"security--key-management",level:3},{value:"Monitoring Tools",id:"monitoring-tools",level:3},{value:"Validator Stats",id:"validator-stats",level:3}];function c(a){const e={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...a.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.admonition,{type:"info",children:(0,t.jsxs)(e.p,{children:["This page provides a general overview of the role of validators in the Polkadot network. For more\ndetailed information you can read the ",(0,t.jsx)(e.a,{href:"/docs/learn-parachains-protocol",children:"Parachain Protocol Overview"}),"."]})}),"\n",(0,t.jsxs)(e.p,{children:["Validators secure the ",(0,t.jsx)(e.a,{href:"/docs/learn-architecture#relay-chain",children:"relay chain"})," by staking native tokens,\nvalidating proofs from collators and participating in consensus with other validators."]}),"\n",(0,t.jsx)(e.p,{children:"Validators play a crucial role in adding new blocks to the relay chain and, by extension, to all\nparachains. This allows parties to complete cross-chain transactions via the relay chain. They\nguarantee that each parachain follows its unique rules and can pass messages between shards in a\ntrust-free environment."}),"\n",(0,t.jsx)(e.h2,{id:"para-validators",children:"Para-validators"}),"\n",(0,t.jsxs)(e.p,{children:["Parachain validators (i.e. para-validators) participate to the\n",(0,t.jsx)(e.a,{href:"/docs/learn-parachains-protocol#parachain-phase",children:"Parachain Phase of the AnV Protocol"}),", and submit\n",(0,t.jsx)(e.a,{href:"/docs/learn-parachains-protocol#candidate-receipts",children:"candidate receipts"})," to the relay chain\ntransaction queue so that a block author can include information on the parablock in a fork of the\nrelay chain."]}),"\n",(0,t.jsxs)(e.p,{children:["Para-validators work in groups and are selected by the runtime in every epoch to validate parachain\nblocks for all parachains connected to the relay chain. The selected para-validators are part of the\n",(0,t.jsx)(e.a,{href:"/docs/chain-state-values#active-validator-count",children:"active validators"})," randomly selected (per\nepoch) to participate in the validation, creating a validator pool of 200 para-validators."]}),"\n",(0,t.jsxs)(e.p,{children:["Para-validators verify that the information contained in an assigned set of parachain blocks is\nvalid. They receive parachain block candidates from the ",(0,t.jsx)(e.a,{href:"/docs/learn-collator",children:"collators"})," together\nwith a Proof-of-Validity (PoV). The para-validators perform the first round of validity checks on\nthe block candidates. Candidates that gather enough signed validity statements are considered\n",(0,t.jsx)(e.em,{children:"backable"}),"."]}),"\n",(0,t.jsx)(e.h2,{id:"block-authors",children:"Block Authors"}),"\n",(0,t.jsxs)(e.p,{children:["There are validators on the relay chain who participate in the consensus mechanism to produce the\nrelay chain blocks based on validity statements from other validators. These validators are called\nblock authors, they are selected by ",(0,t.jsx)(e.a,{href:"/docs/learn-consensus#block-production-babe",children:"BABE"})," and can note\nup to one backable candidate for each parachain to include in the relay chain. A backable candidate\nincluded in the relay chain is considered ",(0,t.jsx)(e.em,{children:"backed"})," in that fork of the chain."]}),"\n",(0,t.jsxs)(e.p,{children:["In a relay chain block, block authors will only include\n",(0,t.jsx)(e.a,{href:"/docs/learn-parachains-protocol#candidate-receipts",children:"candidate receipts"})," that have a parent candidate\nreceipt in an earlier relay chain block. This ensures the parachain follows a valid chain. Also, the\nblock authors will only include a receipt for which they have an erasure coding chunk, ensuring that\nthe system can perform the next round of availability and validity checks."]}),"\n",(0,t.jsx)(e.h2,{id:"other-validators",children:"Other Validators"}),"\n",(0,t.jsxs)(e.p,{children:["Validators also contribute to the so-called ",(0,t.jsx)(e.strong,{children:"availability distribution"}),". In fact, once the\ncandidate is backed in a fork of the relay chain, it is still ",(0,t.jsx)(e.em,{children:"pending availability"}),", i.e. it is not\nfully included (only tentative included) as part of the parachain until it is proven available\n(together with the PoV). Information regarding the availability of the candidate will be noted in\nthe following relay chain blocks. Only when there is enough information, the candidate is considered\na full parachain block or ",(0,t.jsx)(e.em,{children:"parablock"}),"."]}),"\n",(0,t.jsxs)(e.p,{children:["Validators also participate in the so-called\n",(0,t.jsx)(e.a,{href:"/docs/learn-parachains-protocol#approval-process",children:(0,t.jsx)(e.strong,{children:"approval process"})}),". Once the parablock is\nconsidered available and part of the parachain, it is still ",(0,t.jsx)(e.em,{children:"pending approval"}),". Because\npara-validators are a small subset of all validators, there is a risk that by chance the majority of\npara-validators assigned to a parachain might be dishonest. It is thus necessary to run a secondary\nverification of the parablock before it can be considered approved. Having a secondary verification\nstep avoids the allocation of more para-validators that will ultimately reduce the throughput of the\nsystem."]}),"\n",(0,t.jsxs)(e.p,{children:["Any instances of non-compliance with the consensus algorithms result in\n",(0,t.jsx)(e.a,{href:"/docs/learn-parachains-protocol#disputes",children:(0,t.jsx)(e.strong,{children:"disputes"})})," with the punishment of the validators on the\nwrong side by removing some or all their staked tokens, thereby discouraging bad actors. Good\nperformance, however, will be rewarded, with validators receiving block rewards (including\ntransaction fees) in the form of native tokens (DOT or KSM on Kusama) in exchange for their\nactivities."]}),"\n",(0,t.jsxs)(e.p,{children:["Finally, validators participate in the\n",(0,t.jsx)(e.a,{href:"/docs/learn-parachains-protocol#chain-selection",children:"chain selection process within GRANDPA"}),", ensuring\nthat only available and valid blocks end within the finalized relay chain."]}),"\n",(0,t.jsx)(e.admonition,{title:"Within an era roles can change",type:"info",children:(0,t.jsx)(e.p,{children:"Within the same era, a Validator can be a para-validator, block author, and participate in the\navailability distribution or the approval process. Those roles can change between sessions."})}),"\n",(0,t.jsx)(e.h2,{id:"further-readings",children:"Further Readings"}),"\n",(0,t.jsx)(e.h3,{id:"guides",children:"Guides"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"How to Validate on Polkadot"})," - Guide on\nhow to set up a validator on the Polkadot live network."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/maintain-guides-validator-payout",children:"Validator Payout Overview"})," - A short overview on\nhow the validator payout mechanism works."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/maintain-guides-how-to-systemd",children:"How to run your validator as a systemd process"})," -\nGuide on running your validator as a ",(0,t.jsx)(e.code,{children:"systemd"})," process so that it will run in the background and\nstart automatically on reboots."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/maintain-guides-how-to-upgrade",children:"How to Upgrade your Validator"})," - Guide for\nsecurely upgrading your validator when you want to switch to a different machine or begin running\nthe latest version of client code."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"How to Use Validator Setup"})," - Guide on\nhow to use Polkadot / Kusama validator setup."]}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"other-references",children:"Other References"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://medium.com/@acvlls/setting-up-a-maintain-the-easy-way-3a885283091f",children:"How to run a Polkadot node (Docker)"})}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://medium.com/hackernoon/a-serverless-failover-solution-for-web-3-0-validator-nodes-e26b9d24c71d",children:"A Serverless Failover Solution for Web3.0 Validator Nodes"})," -\nBlog that details how to create a robust failover solution for running validators."]}),"\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"/docs/maintain-guides-how-to-validate-kusama##vps-list",children:"VPS list"})}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://matrix.to/#/!NZrbtteFeqYKCUGQtr:matrix.parity.io?via=matrix.parity.io&via=matrix.org&via=web3.foundation",children:"Polkadot Validator Lounge"})," -\nA place to chat about being a validator."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"/docs/learn-offenses",children:"Slashing Consequences"})," - Learn more about slashing consequences for running\na validator node."]}),"\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://www.youtube.com/watch?v=0EmP0s6JOW4&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=2",children:"Why You Should be A Validator on Polkadot and Kusama"})}),"\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://www.youtube.com/watch?v=riVg_Up_fCg&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=15",children:"Roles and Responsibilities of a Validator"})}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://www.crowdcast.io/e/validating-on-polkadot",children:"Validating on Polkadot"})," - An explanation of\nhow to validate on Polkadot, with Joe Petrowski and David Dorgan of Parity Technologies, along\nwith Tim Ogilvie from Staked."]}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"security--key-management",children:"Security / Key Management"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://github.com/w3f/validator-security",children:"Validator Security Overview"})}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"monitoring-tools",children:"Monitoring Tools"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://github.com/SimplyVC/panic_polkadot",children:"PANIC for Polkadot"})," - A monitoring and alerting\nsolution for Polkadot / Kusama node"]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://telemetry.polkadot.io/#list/Kusama%20CC3",children:"Polkadot Telemetry Service"})," - Network\ninformation, including what nodes are running on a given chain, what software versions they are\nrunning, and sync status."]}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"validator-stats",children:"Validator Stats"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://polkastats.io/",children:"Polkastats"})," - Polkastats is a cleanly designed dashboard for validator\nstatistics."]}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://kusama.subscan.io/validator",children:"Subscan Validators Page"})," - Displays information on the\ncurrent validators - not as tailored for validators as the other sites."]}),"\n"]})]})}function h(a={}){const{wrapper:e}={...(0,o.R)(),...a.components};return e?(0,t.jsx)(e,{...a,children:(0,t.jsx)(c,{...a})}):c(a)}},28453:(a,e,i)=>{i.d(e,{R:()=>r,x:()=>s});var n=i(96540);const t={},o=n.createContext(t);function r(a){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof a?a(e):{...e,...a}}),[e,a])}function s(a){let e;return e=a.disableParentContext?"function"==typeof a.components?a.components(t):a.components||t:r(a.components),n.createElement(o.Provider,{value:e},a.children)}}}]); \ No newline at end of file diff --git a/assets/js/c2c6a3a6.416f7fd8.js b/assets/js/c2c6a3a6.f2147b56.js similarity index 55% rename from assets/js/c2c6a3a6.416f7fd8.js rename to assets/js/c2c6a3a6.f2147b56.js index f4f360ce80e..5ac84fb4bd9 100644 --- a/assets/js/c2c6a3a6.416f7fd8.js +++ b/assets/js/c2c6a3a6.f2147b56.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8506],{39323:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"learn/learn-nft-projects","title":"NFT projects on Polkadot and Kusama","description":"NFT Projects in the Polkadot Ecosystem.","source":"@site/../docs/learn/learn-nft-projects.md","sourceDirName":"learn","slug":"/learn-nft-projects","permalink":"/docs/learn-nft-projects","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-nft-projects.md","tags":[],"version":"current","lastUpdatedBy":"bader y","lastUpdatedAt":1723795705000,"frontMatter":{"id":"learn-nft-projects","title":"NFT projects on Polkadot and Kusama","sidebar_label":"NFT Projects","description":"NFT Projects in the Polkadot Ecosystem.","keywords":["NFT","non-fungible token","NFT 2.0"],"slug":"../learn-nft-projects"},"sidebar":"docs","previous":{"title":"Multisig Apps","permalink":"/docs/multisig-apps"},"next":{"title":"Parachain Apps","permalink":"/docs/parachains-apps"}}');var a=n(74848),o=n(28453);const i={id:"learn-nft-projects",title:"NFT projects on Polkadot and Kusama",sidebar_label:"NFT Projects",description:"NFT Projects in the Polkadot Ecosystem.",keywords:["NFT","non-fungible token","NFT 2.0"],slug:"../learn-nft-projects"},r=void 0,l={},h=[{value:"List of NFT Projects",id:"list-of-nft-projects",level:2},{value:"Astar",id:"astar",level:2},{value:"Basilisk",id:"basilisk",level:2},{value:"KodaDot",id:"kodadot",level:2},{value:"The Team Behind KodaDot",id:"the-team-behind-kodadot",level:3},{value:"Ecosystem Tools by KodaDot",id:"ecosystem-tools-by-kodadot",level:3},{value:"Moonbeam",id:"moonbeam",level:2},{value:"RMRK",id:"rmrk",level:2},{value:"NFT Legos",id:"nft-legos",level:3},{value:"NFT from Kanaria",id:"nft-from-kanaria",level:3},{value:"Asset Hub",id:"asset-hub",level:2},{value:"Unique Network",id:"unique-network",level:2}];function d(e){const t={a:"a",admonition:"admonition",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.admonition,{title:"Community Page",type:"info",children:(0,a.jsxs)(t.p,{children:["This page is open to contributions from the community. Please follow the\n",(0,a.jsx)(t.a,{href:"https://github.com/w3f/polkadot-wiki#contributing-to-documentation",children:"Wiki contribution guidelines"}),"\nand add your NFT app to this page."]})}),"\n",(0,a.jsx)(t.h2,{id:"list-of-nft-projects",children:"List of NFT Projects"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"#astar",children:"Astar"})}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"#basilisk",children:"Basilisk"})}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"#kodadot",children:"KodaDot"})}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"#moonbeam",children:"Moonbeam"})}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"#rmrk",children:"RMRK"})}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"#asset-hub",children:"Asset Hub"})}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"#unique-network",children:"Unique Network"})}),"\n"]}),"\n",(0,a.jsx)(t.h2,{id:"astar",children:"Astar"}),"\n",(0,a.jsxs)(t.p,{children:[(0,a.jsx)(t.a,{href:"https://astar.network",children:"Astar Network"})," and its sister network\n",(0,a.jsx)(t.a,{href:"https://shiden.astar.network",children:"Shiden Network"}),' are the smart contract infrastructure in the Polkadot\nEcosystem. Astar Ecosystem ("Astar") supports NFTs developed with EVM smart contracts and WASM smart\ncontracts.']}),"\n",(0,a.jsxs)(t.p,{children:["Astar has all toolings available that every EVM NFT developer knows. The availability of those\ntoolings makes the onboarding to Astar networks very attractive to any developer looking to explore\nthe Polkadot Ecosystem. Astar has an active community of artists and NFT enthusiasts. Besides\nsupporting all EVM toolings, Astar also bootstrapped the WASM smart contract environment for NFT\ndevelopers writing smart contracts with ",(0,a.jsx)(t.a,{href:"https://use.ink",children:"ink!"})," based on\n",(0,a.jsx)(t.a,{href:"https://github.com/w3f/PSPs/blob/master/PSPs/psp-34.md",children:"PSP34"})," (Polkadot Standards Proposals)."]}),"\n",(0,a.jsxs)(t.p,{children:["The main advantage of having a multi-virtual machine environment for NFT developers is that it will\ngive more possibilities to the builders for the use case they are developing. With the support of\nWASM smart contracts, developers can develop solutions like ",(0,a.jsx)(t.a,{href:"./learn-nft#rmrk",children:"RMRK"})," with smart\ncontracts."]}),"\n",(0,a.jsx)(t.h2,{id:"basilisk",children:"Basilisk"}),"\n",(0,a.jsxs)(t.p,{children:[(0,a.jsx)(t.a,{href:"https://bsx.fi/",children:"Basilisk"})," is a Kusama parachain that provides liquidity for the ecosystem. It also\nhas a full-featured NFT platform based on the\n",(0,a.jsx)(t.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/uniques",children:"Uniques pallet"}),".\nOne of the key features of Basilisk is that it allows minting NFTs with a royalty fee. This royalty\nfee is distributed to the original creator of the NFT via the runtime pallet. Additionally\n",(0,a.jsx)(t.a,{href:"https://github.com/galacticcouncil/Basilisk-node/tree/master/pallets/marketplace",children:"Basilisk offers a feature"}),"\nthat allows creating a buy order for a specific NFT."]}),"\n",(0,a.jsxs)(t.p,{children:["These NFTs can be viewed and interacted instantly on ",(0,a.jsx)(t.a,{href:"https://kodadot.xyz",children:"KodaDot"}),"."]}),"\n",(0,a.jsx)(t.p,{children:(0,a.jsx)(t.img,{alt:"nft-basilisk",src:n(20782).A+"",width:"3358",height:"1564"})}),"\n",(0,a.jsx)(t.h2,{id:"kodadot",children:(0,a.jsx)(t.a,{href:"https://kodadot.xyz",children:"KodaDot"})}),"\n",(0,a.jsxs)(t.p,{children:[(0,a.jsx)(t.a,{href:"https://kodadot.xyz",children:"KodaDot"})," is an open-source NFT marketplace that operates on the Dotsama\n(Kusama/Polkadot) network, striving to aggregate various NFT standards (Kusama, RMRK, Asset Hub,\nBasilisk, etc.) in the Dotsama ecosystem, enhancing user experience by abstracting these standards."]}),"\n",(0,a.jsxs)(t.p,{children:["KodaDot's strength lies in its commitment to open-source collaboration. It has transformed into a\ncollaborative hub where creators, developers, and community members work collectively for decision\nmaking, amassing an extensive network of over\n",(0,a.jsx)(t.a,{href:"https://hello.kodadot.xyz/about-us/who-are-we/achievements",children:"90 open-source contributors"}),". This\nrobust collaboration has earned KodaDot the\n",(0,a.jsx)(t.a,{href:"https://github.com/topics/polkadot",children:"number one rank as a dapp in the Polkadot ecosystem on Github"}),"."]}),"\n",(0,a.jsxs)(t.p,{children:["See below a video tutorial about how to mint your NFT on ",(0,a.jsx)(t.a,{href:"#asset-hub",children:"the Polkadot Asset Hub"})," using\nKodaDot."]}),"\n",(0,a.jsx)("div",{className:"row",children:(0,a.jsxs)("div",{className:"col text--center",children:[(0,a.jsx)("a",{href:"https://www.youtube.com/watch?v=SKdx4pTgL04",children:(0,a.jsx)("img",{src:"https://img.youtube.com/vi/SKdx4pTgL04/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,a.jsx)("p",{children:(0,a.jsx)("a",{href:"https://www.youtube.com/watch?v=SKdx4pTgL04",children:"KodaDot Tutorial on Minting NFTs"})})]})}),"\n",(0,a.jsxs)(t.p,{children:["For more information about minting using KodaDot see\n",(0,a.jsx)(t.a,{href:"https://hello.kodadot.xyz/tutorial/minting/how-to-mint-nfts-on-polkadot-asset-hub-using-kodadot",children:"this step-by-step tutorial"}),"."]}),"\n",(0,a.jsx)(t.h3,{id:"the-team-behind-kodadot",children:"The Team Behind KodaDot"}),"\n",(0,a.jsxs)(t.p,{children:["KodaDot began as the first\n",(0,a.jsx)(t.a,{href:"https://kusama.polkassembly.io/motion/256",children:"unofficial explorer for RMRKv0.0.1"}),"\n",(0,a.jsx)(t.a,{href:"https://github.com/rmrk-team/rmrk-spec/issues/10",children:"contributing to RMRK protocol"}),". It later\n",(0,a.jsx)(t.a,{href:"https://kusama.polkassembly.io/motion/349",children:"received Kusama Treasury funding"}),", which propelled the\nteam to create the\n",(0,a.jsx)(t.a,{href:"https://kusama.polkassembly.io/motion/349",children:"best end-user experience on the Asset hub"}),"."]}),"\n",(0,a.jsxs)(t.p,{children:["In the summer of 2022, KodaDot won the first prize at the\n",(0,a.jsx)(t.a,{href:"https://devpost.com/software/kodadot-moonsama",children:"Polkadot North American event"})," for implementing\nMoonBeam and MoonRiver NFT EVM smart contracts and enabling read-only access to existing components\nfor seamless end-user interaction."]}),"\n",(0,a.jsxs)(t.p,{children:["The team successfully\n",(0,a.jsx)(t.a,{href:"https://github.com/kodadot/nft-gallery/issues/660",children:"launched with Basilisk NFT Marketplace pallet in Fall 2022"}),",\nwhere an increasing number of artist collections are emerging, providing artists the opportunity to\nreceive offers on unlisted NFTs and earn on-chain royalties."]}),"\n",(0,a.jsxs)(t.p,{children:["KodaDot's upcoming integrations are based on\n",(0,a.jsx)(t.a,{href:"https://github.com/w3f/PSPs/blob/master/PSPs/psp-34.md",children:"PSP-34"}),", leveraging\n",(0,a.jsx)(t.a,{href:"https://use.ink/",children:"smart contracts written with ink!"}),"."]}),"\n",(0,a.jsx)(t.h3,{id:"ecosystem-tools-by-kodadot",children:"Ecosystem Tools by KodaDot"}),"\n",(0,a.jsxs)(t.p,{children:["KodaDot has enriched the Polkadot ecosystem by\n",(0,a.jsx)(t.a,{href:"https://github.com/kodadot/uniquery",children:"offering a comprehensive API interface for builders"}),", based on\nthe SubSquid indexer. This platform also presents searchable items and collections, translating\non-chain transactions into deep insights about collection ownership dynamics for end-users. For more\ninfo about KodaDot check out ",(0,a.jsx)(t.a,{href:"https://hello.kodadot.xyz/",children:"link"}),"."]}),"\n",(0,a.jsx)(t.h2,{id:"moonbeam",children:"Moonbeam"}),"\n",(0,a.jsxs)(t.p,{children:[(0,a.jsx)(t.a,{href:"https://moonbeam.network",children:"Moonbeam"})," and its Kusama counterpart Moonriver are full EVM deployments\nwith Ethereum RPC endpoints."]}),"\n",(0,a.jsx)(t.p,{children:"This means that the entire toolkit offered to other EVM chains (stacks like Hardhat, Remix, Truffle,\nMetamask, etc.) are available to Moonriver / Moonbeam users and developers, giving it a noticeable\nhead start in attracting existing userbases."}),"\n",(0,a.jsx)(t.p,{children:"Several dozen high profile teams are launching their products (or re-launching) on Moonriver /\nMoonbeam, however, it is essential to note that Moonbeam is an EVM chain and will therefore suffer\nfrom the same limitations as any other EVM chain in regards to customization and feature-richness of\nNFTs."}),"\n",(0,a.jsx)(t.p,{children:"A notable advantage, however, is that Moonriver / Moonbeam is still a Substrate chain, meaning\nintegration of custom pallets into the runtime is still possible, making NFT specific optimizations\nat the chain runtime level a reliable way to keep EVM compatibility of tools while at the same time\noptimizing storage and interactions for rich NFTs."}),"\n",(0,a.jsx)(t.h2,{id:"rmrk",children:"RMRK"}),"\n",(0,a.jsxs)(t.p,{children:[(0,a.jsx)(t.a,{href:"https://rmrk.app",children:"RMRK"})," is a set of NFT 2.0 standards developed in three distinct code flavors:"]}),"\n",(0,a.jsxs)(t.ol,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"https://en.bitcoin.it/wiki/Colored_Coins",children:'"Colored coins"'}),' approach, as on Bitcoin, originally\ndeveloped as a "hack" on the Kusama chain. This is now deprecated, and it is recommended\nimplementers use any of the other options.']}),"\n",(0,a.jsxs)(t.li,{children:["Solidity contracts, compatible with any EVM blockchain in and outside the Polkadot ecosystem.\nDocumented ",(0,a.jsx)(t.a,{href:"https://evm.rmrk.app",children:"here"})]}),"\n",(0,a.jsxs)(t.li,{children:["Rust code (Substrate pallets), compatible with any Substrate chain. Code is available\n",(0,a.jsx)(t.a,{href:"https://github.com/rmrk-team/rmrk-substrate",children:"here"}),"."]}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:"Additionally, two more flavors are in development:"}),"\n",(0,a.jsxs)(t.ol,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"https://astar.network/",children:"Astar"})," are developing the ink! version of RMRK:\n",(0,a.jsx)(t.a,{href:"https://github.com/rmrk-team/rmrk-ink",children:"code here"}),"."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"https://www.gear-tech.io/",children:"Gear Technologies"})," are developing the Gear implementation:\n",(0,a.jsx)(t.a,{href:"https://wiki.gear-tech.io/docs/examples/rmrk/",children:"code and docs here"}),"."]}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:'The RMRK NFT 2.0 standards are a set of "NFT legos", primitives that, when put together, allow a\nbuilder to compose an NFT system of arbitrary complexity without smart contracts.'}),"\n",(0,a.jsx)(t.h3,{id:"nft-legos",children:"NFT Legos"}),"\n",(0,a.jsxs)(t.ol,{children:["\n",(0,a.jsx)(t.li,{children:"NFTs can own other NFTs, NFTs can equip other NFTs for visual change"}),"\n",(0,a.jsx)(t.li,{children:"NFTs can have multiple resources (different outputs based on context and resource priority)"}),"\n",(0,a.jsx)(t.li,{children:"NFTs can have on-chain emotes (reactions) for price discovery and social mechanics"}),"\n",(0,a.jsx)(t.li,{children:"NFTs have conditional rendering (e.g. show Mona Lisa as blushing if she got 50 kissy \ud83d\ude18 emoji)"}),"\n",(0,a.jsx)(t.li,{children:"NFTs can be governed by the community via fungible shareholder-tokens (fractionalization of NFTs)"}),"\n"]}),"\n",(0,a.jsxs)(t.h3,{id:"nft-from-kanaria",children:["NFT from ",(0,a.jsx)(t.a,{href:"https://kanaria.rmrk.app",children:"Kanaria"})]}),"\n",(0,a.jsx)(t.p,{children:(0,a.jsx)(t.img,{alt:"kanaria.png",src:n(52886).A+"",width:"1891",height:"799"})}),"\n",(0,a.jsx)(t.admonition,{title:"Multi-resource NFTs",type:"note",children:(0,a.jsx)(t.p,{children:'A multi-resource NFT (gif of statue, and SVG-composable dynamic NFT in one) that can also equip\nother NFTs from within its "inventory".'})}),"\n",(0,a.jsx)(t.p,{children:"Two marketplaces for RMRK-based NFTs exist with hundreds of projects already launched:"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"https://singular.rmrk.app",children:"Singular"}),", the official marketplace"]}),"\n"]}),"\n",(0,a.jsxs)(t.p,{children:["For a complete introduction into RMRK, see ",(0,a.jsx)(t.a,{href:"https://url.rmrk.app/wasmconf",children:"this presentation"})," or\nread ",(0,a.jsx)(t.a,{href:"https://docs.rmrk.app",children:"the non-technical docs"}),"."]}),"\n",(0,a.jsx)(t.h2,{id:"asset-hub",children:"Asset Hub"}),"\n",(0,a.jsxs)(t.p,{children:["The Asset Hub is a generic assets parachain which provides functionality for deploying and\ntransferring assets \u2014 both Fungible and Non-Fungible Tokens (NFTs). The Asset Hub currently hosts\n",(0,a.jsx)(t.a,{href:"./learn-nft-pallets.md/#uniques-pallet",children:"Uniques pallet"})," and the\n",(0,a.jsx)(t.a,{href:"/docs/learn-nft-pallets#nfts-pallet",children:"NFTs pallet"})," with NFT 2.0 functionalities."]}),"\n",(0,a.jsx)(t.h2,{id:"unique-network",children:"Unique Network"}),"\n",(0,a.jsxs)(t.p,{children:[(0,a.jsx)(t.a,{href:"https://unique.network/",children:"Unique network"}),", an NFT-specific blockchain offering innovations such as\nsponsored transactions, bundling fungible tokens with non-fungibles, and splitting NFTs into\nfungible tokens for partial ownership."]}),"\n",(0,a.jsxs)(t.p,{children:["Unique Network have launched two NFT projects to date: Substrapunks as part of\n",(0,a.jsx)(t.a,{href:"https://hackusama.devpost.com/",children:"Hackusama"}),", and Chelobricks as a promotion during\n",(0,a.jsx)(t.a,{href:"https://decoded.polkadot.network/",children:"Polkadot Decoded"}),"."]}),"\n",(0,a.jsx)(t.p,{children:"Unique Network focuses on B2B use cases, aiming to be an infrastructure provider for others to build\non, rather than entering the NFT space themselves as an end-product."}),"\n",(0,a.jsx)(t.p,{children:"Unique Network aims to make their marketplace technology open-source and whitelabel-friendly. In\ntheory, it should be trivial to set up a new marketplace for your project using Unique's technology.\nUnique network aims to be a parachain on Polkadot, and Quartz is their Kusama counterpart."})]})}function c(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},52886:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/kanaria-55b0060679c6303db0fc91f5c402ba02.png"},20782:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/nft-basilisk-654977e2e97885e796857fc2e2add909.png"},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>r});var s=n(96540);const a={},o=s.createContext(a);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8506],{39323:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"learn/learn-nft-projects","title":"NFT projects on Polkadot and Kusama","description":"NFT Projects in the Polkadot Ecosystem.","source":"@site/../docs/learn/learn-nft-projects.md","sourceDirName":"learn","slug":"/learn-nft-projects","permalink":"/docs/learn-nft-projects","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-nft-projects.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1734535671000,"frontMatter":{"id":"learn-nft-projects","title":"NFT projects on Polkadot and Kusama","sidebar_label":"NFT Projects","description":"NFT Projects in the Polkadot Ecosystem.","keywords":["NFT","non-fungible token","NFT 2.0"],"slug":"../learn-nft-projects"},"sidebar":"docs","previous":{"title":"Multisig Apps","permalink":"/docs/multisig-apps"},"next":{"title":"Parachain Apps","permalink":"/docs/parachains-apps"}}');var o=n(74848),a=n(28453);const i={id:"learn-nft-projects",title:"NFT projects on Polkadot and Kusama",sidebar_label:"NFT Projects",description:"NFT Projects in the Polkadot Ecosystem.",keywords:["NFT","non-fungible token","NFT 2.0"],slug:"../learn-nft-projects"},r=void 0,l={},h=[{value:"List of NFT Projects",id:"list-of-nft-projects",level:2},{value:"Astar",id:"astar",level:2},{value:"Basilisk",id:"basilisk",level:2},{value:"KodaDot",id:"kodadot",level:2},{value:"The Team Behind KodaDot",id:"the-team-behind-kodadot",level:3},{value:"Ecosystem Tools by KodaDot",id:"ecosystem-tools-by-kodadot",level:3},{value:"Moonbeam",id:"moonbeam",level:2},{value:"RMRK",id:"rmrk",level:2},{value:"NFT Legos",id:"nft-legos",level:3},{value:"NFT from Kanaria",id:"nft-from-kanaria",level:3},{value:"Asset Hub",id:"asset-hub",level:2},{value:"Unique Network",id:"unique-network",level:2}];function d(e){const t={a:"a",admonition:"admonition",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...(0,a.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.admonition,{title:"Community Page",type:"info",children:(0,o.jsxs)(t.p,{children:["This page is open to contributions from the community. Please follow the\n",(0,o.jsx)(t.a,{href:"https://github.com/w3f/polkadot-wiki#contributing-to-documentation",children:"Wiki contribution guidelines"}),"\nand add your NFT app to this page."]})}),"\n",(0,o.jsx)(t.h2,{id:"list-of-nft-projects",children:"List of NFT Projects"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"#astar",children:"Astar"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"#basilisk",children:"Basilisk"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"#kodadot",children:"KodaDot"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"#moonbeam",children:"Moonbeam"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"#rmrk",children:"RMRK"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"#asset-hub",children:"Asset Hub"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"#unique-network",children:"Unique Network"})}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"astar",children:"Astar"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://astar.network",children:"Astar Network"})," and its sister network\n",(0,o.jsx)(t.a,{href:"https://shiden.astar.network",children:"Shiden Network"}),' are the smart contract infrastructure in the Polkadot\nEcosystem. Astar Ecosystem ("Astar") supports NFTs developed with EVM smart contracts and WASM smart\ncontracts.']}),"\n",(0,o.jsxs)(t.p,{children:["Astar has all toolings available that every EVM NFT developer knows. The availability of those\ntoolings makes the onboarding to Astar networks very attractive to any developer looking to explore\nthe Polkadot Ecosystem. Astar has an active community of artists and NFT enthusiasts. Besides\nsupporting all EVM toolings, Astar also bootstrapped the WASM smart contract environment for NFT\ndevelopers writing smart contracts with ",(0,o.jsx)(t.a,{href:"https://use.ink",children:"ink!"})," based on\n",(0,o.jsx)(t.a,{href:"https://github.com/w3f/PSPs/blob/master/PSPs/psp-34.md",children:"PSP34"})," (Polkadot Standards Proposals)."]}),"\n",(0,o.jsxs)(t.p,{children:["The main advantage of having a multi-virtual machine environment for NFT developers is that it will\ngive more possibilities to the builders for the use case they are developing. With the support of\nWASM smart contracts, developers can develop solutions like ",(0,o.jsx)(t.a,{href:"./learn-nft#rmrk",children:"RMRK"})," with smart\ncontracts."]}),"\n",(0,o.jsx)(t.h2,{id:"basilisk",children:"Basilisk"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://bsx.fi/",children:"Basilisk"})," is a Kusama parachain that provides liquidity for the ecosystem. It also\nhas a full-featured NFT platform based on the\n",(0,o.jsx)(t.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/uniques",children:"Uniques pallet"}),".\nOne of the key features of Basilisk is that it allows minting NFTs with a royalty fee. This royalty\nfee is distributed to the original creator of the NFT via the runtime pallet. Additionally\n",(0,o.jsx)(t.a,{href:"https://github.com/galacticcouncil/Basilisk-node/tree/master/pallets/marketplace",children:"Basilisk offers a feature"}),"\nthat allows creating a buy order for a specific NFT."]}),"\n",(0,o.jsxs)(t.p,{children:["These NFTs can be viewed and interacted instantly on ",(0,o.jsx)(t.a,{href:"https://kodadot.xyz",children:"KodaDot"}),"."]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"nft-basilisk",src:n(20782).A+"",width:"3358",height:"1564"})}),"\n",(0,o.jsx)(t.h2,{id:"kodadot",children:(0,o.jsx)(t.a,{href:"https://kodadot.xyz",children:"KodaDot"})}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://kodadot.xyz",children:"KodaDot"})," is an open-source NFT marketplace that operates on the Dotsama\n(Kusama/Polkadot) network, striving to aggregate various NFT standards (Kusama, RMRK, Asset Hub,\nBasilisk, etc.) in the Dotsama ecosystem, enhancing user experience by abstracting these standards."]}),"\n",(0,o.jsxs)(t.p,{children:["KodaDot's strength lies in its commitment to open-source collaboration. It has transformed into a\ncollaborative hub where creators, developers, and community members work collectively for decision\nmaking, amassing an extensive network of over\n",(0,o.jsx)(t.a,{href:"https://hello.kodadot.xyz/about-us/who-are-we/achievements",children:"90 open-source contributors"}),". This\nrobust collaboration has earned KodaDot the\n",(0,o.jsx)(t.a,{href:"https://github.com/topics/polkadot",children:"number one rank as a dapp in the Polkadot ecosystem on Github"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["See below a video tutorial about how to mint your NFT on ",(0,o.jsx)(t.a,{href:"#asset-hub",children:"the Polkadot Asset Hub"})," using\nKodaDot."]}),"\n",(0,o.jsx)("div",{className:"row",children:(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=SKdx4pTgL04",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/SKdx4pTgL04/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=SKdx4pTgL04",children:"KodaDot Tutorial on Minting NFTs"})})]})}),"\n",(0,o.jsxs)(t.p,{children:["For more information about minting using KodaDot see\n",(0,o.jsx)(t.a,{href:"https://hello.kodadot.xyz/tutorial/minting/how-to-mint-nfts-on-polkadot-asset-hub-using-kodadot",children:"this step-by-step tutorial"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"the-team-behind-kodadot",children:"The Team Behind KodaDot"}),"\n",(0,o.jsxs)(t.p,{children:["KodaDot began as the first\n",(0,o.jsx)(t.a,{href:"https://kusama.polkassembly.io/motion/256",children:"unofficial explorer for RMRKv0.0.1"}),"\n",(0,o.jsx)(t.a,{href:"https://github.com/rmrk-team/rmrk-spec/issues/10",children:"contributing to RMRK protocol"}),". It later\n",(0,o.jsx)(t.a,{href:"https://kusama.polkassembly.io/motion/349",children:"received Kusama Treasury funding"}),", which propelled the\nteam to create the\n",(0,o.jsx)(t.a,{href:"https://kusama.polkassembly.io/motion/349",children:"best end-user experience on the Asset hub"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["In the summer of 2022, KodaDot won the first prize at the\n",(0,o.jsx)(t.a,{href:"https://devpost.com/software/kodadot-moonsama",children:"Polkadot North American event"})," for implementing\nMoonBeam and MoonRiver NFT EVM smart contracts and enabling read-only access to existing components\nfor seamless end-user interaction."]}),"\n",(0,o.jsxs)(t.p,{children:["The team successfully\n",(0,o.jsx)(t.a,{href:"https://github.com/kodadot/nft-gallery/issues/660",children:"launched with Basilisk NFT Marketplace pallet in Fall 2022"}),",\nwhere an increasing number of artist collections are emerging, providing artists the opportunity to\nreceive offers on unlisted NFTs and earn on-chain royalties."]}),"\n",(0,o.jsxs)(t.p,{children:["KodaDot's upcoming integrations are based on\n",(0,o.jsx)(t.a,{href:"https://github.com/w3f/PSPs/blob/master/PSPs/psp-34.md",children:"PSP-34"}),", leveraging\n",(0,o.jsx)(t.a,{href:"https://use.ink/",children:"smart contracts written with ink!"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"ecosystem-tools-by-kodadot",children:"Ecosystem Tools by KodaDot"}),"\n",(0,o.jsxs)(t.p,{children:["KodaDot has enriched the Polkadot ecosystem by\n",(0,o.jsx)(t.a,{href:"https://github.com/kodadot/uniquery",children:"offering a comprehensive API interface for builders"}),", based on\nthe SubSquid indexer. This platform also presents searchable items and collections, translating\non-chain transactions into deep insights about collection ownership dynamics for end-users. For more\ninfo about KodaDot check out ",(0,o.jsx)(t.a,{href:"https://hello.kodadot.xyz/",children:"link"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"moonbeam",children:"Moonbeam"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://moonbeam.network",children:"Moonbeam"})," and its Kusama counterpart Moonriver are full EVM deployments\nwith Ethereum RPC endpoints."]}),"\n",(0,o.jsx)(t.p,{children:"This means that the entire toolkit offered to other EVM chains (stacks like Hardhat, Remix, Truffle,\nMetamask, etc.) are available to Moonriver / Moonbeam users and developers, giving it a noticeable\nhead start in attracting existing userbases."}),"\n",(0,o.jsx)(t.p,{children:"Several dozen high profile teams are launching their products (or re-launching) on Moonriver /\nMoonbeam, however, it is essential to note that Moonbeam is an EVM chain and will therefore suffer\nfrom the same limitations as any other EVM chain in regards to customization and feature-richness of\nNFTs."}),"\n",(0,o.jsx)(t.p,{children:"A notable advantage, however, is that Moonriver / Moonbeam is still a Substrate chain, meaning\nintegration of custom pallets into the runtime is still possible, making NFT specific optimizations\nat the chain runtime level a reliable way to keep EVM compatibility of tools while at the same time\noptimizing storage and interactions for rich NFTs."}),"\n",(0,o.jsx)(t.h2,{id:"rmrk",children:"RMRK"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://rmrk.app",children:"RMRK"})," is a set of NFT 2.0 standards developed in three distinct code flavors:"]}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"https://en.bitcoin.it/wiki/Colored_Coins",children:'"Colored coins"'}),' approach, as on Bitcoin, originally\ndeveloped as a "hack" on the Kusama chain. This is now deprecated, and it is recommended\nimplementers use any of the other options.']}),"\n",(0,o.jsxs)(t.li,{children:["Solidity contracts, compatible with any EVM blockchain in and outside the Polkadot ecosystem.\nDocumented ",(0,o.jsx)(t.a,{href:"https://evm.rmrk.app",children:"here"})]}),"\n",(0,o.jsxs)(t.li,{children:["Rust code (Substrate pallets), compatible with any Substrate chain. Code is available\n",(0,o.jsx)(t.a,{href:"https://github.com/rmrk-team/rmrk-substrate",children:"here"}),"."]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"Additionally, two more flavors are in development:"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"https://astar.network/",children:"Astar"})," are developing the ink! version of RMRK:\n",(0,o.jsx)(t.a,{href:"https://github.com/rmrk-team/rmrk-ink",children:"code here"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"https://www.gear-tech.io/",children:"Gear Technologies"})," are developing the Gear implementation:\n",(0,o.jsx)(t.a,{href:"https://wiki.gear-tech.io/docs/examples/rmrk/",children:"code and docs here"}),"."]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:'The RMRK NFT 2.0 standards are a set of "NFT legos", primitives that, when put together, allow a\nbuilder to compose an NFT system of arbitrary complexity without smart contracts.'}),"\n",(0,o.jsx)(t.h3,{id:"nft-legos",children:"NFT Legos"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsx)(t.li,{children:"NFTs can own other NFTs, NFTs can equip other NFTs for visual change"}),"\n",(0,o.jsx)(t.li,{children:"NFTs can have multiple resources (different outputs based on context and resource priority)"}),"\n",(0,o.jsx)(t.li,{children:"NFTs can have on-chain emotes (reactions) for price discovery and social mechanics"}),"\n",(0,o.jsx)(t.li,{children:"NFTs have conditional rendering (e.g. show Mona Lisa as blushing if she got 50 kissy \ud83d\ude18 emoji)"}),"\n",(0,o.jsx)(t.li,{children:"NFTs can be governed by the community via fungible shareholder-tokens (fractionalization of NFTs)"}),"\n"]}),"\n",(0,o.jsxs)(t.h3,{id:"nft-from-kanaria",children:["NFT from ",(0,o.jsx)(t.a,{href:"https://kanaria.rmrk.app",children:"Kanaria"})]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"kanaria.png",src:n(52886).A+"",width:"1891",height:"799"})}),"\n",(0,o.jsx)(t.admonition,{title:"Multi-resource NFTs",type:"note",children:(0,o.jsx)(t.p,{children:'A multi-resource NFT (gif of statue, and SVG-composable dynamic NFT in one) that can also equip\nother NFTs from within its "inventory".'})}),"\n",(0,o.jsx)(t.p,{children:"Two marketplaces for RMRK-based NFTs exist with hundreds of projects already launched:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"https://singular.rmrk.app",children:"Singular"}),", the official marketplace"]}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["For a complete introduction into RMRK, see ",(0,o.jsx)(t.a,{href:"https://url.rmrk.app/wasmconf",children:"this presentation"})," or\nread ",(0,o.jsx)(t.a,{href:"https://docs.rmrk.app",children:"the non-technical docs"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"asset-hub",children:"Asset Hub"}),"\n",(0,o.jsxs)(t.p,{children:["The Asset Hub is a generic assets parachain which provides functionality for deploying and\ntransferring assets \u2014 both Fungible and Non-Fungible Tokens (NFTs). The Asset Hub currently hosts\n",(0,o.jsx)(t.a,{href:"/docs/learn-nft-pallets#uniques-pallet",children:"Uniques pallet"})," and the\n",(0,o.jsx)(t.a,{href:"/docs/learn-nft-pallets#nfts-pallet",children:"NFTs pallet"})," with NFT 2.0 functionalities."]}),"\n",(0,o.jsx)(t.h2,{id:"unique-network",children:"Unique Network"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://unique.network/",children:"Unique network"}),", an NFT-specific blockchain offering innovations such as\nsponsored transactions, bundling fungible tokens with non-fungibles, and splitting NFTs into\nfungible tokens for partial ownership."]}),"\n",(0,o.jsxs)(t.p,{children:["Unique Network have launched two NFT projects to date: Substrapunks as part of\n",(0,o.jsx)(t.a,{href:"https://hackusama.devpost.com/",children:"Hackusama"}),", and Chelobricks as a promotion during\n",(0,o.jsx)(t.a,{href:"https://decoded.polkadot.network/",children:"Polkadot Decoded"}),"."]}),"\n",(0,o.jsx)(t.p,{children:"Unique Network focuses on B2B use cases, aiming to be an infrastructure provider for others to build\non, rather than entering the NFT space themselves as an end-product."}),"\n",(0,o.jsx)(t.p,{children:"Unique Network aims to make their marketplace technology open-source and whitelabel-friendly. In\ntheory, it should be trivial to set up a new marketplace for your project using Unique's technology.\nUnique network aims to be a parachain on Polkadot, and Quartz is their Kusama counterpart."})]})}function c(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},52886:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/kanaria-55b0060679c6303db0fc91f5c402ba02.png"},20782:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/nft-basilisk-654977e2e97885e796857fc2e2add909.png"},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>r});var s=n(96540);const o={},a=s.createContext(o);function i(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c41801b5.56cb5bc9.js b/assets/js/c41801b5.56cb5bc9.js new file mode 100644 index 00000000000..2b34b2f9764 --- /dev/null +++ b/assets/js/c41801b5.56cb5bc9.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[9507],{62499:(a,e,t)=>{"use strict";t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>s,default:()=>c,frontMatter:()=>r,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"maintain/kusama/maintain-guides-how-to-validate-kusama","title":"Run a Validator (Kusama)","description":"The fundamentals for running a Kusama validator.","source":"@site/../docs/maintain/kusama/maintain-guides-how-to-validate-kusama.md","sourceDirName":"maintain/kusama","slug":"/maintain-guides-how-to-validate-kusama","permalink":"/docs/maintain-guides-how-to-validate-kusama","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/kusama/maintain-guides-how-to-validate-kusama.md","tags":[],"version":"current","lastUpdatedBy":"Jaros\u0142aw Bartoszuk","lastUpdatedAt":1734517438000,"frontMatter":{"id":"maintain-guides-how-to-validate-kusama","title":"Run a Validator (Kusama)","sidebar_label":"How to run a Validator on Kusama","description":"The fundamentals for running a Kusama validator.","keywords":["validate","validator","kusama","stake","maintain"],"slug":"../../maintain-guides-how-to-validate-kusama"},"sidebar":"docs","previous":{"title":"Kappa Sigma Mu","permalink":"/docs/maintain-guides-society-kusama"},"next":{"title":"KSM Inflation","permalink":"/docs/learn-kusama-inflation"}}');var n=t(74848),i=t(28453);t(47379),t(96540),t(11135);const r={id:"maintain-guides-how-to-validate-kusama",title:"Run a Validator (Kusama)",sidebar_label:"How to run a Validator on Kusama",description:"The fundamentals for running a Kusama validator.",keywords:["validate","validator","kusama","stake","maintain"],slug:"../../maintain-guides-how-to-validate-kusama"},s=void 0,l={},d=[{value:"Preliminaries",id:"preliminaries",level:2},{value:"How many KSM do I need to become an active Validator?",id:"how-many-ksm-do-i-need-to-become-an-active-validator",level:3},{value:"Validator Rewards",id:"validator-rewards",level:3},{value:"Run a Kusama Validator",id:"run-a-kusama-validator",level:2}];function u(a){const e={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...a.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h2,{id:"preliminaries",children:"Preliminaries"}),"\n",(0,n.jsxs)(e.p,{children:["Running a validator on a live network is a lot of responsibility! You will be accountable for not\nonly your own stake, but also the stake of your current nominators. If you make a mistake and get\n",(0,n.jsx)(e.a,{href:"/docs/learn-offenses",children:"slashed"}),", your tokens and your reputation will be at risk. However,\nrunning a validator can also be very rewarding, knowing that you contribute to the security of a\ndecentralized network while growing your stash."]}),"\n",(0,n.jsxs)(e.admonition,{type:"warning",children:[(0,n.jsx)(e.p,{children:"It is highly recommended that you have significant system administration experience before\nattempting to run your own validator."}),(0,n.jsx)(e.p,{children:"You must be able to handle technical issues and anomalies with your node which you must be able to\ntackle yourself. Being a validator involves more than just executing the binary file."})]}),"\n",(0,n.jsxs)(e.p,{children:["Since security is so important to running a successful validator, you should take a look at the\n",(0,n.jsx)(e.a,{href:"/docs/maintain-guides-secure-validator",children:"secure validator"})," information to make sure you understand\nthe factors to consider when constructing your infrastructure. As you progress in your journey as a\nvalidator, you will likely want to use this repository as a ",(0,n.jsx)(e.em,{children:"starting point"})," for your own\nmodifications and customizations."]}),"\n",(0,n.jsxs)(e.p,{children:["If you need help, please reach out on the\n",(0,n.jsx)(e.a,{href:"https://matrix.to/#/#KusamaValidatorLounge:polkadot.builders",children:"Kusama Validator Lounge"})," on Element.\nThe team and other validators are there to help answer questions and provide tips from experience."]}),"\n",(0,n.jsx)(e.h3,{id:"how-many-ksm-do-i-need-to-become-an-active-validator",children:"How many KSM do I need to become an active Validator?"}),"\n",(0,n.jsx)(e.admonition,{title:"Controller accounts are deprecated",type:"info",children:(0,n.jsxs)(e.p,{children:["Controller accounts are deprecated. For more information, see\n",(0,n.jsx)(e.a,{href:"https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748",children:"this discussion"}),"."]})}),"\n",(0,n.jsxs)(e.p,{children:["You can have a rough estimate on that by using the methods listed\n",(0,n.jsx)(e.a,{href:"/docs/faq#what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator",children:"here"}),".\nTo be elected into the set, you need a minimum stake behind your validator. This stake can come from\nyourself or from ",(0,n.jsx)(e.a,{href:"/docs/learn-nominator",children:"nominators"}),". This means that as a minimum, you\nwill need enough KSM to set up Stash and staking proxy ",(0,n.jsx)(e.a,{href:"/docs/learn-cryptography",children:"accounts"}),"\nwith the existential deposit, plus a little extra for transaction fees. The rest can come from\nnominators. To understand how validators are elected, check the\n",(0,n.jsx)(e.a,{href:"/docs/learn-phragmen",children:"NPoS Election algorithms"})," page."]}),"\n",(0,n.jsx)(e.admonition,{title:"Join the Decentralized Nodes program",type:"tip",children:(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.a,{href:"https://nodes.web3.foundation/",children:"The Decentralized Nodes program"})," is an initiative by Web3\nFoundation and Parity Technologies to use the funds held by both organizations to nominate\nvalidators in the community."]})}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Warning:"})," Any KSM that you stake for your validator is liable to be slashed, meaning that an\ninsecure or improper setup may result in loss of KSM tokens! If you are not confident in your\nability to run a validator node, it is recommended to nominate your KSM to a trusted validator node\ninstead."]}),"\n",(0,n.jsx)(e.h3,{id:"validator-rewards",children:"Validator Rewards"}),"\n",(0,n.jsxs)(e.p,{children:["On Kusama, one day is approximately four eras whereas on Polkadot, one era is approximately a day.\nIn each era, the validators elected to the active set earn era points which correspond to the actual\nrewards earned that are distributed proportionally to the nominators after deducting the validator\ncommission. The\n",(0,n.jsx)(e.a,{href:"/docs/chain-state-values#minimum-validator-commission",children:"minimum validator commission"})," can\nbe set through on-chain governance. For more information rewards and payouts, check the\n",(0,n.jsx)(e.a,{href:"/docs/maintain-guides-validator-payout",children:"validator payout"})," document."]}),"\n",(0,n.jsx)(e.h2,{id:"run-a-kusama-validator",children:"Run a Kusama Validator"}),"\n",(0,n.jsxs)(e.p,{children:["Running a validator on the Kusama network is identical to running a Polkadot validator. Check out\nthe ",(0,n.jsx)(e.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"Polkadot guide"})," on how to setup a validator."]}),"\n",(0,n.jsx)(e.p,{children:"Make sure to adjust the Polkadot guide to run a Kusama network validator (the instructions will also\nbe available in the Polkadot Validator guide):"}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsxs)(e.li,{children:["When starting the node pass ",(0,n.jsx)(e.code,{children:"--chain=kusama"})," CLI flag"]}),"\n"]})]})}function c(a={}){const{wrapper:e}={...(0,i.R)(),...a.components};return e?(0,n.jsx)(e,{...a,children:(0,n.jsx)(u,{...a})}):u(a)}},47379:(a,e,t)=>{"use strict";t.d(e,{A:()=>m});var o=t(90675),n=t(10467),i=t(96540),r=t(19588),s=t(2026),l=t(11135);function d(a,e,t){return u.apply(this,arguments)}function u(){return(u=(0,n.A)((0,o.A)().mark((function a(e,t,n){var i,l,d,u,c;return(0,o.A)().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:i=void 0,l=void 0,a.t0=e,a.next="polkadot"===a.t0?5:"kusama"===a.t0?7:"statemine"===a.t0?9:"statemint"===a.t0?11:"polkadotpeople"===a.t0?13:"kusamapeople"===a.t0?15:17;break;case 5:return i="wss://rpc.polkadot.io",a.abrupt("break",18);case 7:return i="wss://kusama-rpc.polkadot.io/",a.abrupt("break",18);case 9:return i="wss://statemine-rpc.polkadot.io/",a.abrupt("break",18);case 11:return i="wss://statemint-rpc.polkadot.io/",a.abrupt("break",18);case 13:return i="wss://polkadot-people-rpc.polkadot.io/",a.abrupt("break",18);case 15:return i="wss://kusama-people-rpc.polkadot.io/",a.abrupt("break",18);case 17:console.log("Unknown socket url provided, no connection made.");case 18:if(void 0!==i){a.next=22;break}return a.abrupt("return");case 22:return d=new r.E(i),a.next=25,s.G.create({provider:d});case 25:u=a.sent,(c=t.split(".")).forEach((function(a){a in u&&(u=u[a])})),a.t1=c[0],a.next="consts"===a.t1?31:"query"===a.t1?33:38;break;case 31:return l=u.toString(),a.abrupt("break",39);case 33:return a.next=35,u();case 35:return l=(l=a.sent).toString(),a.abrupt("break",39);case 38:console.log("Unknown path prefix ("+c[0]+") in "+t);case 39:return a.abrupt("return",l);case 40:case"end":return a.stop()}}),a)})))).apply(this,arguments)}function c(a,e,t,o){switch(e){case"humanReadable":(0,l.HumanReadable)(a,t,o);break;case"precise":(0,l.Precise)(a,t,o);break;case"blocksToDays":(0,l.BlocksToDays)(a,o);break;case"erasToDays":(0,l.ErasToDays)(a,o,t);break;case"percentage":(0,l.Percentage)(a,o);break;case"permillToPercent":(0,l.PermillToPercent)(a,o);break;case"arrayLength":(0,l.ArrayLength)(a,o);break;default:return void console.log("Ignoring unknown filter type")}}const m=function(a){var e=a.network,t=a.path,r=a.defaultValue,s=a.filter,l=void 0===s?void 0:s,u=(0,i.useState)(""),m=u[0],p=u[1];return e=e.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?c(r.toString(),l,e,p):p(r.toString());var a=void 0;switch(e){case"polkadot":a="wss://rpc.polkadot.io";break;case"kusama":a="wss://kusama-rpc.polkadot.io/";break;case"statemine":a="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":a="wss://polkadot-asset-hub-rpc.polkadot.io/";break;case"kusamapeople":a="wss://kusama-people-rpc.polkadot.io";break;case"polkadotpeople":a="wss://polkadot-people-rpc.polkadot.io";break;default:console.log("Unknown network provided, "+e)}if(void 0===a)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var a=(0,n.A)((0,o.A)().mark((function a(){var n;return(0,o.A)().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,d(e,t,p);case 2:if(void 0!==(n=a.sent)){a.next=7;break}return a.abrupt("return");case 7:void 0!==l?c(n,l,e,p):p(n);case 8:case"end":return a.stop()}}),a)})));return function(){return a.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),m}},11135:a=>{var e="polkadot",t="kusama",o="statemine",n="statemint",i="polkadotpeople",r="kusamapeople",s={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"},polkadotpeople:{precision:1e10,symbol:"DOT"},kusamapeople:{precision:1e12,symbol:"KSM"}};a.exports={HumanReadable:function(a,l,d){var u=void 0;if(l===e||l===n)u=3;else if(l===t||l===o||l===i)u=6;else{if(l!=r)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");u=8}a=parseFloat(a),d((a=Number.isInteger(a/s[l].precision)?a/s[l].precision+" "+s[l].symbol:(a/s[l].precision).toFixed(u)+" "+s[l].symbol).toString())},Precise:function(a,e,t){t(a=(a=parseFloat(a))/s[e].precision+" "+s[e].symbol)},BlocksToDays:function(a,e){e((a=6*a/86400).toString())},ErasToDays:function(a,s,l){var d=void 0;if(l===e||l===n||l==i)d=1;else{if(l!==t&&l!==o&&l!=r)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");d=4}s((a/=d).toString())},Percentage:function(a,e){e((a/=1e7).toString())},PermillToPercent:function(a,e){e((a/=1e4).toString())},ArrayLength:function(a,e){e((a=a.split(",").length).toString())}}},47790:()=>{}}]); \ No newline at end of file diff --git a/assets/js/c41801b5.d6ab646b.js b/assets/js/c41801b5.d6ab646b.js deleted file mode 100644 index fd7df342a01..00000000000 --- a/assets/js/c41801b5.d6ab646b.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[9507],{62499:(a,e,t)=>{"use strict";t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>s,default:()=>c,frontMatter:()=>r,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"maintain/kusama/maintain-guides-how-to-validate-kusama","title":"Run a Validator (Kusama)","description":"The fundamentals for running a Kusama validator.","source":"@site/../docs/maintain/kusama/maintain-guides-how-to-validate-kusama.md","sourceDirName":"maintain/kusama","slug":"/maintain-guides-how-to-validate-kusama","permalink":"/docs/maintain-guides-how-to-validate-kusama","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/kusama/maintain-guides-how-to-validate-kusama.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1730788607000,"frontMatter":{"id":"maintain-guides-how-to-validate-kusama","title":"Run a Validator (Kusama)","sidebar_label":"How to run a Validator on Kusama","description":"The fundamentals for running a Kusama validator.","keywords":["validate","validator","kusama","stake","maintain"],"slug":"../../maintain-guides-how-to-validate-kusama"},"sidebar":"docs","previous":{"title":"Kappa Sigma Mu","permalink":"/docs/maintain-guides-society-kusama"},"next":{"title":"KSM Inflation","permalink":"/docs/learn-kusama-inflation"}}');var n=t(74848),i=t(28453);t(47379),t(96540),t(11135);const r={id:"maintain-guides-how-to-validate-kusama",title:"Run a Validator (Kusama)",sidebar_label:"How to run a Validator on Kusama",description:"The fundamentals for running a Kusama validator.",keywords:["validate","validator","kusama","stake","maintain"],slug:"../../maintain-guides-how-to-validate-kusama"},s=void 0,l={},d=[{value:"Preliminaries",id:"preliminaries",level:2},{value:"How many KSM do I need to become an active Validator?",id:"how-many-ksm-do-i-need-to-become-an-active-validator",level:3},{value:"Validator Rewards",id:"validator-rewards",level:3},{value:"Run a Kusama Validator",id:"run-a-kusama-validator",level:2}];function u(a){const e={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...a.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h2,{id:"preliminaries",children:"Preliminaries"}),"\n",(0,n.jsxs)(e.p,{children:["Running a validator on a live network is a lot of responsibility! You will be accountable for not\nonly your own stake, but also the stake of your current nominators. If you make a mistake and get\n",(0,n.jsx)(e.a,{href:"/docs/learn-offenses",children:"slashed"}),", your tokens and your reputation will be at risk. However,\nrunning a validator can also be very rewarding, knowing that you contribute to the security of a\ndecentralized network while growing your stash."]}),"\n",(0,n.jsxs)(e.admonition,{type:"warning",children:[(0,n.jsx)(e.p,{children:"It is highly recommended that you have significant system administration experience before\nattempting to run your own validator."}),(0,n.jsx)(e.p,{children:"You must be able to handle technical issues and anomalies with your node which you must be able to\ntackle yourself. Being a validator involves more than just executing the binary file."})]}),"\n",(0,n.jsxs)(e.p,{children:["Since security is so important to running a successful validator, you should take a look at the\n",(0,n.jsx)(e.a,{href:"/docs/maintain-guides-secure-validator",children:"secure validator"})," information to make sure you understand\nthe factors to consider when constructing your infrastructure. As you progress in your journey as a\nvalidator, you will likely want to use this repository as a ",(0,n.jsx)(e.em,{children:"starting point"})," for your own\nmodifications and customizations."]}),"\n",(0,n.jsxs)(e.p,{children:["If you need help, please reach out on the\n",(0,n.jsx)(e.a,{href:"https://matrix.to/#/#KusamaValidatorLounge:polkadot.builders",children:"Kusama Validator Lounge"})," on Element.\nThe team and other validators are there to help answer questions and provide tips from experience."]}),"\n",(0,n.jsx)(e.h3,{id:"how-many-ksm-do-i-need-to-become-an-active-validator",children:"How many KSM do I need to become an active Validator?"}),"\n",(0,n.jsx)(e.admonition,{title:"Controller accounts are deprecated",type:"info",children:(0,n.jsxs)(e.p,{children:["Controller accounts are deprecated. For more information, see\n",(0,n.jsx)(e.a,{href:"https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748",children:"this discussion"}),"."]})}),"\n",(0,n.jsxs)(e.p,{children:["You can have a rough estimate on that by using the methods listed\n",(0,n.jsx)(e.a,{href:"../../general/faq.md/#what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator",children:"here"}),".\nTo be elected into the set, you need a minimum stake behind your validator. This stake can come from\nyourself or from ",(0,n.jsx)(e.a,{href:"/docs/learn-nominator",children:"nominators"}),". This means that as a minimum, you\nwill need enough KSM to set up Stash and staking proxy ",(0,n.jsx)(e.a,{href:"/docs/learn-cryptography",children:"accounts"}),"\nwith the existential deposit, plus a little extra for transaction fees. The rest can come from\nnominators. To understand how validators are elected, check the\n",(0,n.jsx)(e.a,{href:"/docs/learn-phragmen",children:"NPoS Election algorithms"})," page."]}),"\n",(0,n.jsx)(e.admonition,{title:"Join the Decentralized Nodes program",type:"tip",children:(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.a,{href:"https://nodes.web3.foundation/",children:"The Decentralized Nodes program"})," is an initiative by Web3\nFoundation and Parity Technologies to use the funds held by both organizations to nominate\nvalidators in the community."]})}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Warning:"})," Any KSM that you stake for your validator is liable to be slashed, meaning that an\ninsecure or improper setup may result in loss of KSM tokens! If you are not confident in your\nability to run a validator node, it is recommended to nominate your KSM to a trusted validator node\ninstead."]}),"\n",(0,n.jsx)(e.h3,{id:"validator-rewards",children:"Validator Rewards"}),"\n",(0,n.jsxs)(e.p,{children:["On Kusama, one day is approximately four eras whereas on Polkadot, one era is approximately a day.\nIn each era, the validators elected to the active set earn era points which correspond to the actual\nrewards earned that are distributed proportionally to the nominators after deducting the validator\ncommission. The\n",(0,n.jsx)(e.a,{href:"/docs/chain-state-values#minimum-validator-commission",children:"minimum validator commission"})," can\nbe set through on-chain governance. For more information rewards and payouts, check the\n",(0,n.jsx)(e.a,{href:"/docs/maintain-guides-validator-payout",children:"validator payout"})," document."]}),"\n",(0,n.jsx)(e.h2,{id:"run-a-kusama-validator",children:"Run a Kusama Validator"}),"\n",(0,n.jsxs)(e.p,{children:["Running a validator on the Kusama network is identical to running a Polkadot validator. Check out\nthe ",(0,n.jsx)(e.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"Polkadot guide"})," on how to setup a validator."]}),"\n",(0,n.jsx)(e.p,{children:"Make sure to adjust the Polkadot guide to run a Kusama network validator (the instructions will also\nbe available in the Polkadot Validator guide):"}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsxs)(e.li,{children:["When starting the node pass ",(0,n.jsx)(e.code,{children:"--chain=kusama"})," CLI flag"]}),"\n"]})]})}function c(a={}){const{wrapper:e}={...(0,i.R)(),...a.components};return e?(0,n.jsx)(e,{...a,children:(0,n.jsx)(u,{...a})}):u(a)}},47379:(a,e,t)=>{"use strict";t.d(e,{A:()=>m});var o=t(90675),n=t(10467),i=t(96540),r=t(19588),s=t(2026),l=t(11135);function d(a,e,t){return u.apply(this,arguments)}function u(){return(u=(0,n.A)((0,o.A)().mark((function a(e,t,n){var i,l,d,u,c;return(0,o.A)().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:i=void 0,l=void 0,a.t0=e,a.next="polkadot"===a.t0?5:"kusama"===a.t0?7:"statemine"===a.t0?9:"statemint"===a.t0?11:"polkadotpeople"===a.t0?13:"kusamapeople"===a.t0?15:17;break;case 5:return i="wss://rpc.polkadot.io",a.abrupt("break",18);case 7:return i="wss://kusama-rpc.polkadot.io/",a.abrupt("break",18);case 9:return i="wss://statemine-rpc.polkadot.io/",a.abrupt("break",18);case 11:return i="wss://statemint-rpc.polkadot.io/",a.abrupt("break",18);case 13:return i="wss://polkadot-people-rpc.polkadot.io/",a.abrupt("break",18);case 15:return i="wss://kusama-people-rpc.polkadot.io/",a.abrupt("break",18);case 17:console.log("Unknown socket url provided, no connection made.");case 18:if(void 0!==i){a.next=22;break}return a.abrupt("return");case 22:return d=new r.E(i),a.next=25,s.G.create({provider:d});case 25:u=a.sent,(c=t.split(".")).forEach((function(a){a in u&&(u=u[a])})),a.t1=c[0],a.next="consts"===a.t1?31:"query"===a.t1?33:38;break;case 31:return l=u.toString(),a.abrupt("break",39);case 33:return a.next=35,u();case 35:return l=(l=a.sent).toString(),a.abrupt("break",39);case 38:console.log("Unknown path prefix ("+c[0]+") in "+t);case 39:return a.abrupt("return",l);case 40:case"end":return a.stop()}}),a)})))).apply(this,arguments)}function c(a,e,t,o){switch(e){case"humanReadable":(0,l.HumanReadable)(a,t,o);break;case"precise":(0,l.Precise)(a,t,o);break;case"blocksToDays":(0,l.BlocksToDays)(a,o);break;case"erasToDays":(0,l.ErasToDays)(a,o,t);break;case"percentage":(0,l.Percentage)(a,o);break;case"permillToPercent":(0,l.PermillToPercent)(a,o);break;case"arrayLength":(0,l.ArrayLength)(a,o);break;default:return void console.log("Ignoring unknown filter type")}}const m=function(a){var e=a.network,t=a.path,r=a.defaultValue,s=a.filter,l=void 0===s?void 0:s,u=(0,i.useState)(""),m=u[0],p=u[1];return e=e.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?c(r.toString(),l,e,p):p(r.toString());var a=void 0;switch(e){case"polkadot":a="wss://rpc.polkadot.io";break;case"kusama":a="wss://kusama-rpc.polkadot.io/";break;case"statemine":a="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":a="wss://polkadot-asset-hub-rpc.polkadot.io/";break;case"kusamapeople":a="wss://kusama-people-rpc.polkadot.io";break;case"polkadotpeople":a="wss://polkadot-people-rpc.polkadot.io";break;default:console.log("Unknown network provided, "+e)}if(void 0===a)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var a=(0,n.A)((0,o.A)().mark((function a(){var n;return(0,o.A)().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,d(e,t,p);case 2:if(void 0!==(n=a.sent)){a.next=7;break}return a.abrupt("return");case 7:void 0!==l?c(n,l,e,p):p(n);case 8:case"end":return a.stop()}}),a)})));return function(){return a.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),m}},11135:a=>{var e="polkadot",t="kusama",o="statemine",n="statemint",i="polkadotpeople",r="kusamapeople",s={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"},polkadotpeople:{precision:1e10,symbol:"DOT"},kusamapeople:{precision:1e12,symbol:"KSM"}};a.exports={HumanReadable:function(a,l,d){var u=void 0;if(l===e||l===n)u=3;else if(l===t||l===o||l===i)u=6;else{if(l!=r)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");u=8}a=parseFloat(a),d((a=Number.isInteger(a/s[l].precision)?a/s[l].precision+" "+s[l].symbol:(a/s[l].precision).toFixed(u)+" "+s[l].symbol).toString())},Precise:function(a,e,t){t(a=(a=parseFloat(a))/s[e].precision+" "+s[e].symbol)},BlocksToDays:function(a,e){e((a=6*a/86400).toString())},ErasToDays:function(a,s,l){var d=void 0;if(l===e||l===n||l==i)d=1;else{if(l!==t&&l!==o&&l!=r)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");d=4}s((a/=d).toString())},Percentage:function(a,e){e((a/=1e7).toString())},PermillToPercent:function(a,e){e((a/=1e4).toString())},ArrayLength:function(a,e){e((a=a.split(",").length).toString())}}},47790:()=>{}}]); \ No newline at end of file diff --git a/assets/js/ff6596ea.1891bf0c.js b/assets/js/ff6596ea.0e46eabb.js similarity index 98% rename from assets/js/ff6596ea.1891bf0c.js rename to assets/js/ff6596ea.0e46eabb.js index a7f6e1baff3..14983211254 100644 --- a/assets/js/ff6596ea.1891bf0c.js +++ b/assets/js/ff6596ea.0e46eabb.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3507],{45909:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"learn/learn-nominator","title":"Nominator","description":"Role of Nominators in the Polkadot Ecosystem.","source":"@site/../docs/learn/learn-nominator.md","sourceDirName":"learn","slug":"/learn-nominator","permalink":"/docs/learn-nominator","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-nominator.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1731067872000,"frontMatter":{"id":"learn-nominator","title":"Nominator","sidebar_label":"Nominator","description":"Role of Nominators in the Polkadot Ecosystem.","keyword":["nominate","nominator","stake","staking"],"slug":"../learn-nominator"},"sidebar":"docs","previous":{"title":"Collator","permalink":"/docs/learn-collator"},"next":{"title":"Validator","permalink":"/docs/learn-validator"}}');var i=t(74848),o=t(28453);const s={id:"learn-nominator",title:"Nominator",sidebar_label:"Nominator",description:"Role of Nominators in the Polkadot Ecosystem.",keyword:["nominate","nominator","stake","staking"],slug:"../learn-nominator"},r=void 0,l={},d=[{value:"Who are Nominators?",id:"who-are-nominators",level:2},{value:"Why Nominate?",id:"why-nominate",level:2},{value:"Setting-up Accounts",id:"setting-up-accounts",level:2},{value:"Stash & Staking Proxy",id:"stash--staking-proxy",level:3},{value:"Rewards Payout Account",id:"rewards-payout-account",level:3},{value:"Nominating with the Polkadot-JS UI",id:"nominating-with-the-polkadot-js-ui",level:2},{value:"Targets Page",id:"targets-page",level:3},{value:"Bags-list",id:"bags-list",level:3},{value:"Validator Stats",id:"validator-stats",level:3},{value:"Nominating with the Staking Dashboard",id:"nominating-with-the-staking-dashboard",level:2},{value:"Staking Election Stages",id:"staking-election-stages",level:2},{value:"The Election Solution Set",id:"the-election-solution-set",level:3},{value:"Receiving Rewards",id:"receiving-rewards",level:2},{value:"Good Nominator Practices",id:"good-nominator-practices",level:2},{value:"Required Minimum Stake",id:"required-minimum-stake",level:3},{value:"Active vs. Inactive Nomination",id:"active-vs-inactive-nomination",level:3},{value:"Minimum Active Nomination to Receive Staking Rewards",id:"minimum-active-nomination-to-receive-staking-rewards",level:3},{value:"Guides",id:"guides",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.admonition,{title:"New to Staking?",type:"tip",children:[(0,i.jsxs)(n.p,{children:["Start your staking journey or explore more information about staking on\n",(0,i.jsx)(n.a,{href:"https://polkadot.network/staking/",children:"Polkadot's Home Page"}),". You can learn how staking works by\nreading ",(0,i.jsx)(n.a,{href:"/docs/learn-staking",children:"this dedicated page"}),"."]}),(0,i.jsxs)(n.p,{children:["Discover the new ",(0,i.jsx)(n.a,{href:"https://staking.polkadot.cloud/#/overview",children:(0,i.jsx)(n.strong,{children:"Staking Dashboard"})})," that makes\nstaking much easier and check this\n",(0,i.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182104",children:"extensive article list"})," to\nhelp you get started."]}),(0,i.jsxs)(n.p,{children:["You can now\n",(0,i.jsx)(n.a,{href:"https://polkadot.network/blog/nomination-pools-are-live-stake-natively-with-just-1-dot/",children:"stake natively with just 1 DOT and earn staking rewards"}),"."]})]}),"\n",(0,i.jsx)(n.admonition,{title:"Stake through Nomination Pools",type:"info",children:(0,i.jsxs)(n.p,{children:["The minimum amount required to become an active nominator (i.e. the\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#minimum-active-bond",children:"minimum active bond"}),") and earn rewards may\nchange from era to era. If you have less tokens than the minimum active nomination and still want to\nparticipate in staking, you can join the nomination pools with a\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#minimum-bond-to-participate-in-staking",children:"smaller amount of tokens"}),".\nFor additional information, see\n",(0,i.jsx)(n.a,{href:"https://polkadot.network/blog/nomination-pools-are-live-stake-natively-with-just-1-dot/",children:"this blog post"}),".\nCheck the wiki doc on ",(0,i.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pools"})," for more information."]})}),"\n",(0,i.jsxs)(n.p,{children:["If you landed on this page, you decided to understand how you can be a good nominator. Note, this\npage is not for ",(0,i.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pool"})," members, although pool members might\ngain essential knowledge about how to choose nomination pools."]}),"\n",(0,i.jsxs)(n.p,{children:["The information provided on this page is complementary to that on the\n",(0,i.jsx)(n.a,{href:"/docs/learn-staking",children:(0,i.jsx)(n.strong,{children:"Staking Page"})})," and ",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced",children:(0,i.jsx)(n.strong,{children:"Advanced Staking Page"})}),".\nMake sure you read those pages as well before nominating."]}),"\n",(0,i.jsx)(n.h2,{id:"who-are-nominators",children:"Who are Nominators?"}),"\n",(0,i.jsx)(n.p,{children:"Nominators are one type of staking participant. They appoint their stake to the validators, the\nsecond type of participant. By appointing their stake, they can elect the active set of validators\nand share in the rewards that are paid out."}),"\n",(0,i.jsxs)(n.p,{children:["While the ",(0,i.jsx)(n.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"validators"})," are active\nparticipants in the network that engage in the block production and finality mechanisms, nominators\ntake a slightly more passive role. Being a nominator does not require running a node of your own or\nworrying about online uptime. However, a good nominator performs due diligence on the validators\nthat they elect. When looking for validators to nominate, a nominator should pay attention to their\nown reward percentage for nominating a specific validator - as well as the risk that they bear of\nbeing ",(0,i.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashed"})," if the validator gets slashed."]}),"\n",(0,i.jsx)(n.h2,{id:"why-nominate",children:"Why Nominate?"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"You become a network participant, a group of diverse professionals and enthusiasts around the\nworld aspiring to build and foster the next-gen Internet, Web3: a decentralized, privacy-focused,\nand trustless internet."}),"\n",(0,i.jsxs)(n.li,{children:["You are an essential piece of the puzzle, keeping the network secure. The bonded balance can be\nused to vote in ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov",children:"Polkadot OpenGov"})," and shape the network's future\ndirection."]}),"\n",(0,i.jsxs)(n.li,{children:["You will start to understand how Polkadot works at a technical-level. When you feel comfortable\nwith your nomination skills and knowledge, you can open your\n",(0,i.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pool"}),", help others secure the network and earn rewards,\nand build your reputation as a trusted nomination pool operator. If you like to be more involved,\nthe next step is to become a ",(0,i.jsx)(n.a,{href:"/docs/learn-validator",children:"validator"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["By getting ",(0,i.jsx)(n.a,{href:"/docs/learn-staking",children:"staking"})," rewards you keep up with or (likely) stay ahead of\nnetwork inflation."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Nominators secure the relay chain by staking native tokens (DOT on Polkadot or KSM on Kusama) and\nnominating validators. You may have an account with DOT and want to earn fresh DOT. You could do so\nas a validator, which requires experience setting up a node and running and maintaining it 24/7."}),"\n",(0,i.jsxs)(n.p,{children:["On Polkadot, you can also earn DOT by nominating one or more validators. Doing so makes you a\nnominator for the validator(s) you chose. Pick your validators carefully -\n",(0,i.jsx)(n.a,{href:"/docs/learn-offenses",children:"if they do not behave properly, they will get slashed, and you will lose some DOT"}),".\nHowever, if they follow the network rules, you can share the staking rewards they generate."]}),"\n",(0,i.jsxs)(n.p,{children:["While your tokens are staked for nominations, they are 'locked' (bonded). You can\n",(0,i.jsx)(n.a,{href:"/docs/learn-guides-nominator#stop-nominating",children:"stop nominating at any time"}),", but remember that the\naction is effective in the next era and does not automatically unbond your funds. Unbonding is a\nseparate action, and it takes effect after the\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#unbonding-duration",children:"unbonding period"}),". A staking lock will be\nvisible on the Polkadot-JS UI during the unbonding period, and after it, the staking lock can be\nunlocked, and the bonded funds become free balance you can transfer."]}),"\n",(0,i.jsx)(n.admonition,{title:"Fast Unstaking",type:"info",children:(0,i.jsx)(n.p,{children:"If you accidentally bonded your tokens or your bonded tokens never backed any active validator, you\ncan now unbond them immediately."})}),"\n",(0,i.jsxs)(n.p,{children:["If your bonded balance did not back any validators in the last 28 days on Polkadot (7 days on\nKusama), you are eligible to perform fast unstaking. The\n",(0,i.jsx)(n.a,{href:"https://staking.polkadot.cloud/#/overview",children:"staking dashboard"})," will automatically check if you\nqualify. For more information, visit the\n",(0,i.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000169433-can-i-transfer-dot-without-unbonding-and-waiting-28-days-",children:'"Fast Unstake" section in this support article'}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"setting-up-accounts",children:"Setting-up Accounts"}),"\n",(0,i.jsx)(n.h3,{id:"stash--staking-proxy",children:"Stash & Staking Proxy"}),"\n",(0,i.jsxs)(n.p,{children:["Nominators are recommended to set up separate stash and staking proxy accounts. Explanation and the\nreasoning for generating distinct accounts for this purpose is elaborated in the\n",(0,i.jsx)(n.a,{href:"/docs/learn-cryptography#keys",children:"keys section"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You can generate your stash and staking proxy account via any of the recommended methods, which are\ndetailed on the ",(0,i.jsx)(n.a,{href:"/docs/learn-accounts#account-generation",children:"account generation"})," page. The first\nthing you need to do before becoming a nominator is to make sure you have a\n",(0,i.jsx)(n.a,{href:"./learn-staking.md/#stash-account-and-staking-proxy",children:(0,i.jsx)(n.strong,{children:"stash account"})}),' where you can transfer\nfunds you want to use for staking. For these accounts, it is recommended to use a "cold wallet"\nsolution such as ',(0,i.jsx)(n.a,{href:"/docs/ledger",children:"Ledger"})," or ",(0,i.jsx)(n.a,{href:"/docs/polkadot-vault",children:"Polkadot Vault"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["After setting up the stash account, it is recommended to have a\n",(0,i.jsx)(n.a,{href:"./learn-staking-advanced.md/#staking-proxies",children:(0,i.jsx)(n.strong,{children:"staking proxy"})}),". Although you can be a nominator\nwith just a stash account, having a staking proxy is good practice for security reasons."]}),"\n",(0,i.jsx)(n.p,{children:"A staking proxy of the stash will be able to sign for all staking-related transactions as well. The\nstash will be fully isolated (except if the user decides to change the staking proxy of the stash or\nto attach different proxies to the stash)."}),"\n",(0,i.jsx)(n.h3,{id:"rewards-payout-account",children:"Rewards Payout Account"}),"\n",(0,i.jsx)(n.p,{children:"As a nominator, you will be asked to choose an account where rewards will be paid. You can select\none of the following options:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"back to staking: rewards are compounded to the bonded amount."}),"\n",(0,i.jsx)(n.li,{children:"to stash: rewards are sent to the stash account as a free balance."}),"\n",(0,i.jsx)(n.li,{children:"to another account: rewards are sent to a user-defined account (not stash)."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Starting with runtime version v23 natively included in the client version\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot/releases/tag/v0.8.23",children:"0.8.23"}),", payouts can go to any custom\naddress. If you'd like to redirect payments to an account that is neither the staking proxy nor the\nstash account, set one up. Note that setting an exchange address as the recipient of the staking\nrewards is extremely unsafe."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["Being a nominator is made simpler by using the\n",(0,i.jsx)(n.a,{href:"https://staking.polkadot.cloud/#/overview",children:(0,i.jsx)(n.strong,{children:"Staking Dashboard"})})," that will guide you step by step\nthrough specifying rewards destination and bonded amount, and nominating validators (more on this\nbelow). Note that staking proxies are not currently supported on the dashboard."]})}),"\n",(0,i.jsx)(n.h2,{id:"nominating-with-the-polkadot-js-ui",children:"Nominating with the Polkadot-JS UI"}),"\n",(0,i.jsx)(n.h3,{id:"targets-page",children:"Targets Page"}),"\n",(0,i.jsxs)(n.p,{children:["There are many factors to consider when deciding which of your nominations. One helpful tool to\nchoose validators is the Staking ",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking/targets",children:"Targets"})," table in\nthe Polkadot-JS UI. This allows sorting validators using various metrics. Below are the relevant\nmetrics shown as an example, followed by a brief description of each."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"validator"}),(0,i.jsx)(n.th,{children:"payout"}),(0,i.jsx)(n.th,{children:"nominators"}),(0,i.jsx)(n.th,{children:"comm."}),(0,i.jsx)(n.th,{children:"total stake"}),(0,i.jsx)(n.th,{children:"own stake"}),(0,i.jsx)(n.th,{children:"return"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"A"}),(0,i.jsx)(n.td,{children:"recently"}),(0,i.jsxs)(n.td,{children:["1 (",(0,i.jsx)(n.code,{children:"active"}),") 4 (",(0,i.jsx)(n.code,{children:"all"}),")"]}),(0,i.jsx)(n.td,{children:"3%"}),(0,i.jsx)(n.td,{children:"1.6 MDOT"}),(0,i.jsx)(n.td,{children:"8500 DOT"}),(0,i.jsx)(n.td,{children:"17.8%"})]})})]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"payout"}),": How recently the validator made its last reward payout to nominators."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"nominators"}),": This column consists of two number values. The ",(0,i.jsx)(n.strong,{children:"active"})," count (left number) is\nthe number of nominators whose stake is baking the validator in the current era. In this case\nValidator A has one active nominator. The total or ",(0,i.jsx)(n.strong,{children:"all"})," count (right number) is the number of\nall nominators who nominated Validator A. This includes the active count and all the other\nnominators whose stake in the current era is baking other validators."]}),"\n",(0,i.jsxs)(n.p,{children:["Every nominator can select up to\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#maximum-votes-per-nominator",children:"a maximum number of validators"}),",\nwhich contributes towards maximizing the probability of having the nominator\u2019s stake applied to\nthe validators active set. Nominating too few validators could result in the nominators not\nreceiving their rewards when none of them make it to the active set or when those validators stop\nvalidating. The election algorithm attempts to maximize the overall network stake while minimizing\nthe variance of the active stake across the validators. For additional information on the election\nprocess, check out the research behind\n",(0,i.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/protocols/NPoS",children:"nominated proof-of-stake"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"comm."}),": Total commission kept by the validator (100% means the validator will keep all rewards\n, and thus nominators will not receive them). A validator's commission is the percentage of the\nvalidator reward taken by the validator before the rewards are split among the nominators. As a\nnominator, you may think that choosing validators with the lowest commission is best. However,\nvalidators must be able to run at break-even to continue operations sustainably. Independent\nvalidators that rely on the commission to cover their server costs help to keep the network\ndecentralized. Some validators, operated by central exchanges, etc., keep 100% of the commission\nto payout their staking service clients and therefore do not provide any rewards to external\nnominators. The commission is just one piece of the puzzle you should consider when picking\nnominating validators."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"total stake"}),": The total amount of tokens staked by nominators and the validator (i.e. own\nstake, see below)."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"own stake"}),': The amount of tokens the validator has put up as a stake. A higher own stake can be\nconsidered as having more "skin in the game". This can imply increased trustworthiness. However, a\nvalidator not having a large amount of "own stake" is not automatically untrustworthy, as the\nvalidator could nominate from a different address.']}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"return"}),": Average annual yield paid out to nominators (i.e. number of rewards divided by the\nnumber of bonded tokens). Note that nominating those with a higher yield may not guarantee similar\nfuture performance."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Staking Returns",src:t(75020).A+"",width:"2169",height:"509"})}),"\n",(0,i.jsx)(n.p,{children:"On the Targets page, you can use different filters to select validators with specific traits (where\na trait is a combination of the metrics above). Available filters are:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"one validator per operator"}),": Do not show groups of validators run by a single operator. It\nshows small operators only who will likely have a higher commission and higher self-stake.\nNominating only small operators might not always guarantee staking rewards, but it helps to keep\nthe network more resilient to attacks."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Validator vs Operator",type:"info",children:(0,i.jsxs)(n.p,{children:["A validator is the node, the physical equipment with installed software that allows to produce new\nblocks and earn rewards. An operator is the entity responsible for setting up, running and\nmaintaining the node. An operator can have multiple validators under different sub-identities. For\nexample, ",(0,i.jsx)(n.code,{children:"ZUG CAPITAL/07"})," is one of the numerous validators belonging to the operator Zug Capital."]})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"comm. < 20%"}),": Do not show any validators with a commission of 20% or higher."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"recent payouts"}),": Only show validators that have recently caused a\n",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced",children:"payout to be issued"}),". Note that anyone can cause a payout to occur; it\ndoes not have to be the operator of a validator."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"currently elected"}),": Only show validators in the active set (i.e., they have been elected to\nproduce blocks in the current era)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"with an identity"}),": Only show validators that have set an ",(0,i.jsx)(n.a,{href:"/docs/learn-identity",children:"identity"}),". Note\nthat this identity does not have to be verified by a registrar for the validator to appear in the\nlist."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Single Operators with Multiple Validators",type:"warning",children:(0,i.jsxs)(n.p,{children:["Recall that ",(0,i.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashing"}),' is an additive function; the more validators\nequivocating in a given session, the harsher the penalties. Since validators that are controlled by\na single operator are more at risk of a "synchronized" failure, nominating them implies a greater\nrisk of having a large slash of your nominated funds. Generally, it is safer to nominate validators\nwhose behavior is independent of others in many ways (different hardware, geographic location,\nowner, etc.).']})}),"\n",(0,i.jsx)(n.h3,{id:"bags-list",children:"Bags-list"}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["On Polkadot and Kusama, the instance of the pallet\n",(0,i.jsx)(n.a,{href:"https://paritytech.github.io/substrate/master/pallet_bags_list/",children:"Bags-List"})," is named as\n",(0,i.jsx)(n.code,{children:"voterList"}),"."]})}),"\n",(0,i.jsxs)(n.p,{children:["Nominating accounts are placed in a semi-sorted list called bags-list. This sorting functionality is\nextremely important for the long-term improvements of the staking/election system. Bags-list allows\nan unlimited number nominators to set their intention to nominate, of which only a portion of it\n(currently 22500) is considered for ",(0,i.jsx)(n.a,{href:"#staking-election-stages",children:"electing set"})," that eventually\ndetermines the active validators."]}),"\n",(0,i.jsxs)(n.p,{children:["The nominator accounts in a bag are sorted based on their insertion order, not by their nomination\nstake. The ",(0,i.jsx)(n.code,{children:"voterList.putInFrontOf"})," extrinsic can be issued to move up in the bag, which might be\nvery useful for the accounts in the last bag eligible for receiving staking rewards. Balance changes\ndue to staking rewards or slashing do not automatically rebag the account. Whenever applicable,\nPolkadot JS Apps UI prompts the nominator account to rebag or move up by calling the\n",(0,i.jsx)(n.code,{children:"voterList.rebag"})," extrinsic."]}),"\n",(0,i.jsx)(n.p,{children:"For guidelines about how to rebag or move your account within a bag, see the followings:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:['The "Bags List" Section on\n',(0,i.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181018-i-have-more-than-the-minimum-bonded-but-i-m-not-getting-rewards",children:"this Support Page"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced#bags-list",children:"Bags List Section"})," in Advanced Staking Concepts."]}),"\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.a,{href:"https://youtu.be/hIIZRJLrBZA",children:"dedicated technical explainer video"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"validator-stats",children:"Validator Stats"}),"\n",(0,i.jsxs)(n.p,{children:["Nominators can query ",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking/query/",children:"validator histories"})," to see\nstatistics such as era points, elected stake, rewards and slashes, and commission. It is good\npractice to do comprehensive research on validator candidates. This could include (but should not be\nlimited to) checking the validators' ",(0,i.jsx)(n.a,{href:"/docs/learn-identity",children:"identity"})," (if they have set one) and going\nover the validators' websites to see who they are, what kind of infrastructure setup they are using,\nreputation, the vision behind the validator, and more."]}),"\n",(0,i.jsx)(n.p,{children:"Any problematic behavior must be taken seriously. An example of problematic behavior will be if a\nvalidator is regularly offline. In this case, nominators will get fewer rewards."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Validator Stats",src:t(55768).A+"",width:"1900",height:"1204"})}),"\n",(0,i.jsx)(n.h2,{id:"nominating-with-the-staking-dashboard",children:"Nominating with the Staking Dashboard"}),"\n",(0,i.jsx)(n.p,{children:"If you are a beginner, please watch the video below for detailed instructions."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://www.youtube.com/watch?v=F59N3YKYCRs",children:(0,i.jsx)(n.img,{src:"https://img.youtube.com/vi/F59N3YKYCRs/0.jpg",alt:"Staking Tutorial"})})}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/staking-dashboard",children:"Polkadot Staking Dashboard"})," allows to choose pre-selected\nlists of validators based on user preference, or to manually select validators similarly as in the\nPolkadot-JS UI."]}),"\n",(0,i.jsx)(n.p,{children:"Pre-selected choices are:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Optimal Selection: Selects a mix of majority active and inactive validators."}),"\n",(0,i.jsx)(n.li,{children:"Active Low Commission: Gets a set of active validators with low commission."}),"\n",(0,i.jsx)(n.li,{children:"From Favorites: Gets a set of your favorite validators."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"staking-election-stages",children:"Staking Election Stages"}),"\n",(0,i.jsx)(n.p,{children:'The staking election system has three stages for both validators and nominators, namely "intention",\n"electable/electing", and "active".'}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"intention to nominate:"}),' an account that has stated the intention to nominate; also called\nsimply a "nominator".']}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"electing nominator:"})," a nominator who is selected to be a part of the input to the\n",(0,i.jsx)(n.a,{href:"/docs/learn-phragmen",children:"NPoS election algorithm"}),". This selection is based on stake and is made using\nthe ",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced#bags-list",children:"bags-list"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"active nominator:"})," a nominator who came out of the NPoS election algorithm backing an active\nvalidator. When slashing occurs, all the active nominators backing the validator get slashed."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Nominator Election",src:t(82071).A+"",width:"612",height:"430"})}),"\n",(0,i.jsx)(n.h3,{id:"the-election-solution-set",children:"The Election Solution Set"}),"\n",(0,i.jsx)(n.p,{children:'Determining which validators are in the active set and which nominators are nominating them creates\na very large graph mapping nominators to their respective validators. This "solution set" is\ncomputed off-chain and submitted to the chain, which means it must fit in a single block. If there\nare a large number of nominators, this means that some nominators must be eliminated. Currently,\nnominators are sorted by the amount of DOT staked, and those with more DOT are prioritized. This\nmeans that you may not receive rewards if you are staking with a small amount of DOT. This minimal\namount is dynamic based on the number of validators, nominators, amount nominated, and other\nfactors.'}),"\n",(0,i.jsx)(n.h2,{id:"receiving-rewards",children:"Receiving Rewards"}),"\n",(0,i.jsxs)(n.p,{children:["As long as you have nominated more than one validator candidate, at least one of them got elected,\nand you are nominating with enough stake to get into the solution set, your bonded stake will be\nfully distributed to one or more validators. That being said, you may not receive rewards if you\nnominated very few validator candidates and no one got elected, or your stake is small, and you are\nnot part of the ",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced#bags-list",children:"top 22,500 nominators"}),", or the validator you\nare nominating has 100% commission. It is generally wise to choose as many trustworthy validators as\nyou can to reduce the risk of none of your nominated validators being elected."]}),"\n",(0,i.jsxs)(n.admonition,{title:"Not receiving Staking Rewards?",type:"info",children:[(0,i.jsx)(n.p,{children:"To explore the possible reasons for not receiving staking rewards, check out the followings:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The\n",(0,i.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181959-staking-faq-s",children:"Staking FAQ"}),"\non the Support Pages."]}),"\n",(0,i.jsxs)(n.li,{children:["The\n",(0,i.jsx)(n.a,{href:"https://www.reddit.com/r/Polkadot/comments/10kurje/why_am_i_not_receiving_staking_rewards/",children:'"Why am I not receiving staking rewards?"'}),"\nReddit article."]}),"\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/learn-staking#why-am-i-not-receiving-rewards",children:'"Why am I not receiving staking rewards?"'}),"\nsection on the Staking Page."]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Rewards are ",(0,i.jsx)(n.em,{children:"lazy"})," - somebody must trigger a payout for a validator for rewards to go to all of the\nvalidator's nominators. Any account can do this, although validator operators often do this as a\nservice to their nominators. See the page on ",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced",children:"Simple Payouts"})," for more\ninformation and instructions for claiming rewards."]}),"\n",(0,i.jsxs)(n.admonition,{title:"Explainer videos on Nominating",type:"note",children:[(0,i.jsx)(n.p,{children:"These concepts have been further explained in the following videos:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.youtube.com/watch?v=weG_uzdSs1E&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=4",children:"Why Nominate on Polkadot & Kusama"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.youtube.com/watch?v=K-a4CgVchvU&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=9",children:"What to Consider when Nominating Validators on Polkadot and Kusama"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://youtu.be/FCXC0CDhyS4",children:"Nominating/Staking on Polkadot and Kusama"})}),"\n"]})]}),"\n",(0,i.jsx)(n.h2,{id:"good-nominator-practices",children:"Good Nominator Practices"}),"\n",(0,i.jsx)(n.h3,{id:"required-minimum-stake",children:"Required Minimum Stake"}),"\n",(0,i.jsxs)(n.p,{children:["Due to the way the ",(0,i.jsx)(n.a,{href:"/docs/learn-phragmen",children:"Phragmen algorithm"})," generates the solution set and due to the\nfact that the solution set must fit in a single block, a minimum number of DOT will be required to\nnominate with to receive staking rewards can change between the eras."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"min-intention-threshold:"})," minimum stake to declare the intention to nominate. This parameter\ncan be updated via on-chain governance, and the most recent and up-to-date version can be found on\n",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/chainstate",children:"chain state"})," (select ",(0,i.jsx)(n.strong,{children:"state query > staking >\nminimumNominatorBond"}),")"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"min-electing:"})," minimum stake among the electing nominators. Since this is almost always the\nsame as \u201cmin-active\u201d, it might not be reported."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"min-active:"})," minimum stake among the active nominators. If your stake falls below this dynamic\nthreshold in a given era, you will not receive staking rewards for that era."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Thus, for ",(0,i.jsx)(n.strong,{children:"nominator counters"}),", we have:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["count of nominator intentions and\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#maximum-number-of-nominators",children:"max possible nominator intentions"})]}),"\n",(0,i.jsx)(n.li,{children:"count of electing nominators, and maximum possible electing nominators (22500 on Polkadot and\n12500 on Kusama)"}),"\n",(0,i.jsx)(n.li,{children:"count of active nominators and maximum possible active nominators (22500 on Polkadot and 12500 on\nKusama)"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"active-vs-inactive-nomination",children:"Active vs. Inactive Nomination"}),"\n",(0,i.jsxs)(n.p,{children:["When you go to the ",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking/actions",children:"Account actions"})," under staking\npage, you should see your bonded accounts and nomination status. If not, you can follow\n",(0,i.jsx)(n.a,{href:"/docs/learn-guides-nominator#nominate-using-polkadot-js",children:"this"})," guide to configure it first. Your\nnominations will be effective in the next era; eras are roughly 24 hours on Polkadot (6 hours on\nKusama)."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Nominations",src:t(67895).A+"",width:"2878",height:"766"})}),"\n",(0,i.jsx)(n.p,{children:'Suppose you have nominated five validator candidates, and three out of five were elected to the\nactive validator set; then you should see two of your nominations as "waiting", and most likely one\nas "active" and the rest as "inactive". Active or inactive nomination means your nominated\nvalidators have been elected to be in the validator set, whereas waiting means they did not get\nelected. Generally, you will only have a single validator have an active nomination, which means\nthat you are directly supporting it with your stake this era and thus potentially receiving staking\nrewards. Inactive nominators were validators elected for this era but which you are not actively\nsupporting. Every era, a new election will take place, and you may be assigned a different active\nnomination from the validators you selected.'}),"\n",(0,i.jsxs)(n.p,{children:["If you are committing a very large stake, you may have more than one active nomination. However, the\nelection algorithm attempts to minimize this situation, and it should not occur often, so you should\nalmost always see only a single active nomination per era. See the\n",(0,i.jsx)(n.a,{href:"/docs/learn-phragmen#optimizations",children:"section on Phragm\xe9n optimization"})," for more details."]}),"\n",(0,i.jsx)(n.h3,{id:"minimum-active-nomination-to-receive-staking-rewards",children:"Minimum Active Nomination to Receive Staking Rewards"}),"\n",(0,i.jsx)(n.admonition,{title:"Minimum DOT required to earn staking rewards",type:"info",children:(0,i.jsxs)(n.p,{children:["The\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#minimum-bond-to-participate-in-staking",children:"minimum number of tokens required to submit intent to nominate"}),"\ndiffers from the ",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#minimum-active-bond",children:"minimum active nomination"}),"\nrequired to earn staking rewards."]})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Minimum Active Nomination",src:t(2834).A+"",width:"1436",height:"166"})}),"\n",(0,i.jsx)(n.h2,{id:"guides",children:"Guides"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"/docs/learn-guides-nominator#nominate-a-validator",children:"Be a Nominator (Polkadot)"})," - Guide on\nnominating on the Kusama canary network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"/docs/learn-guides-nominator#stop-nominating",children:"Stop Being a Nominator (all networks)"})," - Guide on\nstopping nominations and withdrawing tokens."]}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},75020:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/nominators_target-d8652ac89f3cbb16528cd68808a32cf0.png"},2834:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/min-active-nomination-bfbe67c2714eb5027c6a4f45608c9bc2.png"},82071:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/nominator-election-ae25b5db36fa18b56fa58c5370127dd4.png"},67895:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadotjs_nominator_account-e0f5d58cd9cce279d6f462cde9f706f4.png"},55768:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/validator_stats-57ec40656d6829e2ef791550116824d4.png"},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>r});var a=t(96540);const i={},o=a.createContext(i);function s(e){const n=a.useContext(o);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),a.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3507],{45909:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"learn/learn-nominator","title":"Nominator","description":"Role of Nominators in the Polkadot Ecosystem.","source":"@site/../docs/learn/learn-nominator.md","sourceDirName":"learn","slug":"/learn-nominator","permalink":"/docs/learn-nominator","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-nominator.md","tags":[],"version":"current","lastUpdatedBy":"Filippo","lastUpdatedAt":1734535671000,"frontMatter":{"id":"learn-nominator","title":"Nominator","sidebar_label":"Nominator","description":"Role of Nominators in the Polkadot Ecosystem.","keyword":["nominate","nominator","stake","staking"],"slug":"../learn-nominator"},"sidebar":"docs","previous":{"title":"Collator","permalink":"/docs/learn-collator"},"next":{"title":"Validator","permalink":"/docs/learn-validator"}}');var i=t(74848),o=t(28453);const s={id:"learn-nominator",title:"Nominator",sidebar_label:"Nominator",description:"Role of Nominators in the Polkadot Ecosystem.",keyword:["nominate","nominator","stake","staking"],slug:"../learn-nominator"},r=void 0,l={},d=[{value:"Who are Nominators?",id:"who-are-nominators",level:2},{value:"Why Nominate?",id:"why-nominate",level:2},{value:"Setting-up Accounts",id:"setting-up-accounts",level:2},{value:"Stash & Staking Proxy",id:"stash--staking-proxy",level:3},{value:"Rewards Payout Account",id:"rewards-payout-account",level:3},{value:"Nominating with the Polkadot-JS UI",id:"nominating-with-the-polkadot-js-ui",level:2},{value:"Targets Page",id:"targets-page",level:3},{value:"Bags-list",id:"bags-list",level:3},{value:"Validator Stats",id:"validator-stats",level:3},{value:"Nominating with the Staking Dashboard",id:"nominating-with-the-staking-dashboard",level:2},{value:"Staking Election Stages",id:"staking-election-stages",level:2},{value:"The Election Solution Set",id:"the-election-solution-set",level:3},{value:"Receiving Rewards",id:"receiving-rewards",level:2},{value:"Good Nominator Practices",id:"good-nominator-practices",level:2},{value:"Required Minimum Stake",id:"required-minimum-stake",level:3},{value:"Active vs. Inactive Nomination",id:"active-vs-inactive-nomination",level:3},{value:"Minimum Active Nomination to Receive Staking Rewards",id:"minimum-active-nomination-to-receive-staking-rewards",level:3},{value:"Guides",id:"guides",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.admonition,{title:"New to Staking?",type:"tip",children:[(0,i.jsxs)(n.p,{children:["Start your staking journey or explore more information about staking on\n",(0,i.jsx)(n.a,{href:"https://polkadot.network/staking/",children:"Polkadot's Home Page"}),". You can learn how staking works by\nreading ",(0,i.jsx)(n.a,{href:"/docs/learn-staking",children:"this dedicated page"}),"."]}),(0,i.jsxs)(n.p,{children:["Discover the new ",(0,i.jsx)(n.a,{href:"https://staking.polkadot.cloud/#/overview",children:(0,i.jsx)(n.strong,{children:"Staking Dashboard"})})," that makes\nstaking much easier and check this\n",(0,i.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182104",children:"extensive article list"})," to\nhelp you get started."]}),(0,i.jsxs)(n.p,{children:["You can now\n",(0,i.jsx)(n.a,{href:"https://polkadot.network/blog/nomination-pools-are-live-stake-natively-with-just-1-dot/",children:"stake natively with just 1 DOT and earn staking rewards"}),"."]})]}),"\n",(0,i.jsx)(n.admonition,{title:"Stake through Nomination Pools",type:"info",children:(0,i.jsxs)(n.p,{children:["The minimum amount required to become an active nominator (i.e. the\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#minimum-active-bond",children:"minimum active bond"}),") and earn rewards may\nchange from era to era. If you have less tokens than the minimum active nomination and still want to\nparticipate in staking, you can join the nomination pools with a\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#minimum-bond-to-participate-in-staking",children:"smaller amount of tokens"}),".\nFor additional information, see\n",(0,i.jsx)(n.a,{href:"https://polkadot.network/blog/nomination-pools-are-live-stake-natively-with-just-1-dot/",children:"this blog post"}),".\nCheck the wiki doc on ",(0,i.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pools"})," for more information."]})}),"\n",(0,i.jsxs)(n.p,{children:["If you landed on this page, you decided to understand how you can be a good nominator. Note, this\npage is not for ",(0,i.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pool"})," members, although pool members might\ngain essential knowledge about how to choose nomination pools."]}),"\n",(0,i.jsxs)(n.p,{children:["The information provided on this page is complementary to that on the\n",(0,i.jsx)(n.a,{href:"/docs/learn-staking",children:(0,i.jsx)(n.strong,{children:"Staking Page"})})," and ",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced",children:(0,i.jsx)(n.strong,{children:"Advanced Staking Page"})}),".\nMake sure you read those pages as well before nominating."]}),"\n",(0,i.jsx)(n.h2,{id:"who-are-nominators",children:"Who are Nominators?"}),"\n",(0,i.jsx)(n.p,{children:"Nominators are one type of staking participant. They appoint their stake to the validators, the\nsecond type of participant. By appointing their stake, they can elect the active set of validators\nand share in the rewards that are paid out."}),"\n",(0,i.jsxs)(n.p,{children:["While the ",(0,i.jsx)(n.a,{href:"/docs/maintain-guides-how-to-validate-polkadot",children:"validators"})," are active\nparticipants in the network that engage in the block production and finality mechanisms, nominators\ntake a slightly more passive role. Being a nominator does not require running a node of your own or\nworrying about online uptime. However, a good nominator performs due diligence on the validators\nthat they elect. When looking for validators to nominate, a nominator should pay attention to their\nown reward percentage for nominating a specific validator - as well as the risk that they bear of\nbeing ",(0,i.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashed"})," if the validator gets slashed."]}),"\n",(0,i.jsx)(n.h2,{id:"why-nominate",children:"Why Nominate?"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"You become a network participant, a group of diverse professionals and enthusiasts around the\nworld aspiring to build and foster the next-gen Internet, Web3: a decentralized, privacy-focused,\nand trustless internet."}),"\n",(0,i.jsxs)(n.li,{children:["You are an essential piece of the puzzle, keeping the network secure. The bonded balance can be\nused to vote in ",(0,i.jsx)(n.a,{href:"/docs/learn-polkadot-opengov",children:"Polkadot OpenGov"})," and shape the network's future\ndirection."]}),"\n",(0,i.jsxs)(n.li,{children:["You will start to understand how Polkadot works at a technical-level. When you feel comfortable\nwith your nomination skills and knowledge, you can open your\n",(0,i.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:"nomination pool"}),", help others secure the network and earn rewards,\nand build your reputation as a trusted nomination pool operator. If you like to be more involved,\nthe next step is to become a ",(0,i.jsx)(n.a,{href:"/docs/learn-validator",children:"validator"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["By getting ",(0,i.jsx)(n.a,{href:"/docs/learn-staking",children:"staking"})," rewards you keep up with or (likely) stay ahead of\nnetwork inflation."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Nominators secure the relay chain by staking native tokens (DOT on Polkadot or KSM on Kusama) and\nnominating validators. You may have an account with DOT and want to earn fresh DOT. You could do so\nas a validator, which requires experience setting up a node and running and maintaining it 24/7."}),"\n",(0,i.jsxs)(n.p,{children:["On Polkadot, you can also earn DOT by nominating one or more validators. Doing so makes you a\nnominator for the validator(s) you chose. Pick your validators carefully -\n",(0,i.jsx)(n.a,{href:"/docs/learn-offenses",children:"if they do not behave properly, they will get slashed, and you will lose some DOT"}),".\nHowever, if they follow the network rules, you can share the staking rewards they generate."]}),"\n",(0,i.jsxs)(n.p,{children:["While your tokens are staked for nominations, they are 'locked' (bonded). You can\n",(0,i.jsx)(n.a,{href:"/docs/learn-guides-nominator#stop-nominating",children:"stop nominating at any time"}),", but remember that the\naction is effective in the next era and does not automatically unbond your funds. Unbonding is a\nseparate action, and it takes effect after the\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#unbonding-duration",children:"unbonding period"}),". A staking lock will be\nvisible on the Polkadot-JS UI during the unbonding period, and after it, the staking lock can be\nunlocked, and the bonded funds become free balance you can transfer."]}),"\n",(0,i.jsx)(n.admonition,{title:"Fast Unstaking",type:"info",children:(0,i.jsx)(n.p,{children:"If you accidentally bonded your tokens or your bonded tokens never backed any active validator, you\ncan now unbond them immediately."})}),"\n",(0,i.jsxs)(n.p,{children:["If your bonded balance did not back any validators in the last 28 days on Polkadot (7 days on\nKusama), you are eligible to perform fast unstaking. The\n",(0,i.jsx)(n.a,{href:"https://staking.polkadot.cloud/#/overview",children:"staking dashboard"})," will automatically check if you\nqualify. For more information, visit the\n",(0,i.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000169433-can-i-transfer-dot-without-unbonding-and-waiting-28-days-",children:'"Fast Unstake" section in this support article'}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"setting-up-accounts",children:"Setting-up Accounts"}),"\n",(0,i.jsx)(n.h3,{id:"stash--staking-proxy",children:"Stash & Staking Proxy"}),"\n",(0,i.jsxs)(n.p,{children:["Nominators are recommended to set up separate stash and staking proxy accounts. Explanation and the\nreasoning for generating distinct accounts for this purpose is elaborated in the\n",(0,i.jsx)(n.a,{href:"/docs/learn-cryptography#keys",children:"keys section"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You can generate your stash and staking proxy account via any of the recommended methods, which are\ndetailed on the ",(0,i.jsx)(n.a,{href:"/docs/learn-accounts#account-generation",children:"account generation"})," page. The first\nthing you need to do before becoming a nominator is to make sure you have a\n",(0,i.jsx)(n.a,{href:"/docs/learn-staking#stash-account-and-staking-proxy",children:(0,i.jsx)(n.strong,{children:"stash account"})}),' where you can transfer funds\nyou want to use for staking. For these accounts, it is recommended to use a "cold wallet" solution\nsuch as ',(0,i.jsx)(n.a,{href:"/docs/ledger",children:"Ledger"})," or ",(0,i.jsx)(n.a,{href:"/docs/polkadot-vault",children:"Polkadot Vault"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["After setting up the stash account, it is recommended to have a\n",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced#staking-proxies",children:(0,i.jsx)(n.strong,{children:"staking proxy"})}),". Although you can be a nominator\nwith just a stash account, having a staking proxy is good practice for security reasons."]}),"\n",(0,i.jsx)(n.p,{children:"A staking proxy of the stash will be able to sign for all staking-related transactions as well. The\nstash will be fully isolated (except if the user decides to change the staking proxy of the stash or\nto attach different proxies to the stash)."}),"\n",(0,i.jsx)(n.h3,{id:"rewards-payout-account",children:"Rewards Payout Account"}),"\n",(0,i.jsx)(n.p,{children:"As a nominator, you will be asked to choose an account where rewards will be paid. You can select\none of the following options:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"back to staking: rewards are compounded to the bonded amount."}),"\n",(0,i.jsx)(n.li,{children:"to stash: rewards are sent to the stash account as a free balance."}),"\n",(0,i.jsx)(n.li,{children:"to another account: rewards are sent to a user-defined account (not stash)."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Starting with runtime version v23 natively included in the client version\n",(0,i.jsx)(n.a,{href:"https://github.com/paritytech/polkadot/releases/tag/v0.8.23",children:"0.8.23"}),", payouts can go to any custom\naddress. If you'd like to redirect payments to an account that is neither the staking proxy nor the\nstash account, set one up. Note that setting an exchange address as the recipient of the staking\nrewards is extremely unsafe."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["Being a nominator is made simpler by using the\n",(0,i.jsx)(n.a,{href:"https://staking.polkadot.cloud/#/overview",children:(0,i.jsx)(n.strong,{children:"Staking Dashboard"})})," that will guide you step by step\nthrough specifying rewards destination and bonded amount, and nominating validators (more on this\nbelow). Note that staking proxies are not currently supported on the dashboard."]})}),"\n",(0,i.jsx)(n.h2,{id:"nominating-with-the-polkadot-js-ui",children:"Nominating with the Polkadot-JS UI"}),"\n",(0,i.jsx)(n.h3,{id:"targets-page",children:"Targets Page"}),"\n",(0,i.jsxs)(n.p,{children:["There are many factors to consider when deciding which of your nominations. One helpful tool to\nchoose validators is the Staking ",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking/targets",children:"Targets"})," table in\nthe Polkadot-JS UI. This allows sorting validators using various metrics. Below are the relevant\nmetrics shown as an example, followed by a brief description of each."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"validator"}),(0,i.jsx)(n.th,{children:"payout"}),(0,i.jsx)(n.th,{children:"nominators"}),(0,i.jsx)(n.th,{children:"comm."}),(0,i.jsx)(n.th,{children:"total stake"}),(0,i.jsx)(n.th,{children:"own stake"}),(0,i.jsx)(n.th,{children:"return"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"A"}),(0,i.jsx)(n.td,{children:"recently"}),(0,i.jsxs)(n.td,{children:["1 (",(0,i.jsx)(n.code,{children:"active"}),") 4 (",(0,i.jsx)(n.code,{children:"all"}),")"]}),(0,i.jsx)(n.td,{children:"3%"}),(0,i.jsx)(n.td,{children:"1.6 MDOT"}),(0,i.jsx)(n.td,{children:"8500 DOT"}),(0,i.jsx)(n.td,{children:"17.8%"})]})})]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"payout"}),": How recently the validator made its last reward payout to nominators."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"nominators"}),": This column consists of two number values. The ",(0,i.jsx)(n.strong,{children:"active"})," count (left number) is\nthe number of nominators whose stake is baking the validator in the current era. In this case\nValidator A has one active nominator. The total or ",(0,i.jsx)(n.strong,{children:"all"})," count (right number) is the number of\nall nominators who nominated Validator A. This includes the active count and all the other\nnominators whose stake in the current era is baking other validators."]}),"\n",(0,i.jsxs)(n.p,{children:["Every nominator can select up to\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#maximum-votes-per-nominator",children:"a maximum number of validators"}),",\nwhich contributes towards maximizing the probability of having the nominator\u2019s stake applied to\nthe validators active set. Nominating too few validators could result in the nominators not\nreceiving their rewards when none of them make it to the active set or when those validators stop\nvalidating. The election algorithm attempts to maximize the overall network stake while minimizing\nthe variance of the active stake across the validators. For additional information on the election\nprocess, check out the research behind\n",(0,i.jsx)(n.a,{href:"https://research.web3.foundation/Polkadot/protocols/NPoS",children:"nominated proof-of-stake"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"comm."}),": Total commission kept by the validator (100% means the validator will keep all rewards\n, and thus nominators will not receive them). A validator's commission is the percentage of the\nvalidator reward taken by the validator before the rewards are split among the nominators. As a\nnominator, you may think that choosing validators with the lowest commission is best. However,\nvalidators must be able to run at break-even to continue operations sustainably. Independent\nvalidators that rely on the commission to cover their server costs help to keep the network\ndecentralized. Some validators, operated by central exchanges, etc., keep 100% of the commission\nto payout their staking service clients and therefore do not provide any rewards to external\nnominators. The commission is just one piece of the puzzle you should consider when picking\nnominating validators."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"total stake"}),": The total amount of tokens staked by nominators and the validator (i.e. own\nstake, see below)."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"own stake"}),': The amount of tokens the validator has put up as a stake. A higher own stake can be\nconsidered as having more "skin in the game". This can imply increased trustworthiness. However, a\nvalidator not having a large amount of "own stake" is not automatically untrustworthy, as the\nvalidator could nominate from a different address.']}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"return"}),": Average annual yield paid out to nominators (i.e. number of rewards divided by the\nnumber of bonded tokens). Note that nominating those with a higher yield may not guarantee similar\nfuture performance."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Staking Returns",src:t(75020).A+"",width:"2169",height:"509"})}),"\n",(0,i.jsx)(n.p,{children:"On the Targets page, you can use different filters to select validators with specific traits (where\na trait is a combination of the metrics above). Available filters are:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"one validator per operator"}),": Do not show groups of validators run by a single operator. It\nshows small operators only who will likely have a higher commission and higher self-stake.\nNominating only small operators might not always guarantee staking rewards, but it helps to keep\nthe network more resilient to attacks."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Validator vs Operator",type:"info",children:(0,i.jsxs)(n.p,{children:["A validator is the node, the physical equipment with installed software that allows to produce new\nblocks and earn rewards. An operator is the entity responsible for setting up, running and\nmaintaining the node. An operator can have multiple validators under different sub-identities. For\nexample, ",(0,i.jsx)(n.code,{children:"ZUG CAPITAL/07"})," is one of the numerous validators belonging to the operator Zug Capital."]})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"comm. < 20%"}),": Do not show any validators with a commission of 20% or higher."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"recent payouts"}),": Only show validators that have recently caused a\n",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced",children:"payout to be issued"}),". Note that anyone can cause a payout to occur; it\ndoes not have to be the operator of a validator."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"currently elected"}),": Only show validators in the active set (i.e., they have been elected to\nproduce blocks in the current era)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"with an identity"}),": Only show validators that have set an ",(0,i.jsx)(n.a,{href:"/docs/learn-identity",children:"identity"}),". Note\nthat this identity does not have to be verified by a registrar for the validator to appear in the\nlist."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Single Operators with Multiple Validators",type:"warning",children:(0,i.jsxs)(n.p,{children:["Recall that ",(0,i.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashing"}),' is an additive function; the more validators\nequivocating in a given session, the harsher the penalties. Since validators that are controlled by\na single operator are more at risk of a "synchronized" failure, nominating them implies a greater\nrisk of having a large slash of your nominated funds. Generally, it is safer to nominate validators\nwhose behavior is independent of others in many ways (different hardware, geographic location,\nowner, etc.).']})}),"\n",(0,i.jsx)(n.h3,{id:"bags-list",children:"Bags-list"}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["On Polkadot and Kusama, the instance of the pallet\n",(0,i.jsx)(n.a,{href:"https://paritytech.github.io/substrate/master/pallet_bags_list/",children:"Bags-List"})," is named as\n",(0,i.jsx)(n.code,{children:"voterList"}),"."]})}),"\n",(0,i.jsxs)(n.p,{children:["Nominating accounts are placed in a semi-sorted list called bags-list. This sorting functionality is\nextremely important for the long-term improvements of the staking/election system. Bags-list allows\nan unlimited number nominators to set their intention to nominate, of which only a portion of it\n(currently 22500) is considered for ",(0,i.jsx)(n.a,{href:"#staking-election-stages",children:"electing set"})," that eventually\ndetermines the active validators."]}),"\n",(0,i.jsxs)(n.p,{children:["The nominator accounts in a bag are sorted based on their insertion order, not by their nomination\nstake. The ",(0,i.jsx)(n.code,{children:"voterList.putInFrontOf"})," extrinsic can be issued to move up in the bag, which might be\nvery useful for the accounts in the last bag eligible for receiving staking rewards. Balance changes\ndue to staking rewards or slashing do not automatically rebag the account. Whenever applicable,\nPolkadot JS Apps UI prompts the nominator account to rebag or move up by calling the\n",(0,i.jsx)(n.code,{children:"voterList.rebag"})," extrinsic."]}),"\n",(0,i.jsx)(n.p,{children:"For guidelines about how to rebag or move your account within a bag, see the followings:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:['The "Bags List" Section on\n',(0,i.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181018-i-have-more-than-the-minimum-bonded-but-i-m-not-getting-rewards",children:"this Support Page"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced#bags-list",children:"Bags List Section"})," in Advanced Staking Concepts."]}),"\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.a,{href:"https://youtu.be/hIIZRJLrBZA",children:"dedicated technical explainer video"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"validator-stats",children:"Validator Stats"}),"\n",(0,i.jsxs)(n.p,{children:["Nominators can query ",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking/query/",children:"validator histories"})," to see\nstatistics such as era points, elected stake, rewards and slashes, and commission. It is good\npractice to do comprehensive research on validator candidates. This could include (but should not be\nlimited to) checking the validators' ",(0,i.jsx)(n.a,{href:"/docs/learn-identity",children:"identity"})," (if they have set one) and going\nover the validators' websites to see who they are, what kind of infrastructure setup they are using,\nreputation, the vision behind the validator, and more."]}),"\n",(0,i.jsx)(n.p,{children:"Any problematic behavior must be taken seriously. An example of problematic behavior will be if a\nvalidator is regularly offline. In this case, nominators will get fewer rewards."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Validator Stats",src:t(55768).A+"",width:"1900",height:"1204"})}),"\n",(0,i.jsx)(n.h2,{id:"nominating-with-the-staking-dashboard",children:"Nominating with the Staking Dashboard"}),"\n",(0,i.jsx)(n.p,{children:"If you are a beginner, please watch the video below for detailed instructions."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://www.youtube.com/watch?v=F59N3YKYCRs",children:(0,i.jsx)(n.img,{src:"https://img.youtube.com/vi/F59N3YKYCRs/0.jpg",alt:"Staking Tutorial"})})}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/staking-dashboard",children:"Polkadot Staking Dashboard"})," allows to choose pre-selected\nlists of validators based on user preference, or to manually select validators similarly as in the\nPolkadot-JS UI."]}),"\n",(0,i.jsx)(n.p,{children:"Pre-selected choices are:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Optimal Selection: Selects a mix of majority active and inactive validators."}),"\n",(0,i.jsx)(n.li,{children:"Active Low Commission: Gets a set of active validators with low commission."}),"\n",(0,i.jsx)(n.li,{children:"From Favorites: Gets a set of your favorite validators."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"staking-election-stages",children:"Staking Election Stages"}),"\n",(0,i.jsx)(n.p,{children:'The staking election system has three stages for both validators and nominators, namely "intention",\n"electable/electing", and "active".'}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"intention to nominate:"}),' an account that has stated the intention to nominate; also called\nsimply a "nominator".']}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"electing nominator:"})," a nominator who is selected to be a part of the input to the\n",(0,i.jsx)(n.a,{href:"/docs/learn-phragmen",children:"NPoS election algorithm"}),". This selection is based on stake and is made using\nthe ",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced#bags-list",children:"bags-list"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"active nominator:"})," a nominator who came out of the NPoS election algorithm backing an active\nvalidator. When slashing occurs, all the active nominators backing the validator get slashed."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Nominator Election",src:t(82071).A+"",width:"612",height:"430"})}),"\n",(0,i.jsx)(n.h3,{id:"the-election-solution-set",children:"The Election Solution Set"}),"\n",(0,i.jsx)(n.p,{children:'Determining which validators are in the active set and which nominators are nominating them creates\na very large graph mapping nominators to their respective validators. This "solution set" is\ncomputed off-chain and submitted to the chain, which means it must fit in a single block. If there\nare a large number of nominators, this means that some nominators must be eliminated. Currently,\nnominators are sorted by the amount of DOT staked, and those with more DOT are prioritized. This\nmeans that you may not receive rewards if you are staking with a small amount of DOT. This minimal\namount is dynamic based on the number of validators, nominators, amount nominated, and other\nfactors.'}),"\n",(0,i.jsx)(n.h2,{id:"receiving-rewards",children:"Receiving Rewards"}),"\n",(0,i.jsxs)(n.p,{children:["As long as you have nominated more than one validator candidate, at least one of them got elected,\nand you are nominating with enough stake to get into the solution set, your bonded stake will be\nfully distributed to one or more validators. That being said, you may not receive rewards if you\nnominated very few validator candidates and no one got elected, or your stake is small, and you are\nnot part of the ",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced#bags-list",children:"top 22,500 nominators"}),", or the validator you\nare nominating has 100% commission. It is generally wise to choose as many trustworthy validators as\nyou can to reduce the risk of none of your nominated validators being elected."]}),"\n",(0,i.jsxs)(n.admonition,{title:"Not receiving Staking Rewards?",type:"info",children:[(0,i.jsx)(n.p,{children:"To explore the possible reasons for not receiving staking rewards, check out the followings:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The\n",(0,i.jsx)(n.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181959-staking-faq-s",children:"Staking FAQ"}),"\non the Support Pages."]}),"\n",(0,i.jsxs)(n.li,{children:["The\n",(0,i.jsx)(n.a,{href:"https://www.reddit.com/r/Polkadot/comments/10kurje/why_am_i_not_receiving_staking_rewards/",children:'"Why am I not receiving staking rewards?"'}),"\nReddit article."]}),"\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.a,{href:"/docs/learn-staking#why-am-i-not-receiving-rewards",children:'"Why am I not receiving staking rewards?"'}),"\nsection on the Staking Page."]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Rewards are ",(0,i.jsx)(n.em,{children:"lazy"})," - somebody must trigger a payout for a validator for rewards to go to all of the\nvalidator's nominators. Any account can do this, although validator operators often do this as a\nservice to their nominators. See the page on ",(0,i.jsx)(n.a,{href:"/docs/learn-staking-advanced",children:"Simple Payouts"})," for more\ninformation and instructions for claiming rewards."]}),"\n",(0,i.jsxs)(n.admonition,{title:"Explainer videos on Nominating",type:"note",children:[(0,i.jsx)(n.p,{children:"These concepts have been further explained in the following videos:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.youtube.com/watch?v=weG_uzdSs1E&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=4",children:"Why Nominate on Polkadot & Kusama"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.youtube.com/watch?v=K-a4CgVchvU&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=9",children:"What to Consider when Nominating Validators on Polkadot and Kusama"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://youtu.be/FCXC0CDhyS4",children:"Nominating/Staking on Polkadot and Kusama"})}),"\n"]})]}),"\n",(0,i.jsx)(n.h2,{id:"good-nominator-practices",children:"Good Nominator Practices"}),"\n",(0,i.jsx)(n.h3,{id:"required-minimum-stake",children:"Required Minimum Stake"}),"\n",(0,i.jsxs)(n.p,{children:["Due to the way the ",(0,i.jsx)(n.a,{href:"/docs/learn-phragmen",children:"Phragmen algorithm"})," generates the solution set and due to the\nfact that the solution set must fit in a single block, a minimum number of DOT will be required to\nnominate with to receive staking rewards can change between the eras."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"min-intention-threshold:"})," minimum stake to declare the intention to nominate. This parameter\ncan be updated via on-chain governance, and the most recent and up-to-date version can be found on\n",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/chainstate",children:"chain state"})," (select ",(0,i.jsx)(n.strong,{children:"state query > staking >\nminimumNominatorBond"}),")"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"min-electing:"})," minimum stake among the electing nominators. Since this is almost always the\nsame as \u201cmin-active\u201d, it might not be reported."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"min-active:"})," minimum stake among the active nominators. If your stake falls below this dynamic\nthreshold in a given era, you will not receive staking rewards for that era."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Thus, for ",(0,i.jsx)(n.strong,{children:"nominator counters"}),", we have:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["count of nominator intentions and\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#maximum-number-of-nominators",children:"max possible nominator intentions"})]}),"\n",(0,i.jsx)(n.li,{children:"count of electing nominators, and maximum possible electing nominators (22500 on Polkadot and\n12500 on Kusama)"}),"\n",(0,i.jsx)(n.li,{children:"count of active nominators and maximum possible active nominators (22500 on Polkadot and 12500 on\nKusama)"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"active-vs-inactive-nomination",children:"Active vs. Inactive Nomination"}),"\n",(0,i.jsxs)(n.p,{children:["When you go to the ",(0,i.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/staking/actions",children:"Account actions"})," under staking\npage, you should see your bonded accounts and nomination status. If not, you can follow\n",(0,i.jsx)(n.a,{href:"/docs/learn-guides-nominator#nominate-using-polkadot-js",children:"this"})," guide to configure it first. Your\nnominations will be effective in the next era; eras are roughly 24 hours on Polkadot (6 hours on\nKusama)."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Nominations",src:t(67895).A+"",width:"2878",height:"766"})}),"\n",(0,i.jsx)(n.p,{children:'Suppose you have nominated five validator candidates, and three out of five were elected to the\nactive validator set; then you should see two of your nominations as "waiting", and most likely one\nas "active" and the rest as "inactive". Active or inactive nomination means your nominated\nvalidators have been elected to be in the validator set, whereas waiting means they did not get\nelected. Generally, you will only have a single validator have an active nomination, which means\nthat you are directly supporting it with your stake this era and thus potentially receiving staking\nrewards. Inactive nominators were validators elected for this era but which you are not actively\nsupporting. Every era, a new election will take place, and you may be assigned a different active\nnomination from the validators you selected.'}),"\n",(0,i.jsxs)(n.p,{children:["If you are committing a very large stake, you may have more than one active nomination. However, the\nelection algorithm attempts to minimize this situation, and it should not occur often, so you should\nalmost always see only a single active nomination per era. See the\n",(0,i.jsx)(n.a,{href:"/docs/learn-phragmen#optimizations",children:"section on Phragm\xe9n optimization"})," for more details."]}),"\n",(0,i.jsx)(n.h3,{id:"minimum-active-nomination-to-receive-staking-rewards",children:"Minimum Active Nomination to Receive Staking Rewards"}),"\n",(0,i.jsx)(n.admonition,{title:"Minimum DOT required to earn staking rewards",type:"info",children:(0,i.jsxs)(n.p,{children:["The\n",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#minimum-bond-to-participate-in-staking",children:"minimum number of tokens required to submit intent to nominate"}),"\ndiffers from the ",(0,i.jsx)(n.a,{href:"/docs/chain-state-values#minimum-active-bond",children:"minimum active nomination"}),"\nrequired to earn staking rewards."]})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Minimum Active Nomination",src:t(2834).A+"",width:"1436",height:"166"})}),"\n",(0,i.jsx)(n.h2,{id:"guides",children:"Guides"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"/docs/learn-guides-nominator#nominate-a-validator",children:"Be a Nominator (Polkadot)"})," - Guide on\nnominating on the Kusama canary network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"/docs/learn-guides-nominator#stop-nominating",children:"Stop Being a Nominator (all networks)"})," - Guide on\nstopping nominations and withdrawing tokens."]}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},75020:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/nominators_target-d8652ac89f3cbb16528cd68808a32cf0.png"},2834:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/min-active-nomination-bfbe67c2714eb5027c6a4f45608c9bc2.png"},82071:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/nominator-election-ae25b5db36fa18b56fa58c5370127dd4.png"},67895:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/polkadotjs_nominator_account-e0f5d58cd9cce279d6f462cde9f706f4.png"},55768:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/validator_stats-57ec40656d6829e2ef791550116824d4.png"},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>r});var a=t(96540);const i={},o=a.createContext(i);function s(e){const n=a.useContext(o);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),a.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.1cbb1a84.js b/assets/js/main.ee426000.js similarity index 99% rename from assets/js/main.1cbb1a84.js rename to assets/js/main.ee426000.js index 8e59eb2ccf4..95b38b8fc5f 100644 --- a/assets/js/main.1cbb1a84.js +++ b/assets/js/main.ee426000.js @@ -1,2 +1,2 @@ -/*! For license information please see main.1cbb1a84.js.LICENSE.txt */ -(self.webpackChunk=self.webpackChunk||[]).push([[8792],{55600:(e,t,n)=>{"use strict";n.d(t,{Bc:()=>A,E8:()=>Zn,a1:()=>Yn});var r=n(96540);n(40961);function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(c&&l){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;P(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:I(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),b}},t}function v(e,t){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},v(e,t)}function x(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],c=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw a}}return s}}(e,t)||k(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||k(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}function _(e){var t="function"==typeof Map?new Map:void 0;return _=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(m())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var a=new(e.bind.apply(e,r));return n&&v(a,n.prototype),a}(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),v(n,e)},_(e)}function S(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function E(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20","aria-hidden":"true"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var j=["translations"],O="Ctrl",A=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=g(e,j),i=a.buttonText,s=void 0===i?"Search":i,c=a.buttonAriaLabel,l=void 0===c?"Search":c,u=x((0,r.useState)(null),2),p=u[0],f=u[1];(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("\u2318"):f(O))}),[]);var m=x(p===O?[O,"Ctrl",r.createElement(S,null)]:["Meta","Command",p],3),h=m[0],b=m[1],y=m[2];return r.createElement("button",d({type:"button",className:"DocSearch DocSearch-Button","aria-label":"".concat(l," (").concat(b,"+K)")},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(E,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},s)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==p&&r.createElement(r.Fragment,null,r.createElement(C,{reactsToKey:h},y),r.createElement(C,{reactsToKey:"k"},"K"))))}));function C(e){var t=e.reactsToKey,n=e.children,a=x((0,r.useState)(!1),2),o=a[0],i=a[1];return(0,r.useEffect)((function(){if(t)return window.addEventListener("keydown",e),window.addEventListener("keyup",n),function(){window.removeEventListener("keydown",e),window.removeEventListener("keyup",n)};function e(e){e.key===t&&i(!0)}function n(e){e.key!==t&&"Meta"!==e.key||i(!1)}}),[t]),r.createElement("kbd",{className:o?"DocSearch-Button-Key DocSearch-Button-Key--pressed":"DocSearch-Button-Key"},n)}function P(e,t){var n=void 0;return function(){for(var r=arguments.length,a=new Array(r),o=0;oe.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function K(e){for(var t=1;t=3||2===n&&r>=4||1===n&&r>=10);function o(t,n,r){if(a&&void 0!==r){var o=r[0].__autocomplete_algoliaCredentials,i={"X-Algolia-Application-Id":o.appId,"X-Algolia-API-Key":o.apiKey};e.apply(void 0,[t].concat($(n),[{headers:i}]))}else e.apply(void 0,[t].concat($(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setAuthenticatedUserToken:function(t){e("setAuthenticatedUserToken",t)},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("clickedObjectIDsAfterSearch",Q(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("clickedObjectIDs",Q(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("convertedObjectIDsAfterSearch",Q(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("convertedObjectIDs",Q(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&t.reduce((function(e,t){var n=t.items,r=V(t,U);return[].concat($(e),$(function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function Z(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function X(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function J(e){return J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},J(e)}function ee(e){return function(e){if(Array.isArray(e))return te(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return te(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?te(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&se({onItemsChange:a,items:n,insights:l,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive,a=!1;function u(e){t({algoliaInsightsPlugin:{__algoliaSearchParameters:re(re({},s?{clickAnalytics:!0}:{}),e?{userToken:ue(e)}:{}),insights:l}})}c("addAlgoliaAgent","insights-plugin"),u(),c("onUserTokenChange",(function(e){a||u(e)})),c("getUserToken",null,(function(e,t){a||u(t)})),c("onAuthenticatedUserTokenChange",(function(e){e?(a=!0,u(e)):(a=!1,c("getUserToken",null,(function(e,t){return u(t)})))})),c("getAuthenticatedUserToken",null,(function(e,t){t&&(a=!0,u(t))})),n((function(e){var t=e.item,n=e.state,r=e.event,a=e.source;X(t)&&o({state:n,event:r,insights:l,item:t,insightsEvents:[re({eventName:"Item Selected"},F({item:t,items:a.getItems().filter(X)}))]})})),r((function(e){var t=e.item,n=e.source,r=e.state,a=e.event;X(t)&&i({state:r,event:a,insights:l,item:t,insightsEvents:[re({eventName:"Item Active"},F({item:t,items:n.getItems().filter(X)}))]})}))},onStateChange:function(e){var t=e.state;d({state:t})},__autocomplete_pluginOptions:e}}function le(){var e,t=arguments.length>1?arguments[1]:void 0;return[].concat(ee(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]),["autocomplete-internal"],ee(null!==(e=t.algoliaInsightsPlugin)&&void 0!==e&&e.__automaticInsights?["autocomplete-automatic"]:[]))}function ue(e){return"number"==typeof e?e.toString():e}function de(e,t){var n=t;return{then:function(t,r){return de(e.then(fe(t,n,e),fe(r,n,e)),n)},catch:function(t){return de(e.catch(fe(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),de(e.finally(fe(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function pe(e){return de(e,{isCanceled:!1,onCancelList:[]})}function fe(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function me(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var a=(null===t?-1:t)+e;return a<=-1||a>=n?null===r?null:0:a}function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function be(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:"autocomplete-".concat(I++),plugins:a,initialState:Ne({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),a.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),a.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),a.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(function(e){return function(e){if(Array.isArray(e))return Te(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Te(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Te(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(a.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:D,onResolve:D};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=be(be({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return T(e)})).then((function(e){return e.map((function(e){return Ne(Ne({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:Ne({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function De(e){return De="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},De(e)}function Me(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Fe(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,Qe);nt&&a.environment.clearTimeout(nt);var l=c.setCollections,u=c.setIsOpen,d=c.setQuery,p=c.setActiveItemId,f=c.setStatus,m=c.setContext;if(d(o),p(a.defaultActiveItemId),!o&&!1===a.openOnFocus){var h,b=s.getState().collections.map((function(e){return Ze(Ze({},e),{},{items:[]})}));f("idle"),l(b),u(null!==(h=r.isOpen)&&void 0!==h?h:a.shouldPanelOpen({state:s.getState()}));var g=pe(rt(b).then((function(){return Promise.resolve()})));return s.pendingRequests.add(g)}f("loading"),nt=a.environment.setTimeout((function(){f("stalled")}),a.stallThreshold);var y=pe(rt(a.getSources(Ze({query:o,refresh:i,state:s.getState()},c)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(Ze({query:o,refresh:i,state:s.getState()},c))).then((function(t){return function(e,t,n){if(a=e,Boolean(null==a?void 0:a.execute)){var r="algolia"===e.requesterId?Object.assign.apply(Object,[{}].concat(He(Object.keys(n.context).map((function(e){var t;return null===(t=n.context[e])||void 0===t?void 0:t.__algoliaSearchParameters}))))):{};return qe(qe({},e),{},{requests:e.queries.map((function(n){return{query:"algolia"===e.requesterId?qe(qe({},n),{},{params:qe(qe({},r),n.params)}):n,sourceId:t,transformResponse:e.transformResponse}}))})}var a;return{items:e,sourceId:t}}(t,e.sourceId,s.getState())}))}))).then(Ke).then((function(t){var n,r=t.some((function(e){return function(e){return!Array.isArray(e)&&Boolean(null==e?void 0:e._automaticInsights)}(e.items)}));return r&&m({algoliaInsightsPlugin:Ze(Ze({},(null===(n=s.getState().context)||void 0===n?void 0:n.algoliaInsightsPlugin)||{}),{},{__automaticInsights:r})}),function(e,t,n){return t.map((function(t){var r,a=e.filter((function(e){return e.sourceId===t.sourceId})),o=a.map((function(e){return e.items})),i=a[0].transformResponse,s=i?i({results:r=o,hits:r.map((function(e){return e.hits})).filter(Boolean),facetHits:r.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}):o;return t.onResolve({source:t,results:o,items:s,state:n.getState()}),s.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:s}}))}(t,e,s)})).then((function(e){return function(e){var t=e.props,n=e.state,r=e.collections.reduce((function(e,t){return Fe(Fe({},e),{},Be({},t.source.sourceId,Fe(Fe({},t.source),{},{getItems:function(){return T(t.items)}})))}),{}),a=t.plugins.reduce((function(e,t){return t.reshape?t.reshape(e):e}),{sourcesBySourceId:r,state:n}).sourcesBySourceId;return T(t.reshape({sourcesBySourceId:a,sources:Object.values(a),state:n})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:a,state:s.getState()})}))})))).then((function(e){var n;f("idle"),l(e);var d=a.shouldPanelOpen({state:s.getState()});u(null!==(n=r.isOpen)&&void 0!==n?n:a.openOnFocus&&!o&&d||d);var p=ve(s.getState());if(null!==s.getState().activeItemId&&p){var m=p.item,h=p.itemInputValue,b=p.itemUrl,g=p.source;g.onActive(Ze({event:t,item:m,itemInputValue:h,itemUrl:b,refresh:i,source:g,state:s.getState()},c))}})).finally((function(){f("idle"),nt&&a.environment.clearTimeout(nt)}));return s.pendingRequests.add(y)}function ot(e){return ot="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ot(e)}var it=["event","props","refresh","store"];function st(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ct(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function wt(e){var t=e.props,n=e.refresh,r=e.store,a=xt(e,dt);return{getEnvironmentProps:function(e){var n=e.inputElement,a=e.formElement,o=e.panelElement;function i(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[a,o].some((function(t){return(n=t)===(r=e.target)||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return yt({onTouchStart:i,onMouseDown:i,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},xt(e,pt))},getRootProps:function(e){return yt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-controls":r.getState().isOpen?r.getState().collections.map((function(e){var n=e.source;return xe(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":xe(t.id,"label")},e)},getFormProps:function(e){return e.inputElement,yt({action:"",noValidate:!0,role:"search",onSubmit:function(o){var i;o.preventDefault(),t.onSubmit(yt({event:o,refresh:n,state:r.getState()},a)),r.dispatch("submit",null),null===(i=e.inputElement)||void 0===i||i.blur()},onReset:function(o){var i;o.preventDefault(),t.onReset(yt({event:o,refresh:n,state:r.getState()},a)),r.dispatch("reset",null),null===(i=e.inputElement)||void 0===i||i.focus()}},xt(e,ft))},getLabelProps:function(e){return yt({htmlFor:xe(t.id,"input"),id:xe(t.id,"label")},e)},getInputProps:function(e){var o;function i(e){(t.openOnFocus||Boolean(r.getState().query))&&at(yt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},a)),r.dispatch("focus",null)}var s=e||{};s.inputElement;var c=s.maxLength,l=void 0===c?512:c,u=xt(s,mt),d=ve(r.getState()),p=function(e){return Boolean(e&&e.match(we))}((null===(o=t.environment.navigator)||void 0===o?void 0:o.userAgent)||""),f=t.enterKeyHint||(null!=d&&d.itemUrl&&!p?"go":"search");return yt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?xe(t.id,"item-".concat(r.getState().activeItemId),null==d?void 0:d.source):void 0,"aria-controls":r.getState().isOpen?r.getState().collections.map((function(e){var n=e.source;return xe(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":xe(t.id,"label"),value:r.getState().completion||r.getState().query,id:xe(t.id,"input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:f,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:l,type:"search",onChange:function(e){var o=e.currentTarget.value;t.ignoreCompositionEvents&&ke(e).isComposing?a.setQuery(o):at(yt({event:e,props:t,query:o.slice(0,l),refresh:n,store:r},a))},onCompositionEnd:function(e){at(yt({event:e,props:t,query:e.currentTarget.value.slice(0,l),refresh:n,store:r},a))},onKeyDown:function(e){ke(e).isComposing||function(e){var t=e.event,n=e.props,r=e.refresh,a=e.store,o=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,it);if("ArrowUp"===t.key||"ArrowDown"===t.key){var i=function(){var e=ve(a.getState()),t=n.environment.document.getElementById(xe(n.id,"item-".concat(a.getState().activeItemId),null==e?void 0:e.source));t&&(t.scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded(!1):t.scrollIntoView(!1))},s=function(){var e=ve(a.getState());if(null!==a.getState().activeItemId&&e){var n=e.item,i=e.itemInputValue,s=e.itemUrl,c=e.source;c.onActive(ct({event:t,item:n,itemInputValue:i,itemUrl:s,refresh:r,source:c,state:a.getState()},o))}};t.preventDefault(),!1===a.getState().isOpen&&(n.openOnFocus||Boolean(a.getState().query))?at(ct({event:t,props:n,query:a.getState().query,refresh:r,store:a},o)).then((function(){a.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),s(),setTimeout(i,0)})):(a.dispatch(t.key,{}),s(),i())}else if("Escape"===t.key)t.preventDefault(),a.dispatch(t.key,null),a.pendingRequests.cancelAll();else if("Tab"===t.key)a.dispatch("blur",null),a.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===a.getState().activeItemId||a.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||a.pendingRequests.cancelAll());t.preventDefault();var c=ve(a.getState()),l=c.item,u=c.itemInputValue,d=c.itemUrl,p=c.source;if(t.metaKey||t.ctrlKey)void 0!==d&&(p.onSelect(ct({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o)),n.navigator.navigateNewTab({itemUrl:d,item:l,state:a.getState()}));else if(t.shiftKey)void 0!==d&&(p.onSelect(ct({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o)),n.navigator.navigateNewWindow({itemUrl:d,item:l,state:a.getState()}));else if(t.altKey);else{if(void 0!==d)return p.onSelect(ct({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o)),void n.navigator.navigate({itemUrl:d,item:l,state:a.getState()});at(ct({event:t,nextState:{isOpen:!1},props:n,query:u,refresh:r,store:a},o)).then((function(){p.onSelect(ct({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o))}))}}}(yt({event:e,props:t,refresh:n,store:r},a))},onFocus:i,onBlur:D,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||i(n)}},u)},getPanelProps:function(e){return yt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.source,a=xt(n,ht);return yt({role:"listbox","aria-labelledby":xe(t.id,"label"),id:xe(t.id,"list",r)},a)},getItemProps:function(e){var o=e.item,i=e.source,s=xt(e,bt);return yt({id:xe(t.id,"item-".concat(o.__autocomplete_id),i),role:"option","aria-selected":r.getState().activeItemId===o.__autocomplete_id,onMouseMove:function(e){if(o.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",o.__autocomplete_id);var t=ve(r.getState());if(null!==r.getState().activeItemId&&t){var i=t.item,s=t.itemInputValue,c=t.itemUrl,l=t.source;l.onActive(yt({event:e,item:i,itemInputValue:s,itemUrl:c,refresh:n,source:l,state:r.getState()},a))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var s=i.getItemInputValue({item:o,state:r.getState()}),c=i.getItemUrl({item:o,state:r.getState()});(c?Promise.resolve():at(yt({event:e,nextState:{isOpen:!1},props:t,query:s,refresh:n,store:r},a))).then((function(){i.onSelect(yt({event:e,item:o,itemInputValue:s,itemUrl:c,refresh:n,source:i,state:r.getState()},a))}))}},s)}}}function kt(e){return kt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kt(e)}function _t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function St(e){for(var t=1;t0&&r.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},r.createElement("p",{className:"DocSearch-Help"},c,":"),r.createElement("ul",null,f.slice(0,3).reduce((function(e,t){return[].concat(w(e),[r.createElement("li",{key:t},r.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){a.setQuery(t.toLowerCase()+" "),a.refresh(),a.inputRef.current.focus()}},t))])}),[]))),a.getMissingResultsUrl&&r.createElement("p",{className:"DocSearch-Help"},"".concat(u," "),r.createElement("a",{href:a.getMissingResultsUrl({query:a.state.query}),target:"_blank",rel:"noopener noreferrer"},p)))}var nn=["hit","attribute","tagName"];function rn(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function an(e){var t=e.hit,n=e.attribute,a=e.tagName,o=void 0===a?"span":a,i=g(e,nn);return(0,r.createElement)(o,b(b({},i),{},{dangerouslySetInnerHTML:{__html:rn(t,"_snippetResult.".concat(n,".value"))||rn(t,n)}}))}function on(e){return e.collection&&0!==e.collection.items.length?r.createElement("section",{className:"DocSearch-Hits"},r.createElement("div",{className:"DocSearch-Hit-source"},e.title),r.createElement("ul",e.getListProps(),e.collection.items.map((function(t,n){return r.createElement(sn,d({key:[e.title,t.objectID].join(":"),item:t,index:n},e))})))):null}function sn(e){var t=e.item,n=e.index,a=e.renderIcon,o=e.renderAction,i=e.getItemProps,s=e.onItemClick,c=e.collection,l=e.hitComponent,u=x(r.useState(!1),2),p=u[0],f=u[1],m=x(r.useState(!1),2),h=m[0],b=m[1],g=r.useRef(null),y=l;return r.createElement("li",d({className:["DocSearch-Hit",t.__docsearch_parent&&"DocSearch-Hit--Child",p&&"DocSearch-Hit--deleting",h&&"DocSearch-Hit--favoriting"].filter(Boolean).join(" "),onTransitionEnd:function(){g.current&&g.current()}},i({item:t,source:c.source,onClick:function(e){s(t,e)}})),r.createElement(y,{hit:t},r.createElement("div",{className:"DocSearch-Hit-Container"},a({item:t,index:n}),t.hierarchy[t.type]&&"lvl1"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(an,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.lvl1"}),t.content&&r.createElement(an,{className:"DocSearch-Hit-path",hit:t,attribute:"content"})),t.hierarchy[t.type]&&("lvl2"===t.type||"lvl3"===t.type||"lvl4"===t.type||"lvl5"===t.type||"lvl6"===t.type)&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(an,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.".concat(t.type)}),r.createElement(an,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),"content"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(an,{className:"DocSearch-Hit-title",hit:t,attribute:"content"}),r.createElement(an,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),o({item:t,runDeleteTransition:function(e){f(!0),g.current=e},runFavoriteTransition:function(e){b(!0),g.current=e}}))))}function cn(e,t,n){return e.reduce((function(e,r){var a=t(r);return e.hasOwnProperty(a)||(e[a]=[]),e[a].length<(n||5)&&e[a].push(r),e}),{})}function ln(e){return e}function un(e){return 1===e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}function dn(){}var pn=/(|<\/mark>)/g,fn=RegExp(pn.source);function mn(e){var t,n,r=e;if(!r.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var a=r.__docsearch_parent?null===(t=r.__docsearch_parent)||void 0===t||null===(t=t._highlightResult)||void 0===t||null===(t=t.hierarchy)||void 0===t?void 0:t.lvl0:null===(n=e._highlightResult)||void 0===n||null===(n=n.hierarchy)||void 0===n?void 0:n.lvl0;return a?a.value&&fn.test(a.value)?a.value.replace(pn,""):a.value:e.hierarchy.lvl0}function hn(e){return r.createElement("div",{className:"DocSearch-Dropdown-Container"},e.state.collections.map((function(t){if(0===t.items.length)return null;var n=mn(t.items[0]);return r.createElement(on,d({},e,{key:t.source.sourceId,title:n,collection:t,renderIcon:function(e){var n,a=e.item,o=e.index;return r.createElement(r.Fragment,null,a.__docsearch_parent&&r.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},r.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},a.__docsearch_parent!==(null===(n=t.items[o+1])||void 0===n?void 0:n.__docsearch_parent)?r.createElement("path",{d:"M8 6v21M20 27H8.3"}):r.createElement("path",{d:"M8 6v42M20 27H8.3"}))),r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Kt,{type:a.type})))},renderAction:function(){return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement(Vt,null))}}))})),e.resultsFooterComponent&&r.createElement("section",{className:"DocSearch-HitsFooter"},r.createElement(e.resultsFooterComponent,{state:e.state})))}var bn=["translations"];function gn(e){var t=e.translations,n=void 0===t?{}:t,a=g(e,bn),o=n.recentSearchesTitle,i=void 0===o?"Recent":o,s=n.noRecentSearchesText,c=void 0===s?"No recent searches":s,l=n.saveRecentSearchButtonTitle,u=void 0===l?"Save this search":l,p=n.removeRecentSearchButtonTitle,f=void 0===p?"Remove this search from history":p,m=n.favoriteSearchesTitle,h=void 0===m?"Favorite":m,b=n.removeFavoriteSearchButtonTitle,y=void 0===b?"Remove this search from favorites":b;return"idle"===a.state.status&&!1===a.hasCollections?a.disableUserPersonalization?null:r.createElement("div",{className:"DocSearch-StartScreen"},r.createElement("p",{className:"DocSearch-Help"},c)):!1===a.hasCollections?null:r.createElement("div",{className:"DocSearch-Dropdown-Container"},r.createElement(on,d({},a,{title:i,collection:a.state.collections[0],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement($t,null))},renderAction:function(e){var t=e.item,n=e.runFavoriteTransition,o=e.runDeleteTransition;return r.createElement(r.Fragment,null,r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:u,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n((function(){a.favoriteSearches.add(t),a.recentSearches.remove(t),a.refresh()}))}},r.createElement(Yt,null))),r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),o((function(){a.recentSearches.remove(t),a.refresh()}))}},r.createElement(Ht,null))))}})),r.createElement(on,d({},a,{title:h,collection:a.state.collections[1],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Yt,null))},renderAction:function(e){var t=e.item,n=e.runDeleteTransition;return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:y,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n((function(){a.favoriteSearches.remove(t),a.refresh()}))}},r.createElement(Ht,null)))}})))}var yn=["translations"],vn=r.memo((function(e){var t=e.translations,n=void 0===t?{}:t,a=g(e,yn);if("error"===a.state.status)return r.createElement(Jt,{translations:null==n?void 0:n.errorScreen});var o=a.state.collections.some((function(e){return e.items.length>0}));return a.state.query?!1===o?r.createElement(tn,d({},a,{translations:null==n?void 0:n.noResultsScreen})):r.createElement(hn,a):r.createElement(gn,d({},a,{hasCollections:o,translations:null==n?void 0:n.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status})),xn=["translations"];function wn(e){var t=e.translations,n=void 0===t?{}:t,a=g(e,xn),o=n.resetButtonTitle,i=void 0===o?"Clear the query":o,s=n.resetButtonAriaLabel,c=void 0===s?"Clear the query":s,l=n.cancelButtonText,u=void 0===l?"Cancel":l,p=n.cancelButtonAriaLabel,f=void 0===p?"Cancel":p,m=n.searchInputLabel,h=void 0===m?"Search":m,b=a.getFormProps({inputElement:a.inputRef.current}).onReset;return r.useEffect((function(){a.autoFocus&&a.inputRef.current&&a.inputRef.current.focus()}),[a.autoFocus,a.inputRef]),r.useEffect((function(){a.isFromSelection&&a.inputRef.current&&a.inputRef.current.select()}),[a.isFromSelection,a.inputRef]),r.createElement(r.Fragment,null,r.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:b},r.createElement("label",d({className:"DocSearch-MagnifierLabel"},a.getLabelProps()),r.createElement(E,null),r.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},h)),r.createElement("div",{className:"DocSearch-LoadingIndicator"},r.createElement(qt,null)),r.createElement("input",d({className:"DocSearch-Input",ref:a.inputRef},a.getInputProps({inputElement:a.inputRef.current,autoFocus:a.autoFocus,maxLength:64}))),r.createElement("button",{type:"reset",title:i,className:"DocSearch-Reset","aria-label":c,hidden:!a.state.query},r.createElement(Ht,null))),r.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":f,onClick:a.onClose},u))}var kn=["_highlightResult","_snippetResult"];function _n(e){var t=e.key,n=e.limit,r=void 0===n?5:n,a=function(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(e){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}(t),o=a.getItem().slice(0,r);return{add:function(e){var t=e;t._highlightResult,t._snippetResult;var n=g(t,kn),i=o.findIndex((function(e){return e.objectID===n.objectID}));i>-1&&o.splice(i,1),o.unshift(n),o=o.slice(0,r),a.setItem(o)},remove:function(e){o=o.filter((function(t){return t.objectID!==e.objectID})),a.setItem(o)},getAll:function(){return o}}}function Sn(e){var t,n="algolia-client-js-".concat(e.key);function r(){return void 0===t&&(t=e.localStorage||window.localStorage),t}function a(){return JSON.parse(r().getItem(n)||"{}")}function o(e){r().setItem(n,JSON.stringify(e))}return{get:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var n,r,i;return n=e.timeToLive?1e3*e.timeToLive:null,r=a(),o(i=Object.fromEntries(Object.entries(r).filter((function(e){return void 0!==x(e,2)[1].timestamp})))),n&&o(Object.fromEntries(Object.entries(i).filter((function(e){var t=x(e,2)[1],r=(new Date).getTime();return!(t.timestamp+n2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,n.miss(e)])})).then((function(e){return x(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,r){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return n.get(e,r,a).catch((function(){return En({caches:t}).get(e,r,a)}))},set:function(e,r){return n.set(e,r).catch((function(){return En({caches:t}).set(e,r)}))},delete:function(e){return n.delete(e).catch((function(){return En({caches:t}).delete(e)}))},clear:function(){return n.clear().catch((function(){return En({caches:t}).clear()}))}}}function jn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(n,r){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},o=JSON.stringify(n);if(o in t)return Promise.resolve(e.serializable?JSON.parse(t[o]):t[o]);var i=r();return i.then((function(e){return a.miss(e)})).then((function(){return i}))},set:function(n,r){return t[JSON.stringify(n)]=e.serializable?JSON.stringify(r):r,Promise.resolve(r)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function On(e){var t=e.algoliaAgents,n=e.client,r=e.version,a=function(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var n="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(n)&&(t.value="".concat(t.value).concat(n)),t}};return t}(r).add({segment:n,version:r});return t.forEach((function(e){return a.add(e)})),a}var An=12e4;function Cn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"up",n=Date.now();return b(b({},e),{},{status:t,lastUpdate:n,isUp:function(){return"up"===t||Date.now()-n>An},isTimedOut:function(){return"timed out"===t&&Date.now()-n<=An}})}var Pn=function(){function e(t,n){var r;return c(this,e),u(r=s(this,e,[t]),"name","AlgoliaError"),n&&(r.name=n),r}return f(e,_(Error)),l(e)}(),Tn=function(){function e(t,n,r){var a;return c(this,e),u(a=s(this,e,[t,r]),"stackTrace",void 0),a.stackTrace=n,a}return f(e,Pn),l(e)}(),In=function(){function e(t){return c(this,e),s(this,e,["Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support.",t,"RetryError"])}return f(e,Tn),l(e)}(),Nn=function(){function e(t,n,r){var a,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ApiError";return c(this,e),u(a=s(this,e,[t,r,o]),"status",void 0),a.status=n,a}return f(e,Tn),l(e)}(),Ln=function(){function e(t,n){var r;return c(this,e),u(r=s(this,e,[t,"DeserializationError"]),"response",void 0),r.response=n,r}return f(e,Pn),l(e)}(),Rn=function(){function e(t,n,r,a){var o;return c(this,e),u(o=s(this,e,[t,n,a,"DetailedApiError"]),"error",void 0),o.error=r,o}return f(e,Nn),l(e)}();function Dn(e,t,n){var r,a=(r=n,Object.keys(r).filter((function(e){return void 0!==r[e]})).sort().map((function(e){return"".concat(e,"=").concat(encodeURIComponent("[object Array]"===Object.prototype.toString.call(r[e])?r[e].join(","):r[e]).replace(/\+/g,"%20"))})).join("&")),o="".concat(e.protocol,"://").concat(e.url).concat(e.port?":".concat(e.port):"","/").concat("/"===t.charAt(0)?t.substring(1):t);return a.length&&(o+="?".concat(a)),o}function Mn(e,t){if("GET"!==e.method&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:b(b({},e.data),t.data);return JSON.stringify(n)}}function Fn(e,t,n){var r=b(b(b({Accept:"application/json"},e),t),n),a={};return Object.keys(r).forEach((function(e){var t=r[e];a[e.toLowerCase()]=t})),a}function Bn(e){try{return JSON.parse(e.content)}catch(t){throw new Ln(t.message,e)}}function zn(e,t){var n=e.content,r=e.status;try{var a=JSON.parse(n);return"error"in a?new Rn(a.message,r,a.error,t):new Nn(a.message,r,t)}catch(e){}return new Nn(n,r,t)}function Un(e){return e.map((function(e){return qn(e)}))}function qn(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return b(b({},e),{},{request:b(b({},e.request),{},{headers:b(b({},e.request.headers),t)})})}var $n=["appId","apiKey","authMode","algoliaAgents"],Hn=["params"],Vn="5.12.0";function Wn(e){return[{url:"".concat(e,"-dsn.algolia.net"),accept:"read",protocol:"https"},{url:"".concat(e,".algolia.net"),accept:"write",protocol:"https"}].concat(function(e){for(var t=e,n=e.length-1;n>0;n--){var r=Math.floor(Math.random()*(n+1)),a=e[n];t[n]=e[r],t[r]=a}return t}([{url:"".concat(e,"-1.algolianet.com"),accept:"readWrite",protocol:"https"},{url:"".concat(e,"-2.algolianet.com"),accept:"readWrite",protocol:"https"},{url:"".concat(e,"-3.algolianet.com"),accept:"readWrite",protocol:"https"}]))}var Kn="3.8.0";function Gn(e,t,n){return r.useMemo((function(){var r=function(e,t){if(!e||"string"!=typeof e)throw new Error("`appId` is missing.");if(!t||"string"!=typeof t)throw new Error("`apiKey` is missing.");return function(e){var t=e.appId,n=e.apiKey,r=e.authMode,a=e.algoliaAgents,o=g(e,$n),s=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"WithinHeaders",r={"x-algolia-api-key":t,"x-algolia-application-id":e};return{headers:function(){return"WithinHeaders"===n?r:{}},queryParameters:function(){return"WithinQueryParameters"===n?r:{}}}}(t,n,r),c=function(e){var t=e.hosts,n=e.hostsCache,r=e.baseHeaders,a=e.logger,o=e.baseQueryParameters,s=e.algoliaAgent,c=e.timeouts,l=e.requester,u=e.requestsCache,d=e.responsesCache;function p(e){return f.apply(this,arguments)}function f(){return(f=i(y().mark((function e(t){var r,a,o,i,s;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all(t.map((function(e){return n.get(e,(function(){return Promise.resolve(Cn(e))}))})));case 2:return r=e.sent,a=r.filter((function(e){return e.isUp()})),o=r.filter((function(e){return e.isTimedOut()})),i=[].concat(w(a),w(o)),s=i.length>0?i:t,e.abrupt("return",{hosts:s,getTimeout:function(e,t){return(0===o.length&&0===e?1:o.length+3+e)*t}});case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function m(e,t){return h.apply(this,arguments)}function h(){return h=i(y().mark((function e(u,d){var f,m,h,g,v,x,k,_,S,E,j,O,A,C=arguments;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(f=!(C.length>2&&void 0!==C[2])||C[2],m=[],h=Mn(u,d),g=Fn(r,u.headers,d.headers),v="GET"===u.method?b(b({},u.data),d.data):{},x=b(b(b({},o),u.queryParameters),v),s.value&&(x["x-algolia-agent"]=s.value),d&&d.queryParameters)for(k=0,_=Object.keys(d.queryParameters);k<_.length;k++)S=_[k],d.queryParameters[S]&&"[object Object]"!==Object.prototype.toString.call(d.queryParameters[S])?x[S]=d.queryParameters[S].toString():x[S]=d.queryParameters[S];return E=0,j=function(){var e=i(y().mark((function e(t,r){var o,i,s,p,v,w;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==(o=t.pop())){e.next=3;break}throw new In(Un(m));case 3:return i=b(b({},c),d.timeouts),s={data:h,headers:g,method:u.method,url:Dn(o,u.path,x),connectTimeout:r(E,i.connect),responseTimeout:r(E,f?i.read:i.write)},p=function(e){var n={request:s,response:e,host:o,triesLeft:t.length};return m.push(n),n},e.next=8,l.send(s);case 8:if(k=(y=v=e.sent).isTimedOut,_=y.status,!(k||function(e){return!e.isTimedOut&&!~~e.status}({isTimedOut:k,status:_})||2!=~~(_/100)&&4!=~~(_/100))){e.next=16;break}return w=p(v),v.isTimedOut&&E++,a.info("Retryable failure",qn(w)),e.next=15,n.set(o,Cn(o,v.isTimedOut?"timed out":"down"));case 15:return e.abrupt("return",j(t,r));case 16:if(2!=~~(v.status/100)){e.next=18;break}return e.abrupt("return",Bn(v));case 18:throw p(v),zn(v,m);case 20:case"end":return e.stop()}var y,k,_}),e)})));return function(t,n){return e.apply(this,arguments)}}(),O=t.filter((function(e){return"readWrite"===e.accept||(f?"read"===e.accept:"write"===e.accept)})),e.next=13,p(O);case 13:return A=e.sent,e.abrupt("return",j(w(A.hosts).reverse(),A.getTimeout));case 15:case"end":return e.stop()}}),e)}))),h.apply(this,arguments)}return{hostsCache:n,requester:l,timeouts:c,logger:a,algoliaAgent:s,baseHeaders:r,baseQueryParameters:o,hosts:t,request:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.useReadTransporter||"GET"===e.method;if(!n)return m(e,t,n);var a=function(){return m(e,t)};if(!0!==(t.cacheable||e.cacheable))return a();var i={request:e,requestOptions:t,transporter:{queryParameters:o,headers:r}};return d.get(i,(function(){return u.get(i,(function(){return u.set(i,a()).then((function(e){return Promise.all([u.delete(i),e])}),(function(e){return Promise.all([u.delete(i),Promise.reject(e)])})).then((function(e){var t=x(e,2);return t[0],t[1]}))}))}),{miss:function(e){return d.set(i,e)}})},requestsCache:u,responsesCache:d}}(b(b({hosts:Wn(t)},o),{},{algoliaAgent:On({algoliaAgents:a,client:"Lite",version:Vn}),baseHeaders:b(b({"content-type":"text/plain"},s.headers()),o.baseHeaders),baseQueryParameters:b(b({},s.queryParameters()),o.baseQueryParameters)}));return{transporter:c,appId:t,clearCache:function(){return Promise.all([c.requestsCache.clear(),c.responsesCache.clear()]).then((function(){}))},get _ua(){return c.algoliaAgent.value},addAlgoliaAgent:function(e,t){c.algoliaAgent.add({segment:e,version:t})},setClientApiKey:function(e){var t=e.apiKey;r&&"WithinHeaders"!==r?c.baseQueryParameters["x-algolia-api-key"]=t:c.baseHeaders["x-algolia-api-key"]=t},searchForHits:function(e,t){return this.search(e,t)},searchForFacets:function(e,t){return this.search(e,t)},customPost:function(e,t){var n=e.path,r=e.parameters,a=e.body;if(!n)throw new Error("Parameter `path` is required when calling `customPost`.");var o={method:"POST",path:"/{path}".replace("{path}",n),queryParameters:r||{},headers:{},data:a||{}};return c.request(o,t)},getRecommendations:function(e,t){if(e&&Array.isArray(e)&&(e={requests:e}),!e)throw new Error("Parameter `getRecommendationsParams` is required when calling `getRecommendations`.");if(!e.requests)throw new Error("Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.");var n={method:"POST",path:"/1/indexes/*/recommendations",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return c.request(n,t)},search:function(e,t){if(e&&Array.isArray(e)){var n={requests:e.map((function(e){var t=e.params,n=g(e,Hn);return"facet"===n.type?b(b(b({},n),t),{},{type:"facet"}):b(b(b({},n),t),{},{facet:void 0,maxFacetHits:void 0,facetQuery:void 0})}))};e=n}if(!e)throw new Error("Parameter `searchMethodParams` is required when calling `search`.");if(!e.requests)throw new Error("Parameter `searchMethodParams.requests` is required when calling `search`.");var r={method:"POST",path:"/1/indexes/*/queries",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return c.request(r,t)}}}(b({appId:e,apiKey:t,timeouts:{connect:1e3,read:2e3,write:3e4},logger:{debug:function(e,t){return Promise.resolve()},info:function(e,t){return Promise.resolve()},error:function(e,t){return Promise.resolve()}},requester:{send:function(e){return new Promise((function(t){var n=new XMLHttpRequest;n.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return n.setRequestHeader(t,e.headers[t])}));var r,a=function(e,r){return setTimeout((function(){n.abort(),t({status:0,content:r,isTimedOut:!0})}),e)},o=a(e.connectTimeout,"Connection timeout");n.onreadystatechange=function(){n.readyState>n.OPENED&&void 0===r&&(clearTimeout(o),r=a(e.responseTimeout,"Socket timeout"))},n.onerror=function(){0===n.status&&(clearTimeout(o),clearTimeout(r),t({content:n.responseText||"Network request failed",status:n.status,isTimedOut:!1}))},n.onload=function(){clearTimeout(o),clearTimeout(r),t({content:n.responseText,status:n.status,isTimedOut:!1})},n.send(e.data)}))}},algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:jn(),requestsCache:jn({serializable:!1}),hostsCache:En({caches:[Sn({key:"".concat(Vn,"-").concat(e)}),jn()]})},void 0))}(e,t);return r.addAlgoliaAgent("docsearch",Kn),!1===/docsearch.js \(.*\)/.test(r.transporter.algoliaAgent.value)&&r.addAlgoliaAgent("docsearch-react",Kn),n(r)}),[e,t,n])}var Qn=["footer","searchBox"];function Yn(e){var t=e.appId,n=e.apiKey,a=e.indexName,o=e.placeholder,i=void 0===o?"Search docs":o,s=e.searchParameters,c=e.maxResultsPerGroup,l=e.onClose,u=void 0===l?dn:l,p=e.transformItems,f=void 0===p?ln:p,m=e.hitComponent,h=void 0===m?Ut:m,y=e.resultsFooterComponent,v=void 0===y?function(){return null}:y,w=e.navigator,k=e.initialScrollY,_=void 0===k?0:k,S=e.transformSearchClient,E=void 0===S?ln:S,j=e.disableUserPersonalization,O=void 0!==j&&j,A=e.initialQuery,C=void 0===A?"":A,P=e.translations,T=void 0===P?{}:P,I=e.getMissingResultsUrl,N=e.insights,L=void 0!==N&&N,R=T.footer,D=T.searchBox,M=g(T,Qn),F=x(r.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),B=F[0],z=F[1],U=r.useRef(null),q=r.useRef(null),$=r.useRef(null),H=r.useRef(null),V=r.useRef(null),W=r.useRef(10),K=r.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,64):"").current,G=r.useRef(C||K).current,Q=Gn(t,n,E),Y=r.useRef(_n({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(a),limit:10})).current,Z=r.useRef(_n({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(a),limit:0===Y.getAll().length?7:4})).current,X=r.useCallback((function(e){if(!O){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===Y.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&Z.add(t)}}),[Y,Z,O]),J=r.useCallback((function(e){if(B.context.algoliaInsightsPlugin&&e.__autocomplete_id){var t=e,n={eventName:"Item Selected",index:t.__autocomplete_indexName,items:[t],positions:[e.__autocomplete_id],queryID:t.__autocomplete_queryID};B.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(n)}}),[B.context.algoliaInsightsPlugin]),ee=r.useMemo((function(){return Mt({id:"docsearch",defaultActiveItemId:0,placeholder:i,openOnFocus:!0,initialState:{query:G,context:{searchSuggestions:[]}},insights:L,navigator:w,onStateChange:function(e){z(e.state)},getSources:function(e){var r=e.query,o=e.state,i=e.setContext,l=e.setStatus;if(!r)return O?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,n=e.event;X(t),un(n)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return Z.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,n=e.event;X(t),un(n)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return Y.getAll()}}];var d=Boolean(L);return Q.search({requests:[b({query:r,indexName:a,attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(W.current),"hierarchy.lvl2:".concat(W.current),"hierarchy.lvl3:".concat(W.current),"hierarchy.lvl4:".concat(W.current),"hierarchy.lvl5:".concat(W.current),"hierarchy.lvl6:".concat(W.current),"content:".concat(W.current)],snippetEllipsisText:"\u2026",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20,clickAnalytics:d},s)]}).catch((function(e){throw"RetryError"===e.name&&l("error"),e})).then((function(e){var r=e.results[0],s=r.hits,l=r.nbHits,p=cn(s,(function(e){return mn(e)}),c);o.context.searchSuggestions.length0&&(re(),V.current&&V.current.focus())}),[G,re]),r.useEffect((function(){function e(){if(q.current){var e=.01*window.innerHeight;q.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),r.createElement("div",d({ref:U},ne({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===B.status&&"DocSearch-Container--Stalled","error"===B.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&u()}}),r.createElement("div",{className:"DocSearch-Modal",ref:q},r.createElement("header",{className:"DocSearch-SearchBar",ref:$},r.createElement(wn,d({},ee,{state:B,autoFocus:0===G.length,inputRef:V,isFromSelection:Boolean(G)&&G===K,translations:D,onClose:u}))),r.createElement("div",{className:"DocSearch-Dropdown",ref:H},r.createElement(vn,d({},ee,{indexName:a,state:B,hitComponent:h,resultsFooterComponent:v,disableUserPersonalization:O,recentSearches:Z,favoriteSearches:Y,inputRef:V,translations:M,getMissingResultsUrl:I,onItemClick:function(e,t){J(e),X(e),un(t)||u()}}))),r.createElement("footer",{className:"DocSearch-Footer"},r.createElement(zt,{translations:R}))))}function Zn(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;if("Escape"===e.code&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)return e.preventDefault(),void(t?a():document.body.classList.contains("DocSearch--active")||n());i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(96540),a=n(74848),o=r.createContext(!1);function i(e){var t=e.children,n=(0,r.useState)(!1),i=n[0],s=n[1];return(0,r.useEffect)((function(){s(!0)}),[]),(0,a.jsx)(o.Provider,{value:i,children:t})}},81316:(e,t,n)=>{"use strict";var r=n(96540),a=n(5338),o=n(80545),i=n(54625),s=n(85290),c=n(38193);const l=[n(10119),n(26134),n(76294),n(35697),n(74100),n(95728)];var u=n(97671),d=n(56347),p=n(22831),f=n(74848);function m(e){var t=e.children;return(0,f.jsx)(f.Fragment,{children:t})}var h=n(5260),b=n(44586),g=n(86025),y=n(6342),v=n(69024),x=n(32131),w=n(14090),k=n(2967),_=n(70440),S=n(41463);function E(){var e=(0,b.A)().i18n,t=e.currentLocale,n=e.defaultLocale,r=e.localeConfigs,a=(0,x.o)(),o=r[t].htmlLang,i=function(e){return e.replace("-","_")};return(0,f.jsxs)(h.A,{children:[Object.entries(r).map((function(e){var t=e[0],n=e[1].htmlLang;return(0,f.jsx)("link",{rel:"alternate",href:a.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:a.createUrl({locale:n,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:i(o)}),Object.values(r).filter((function(e){return o!==e.htmlLang})).map((function(e){return(0,f.jsx)("meta",{property:"og:locale:alternate",content:i(e.htmlLang)},"meta-og-"+e.htmlLang)}))]})}function j(e){var t=e.permalink,n=(0,b.A)().siteConfig.url,r=function(){var e=(0,b.A)().siteConfig,t=e.url,n=e.baseUrl,r=e.trailingSlash,a=(0,d.zy)().pathname;return t+(0,_.Ks)((0,g.Ay)(a),{trailingSlash:r,baseUrl:n})}(),a=t?""+n+t:r;return(0,f.jsxs)(h.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function O(){var e=(0,b.A)().i18n.currentLocale,t=(0,y.p)(),n=t.metadata,r=t.image;return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(h.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:w.w})]}),r&&(0,f.jsx)(v.be,{image:r}),(0,f.jsx)(j,{}),(0,f.jsx)(E,{}),(0,f.jsx)(S.A,{tag:k.C,locale:e}),(0,f.jsx)(h.A,{children:n.map((function(e,t){return(0,f.jsx)("meta",Object.assign({},e),t)}))})]})}var A=new Map;var C=n(6125),P=n(73348),T=n(77387),I=n(205);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r\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(/{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(96540),a=n(85290);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"general/getting-started","docs":[{"id":"build/build-client-side","path":"/docs/build-client-side","sidebar":"docs"},{"id":"build/build-dapp","path":"/docs/build-dapp"},{"id":"build/build-data","path":"/docs/build-data","sidebar":"docs"},{"id":"build/build-guide","path":"/docs/build-guide","sidebar":"docs"},{"id":"build/build-guides-coretime-start","path":"/docs/build-guides-coretime-start","sidebar":"docs"},{"id":"build/build-guides-coretime-troubleshoot","path":"/docs/build-guides-coretime-troubleshoot","sidebar":"docs"},{"id":"build/build-guides-install-deps","path":"/docs/build-guides-install-deps","sidebar":"docs"},{"id":"build/build-guides-template-basic","path":"/docs/build-guides-template-basic","sidebar":"docs"},{"id":"build/build-hackathon","path":"/docs/build-hackathon","sidebar":"docs"},{"id":"build/build-hrmp-channels","path":"/docs/build-hrmp-channels","sidebar":"docs"},{"id":"build/build-index","path":"/docs/build-index"},{"id":"build/build-integrate-assets","path":"/docs/build-integrate-assets","sidebar":"docs"},{"id":"build/build-integration","path":"/docs/build-integration","sidebar":"docs"},{"id":"build/build-light-clients","path":"/docs/build-light-clients","sidebar":"docs"},{"id":"build/build-network-overview","path":"/docs/build-network-overview","sidebar":"docs"},{"id":"build/build-node-interaction","path":"/docs/build-node-interaction","sidebar":"docs"},{"id":"build/build-node-management","path":"/docs/build-node-management","sidebar":"docs"},{"id":"build/build-open-source","path":"/docs/build-open-source","sidebar":"docs"},{"id":"build/build-oracle","path":"/docs/build-oracle"},{"id":"build/build-parachains","path":"/docs/build-pdk","sidebar":"docs"},{"id":"build/build-protocol-info","path":"/docs/build-protocol-info","sidebar":"docs"},{"id":"build/build-smart-contracts","path":"/docs/build-smart-contracts","sidebar":"docs"},{"id":"build/build-storage","path":"/docs/build-storage"},{"id":"build/build-tools-index","path":"/docs/build-tools-index","sidebar":"docs"},{"id":"build/build-transaction-construction","path":"/docs/build-transaction-construction","sidebar":"docs"},{"id":"general/alpha-program","path":"/docs/alpha-program","sidebar":"docs"},{"id":"general/ambassadors","path":"/docs/ambassadors","sidebar":"docs"},{"id":"general/bug-bounty","path":"/docs/bug-bounty","sidebar":"docs"},{"id":"general/chain-state-values","path":"/docs/chain-state-values","sidebar":"docs"},{"id":"general/community","path":"/docs/community","sidebar":"docs"},{"id":"general/contributing","path":"/docs/contributing","sidebar":"docs"},{"id":"general/contributors","path":"/docs/contributors","sidebar":"docs"},{"id":"general/decentralized-futures","path":"/docs/decentralized-futures","sidebar":"docs"},{"id":"general/decentralized-voices","path":"/docs/decentralized-voices","sidebar":"docs"},{"id":"general/dev-heroes","path":"/docs/dev-heroes","sidebar":"docs"},{"id":"general/doc-thousand-contributors","path":"/docs/thousand-contributors","sidebar":"docs"},{"id":"general/dune-analytics/dunesql-cheatsheet","path":"/docs/general/dunesql-cheatsheet","sidebar":"docs"},{"id":"general/dune-analytics/onboarding-status-and-key-dashboards","path":"/docs/general/onboarding-status-and-key-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/acala-dashboards","path":"/docs/general/dune-analytics/acala-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/assethub-dashboards","path":"/docs/general/dune-analytics/assethub-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/astar-dashboards","path":"/docs/general/dune-analytics/astar-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/bifrost-dashboards","path":"/docs/general/dune-analytics/bifrost-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/bridgehub-dashboards","path":"/docs/general/dune-analytics/bridgehub-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/centrifuge-dashboards","path":"/docs/general/dune-analytics/centrifuge-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/collectives-dashboards","path":"/docs/general/dune-analytics/collectives-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/coretime-dashboards","path":"/docs/general/dune-analytics/coretime-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/energywebx-dashboards","path":"/docs/general/dune-analytics/energywebx-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/frequency-dashboards","path":"/docs/general/dune-analytics/frequency-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/hydration-dashboards","path":"/docs/general/dune-analytics/hydration-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/interlay-dashboards","path":"/docs/general/dune-analytics/interlay-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/invarch-dashboards","path":"/docs/general/dune-analytics/invarch-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/litentry-dashboards","path":"/docs/general/dune-analytics/litentry-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/manta-dashboards","path":"/docs/general/dune-analytics/manta-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/moonbeam-dashboards","path":"/docs/general/dune-analytics/moonbeam-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/neuroweb-dashboards","path":"/docs/general/dune-analytics/neuroweb-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/nodle-dashboards","path":"/docs/general/dune-analytics/nodle-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/pendulum-dashboards","path":"/docs/general/dune-analytics/pendulum-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/people-dashboards","path":"/docs/general/dune-analytics/people-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/phala-dashboards","path":"/docs/general/dune-analytics/phala-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/polimec-dashboards","path":"/docs/general/dune-analytics/polimec-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/polkadex-dashboards","path":"/docs/general/dune-analytics/polkadex-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/snowbridge-dashboards","path":"/docs/general/dune-analytics/snowbridge-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/stellaswap-dashboards","path":"/docs/general/dune-analytics/stellaswap-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/unique-dashboards","path":"/docs/general/dune-analytics/unique-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-dot-ordinals","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-governance-dashboard","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-opengov-referenda-home","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-opengov-referendum-voting-analysis","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-nomination-pool","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-nominators","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-pool-member","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-validators","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-governance","path":"/docs/general/dune-analytics/polkadot-dashboards-governance","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-network","path":"/docs/general/dune-analytics/polkadot-dashboards-network","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-overview","path":"/docs/general/dune-analytics/polkadot-dashboards-overview","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-staking","path":"/docs/general/dune-analytics/polkadot-dashboards-staking","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-ecosystem-overview","path":"/docs/general/polkadot-ecosystem-overview","sidebar":"docs"},{"id":"general/dune-analytics/project-dashboards","path":"/docs/general/project-dashboards","sidebar":"docs"},{"id":"general/ecosystem-funds","path":"/docs/ecosystem-funds","sidebar":"docs"},{"id":"general/faq","path":"/docs/faq","sidebar":"docs"},{"id":"general/funding","path":"/docs/funding","sidebar":"docs"},{"id":"general/getting-started","path":"/docs/getting-started","sidebar":"docs"},{"id":"general/glossary","path":"/docs/glossary","sidebar":"docs"},{"id":"general/governance-apps","path":"/docs/governance-apps","sidebar":"docs"},{"id":"general/grants","path":"/docs/grants","sidebar":"docs"},{"id":"general/how-to-dyor","path":"/docs/how-to-dyor","sidebar":"docs"},{"id":"general/kusama/kusama-adversarial-cheatsheet","path":"/docs/kusama-adversarial-cheatsheet","sidebar":"docs"},{"id":"general/kusama/kusama-bug-bounty","path":"/docs/kusama-bug-bounty","sidebar":"docs"},{"id":"general/kusama/kusama-coc","path":"/docs/kusama-coc","sidebar":"docs"},{"id":"general/kusama/kusama-getting-started","path":"/docs/kusama-getting-started","sidebar":"docs"},{"id":"general/kusama/kusama-social-recovery","path":"/docs/kusama-social-recovery","sidebar":"docs"},{"id":"general/kusama/kusama-timeline","path":"/docs/kusama-timeline","sidebar":"docs"},{"id":"general/ledger","path":"/docs/ledger","sidebar":"docs"},{"id":"general/metadata","path":"/docs/metadata","sidebar":"docs"},{"id":"general/multisig-apps","path":"/docs/multisig-apps","sidebar":"docs"},{"id":"general/parachains-apps","path":"/docs/parachains-apps","sidebar":"docs"},{"id":"general/parity-data-dashboards","path":"/docs/parity-data-dashboards","sidebar":"docs"},{"id":"general/polkadot-community-foundation","path":"/docs/polkadot-community-foundation","sidebar":"docs"},{"id":"general/polkadot-direction","path":"/docs/polkadot-direction","sidebar":"docs"},{"id":"general/polkadot-v1","path":"/docs/polkadot-v1","sidebar":"docs"},{"id":"general/polkadot-vault","path":"/docs/polkadot-vault","sidebar":"docs"},{"id":"general/polkadotjs","path":"/docs/polkadotjs","sidebar":"docs"},{"id":"general/polkadotjs-ui","path":"/docs/polkadotjs-ui","sidebar":"docs"},{"id":"general/scams","path":"/docs/learn-scams","sidebar":"docs"},{"id":"general/staking-apps","path":"/docs/staking-apps","sidebar":"docs"},{"id":"general/staking-dashboard","path":"/docs/staking-dashboard","sidebar":"docs"},{"id":"general/start-building","path":"/docs/start-building","sidebar":"docs"},{"id":"general/transaction-attacks","path":"/docs/transaction-attacks","sidebar":"docs"},{"id":"general/wallets-and-extensions","path":"/docs/wallets-and-extensions","sidebar":"docs"},{"id":"general/web3-and-polkadot","path":"/docs/web3-and-polkadot","sidebar":"docs"},{"id":"learn/archive/learn-auction","path":"/docs/learn/learn-auction","sidebar":"docs"},{"id":"learn/archive/learn-controller","path":"/docs/learn/learn-controller","sidebar":"docs"},{"id":"learn/archive/learn-crowdloans","path":"/docs/learn/learn-crowdloans","sidebar":"docs"},{"id":"learn/archive/learn-governance","path":"/docs/learn/learn-governance","sidebar":"docs"},{"id":"learn/archive/learn-launch","path":"/docs/learn/learn-launch","sidebar":"docs"},{"id":"learn/archive/learn-redenomination","path":"/docs/learn/learn-redenomination","sidebar":"docs"},{"id":"learn/archive/learn-treasury","path":"/docs/learn/learn-treasury","sidebar":"docs"},{"id":"learn/archive/thousand-validators","path":"/docs/learn/thousand-validators","sidebar":"docs"},{"id":"learn/learn-account-abstraction","path":"/docs/learn-account-abstraction","sidebar":"docs"},{"id":"learn/learn-account-advanced","path":"/docs/learn-account-advanced","sidebar":"docs"},{"id":"learn/learn-account-balances","path":"/docs/learn-account-balances","sidebar":"docs"},{"id":"learn/learn-account-multisig","path":"/docs/learn-account-multisig","sidebar":"docs"},{"id":"learn/learn-accounts","path":"/docs/learn-accounts","sidebar":"docs"},{"id":"learn/learn-agile-coretime","path":"/docs/learn-agile-coretime","sidebar":"docs"},{"id":"learn/learn-architecture","path":"/docs/learn-architecture","sidebar":"docs"},{"id":"learn/learn-archive","path":"/docs/learn-archive","sidebar":"docs"},{"id":"learn/learn-asset-conversion-assethub","path":"/docs/learn-asset-conversion-assethub","sidebar":"docs"},{"id":"learn/learn-assets","path":"/docs/learn-assets","sidebar":"docs"},{"id":"learn/learn-async-backing","path":"/docs/learn-async-backing","sidebar":"docs"},{"id":"learn/learn-bridges","path":"/docs/learn-bridges","sidebar":"docs"},{"id":"learn/learn-collator","path":"/docs/learn-collator","sidebar":"docs"},{"id":"learn/learn-comparisons","path":"/docs/learn-comparisons","sidebar":"docs"},{"id":"learn/learn-comparisons-avalanche","path":"/docs/learn-comparisons-avalanche","sidebar":"docs"},{"id":"learn/learn-comparisons-cosmos","path":"/docs/learn-comparisons-cosmos","sidebar":"docs"},{"id":"learn/learn-comparisons-ethereum-2","path":"/docs/learn-comparisons-ethereum-2","sidebar":"docs"},{"id":"learn/learn-comparisons-kusama","path":"/docs/learn-comparisons-kusama","sidebar":"docs"},{"id":"learn/learn-comparisons-rollups","path":"/docs/learn-comparisons-rollups","sidebar":"docs"},{"id":"learn/learn-consensus","path":"/docs/learn-consensus","sidebar":"docs"},{"id":"learn/learn-cryptography","path":"/docs/learn-cryptography","sidebar":"docs"},{"id":"learn/learn-DOT","path":"/docs/learn-DOT","sidebar":"docs"},{"id":"learn/learn-dot-ksm-bridge","path":"/docs/learn-dot-ksm-bridge","sidebar":"docs"},{"id":"learn/learn-elastic-scaling","path":"/docs/learn-elastic-scaling","sidebar":"docs"},{"id":"learn/learn-guides-accounts","path":"/docs/learn-guides-accounts","sidebar":"docs"},{"id":"learn/learn-guides-accounts-multisig","path":"/docs/learn-guides-accounts-multisig","sidebar":"docs"},{"id":"learn/learn-guides-accounts-proxy","path":"/docs/learn-guides-accounts-proxy","sidebar":"docs"},{"id":"learn/learn-guides-accounts-proxy-pure","path":"/docs/learn-guides-accounts-proxy-pure","sidebar":"docs"},{"id":"learn/learn-guides-asset-conversion","path":"/docs/learn-guides-asset-conversion","sidebar":"docs"},{"id":"learn/learn-guides-assets","path":"/docs/learn-guides-assets","sidebar":"docs"},{"id":"learn/learn-guides-assets-create","path":"/docs/learn-guides-assets-create","sidebar":"docs"},{"id":"learn/learn-guides-bounties","path":"/docs/learn-guides-bounties","sidebar":"docs"},{"id":"learn/learn-guides-bridges","path":"/docs/learn-guides-bridges","sidebar":"docs"},{"id":"learn/learn-guides-claims","path":"/docs/learn-guides-claims","sidebar":"docs"},{"id":"learn/learn-guides-coretime-marketplaces","path":"/docs/learn-guides-coretime-marketplaces","sidebar":"docs"},{"id":"learn/learn-guides-coretime-parachains","path":"/docs/learn-guides-coretime-parachains","sidebar":"docs"},{"id":"learn/learn-guides-coretime-swap","path":"/docs/learn-guides-coretime-swap","sidebar":"docs"},{"id":"learn/learn-guides-dot-ksm-bridge","path":"/docs/learn-guides-dot-ksm-bridge","sidebar":"docs"},{"id":"learn/learn-guides-identity","path":"/docs/learn-guides-identity","sidebar":"docs"},{"id":"learn/learn-guides-ledger","path":"/docs/learn-guides-ledger","sidebar":"docs"},{"id":"learn/learn-guides-nominator","path":"/docs/learn-guides-nominator","sidebar":"docs"},{"id":"learn/learn-guides-polkadot-opengov","path":"/docs/learn-guides-polkadot-opengov","sidebar":"docs"},{"id":"learn/learn-guides-staking","path":"/docs/learn-guides-staking","sidebar":"docs"},{"id":"learn/learn-guides-staking-pools","path":"/docs/learn-guides-staking-pools","sidebar":"docs"},{"id":"learn/learn-guides-test-opengov-proposals","path":"/docs/learn-guides-test-opengov-proposals","sidebar":"docs"},{"id":"learn/learn-guides-transfers","path":"/docs/learn-guides-transfers","sidebar":"docs"},{"id":"learn/learn-guides-treasury","path":"/docs/learn-guides-treasury","sidebar":"docs"},{"id":"learn/learn-guides-vault","path":"/docs/learn-guides-vault","sidebar":"docs"},{"id":"learn/learn-hyperbridge","path":"/docs/learn-hyperbridge","sidebar":"docs"},{"id":"learn/learn-identity","path":"/docs/learn-identity","sidebar":"docs"},{"id":"learn/learn-implementations","path":"/docs/learn-implementations"},{"id":"learn/learn-inflation","path":"/docs/learn-inflation","sidebar":"docs"},{"id":"learn/learn-jam-chain","path":"/docs/learn-jam-chain","sidebar":"docs"},{"id":"learn/learn-jam-faq","path":"/docs/learn-jam-faq","sidebar":"docs"},{"id":"learn/learn-kusama-inflation","path":"/docs/learn-kusama-inflation","sidebar":"docs"},{"id":"learn/learn-nft","path":"/docs/learn-nft","sidebar":"docs"},{"id":"learn/learn-nft-pallets","path":"/docs/learn-nft-pallets","sidebar":"docs"},{"id":"learn/learn-nft-projects","path":"/docs/learn-nft-projects","sidebar":"docs"},{"id":"learn/learn-nomination-pools","path":"/docs/learn-nomination-pools","sidebar":"docs"},{"id":"learn/learn-nominator","path":"/docs/learn-nominator","sidebar":"docs"},{"id":"learn/learn-offenses","path":"/docs/learn-offenses","sidebar":"docs"},{"id":"learn/learn-parachains","path":"/docs/learn-parachains","sidebar":"docs"},{"id":"learn/learn-parachains-faq","path":"/docs/learn-parachains-faq","sidebar":"docs"},{"id":"learn/learn-parachains-protocol","path":"/docs/learn-parachains-protocol","sidebar":"docs"},{"id":"learn/learn-phragmen","path":"/docs/learn-phragmen","sidebar":"docs"},{"id":"learn/learn-polkadot-host","path":"/docs/learn-polkadot-host","sidebar":"docs"},{"id":"learn/learn-polkadot-js-guides","path":"/docs/learn-polkadot-js-guides","sidebar":"docs"},{"id":"learn/learn-polkadot-opengov","path":"/docs/learn-polkadot-opengov","sidebar":"docs"},{"id":"learn/learn-polkadot-opengov-origins","path":"/docs/learn-polkadot-opengov-origins","sidebar":"docs"},{"id":"learn/learn-polkadot-opengov-treasury","path":"/docs/learn-polkadot-opengov-treasury","sidebar":"docs"},{"id":"learn/learn-polkadot-technical-fellowship","path":"/docs/learn-polkadot-technical-fellowship","sidebar":"docs"},{"id":"learn/learn-polkadotjs","path":"/docs/learn-polkadotjs","sidebar":"docs"},{"id":"learn/learn-proxies","path":"/docs/learn-proxies","sidebar":"docs"},{"id":"learn/learn-proxies-pure","path":"/docs/learn-proxies-pure","sidebar":"docs"},{"id":"learn/learn-runtime-upgrades","path":"/docs/learn-runtime-upgrades","sidebar":"docs"},{"id":"learn/learn-safrole","path":"/docs/learn-safrole","sidebar":"docs"},{"id":"learn/learn-snowbridge","path":"/docs/learn-snowbridge","sidebar":"docs"},{"id":"learn/learn-spree","path":"/docs/learn-spree","sidebar":"docs"},{"id":"learn/learn-staking","path":"/docs/learn-staking","sidebar":"docs"},{"id":"learn/learn-staking-advanced","path":"/docs/learn-staking-advanced","sidebar":"docs"},{"id":"learn/learn-system-chains","path":"/docs/learn-system-chains","sidebar":"docs"},{"id":"learn/learn-teleport","path":"/docs/learn-teleport","sidebar":"docs"},{"id":"learn/learn-transactions","path":"/docs/learn-transactions","sidebar":"docs"},{"id":"learn/learn-validator","path":"/docs/learn-validator","sidebar":"docs"},{"id":"learn/learn-video-tutorials","path":"/docs/learn-video-tutorials","sidebar":"docs"},{"id":"learn/learn-wasm","path":"/docs/learn-wasm","sidebar":"docs"},{"id":"learn/learn-xcm","path":"/docs/learn-xcm","sidebar":"docs"},{"id":"learn/learn-xcm-instructions","path":"/docs/learn-xcm-instructions","sidebar":"docs"},{"id":"learn/learn-xcm-pallet","path":"/docs/learn-xcm-pallet","sidebar":"docs"},{"id":"learn/learn-xcm-transport","path":"/docs/learn-xcm-transport","sidebar":"docs"},{"id":"learn/learn-xcm-usecases","path":"/docs/learn-xcm-usecases","sidebar":"docs"},{"id":"learn/learn-xcvm","path":"/docs/learn-xcvm","sidebar":"docs"},{"id":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive","path":"/docs/learn/xcm/config-deep-dive","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees","path":"/docs/learn/xcm/fundamentals-fees","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset","path":"/docs/learn/xcm/fundamentals-multiasset","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary","path":"/docs/learn/xcm/fundamentals-summary","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm","path":"/docs/learn/xcm/fundamentals-xcvm","sidebar":"docs"},{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example","path":"/docs/learn/xcm/fundamentals/multilocation-example","sidebar":"docs"},{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions","path":"/docs/learn/xcm/fundamentals/multilocation-junctions","sidebar":"docs"},{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary","path":"/docs/learn/xcm/fundamentals/multilocation-summary","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-assets","path":"/docs/learn/xcm/journey-assets","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-channels","path":"/docs/learn/xcm/journey-channels","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-expectations","path":"/docs/learn/xcm/journey-expectations","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-fees","path":"/docs/learn/xcm/journey-fees","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-holding","path":"/docs/learn/xcm/journey-holding","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-origin","path":"/docs/learn/xcm/journey-origin","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-queries","path":"/docs/learn/xcm/journey-queries","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-register","path":"/docs/learn/xcm/journey-register","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-summary","path":"/docs/learn/xcm/journey-summary","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-transact","path":"/docs/learn/xcm/journey-transact","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-version","path":"/docs/learn/xcm/journey-version","sidebar":"docs"},{"id":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks","path":"/docs/learn/xcm/journey-locks","sidebar":"docs"},{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve","path":"/docs/learn/xcm/journey/transfers-reserve","sidebar":"docs"},{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary","path":"/docs/learn/xcm/journey/transfers-summary","sidebar":"docs"},{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport","path":"/docs/learn/xcm/journey/transfers-teleport","sidebar":"docs"},{"id":"learn/xcm/learn-xcm-docs-intro","path":"/docs/learn/xcm/introduction","sidebar":"docs"},{"id":"learn/xcm/learn-xcm-docs-testing","path":"/docs/learn/xcm/testing","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-architecture","path":"/docs/learn/xcm/overview-architecture","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-format","path":"/docs/learn/xcm/overview-format","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-intro","path":"/docs/learn/xcm/overview-intro","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-summary","path":"/docs/learn/xcm/overview-summary","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-xcvm","path":"/docs/learn/xcm/overview-xcvm","sidebar":"docs"},{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look","path":"/docs/learn/xcm/quickstart-first-look","sidebar":"docs"},{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator","path":"/docs/learn/xcm/quickstart-simulator","sidebar":"docs"},{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary","path":"/docs/learn/xcm/quickstart-summary","sidebar":"docs"},{"id":"learn/xcm/reference/learn-xcm-docs-reference-glossary","path":"/docs/learn/xcm/reference-glossary","sidebar":"docs"},{"id":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers","path":"/docs/learn/xcm/reference-xcvm-registers","sidebar":"docs"},{"id":"maintain/archive/maintain-guides-democracy","path":"/docs/maintain/maintain-guides-democracy","sidebar":"docs"},{"id":"maintain/archive/maintain-guides-how-to-join-council","path":"/docs/maintain/maintain-guides-how-to-join-council","sidebar":"docs"},{"id":"maintain/archive/maintain-guides-how-to-vote-councillor","path":"/docs/maintain/maintain-guides-how-to-vote-councillor","sidebar":"docs"},{"id":"maintain/doc-maintain-guides-validator-community","path":"/docs/maintain-guides-validator-community","sidebar":"docs"},{"id":"maintain/kusama/maintain-guides-how-to-validate-kusama","path":"/docs/maintain-guides-how-to-validate-kusama","sidebar":"docs"},{"id":"maintain/kusama/maintain-guides-society-kusama","path":"/docs/maintain-guides-society-kusama","sidebar":"docs"},{"id":"maintain/maintain-archive","path":"/docs/maintain-archive","sidebar":"docs"},{"id":"maintain/maintain-bootnode","path":"/docs/maintain-bootnode","sidebar":"docs"},{"id":"maintain/maintain-endpoints","path":"/docs/maintain-endpoints","sidebar":"docs"},{"id":"maintain/maintain-errors","path":"/docs/maintain-errors","sidebar":"docs"},{"id":"maintain/maintain-guides-async-backing","path":"/docs/maintain-guides-async-backing","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-chill","path":"/docs/maintain-guides-how-to-chill","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-monitor-your-node","path":"/docs/maintain-guides-how-to-monitor-your-node","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-stop-validating","path":"/docs/maintain-guides-how-to-stop-validating","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-systemd","path":"/docs/maintain-guides-how-to-systemd","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-upgrade","path":"/docs/maintain-guides-how-to-upgrade","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-validate-polkadot","path":"/docs/maintain-guides-how-to-validate-polkadot","sidebar":"docs"},{"id":"maintain/maintain-guides-secure-validator","path":"/docs/maintain-guides-secure-validator","sidebar":"docs"},{"id":"maintain/maintain-guides-validator-payout","path":"/docs/maintain-guides-validator-payout","sidebar":"docs"},{"id":"maintain/maintain-index","path":"/docs/maintain-index","sidebar":"docs"},{"id":"maintain/maintain-networks","path":"/docs/maintain-networks","sidebar":"docs"},{"id":"maintain/maintain-polkadot-parameters","path":"/docs/maintain-polkadot-parameters","sidebar":"docs"},{"id":"maintain/maintain-rpc","path":"/docs/maintain-rpc","sidebar":"docs"},{"id":"maintain/maintain-sync","path":"/docs/maintain-sync","sidebar":"docs"},{"id":"maintain/maintain-wss","path":"/docs/maintain-wss","sidebar":"docs"},{"id":"/explore-index","path":"/docs/explore-index","sidebar":"docs"},{"id":"/wallets-index","path":"/docs/wallets-index","sidebar":"docs"},{"id":"/apps-index","path":"/docs/apps-index","sidebar":"docs"},{"id":"/dashboards-index","path":"/docs/dashboards-index","sidebar":"docs"},{"id":"general/dune-analytics","path":"/docs/general/dune-analytics","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-dashboards","path":"/docs/general/dune-analytics/polkadot-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards","path":"/docs/general/dune-analytics/parachain-dashboards","sidebar":"docs"},{"id":"/community-index","path":"/docs/community-index","sidebar":"docs"},{"id":"/programs-index","path":"/docs/programs-index","sidebar":"docs"},{"id":"/learn-index","path":"/docs/learn-index","sidebar":"docs"},{"id":"/general-index","path":"/docs/general-index","sidebar":"docs"},{"id":"/polkadot-vision-index","path":"/docs/polkadot-vision-index","sidebar":"docs"},{"id":"/stay-safe-index","path":"/docs/stay-safe-index","sidebar":"docs"},{"id":"/learn-basics-index","path":"/docs/learn-basics-index","sidebar":"docs"},{"id":"/learn-staking-index","path":"/docs/learn-staking-index","sidebar":"docs"},{"id":"/learn-polkadot-opengov-index","path":"/docs/learn-polkadot-opengov-index","sidebar":"docs"},{"id":"/learn-assets-index","path":"/docs/learn-assets-index","sidebar":"docs"},{"id":"/learn-participants-index","path":"/docs/learn-participants-index","sidebar":"docs"},{"id":"/learn-components-index","path":"/docs/learn-components-index","sidebar":"docs"},{"id":"/learn-advanced-index","path":"/docs/learn-advanced-index","sidebar":"docs"},{"id":"/learn-parachains-index","path":"/docs/learn-parachains-index","sidebar":"docs"},{"id":"/learn-xcm-index","path":"/docs/learn-xcm-index","sidebar":"docs"},{"id":"learn/xcm","path":"/docs/learn/xcm","sidebar":"docs"},{"id":"/learn/xcm/overview","path":"/docs/learn/xcm/overview","sidebar":"docs"},{"id":"/learn/xcm/quickstart","path":"/docs/learn/xcm/quickstart","sidebar":"docs"},{"id":"/learn/xcm/fundamentals","path":"/docs/learn/xcm/fundamentals","sidebar":"docs"},{"id":"/learn/xcm/fundamentals/multilocation","path":"/docs/learn/xcm/fundamentals/multilocation","sidebar":"docs"},{"id":"/learn/xcm/journey","path":"/docs/learn/xcm/journey","sidebar":"docs"},{"id":"/learn/xcm/journey/transfers","path":"/docs/learn/xcm/journey/transfers","sidebar":"docs"},{"id":"/learn/xcm/references","path":"/docs/learn/xcm/references","sidebar":"docs"},{"id":"/learn-comparisons-index","path":"/docs/learn-comparisons-index","sidebar":"docs"},{"id":"/learn-future-implementations-index","path":"/docs/learn-future-implementations-index","sidebar":"docs"},{"id":"/learn-jam","path":"/docs/learn-jam","sidebar":"docs"},{"id":"/build-client-index","path":"/docs/build-client-index","sidebar":"docs"},{"id":"/build-protocol-index","path":"/docs/build-protocol-index","sidebar":"docs"},{"id":"/build-archive-index","path":"/docs/build-archive-index","sidebar":"docs"},{"id":"/maintain-node-index","path":"/docs/maintain-node-index","sidebar":"docs"},{"id":"/maintain-collator-index","path":"/docs/maintain-collator-index","sidebar":"docs"},{"id":"/maintain-validator-index","path":"/docs/maintain-validator-index","sidebar":"docs"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/docs/explore-index","label":"Explore"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(59940);const c=JSON.parse('{"docusaurusVersion":"3.6.3","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.6.3"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.6.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.6.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.6.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.6.3"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.6.3"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.6.3"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.6.3"}}}');var l=n(74848),u={siteConfig:a.default,siteMetadata:c,globalData:o,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){var t=e.children;return(0,l.jsx)(d.Provider,{value:u,children:t})}},67489:(e,t,n)=>{"use strict";n.d(t,{A:()=>b});var r=n(77387),a=n(96540),o=n(38193),i=n(5260),s=n(70440),c=n(96300),l=n(53102),u=n(74848);function d(e){var t=e.error,n=e.tryAgain;return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(p,{error:t})]})}function p(e){var t=e.error,n=(0,s.rA)(t).map((function(e){return e.message})).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function f(e){var t=e.children;return(0,u.jsx)(l.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function m(e){var t=e.error,n=e.tryAgain;return(0,u.jsx)(f,{children:(0,u.jsxs)(b,{fallback:function(){return(0,u.jsx)(d,{error:t,tryAgain:n})},children:[(0,u.jsx)(i.A,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(c.A,{children:(0,u.jsx)(d,{error:t,tryAgain:n})})]})})}var h=function(e){return(0,u.jsx)(m,Object.assign({},e))},b=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={error:null},n}(0,r.A)(t,e);var n=t.prototype;return n.componentDidCatch=function(e){o.A.canUseDOM&&this.setState({error:e})},n.render=function(){var e=this,t=this.props.children,n=this.state.error;if(n){var r,a={error:n,tryAgain:function(){return e.setState({error:null})}};return(null!=(r=this.props.fallback)?r:h)(a)}return null!=t?t:null},t}(a.Component)},38193:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document;const a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);var r=n(80545),a=n(74848);function o(e){return(0,a.jsx)(r.mg,Object.assign({},e))}},28774:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var r=n(98587),a=n(96540),o=n(54625),i=n(70440),s=n(44586),c=n(16654),l=n(38193),u=n(63427),d=n(86025),p=n(74848),f=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];function m(e,t){var n,m,h,b=e.isNavLink,g=e.to,y=e.href,v=e.activeClassName,x=e.isActive,w=e["data-noBrokenLinkCheck"],k=e.autoAddBaseUrl,_=void 0===k||k,S=(0,r.A)(e,f),E=(0,s.A)().siteConfig,j=E.trailingSlash,O=E.baseUrl,A=E.future.experimental_router,C=(0,d.hH)().withBaseUrl,P=(0,u.A)(),T=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(function(){return T.current}));var I=g||y;var N,L,R=(0,c.A)(I),D=null==I?void 0:I.replace("pathname://",""),M=void 0!==D?(N=D,_&&function(e){return e.startsWith("/")}(N)?C(N):N):void 0;"hash"===A&&null!=(n=M)&&n.startsWith("./")&&(M=null==(L=M)?void 0:L.slice(1));M&&R&&(M=(0,i.Ks)(M,{trailingSlash:j,baseUrl:O}));var F=(0,a.useRef)(!1),B=b?o.k2:o.N_,z=l.A.canUseIntersectionObserver,U=(0,a.useRef)(),q=function(){F.current||null==M||(window.docusaurus.preload(M),F.current=!0)};(0,a.useEffect)((function(){return!z&&R&&l.A.canUseDOM&&null!=M&&window.docusaurus.prefetch(M),function(){z&&U.current&&U.current.disconnect()}}),[U,M,z,R]);var $=null!=(m=null==(h=M)?void 0:h.startsWith("#"))&&m,H=!S.target||"_self"===S.target,V=!M||!R||!H||$&&"hash"!==A;w||!$&&V||P.collectLink(M),S.id&&P.collectAnchor(S.id);var W={};return V?(0,p.jsx)("a",Object.assign({ref:T,href:M},I&&!R&&{target:"_blank",rel:"noopener noreferrer"},S,W)):(0,p.jsx)(B,Object.assign({},S,{onMouseEnter:q,onTouchStart:q,innerRef:function(e){T.current=e,z&&e&&R&&(U.current=new window.IntersectionObserver((function(t){t.forEach((function(t){e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(U.current.unobserve(e),U.current.disconnect(),null!=M&&window.docusaurus.prefetch(M))}))})),U.current.observe(e))},to:M},b&&{isActive:x,activeClassName:v},W))}const h=a.forwardRef(m)},21312:(e,t,n)=>{"use strict";n.d(t,{A:()=>l,T:()=>c});var r=n(96540),a=n(74848);function o(e,t){var n=e.split(/(\{\w+\})/).map((function(e,n){if(n%2==1){var r=null==t?void 0:t[e.slice(1,-1)];if(void 0!==r)return r}return e}));return n.some((function(e){return(0,r.isValidElement)(e)}))?n.map((function(e,t){return(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e})).filter((function(e){return""!==e})):n.join("")}var i=n(59940);function s(e){var t,n,r=e.id,a=e.message;if(void 0===r&&void 0===a)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!=(t=null!=(n=i[null!=r?r:a])?n:a)?t:r}function c(e,t){return o(s({message:e.message,id:e.id}),t)}function l(e){var t=e.children,n=e.id,r=e.values;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");var i=s({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},17065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});var r="default"},16654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},86025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>s,hH:()=>i});var r=n(96540),a=n(44586),o=n(16654);function i(){var e=(0,a.A)().siteConfig,t=e.baseUrl,n=e.url,i=e.future.experimental_router,s=(0,r.useCallback)((function(e,r){return function(e){var t=e.siteUrl,n=e.baseUrl,r=e.url,a=e.options,i=void 0===a?{}:a,s=i.forcePrependBaseUrl,c=void 0!==s&&s,l=i.absolute,u=void 0!==l&&l,d=e.router;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===d)return r.startsWith("/")?"."+r:"./"+r;if(c)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;var p=r.startsWith(n)?r:n+r.replace(/^\//,"");return u?t+p:p}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})}),[n,t,i]);return{withBaseUrl:s}}function s(e,t){return void 0===t&&(t={}),(0,i().withBaseUrl)(e,t)}},63427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(96540),a=(n(74848),r.createContext({collectAnchor:function(){},collectLink:function(){}})),o=function(){return(0,r.useContext)(a)};function i(){return o()}},44586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(96540),a=n(73348);function o(){return(0,r.useContext)(a.o)}},92303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(96540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(96540);const a=n(38193).A.canUseDOM?r.useLayoutEffect:r.useEffect},86921:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=function(e){return"object"==typeof e&&!!e&&Object.keys(e).length>0};function a(e){var t={};return function e(n,a){Object.entries(n).forEach((function(n){var o=n[0],i=n[1],s=a?a+"."+o:o;r(i)?e(i,s):t[s]=i}))}(e),t}},53102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(96540),a=n(74848),o=r.createContext(null);function i(e){var t=e.children,n=e.value,i=r.useContext(o),s=(0,r.useMemo)((function(){return function(e){var t=e.parent,n=e.value;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}var r=Object.assign({},t.data,null==n?void 0:n.data);return{plugin:t.plugin,data:r}}({parent:i,value:n})}),[i,n]);return(0,a.jsx)(o.Provider,{value:s,children:t})}},53886:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>b,XK:()=>v,g1:()=>y});var r=n(96540),a=n(44070),o=n(17065),i=n(6342),s=n(75376),c=n(43807),l=n(74848),u=function(e){return"docs-preferred-version-"+e},d={save:function(e,t,n){(0,s.Wf)(u(e),{persistence:t}).set(n)},read:function(e,t){return(0,s.Wf)(u(e),{persistence:t}).get()},clear:function(e,t){(0,s.Wf)(u(e),{persistence:t}).del()}},p=function(e){return Object.fromEntries(e.map((function(e){return[e,{preferredVersionName:null}]})))};var f=r.createContext(null);function m(){var e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((function(){return Object.keys(e)}),[e]),o=(0,r.useState)((function(){return p(n)})),s=o[0],c=o[1];return(0,r.useEffect)((function(){c(function(e){var t=e.pluginIds,n=e.versionPersistence,r=e.allDocsData;return Object.fromEntries(t.map((function(e){return[e,(t=e,a=d.read(t,n),r[t].versions.some((function(e){return e.name===a}))?{preferredVersionName:a}:(d.clear(t,n),{preferredVersionName:null}))];var t,a})))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]),[s,(0,r.useMemo)((function(){return{savePreferredVersion:function(e,n){d.save(e,t,n),c((function(t){var r;return Object.assign({},t,((r={})[e]={preferredVersionName:n},r))}))}}}),[t])]}function h(e){var t=e.children,n=m();return(0,l.jsx)(f.Provider,{value:n,children:t})}function b(e){var t=e.children;return(0,l.jsx)(h,{children:t})}function g(){var e=(0,r.useContext)(f);if(!e)throw new c.dV("DocsPreferredVersionContextProvider");return e}function y(e){var t;void 0===e&&(e=o.W);var n=(0,a.ht)(e),i=g(),s=i[0],c=i[1],l=s[e].preferredVersionName;return{preferredVersion:null!=(t=n.versions.find((function(e){return e.name===l})))?t:null,savePreferredVersionName:(0,r.useCallback)((function(t){c.savePreferredVersion(e,t)}),[c,e])}}function v(){var e=(0,a.Gy)(),t=g()[0];var n=Object.keys(e);return Object.fromEntries(n.map((function(n){return[n,(r=n,o=e[r],i=t[r].preferredVersionName,null!=(a=o.versions.find((function(e){return e.name===i})))?a:null)];var r,a,o,i})))}},82565:(e,t,n)=>{"use strict";n.d(t,{k:()=>o,v:()=>i});var r=n(44070),a=n(53886);function o(e,t){return"docs-"+e+"-"+t}function i(){var e=(0,r.Gy)(),t=(0,r.gk)(),n=(0,a.XK)();return[].concat(Object.keys(e).map((function(r){var a,i=(null==t?void 0:t.activePlugin.pluginId)===r?t.activeVersion:void 0,s=n[r],c=e[r].versions.find((function(e){return e.isLast}));return o(r,(null!=(a=null!=i?i:s)?a:c).name)})))}},60609:(e,t,n)=>{"use strict";n.d(t,{V:()=>c,t:()=>l});var r=n(96540),a=n(43807),o=n(74848),i=Symbol("EmptyContext"),s=r.createContext(i);function c(e){var t=e.children,n=e.name,a=e.items,i=(0,r.useMemo)((function(){return n&&a?{name:n,items:a}:null}),[n,a]);return(0,o.jsx)(s.Provider,{value:i,children:t})}function l(){var e=(0,r.useContext)(s);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},26972:(e,t,n)=>{"use strict";n.d(t,{$S:()=>h,B5:()=>j,Nr:()=>m,OF:()=>k,QB:()=>E,Vd:()=>_,Y:()=>x,cC:()=>f,d1:()=>O,fW:()=>S,w8:()=>y});var r=n(43845),a=n(96540),o=n(56347),i=n(22831),s=n(44070),c=n(99169),l=n(31682),u=n(53886),d=n(23025),p=n(60609);function f(e){var t=(0,d.r)();if(e){var n=t.docs[e];if(!n)throw new Error("no version doc found by id="+e);return n}}function m(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(var t,n=(0,r.A)(e.items);!(t=n()).done;){var a=m(t.value);if(a)return a}}(e):void 0:e.href}function h(){var e=(0,o.zy)().pathname,t=(0,p.t)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");var 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}var b=function(e,t){return void 0!==e&&(0,c.ys)(e,t)},g=function(e,t){return e.some((function(e){return y(e,t)}))};function y(e,t){return"link"===e.type?b(e.href,t):"category"===e.type&&(b(e.href,t)||g(e.items,t))}function v(e,t){switch(e.type){case"category":return y(e,t)||e.items.some((function(e){return v(e,t)}));case"link":return!e.unlisted||y(e,t);default:return!0}}function x(e,t){return(0,a.useMemo)((function(){return e.filter((function(e){return v(e,t)}))}),[e,t])}function w(e){var t=e.sidebarItems,n=e.pathname,a=e.onlyCategories,o=void 0!==a&&a,i=[];return function e(t){for(var a,s=(0,r.A)(t);!(a=s()).done;){var l=a.value;if("category"===l.type&&((0,c.ys)(l.href,n)||e(l.items))||"link"===l.type&&(0,c.ys)(l.href,n))return o&&"category"!==l.type||i.unshift(l),!0}return!1}(t),i}function k(){var e,t=(0,p.t)(),n=(0,o.zy)().pathname;return!1!==(null==(e=(0,s.vT)())?void 0:e.pluginData.breadcrumbs)&&t?w({sidebarItems:t.items,pathname:n}):null}function _(e){var t=(0,s.zK)(e).activeVersion,n=(0,u.g1)(e).preferredVersion,r=(0,s.r7)(e);return(0,a.useMemo)((function(){return(0,l.sb)([t,n,r].filter(Boolean))}),[t,n,r])}function S(e,t){var n=_(t);return(0,a.useMemo)((function(){var t=n.flatMap((function(e){return e.sidebars?Object.entries(e.sidebars):[]})),r=t.find((function(t){return t[0]===e}));if(!r)throw new Error("Can't find any sidebar with id \""+e+'" in version'+(n.length>1?"s":"")+" "+n.map((function(e){return e.name})).join(", ")+'".\nAvailable sidebar ids are:\n- '+t.map((function(e){return e[0]})).join("\n- "));return r[1]}),[e,n])}function E(e,t){var n=_(t);return(0,a.useMemo)((function(){var t=n.flatMap((function(e){return e.docs})),r=t.find((function(t){return t.id===e}));if(!r){if(n.flatMap((function(e){return 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((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+(0,l.sb)(t.map((function(e){return e.id}))).join("\n- "))}return r}),[e,n])}function j(e){var t=e.route,n=(0,o.zy)(),r=(0,d.r)(),a=t.routes,s=a.find((function(e){return(0,o.B6)(n.pathname,e)}));if(!s)return null;var c=s.sidebar,l=c?r.docsSidebars[c]:void 0;return{docElement:(0,i.v)(a),sidebarName:c,sidebarItems:l}}function O(e){return e.filter((function(e){return!("category"===e.type||"link"===e.type)||!!m(e)}))}},23025:(e,t,n)=>{"use strict";n.d(t,{n:()=>s,r:()=>c});var r=n(96540),a=n(43807),o=n(74848),i=r.createContext(null);function s(e){var t=e.children,n=e.version;return(0,o.jsx)(i.Provider,{value:n,children:t})}function c(){var e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},44070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>g,vT:()=>f,gk:()=>m,Gy:()=>d,HW:()=>y,ht:()=>p,r7:()=>b,jh:()=>h});var r=n(56347),a=n(44586),o=n(17065);function i(e,t){void 0===t&&(t={});var n=(0,a.A)().globalData[e];if(!n&&t.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}var s=function(e){return e.versions.find((function(e){return e.isLast}))};function c(e,t){return[].concat(e.versions).sort((function(e,t){return e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0})).find((function(e){return!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})}))}function l(e,t){var n,a,o=c(e,t),i=null==o?void 0:o.docs.find((function(e){return!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:o,activeDoc:i,alternateDocVersions:i?(n=i.id,a={},e.versions.forEach((function(e){e.docs.forEach((function(t){t.id===n&&(a[e.name]=t)}))})),a):{}}}var u={},d=function(){var e;return null!=(e=i("docusaurus-plugin-content-docs"))?e:u},p=function(e){try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});var r=i(e),a=null==r?void 0: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})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":" (pluginId="+e),{cause:t})}};function f(e){return void 0===e&&(e={}),function(e,t,n){void 0===n&&(n={});var a=Object.entries(e).sort((function(e,t){return t[1].path.localeCompare(e[1].path)})).find((function(e){var n=e[1];return!!(0,r.B6)(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((function(e){return e.path})).join(", "));return o}(d(),(0,r.zy)().pathname,e)}function m(e){void 0===e&&(e={});var t=f(e),n=(0,r.zy)().pathname;if(t)return{activePlugin:t,activeVersion:c(t.pluginData,n)}}function h(e){return p(e).versions}function b(e){var t=p(e);return s(t)}function g(e){return l(p(e),(0,r.zy)().pathname)}function y(e){return function(e,t){var n=s(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(p(e),(0,r.zy)().pathname)}},76294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate:function(e){var t=e.location,n=e.previousLocation;if(n&&t.pathname!==n.pathname){var r=window.setTimeout((function(){a().start()}),200);return function(){return window.clearTimeout(r)}}},onRouteDidUpdate:function(){a().done()}}},26134:(e,t,n)=>{"use strict";var r,a,o,i=n(71765),s=n(85290);r=i.My,a=s.default.themeConfig.prism.additionalLanguages,o=globalThis.Prism,globalThis.Prism=r,a.forEach((function(e){"php"===e&&n(19700),n(91830)("./prism-"+e)})),delete globalThis.Prism,void 0!==o&&(globalThis.Prism=r)},51107:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var r=n(98587),a=(n(96540),n(34164)),o=n(21312),i=n(6342),s=n(28774),c=n(63427);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var u=n(74848),d=["as","id"];function p(e){var t=e.as,n=e.id,p=(0,r.A)(e,d),f=(0,c.A)(),m=(0,i.p)().navbar.hideOnScroll;if("h1"===t||!n)return(0,u.jsx)(t,Object.assign({},p,{id:void 0}));f.collectAnchor(n);var h=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof p.children?p.children:n});return(0,u.jsxs)(t,Object.assign({},p,{className:(0,a.A)("anchor",m?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,p.className),id:n,children:[p.children,(0,u.jsx)(s.A,{className:"hash-link",to:"#"+n,"aria-label":h,title:h,children:"\u200b"})]}))}},43186:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(74848);function o(e){var t=e.width,n=void 0===t?13.5:t,o=e.height,i=void 0===o?13.5:o;return(0,a.jsx)("svg",{width:n,height:i,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("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"})})}},96300:(e,t,n)=>{"use strict";n.d(t,{A:()=>Bt});var r=n(96540),a=n(34164),o=n(67489),i=n(69024),s=n(56347),c=n(21312),l=n(75062),u=n(74848),d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){var e=(0,r.useRef)(null),t=(0,s.W6)().action,n=(0,r.useCallback)((function(e){e.preventDefault();var t,n=null!=(t=document.querySelector("main:first-of-type"))?t:document.getElementById(d);n&&p(n)}),[]);return(0,l.$)((function(n){var r=n.location;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}var m=(0,c.T)({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 h(e){var t,n=null!=(t=e.children)?t:m,r=f(),a=r.containerRef,o=r.onClick;return(0,u.jsx)("div",{ref:a,role:"region","aria-label":m,children:(0,u.jsx)("a",Object.assign({},e,{href:"#"+d,onClick:o,children:n}))})}var b=n(17559),g=n(14090);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(h,{className:y.skipToContent})}var x=n(6342),w=n(65041),k=n(98587),_=["width","height","color","strokeWidth","className"];function S(e){var t=e.width,n=void 0===t?21:t,r=e.height,a=void 0===r?21:r,o=e.color,i=void 0===o?"currentColor":o,s=e.strokeWidth,c=void 0===s?1.2:s,l=(e.className,(0,k.A)(e,_));return(0,u.jsx)("svg",Object.assign({viewBox:"0 0 15 15",width:n,height:a},l,{children:(0,u.jsx)("g",{stroke:i,strokeWidth:c,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})}))}const E={closeButton:"closeButton_CVFx"};function j(e){return(0,u.jsx)("button",Object.assign({type:"button","aria-label":(0,c.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.A)("clean-btn close",E.closeButton,e.className),children:(0,u.jsx)(S,{width:14,height:14,strokeWidth:3.1})}))}const O={content:"content_knG7"};function A(e){var t=(0,x.p)().announcementBar.content;return(0,u.jsx)("div",Object.assign({},e,{className:(0,a.A)(O.content,e.className),dangerouslySetInnerHTML:{__html:t}}))}const C={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function P(){var e=(0,x.p)().announcementBar,t=(0,w.M)(),n=t.isActive,r=t.close;if(!n)return null;var a=e.backgroundColor,o=e.textColor,i=e.isCloseable;return(0,u.jsxs)("div",{className:C.announcementBar,style:{backgroundColor:a,color:o},role:"banner",children:[i&&(0,u.jsx)("div",{className:C.announcementBarPlaceholder}),(0,u.jsx)(A,{className:C.announcementBarContent}),i&&(0,u.jsx)(j,{onClick:r,className:C.announcementBarClose})]})}var T=n(22069),I=n(23104);var N=n(43807),L=n(75600),R=r.createContext(null);function D(e){var t,n,a,o,i,s,c,l=e.children,d=(t=(0,T.M)(),n=(0,L.YL)(),a=(0,r.useState)(!1),o=a[0],i=a[1],s=null!==n.component,c=(0,N.ZC)(s),(0,r.useEffect)((function(){s&&!c&&i(!0)}),[s,c]),(0,r.useEffect)((function(){s?t.shown||i(!0):i(!1)}),[t.shown,s]),(0,r.useMemo)((function(){return[o,i]}),[o]));return(0,u.jsx)(R.Provider,{value:d,children:l})}function M(e){if(e.component){var t=e.component;return(0,u.jsx)(t,Object.assign({},e.props))}}function F(){var e=(0,r.useContext)(R);if(!e)throw new N.dV("NavbarSecondaryMenuDisplayProvider");var t=e[0],n=e[1],a=(0,r.useCallback)((function(){return n(!1)}),[n]),o=(0,L.YL)();return(0,r.useMemo)((function(){return{shown:t,hide:a,content:M(o)}}),[a,o,t])}function B(e){var t=e.header,n=e.primaryMenu,r=e.secondaryMenu,o=F().shown;return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var z=n(95293),U=n(92303);function q(e){return(0,u.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:24,height:24},e,{children:(0,u.jsx)("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"})}))}function $(e){return(0,u.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:24,height:24},e,{children:(0,u.jsx)("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"})}))}const H={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function V(e){var t=e.className,n=e.buttonClassName,r=e.value,o=e.onChange,i=(0,U.A)(),s=(0,c.T)({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,c.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,c.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,a.A)(H.toggle,t),children:(0,u.jsxs)("button",{className:(0,a.A)("clean-btn",H.toggleButton,!i&&H.toggleButtonDisabled,n),type:"button",onClick:function(){return o("dark"===r?"light":"dark")},disabled:!i,title:s,"aria-label":s,"aria-live":"polite","aria-pressed":"dark"===r?"true":"false",children:[(0,u.jsx)(q,{className:(0,a.A)(H.toggleIcon,H.lightToggleIcon)}),(0,u.jsx)($,{className:(0,a.A)(H.toggleIcon,H.darkToggleIcon)})]})})}const W=r.memo(V),K={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function G(e){var t=e.className,n=(0,x.p)().navbar.style,r=(0,x.p)().colorMode.disableSwitch,a=(0,z.G)(),o=a.colorMode,i=a.setColorMode;return r?null:(0,u.jsx)(W,{className:t,buttonClassName:"dark"===n?K.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var Q=n(39529);function Y(){return(0,u.jsx)(Q.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Z(){var e=(0,T.M)();return(0,u.jsx)("button",{type:"button","aria-label":(0,c.T)({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:function(){return e.toggle()},children:(0,u.jsx)(S,{color:"var(--ifm-color-emphasis-600)"})})}function X(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(Y,{}),(0,u.jsx)(G,{className:"margin-right--md"}),(0,u.jsx)(Z,{})]})}var J=n(28774),ee=n(86025),te=n(16654),ne=n(91252),re=n(43186),ae=["activeBasePath","activeBaseRegex","to","href","label","html","isDropdownLink","prependBaseUrlToHref"];function oe(e){var t=e.activeBasePath,n=e.activeBaseRegex,r=e.to,a=e.href,o=e.label,i=e.html,s=e.isDropdownLink,c=e.prependBaseUrlToHref,l=(0,k.A)(e,ae),d=(0,ee.Ay)(r),p=(0,ee.Ay)(t),f=(0,ee.Ay)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,te.A)(a),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[o,m&&(0,u.jsx)(re.A,Object.assign({},s&&{width:12,height:12}))]})};return a?(0,u.jsx)(J.A,Object.assign({href:c?f:a},l,h)):(0,u.jsx)(J.A,Object.assign({to:d,isNavLink:!0},(t||n)&&{isActive:function(e,t){return n?(0,ne.G)(n,t.pathname):t.pathname.startsWith(p)}},l,h))}var ie=["className","isDropdownItem"],se=["className","isDropdownItem"],ce=["mobile","position"];function le(e){var t=e.className,n=e.isDropdownItem,r=void 0!==n&&n,o=(0,k.A)(e,ie),i=(0,u.jsx)(oe,Object.assign({className:(0,a.A)(r?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:r},o));return r?(0,u.jsx)("li",{children:i}):i}function ue(e){var t=e.className,n=(e.isDropdownItem,(0,k.A)(e,se));return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(oe,Object.assign({className:(0,a.A)("menu__link",t)},n))})}function de(e){var t,n=e.mobile,r=void 0!==n&&n,a=(e.position,(0,k.A)(e,ce)),o=r?ue:le;return(0,u.jsx)(o,Object.assign({},a,{activeClassName:null!=(t=a.activeClassName)?t:r?"menu__link--active":"navbar__link--active"}))}var pe=n(41422),fe=n(99169),me=n(44586);const he="dropdownNavbarItemMobile_S0Fm";var be=["items","position","className","onClick"],ge=["items","className","position","onClick"],ye=["mobile"];function ve(e,t){return e.some((function(e){return function(e,t){return!!(0,fe.ys)(e.to,t)||!!(0,ne.G)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)}))}function xe(e){var t,n=e.items,o=e.position,i=e.className,s=(e.onClick,(0,k.A)(e,be)),c=(0,r.useRef)(null),l=(0,r.useState)(!1),d=l[0],p=l[1];return(0,r.useEffect)((function(){var e=function(e){c.current&&!c.current.contains(e.target)&&p(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[c]),(0,u.jsxs)("div",{ref:c,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===o,"dropdown--show":d}),children:[(0,u.jsx)(oe,Object.assign({"aria-haspopup":"true","aria-expanded":d,role:"button",href:s.to?void 0:"#",className:(0,a.A)("navbar__link",i)},s,{onClick:s.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),p(!d))},children:null!=(t=s.children)?t:s.label})),(0,u.jsx)("ul",{className:"dropdown__menu",children:n.map((function(e,t){return(0,r.createElement)(tt,Object.assign({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))}))})]})}function we(e){var t,n,o=e.items,i=e.className,c=(e.position,e.onClick),l=(0,k.A)(e,ge),d=(n=(0,me.A)().siteConfig.baseUrl,(0,s.zy)().pathname.replace(n,"/")),p=ve(o,d),f=(0,pe.u)({initialState:function(){return!p}}),m=f.collapsed,h=f.toggleCollapsed,b=f.setCollapsed;return(0,r.useEffect)((function(){p&&b(!p)}),[d,p,b]),(0,u.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":m}),children:[(0,u.jsx)(oe,Object.assign({role:"button",className:(0,a.A)(he,"menu__link menu__link--sublist menu__link--sublist-caret",i)},l,{onClick:function(e){e.preventDefault(),h()},children:null!=(t=l.children)?t:l.label})),(0,u.jsx)(pe.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:m,children:o.map((function(e,t){return(0,r.createElement)(tt,Object.assign({mobile:!0,isDropdownItem:!0,onClick:c,activeClassName:"menu__link--active"},e,{key:t}))}))})]})}function ke(e){var t=e.mobile,n=void 0!==t&&t,r=(0,k.A)(e,ye),a=n?we:xe;return(0,u.jsx)(a,Object.assign({},r))}var _e=n(32131),Se=["width","height"];function Ee(e){var t=e.width,n=void 0===t?20:t,r=e.height,a=void 0===r?20:r,o=(0,k.A)(e,Se);return(0,u.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:n,height:a,"aria-hidden":!0},o,{children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})}))}const je="iconLanguage_nlXk";var Oe=["mobile","dropdownItemsBefore","dropdownItemsAfter","queryString"];var Ae=n(40961),Ce=n(55600),Pe=n(5260),Te=n(24255),Ie=n(51062),Ne=n(2967),Le=n(82565);function Re(){var e;return["language:"+(0,me.A)().i18n.currentLocale,(e=(0,Le.v)(),[Ne.C].concat(e)).map((function(e){return"docusaurus_tag:"+e}))]}const De={button:{buttonText:(0,c.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,c.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,c.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,c.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,c.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,c.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,c.T)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,c.T)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,c.T)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,c.T)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,c.T)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,c.T)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,c.T)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,c.T)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,c.T)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,c.T)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,c.T)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,c.T)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,c.T)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,c.T)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,c.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,c.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,c.T)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};var Me=["contextualSearch","externalUrlRegex"],Fe=null;function Be(e){var t=e.hit,n=e.children;return(0,u.jsx)(J.A,{to:t.url,children:n})}function ze(e){var t=e.state,n=e.onClose,r=(0,Te.w)();return(0,u.jsx)(J.A,{to:r(t.query),onClick:n,children:(0,u.jsx)(c.A,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits},children:"See all {count} results"})})}function Ue(e){var t,a,o,i,c=e.contextualSearch,l=e.externalUrlRegex,d=(0,k.A)(e,Me),p=(0,me.A)().siteMetadata,f=(0,Ie.C)(),m=Re(),h=null!=(t=null==(a=d.searchParameters)?void 0:a.facetFilters)?t:[],b=c?(o=h,[].concat((i=function(e){return"string"==typeof e?[e]:e})(m),i(o))):h,g=Object.assign({},d.searchParameters,{facetFilters:b}),y=(0,s.W6)(),v=(0,r.useRef)(null),x=(0,r.useRef)(null),w=(0,r.useState)(!1),_=w[0],S=w[1],E=(0,r.useState)(void 0),j=E[0],O=E[1],A=(0,r.useCallback)((function(){return Fe?Promise.resolve():Promise.all([n.e(8158).then(n.bind(n,48158)),Promise.all([n.e(1869),n.e(8913)]).then(n.bind(n,58913)),Promise.all([n.e(1869),n.e(416)]).then(n.bind(n,90416))]).then((function(e){var t=e[0].DocSearchModal;Fe=t}))}),[]),C=(0,r.useCallback)((function(){if(!v.current){var e=document.createElement("div");v.current=e,document.body.insertBefore(e,document.body.firstChild)}}),[]),P=(0,r.useCallback)((function(){C(),A().then((function(){return S(!0)}))}),[A,C]),T=(0,r.useCallback)((function(){var e;S(!1),null==(e=x.current)||e.focus()}),[]),I=(0,r.useCallback)((function(e){"f"===e.key&&(e.metaKey||e.ctrlKey)||(e.preventDefault(),O(e.key),P())}),[P]),N=(0,r.useRef)({navigate:function(e){var t=e.itemUrl;(0,ne.G)(l,t)?window.location.href=t:y.push(t)}}).current,L=(0,r.useRef)((function(e){return d.transformItems?d.transformItems(e):e.map((function(e){return Object.assign({},e,{url:f(e.url)})}))})).current,R=(0,r.useMemo)((function(){return function(e){return(0,u.jsx)(ze,Object.assign({},e,{onClose:T}))}}),[T]),D=(0,r.useCallback)((function(e){return e.addAlgoliaAgent("docusaurus",p.docusaurusVersion),e}),[p.docusaurusVersion]);return(0,Ce.E8)({isOpen:_,onOpen:P,onClose:T,onInput:I,searchButtonRef:x}),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Pe.A,{children:(0,u.jsx)("link",{rel:"preconnect",href:"https://"+d.appId+"-dsn.algolia.net",crossOrigin:"anonymous"})}),(0,u.jsx)(Ce.Bc,{onTouchStart:A,onFocus:A,onMouseOver:A,onClick:P,ref:x,translations:De.button}),_&&Fe&&v.current&&(0,Ae.createPortal)((0,u.jsx)(Fe,Object.assign({onClose:T,initialScrollY:window.scrollY,initialQuery:j,navigator:N,transformItems:L,hitComponent:Be,transformSearchClient:D},d.searchPagePath&&{resultsFooterComponent:R},d,{searchParameters:g,placeholder:De.placeholder,translations:De.modal})),v.current)]})}function qe(){var e=(0,me.A)().siteConfig;return(0,u.jsx)(Ue,Object.assign({},e.themeConfig.algolia))}const $e={navbarSearchContainer:"navbarSearchContainer_Bca1"};function He(e){var t=e.children,n=e.className;return(0,u.jsx)("div",{className:(0,a.A)(n,$e.navbarSearchContainer),children:t})}var Ve=n(44070),We=n(26972),Ke=["docId","label","docsPluginId"];var Ge=["sidebarId","label","docsPluginId"];var Qe=["label","to","docsPluginId"];var Ye=n(53886),Ze=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"];function Xe(e,t){var n;return null!=(n=t.alternateDocVersions[e.name])?n:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(e)}const Je={default:de,localeDropdown:function(e){var t=e.mobile,n=e.dropdownItemsBefore,r=e.dropdownItemsAfter,a=e.queryString,o=void 0===a?"":a,i=(0,k.A)(e,Oe),l=(0,me.A)().i18n,d=l.currentLocale,p=l.locales,f=l.localeConfigs,m=(0,_e.o)(),h=(0,s.zy)(),b=h.search,g=h.hash,y=p.map((function(e){var n=""+("pathname://"+m.createUrl({locale:e,fullyQualified:!1}))+b+g+o;return{label:f[e].label,lang:f[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===d?t?"menu__link--active":"dropdown__link--active":""}})),v=[].concat(n,y,r),x=t?(0,c.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):f[d].label;return(0,u.jsx)(ke,Object.assign({},i,{mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Ee,{className:je}),x]}),items:v}))},search:function(e){var t=e.mobile,n=e.className;return t?null:(0,u.jsx)(He,{className:n,children:(0,u.jsx)(qe,{})})},dropdown:ke,html:function(e){var t=e.value,n=e.className,r=e.mobile,o=void 0!==r&&r,i=e.isDropdownItem,s=void 0!==i&&i,c=s?"li":"div";return(0,u.jsx)(c,{className:(0,a.A)({navbar__item:!o&&!s,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){var t=e.docId,n=e.label,r=e.docsPluginId,a=(0,k.A)(e,Ke),o=(0,Ve.zK)(r).activeDoc,i=(0,We.QB)(t,r),s=(null==o?void 0:o.path)===(null==i?void 0:i.path);return null===i||i.unlisted&&!s?null:(0,u.jsx)(de,Object.assign({exact:!0},a,{isActive:function(){return s||!(null==o||!o.sidebar)&&o.sidebar===i.sidebar},label:null!=n?n:i.id,to:i.path}))},docSidebar:function(e){var t=e.sidebarId,n=e.label,r=e.docsPluginId,a=(0,k.A)(e,Ge),o=(0,Ve.zK)(r).activeDoc,i=(0,We.fW)(t,r).link;if(!i)throw new Error('DocSidebarNavbarItem: Sidebar with ID "'+t+"\" doesn't have anything to be linked to.");return(0,u.jsx)(de,Object.assign({exact:!0},a,{isActive:function(){return(null==o?void 0:o.sidebar)===t},label:null!=n?n:i.label,to:i.path}))},docsVersion:function(e){var t=e.label,n=e.to,r=e.docsPluginId,a=(0,k.A)(e,Qe),o=(0,We.Vd)(r)[0],i=null!=t?t:o.label,s=null!=n?n:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(o).path;return(0,u.jsx)(de,Object.assign({},a,{label:i,to:s}))},docsVersionDropdown:function(e){var t=e.mobile,n=e.docsPluginId,r=e.dropdownActiveClassDisabled,a=e.dropdownItemsBefore,o=e.dropdownItemsAfter,i=(0,k.A)(e,Ze),l=(0,s.zy)(),d=l.search,p=l.hash,f=(0,Ve.zK)(n),m=(0,Ve.jh)(n),h=(0,Ye.g1)(n).savePreferredVersionName,b=[].concat(a,m.map((function(e){var t=Xe(e,f);return{label:e.label,to:""+t.path+d+p,isActive:function(){return e===f.activeVersion},onClick:function(){return h(e.name)}}})),o),g=(0,We.Vd)(n)[0],y=t&&b.length>1?(0,c.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,v=t&&b.length>1?void 0:Xe(g,f).path;return b.length<=1?(0,u.jsx)(de,Object.assign({},i,{mobile:t,label:y,to:v,isActive:r?function(){return!1}:void 0})):(0,u.jsx)(ke,Object.assign({},i,{mobile:t,label:y,to:v,items:b,isActive:r?function(){return!1}:void 0}))}};var et=["type"];function tt(e){var t=e.type,n=(0,k.A)(e,et),r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Je[r];if(!a)throw new Error('No NavbarItem component found for type "'+t+'".');return(0,u.jsx)(a,Object.assign({},n))}function nt(){var e=(0,T.M)(),t=(0,x.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map((function(t,n){return(0,r.createElement)(tt,Object.assign({mobile:!0},t,{onClick:function(){return e.toggle()},key:n}))}))})}function rt(e){return(0,u.jsx)("button",Object.assign({},e,{type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(c.A,{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)",children:"\u2190 Back to main menu"})}))}function at(){var e=0===(0,x.p)().navbar.items.length,t=F();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(rt,{onClick:function(){return t.hide()}}),t.content]})}function ot(){var e,t=(0,T.M)();return void 0===(e=t.shown)&&(e=!0),(0,r.useEffect)((function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}}),[e]),t.shouldRender?(0,u.jsx)(B,{header:(0,u.jsx)(X,{}),primaryMenu:(0,u.jsx)(nt,{}),secondaryMenu:(0,u.jsx)(at,{})}):null}const it={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function st(e){return(0,u.jsx)("div",Object.assign({role:"presentation"},e,{className:(0,a.A)("navbar-sidebar__backdrop",e.className)}))}function ct(e){var t=e.children,n=(0,x.p)().navbar,o=n.hideOnScroll,i=n.style,s=(0,T.M)(),d=function(e){var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useRef)(!1),i=(0,r.useRef)(0),s=(0,r.useCallback)((function(e){null!==e&&(i.current=e.getBoundingClientRect().height)}),[]);return(0,I.Mq)((function(t,n){var r=t.scrollY;if(e)if(r=s?a(!1):r+l{"use strict";n.d(t,{A:()=>v});var r=n(98587),a=n(96540),o=n(28774),i=n(86025),s=n(44586),c=n(6342),l=n(34164),u=n(92303),d=n(95293);const p={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var f=n(74848);function m(e){var t=e.className,n=e.children,r=(0,u.A)(),o=(0,d.G)().colorMode;return(0,f.jsx)(f.Fragment,{children:(r?"dark"===o?["dark"]:["light"]:["light","dark"]).map((function(e){var r=n({theme:e,className:(0,l.A)(t,p.themedComponent,p["themedComponent--"+e])});return(0,f.jsx)(a.Fragment,{children:r},e)}))})}var h=["sources","className","alt"];function b(e){var t=e.sources,n=e.className,a=e.alt,o=(0,r.A)(e,h);return(0,f.jsx)(m,{className:n,children:function(e){var n=e.theme,r=e.className;return(0,f.jsx)("img",Object.assign({src:t[n],alt:a,className:r},o))}})}var g=["imageClassName","titleClassName"];function y(e){var t=e.logo,n=e.alt,r=e.imageClassName,a={light:(0,i.Ay)(t.src),dark:(0,i.Ay)(t.srcDark||t.src)},o=(0,f.jsx)(b,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,f.jsx)("div",{className:r,children:o}):o}function v(e){var t,n=(0,s.A)().siteConfig.title,a=(0,c.p)().navbar,l=a.title,u=a.logo,d=e.imageClassName,p=e.titleClassName,m=(0,r.A)(e,g),h=(0,i.Ay)((null==u?void 0:u.href)||"/"),b=l?"":n,v=null!=(t=null==u?void 0:u.alt)?t:b;return(0,f.jsxs)(o.A,Object.assign({to:h},m,(null==u?void 0:u.target)&&{target:u.target},{children:[u&&(0,f.jsx)(y,{logo:u,alt:v,imageClassName:d}),null!=l&&(0,f.jsx)("b",{className:p,children:l})]}))}},41463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);var r=n(5260),a=n(74848);function o(e){var t=e.locale,n=e.version,o=e.tag,i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},41422:(e,t,n)=>{"use strict";n.d(t,{N:()=>x,u:()=>p});var r=n(98587),a=n(96540),o=n(38193),i=n(205),s=n(53109),c=n(74848),l=["collapsed"],u=["lazy"],d="ease-in-out";function p(e){var t=e.initialState,n=(0,a.useState)(null!=t&&t),r=n[0],o=n[1],i=(0,a.useCallback)((function(){o((function(e){return!e}))}),[]);return{collapsed:r,setCollapsed:o,toggleCollapsed:i}}var f={display:"none",overflow:"hidden",height:"0px"},m={display:"block",overflow:"visible",height:"auto"};function h(e,t){var n=t?f:m;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function b(e){var t=e.collapsibleRef,n=e.collapsed,r=e.animation,o=(0,a.useRef)(!1);(0,a.useEffect)((function(){var e,a=t.current;function i(){var e,t,n=a.scrollHeight,o=null!=(e=null==r?void 0:r.duration)?e:function(e){if((0,s.O)())return 1;var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}(n);return{transition:"height "+o+"ms "+(null!=(t=null==r?void 0:r.easing)?t:d),height:n+"px"}}function c(){var e=i();a.style.transition=e.transition,a.style.height=e.height}if(!o.current)return h(a,n),void(o.current=!0);return a.style.willChange="height",e=requestAnimationFrame((function(){n?(c(),requestAnimationFrame((function(){a.style.height=f.height,a.style.overflow=f.overflow}))):(a.style.display="block",requestAnimationFrame((function(){c()})))})),function(){return cancelAnimationFrame(e)}}),[t,n,r])}function g(e){if(!o.A.canUseDOM)return e?f:m}function y(e){var t=e.as,n=void 0===t?"div":t,r=e.collapsed,o=e.children,i=e.animation,s=e.onCollapseTransitionEnd,l=e.className,u=e.disableSSRStyle,d=(0,a.useRef)(null);return b({collapsibleRef:d,collapsed:r,animation:i}),(0,c.jsx)(n,{ref:d,style:u?void 0:g(r),onTransitionEnd:function(e){"height"===e.propertyName&&(h(d.current,r),null==s||s(r))},className:l,children:o})}function v(e){var t=e.collapsed,n=(0,r.A)(e,l),o=(0,a.useState)(!t),s=o[0],u=o[1],d=(0,a.useState)(t),p=d[0],f=d[1];return(0,i.A)((function(){t||u(!0)}),[t]),(0,i.A)((function(){s&&f(t)}),[s,t]),s?(0,c.jsx)(y,Object.assign({},n,{collapsed:p})):null}function x(e){var t=e.lazy,n=(0,r.A)(e,u),a=t?v:y;return(0,c.jsx)(a,Object.assign({},n))}},65041:(e,t,n)=>{"use strict";n.d(t,{M:()=>h,o:()=>m});var r=n(96540),a=n(92303),o=n(75376),i=n(43807),s=n(6342),c=n(74848),l=(0,o.Wf)("docusaurus.announcement.dismiss"),u=(0,o.Wf)("docusaurus.announcement.id"),d=function(){return"true"===l.get()},p=function(e){return l.set(String(e))},f=r.createContext(null);function m(e){var t=e.children,n=function(){var e=(0,s.p)().announcementBar,t=(0,a.A)(),n=(0,r.useState)((function(){return!!t&&d()})),o=n[0],i=n[1];(0,r.useEffect)((function(){i(d())}),[]);var c=(0,r.useCallback)((function(){p(!0),i(!0)}),[]);return(0,r.useEffect)((function(){if(e){var t=e.id,n=u.get();"annoucement-bar"===n&&(n="announcement-bar");var r=t!==n;u.set(t),r&&p(!1),!r&&d()||i(!1)}}),[e]),(0,r.useMemo)((function(){return{isActive:!!e&&!o,close:c}}),[e,o,c])}();return(0,c.jsx)(f.Provider,{value:n,children:t})}function h(){var e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},95293:(e,t,n)=>{"use strict";n.d(t,{G:()=>g,a:()=>b});var r=n(96540),a=n(38193),o=n(43807),i=n(75376),s=n(6342),c=n(74848),l=r.createContext(void 0),u="theme",d=(0,i.Wf)(u),p={light:"light",dark:"dark"},f=function(e){return e===p.dark?p.dark:p.light},m=function(e){return a.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e)},h=function(e){d.set(f(e))};function b(e){var t=e.children,n=function(){var e=(0,s.p)().colorMode,t=e.defaultMode,n=e.disableSwitch,a=e.respectPrefersColorScheme,o=(0,r.useState)(m(t)),i=o[0],c=o[1];(0,r.useEffect)((function(){n&&d.del()}),[n]);var l=(0,r.useCallback)((function(e,n){void 0===n&&(n={});var r=n.persist,o=void 0===r||r;e?(c(e),o&&h(e)):(c(a?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:t),d.del())}),[a,t]);(0,r.useEffect)((function(){document.documentElement.setAttribute("data-theme",f(i))}),[i]),(0,r.useEffect)((function(){if(!n){var e=function(e){if(e.key===u){var t=d.get();null!==t&&l(f(t))}};return window.addEventListener("storage",e),function(){return window.removeEventListener("storage",e)}}}),[n,l]);var b=(0,r.useRef)(!1);return(0,r.useEffect)((function(){if(!n||a){var e=window.matchMedia("(prefers-color-scheme: dark)"),t=function(){window.matchMedia("print").matches||b.current?b.current=window.matchMedia("print").matches:l(null)};return e.addListener(t),function(){return e.removeListener(t)}}}),[l,n,a]),(0,r.useMemo)((function(){return{colorMode:i,setColorMode:l,get isDarkTheme(){return i===p.dark},setLightTheme:function(){l(p.light)},setDarkTheme:function(){l(p.dark)}}}),[i,l])}();return(0,c.jsx)(l.Provider,{value:n,children:t})}function g(){var e=(0,r.useContext)(l);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},22069:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(96540),a=n(75600),o=n(24581),i=n(57485),s=n(6342),c=n(43807),l=n(74848),u=r.createContext(void 0);function d(){var e,t=(e=(0,a.YL)(),0===(0,s.p)().navbar.items.length&&!e.component),n=(0,o.l)(),c=!t&&"mobile"===n,l=(0,r.useState)(!1),u=l[0],d=l[1];(0,i.$Z)((function(){if(u)return d(!1),!1}));var p=(0,r.useCallback)((function(){d((function(e){return!e}))}),[]);return(0,r.useEffect)((function(){"desktop"===n&&d(!1)}),[n]),(0,r.useMemo)((function(){return{disabled:t,shouldRender:c,toggle:p,shown:u}}),[t,c,p,u])}function p(e){var t=e.children,n=d();return(0,l.jsx)(u.Provider,{value:n,children:t})}function f(){var e=r.useContext(u);if(void 0===e)throw new c.dV("NavbarMobileSidebarProvider");return e}},75600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>l,YL:()=>c,y_:()=>s});var r=n(96540),a=n(43807),o=n(74848),i=r.createContext(null);function s(e){var t=e.children,n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function c(){var e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function l(e){var t=e.component,n=e.props,o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");var s=o[1],c=(0,a.Be)(n);return(0,r.useEffect)((function(){s({component:t,props:c})}),[s,t,c]),(0,r.useEffect)((function(){return function(){return s({component:null,props:null})}}),[s]),null}},14090:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(96540),a="navigation-with-keyboard";function o(){(0,r.useEffect)((function(){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),function(){document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},24255:(e,t,n)=>{"use strict";n.d(t,{b:()=>s,w:()=>c});var r=n(96540),a=n(44586),o=n(57485),i="q";function s(){return(0,o.l)(i)}function c(){var e=(0,a.A)().siteConfig,t=e.baseUrl,n=e.themeConfig.algolia.searchPagePath;return(0,r.useCallback)((function(e){return""+t+n+"?"+i+"="+encodeURIComponent(e)}),[t,n])}},24581:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var r=n(96540),a=n(38193),o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(e){var t=(void 0===e?{}:e).desktopBreakpoint,n=void 0===t?i:t,s=(0,r.useState)((function(){return"ssr"})),c=s[0],l=s[1];return(0,r.useEffect)((function(){function e(){l(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(n))}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[n]),c}},17559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});var r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-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",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:function(e){return"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:function(e){return"theme-doc-sidebar-item-category-level-"+e},docSidebarItemLinkLevel:function(e){return"theme-doc-sidebar-item-link-level-"+e}},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},53109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},12181:(e,t,n)=>{"use strict";n.d(t,{bq:()=>d,MN:()=>u,a2:()=>l,k2:()=>p});var r=n(77387),a=n(96540),o=n(21312),i=n(70440);const s={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var c=n(74848);function l(e){return(0,c.jsx)("button",Object.assign({type:"button"},e,{children:(0,c.jsx)(o.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})}))}function u(e){var t=e.error,n=e.tryAgain;return(0,c.jsxs)("div",{className:s.errorBoundaryFallback,children:[(0,c.jsx)("p",{children:t.message}),(0,c.jsx)(l,{onClick:n})]})}function d(e){var t=e.error,n=(0,i.rA)(t).map((function(e){return e.message})).join("\n\nCause:\n");return(0,c.jsx)("p",{className:s.errorBoundaryError,children:n})}var p=function(e){function t(){return e.apply(this,arguments)||this}(0,r.A)(t,e);var n=t.prototype;return n.componentDidCatch=function(e,t){throw this.props.onError(e,t)},n.render=function(){return this.props.children},t}(a.Component)},20481:(e,t,n)=>{"use strict";n.d(t,{s:()=>a});var r=n(44586);function a(e){var t=(0,r.A)().siteConfig,n=t.title,a=t.titleDelimiter;return null!=e&&e.trim().length?e.trim()+" "+a+" "+n:n}},57485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,aZ:()=>c,l:()=>l});var r=n(96540),a=n(56347),o=n(43807);function i(e){!function(e){var t=(0,a.W6)(),n=(0,o._q)(e);(0,r.useEffect)((function(){return t.block((function(e,t){return n(e,t)}))}),[t,n])}((function(t,n){if("POP"===n)return e(t,n)}))}function s(e){var t=(0,a.W6)();return(0,r.useSyncExternalStore)(t.listen,(function(){return e(t)}),(function(){return e(t)}))}function c(e){return s((function(t){return null===e?null:new URLSearchParams(t.location.search).get(e)}))}function l(e){var t,n=null!=(t=c(e))?t:"",o=function(e){var t=(0,a.W6)();return(0,r.useCallback)((function(n,r){var a=new URLSearchParams(t.location.search);n?a.set(e,n):a.delete(e),(null!=r&&r.push?t.push:t.replace)({search:a.toString()})}),[e,t])}(e);return[n,o]}},31682:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=function(e,t){return e===t}),e.filter((function(n,r){return e.findIndex((function(e){return t(e,n)}))!==r}))}function a(e){return Array.from(new Set(e))}n.d(t,{XI:()=>r,sb:()=>a})},69024:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(96540),a=n(34164),o=n(5260),i=n(53102);function s(){var e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var c=n(86025),l=n(20481),u=n(74848);function d(e){var t=e.title,n=e.description,r=e.keywords,a=e.image,i=e.children,s=(0,l.s)(t),d=(0,c.hH)().withBaseUrl,p=a?d(a,{absolute:!0}):void 0;return(0,u.jsxs)(o.A,{children:[t&&(0,u.jsx)("title",{children:s}),t&&(0,u.jsx)("meta",{property:"og:title",content:s}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}var p=r.createContext(void 0);function f(e){var t=e.className,n=e.children,i=r.useContext(p),s=(0,a.A)(i,t);return(0,u.jsxs)(p.Provider,{value:s,children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("html",{className:s})}),n]})}function m(e){var t=e.children,n=s(),r="plugin-"+n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,""),o="plugin-id-"+n.plugin.id;return(0,u.jsx)(f,{className:(0,a.A)(r,o),children:t})}},43807:(e,t,n)=>{"use strict";n.d(t,{dV:()=>m,fM:()=>b,_q:()=>p,ZC:()=>f,Be:()=>h});var r=n(3909),a=n(77387);function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}var i=n(63662);function s(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(s=function(){return!!e})()}function c(e){var t="function"==typeof Map?new Map:void 0;return c=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(s())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var a=new(e.bind.apply(e,r));return n&&(0,i.A)(a,n.prototype),a}(e,arguments,o(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),(0,i.A)(n,e)},c(e)}var l=n(96540),u=n(205),d=n(74848);function p(e){var t=(0,l.useRef)(e);return(0,u.A)((function(){t.current=e}),[e]),(0,l.useCallback)((function(){return t.current.apply(t,arguments)}),[])}function f(e){var t=(0,l.useRef)();return(0,u.A)((function(){t.current=e})),t.current}var m=function(e){function t(t,n){var a,o,i;return(i=e.call(this)||this).name="ReactContextError",i.message="Hook "+(null!=(a=null==(o=i.stack)||null==(o=o.split("\n")[1])||null==(o=o.match((0,r.A)(/at (?:\w+\.)?(\w+)/,{name:1})))?void 0:o.groups.name)?a:"")+" is called outside the <"+t+">. "+(null!=n?n:""),i}return(0,a.A)(t,e),t}(c(Error));function h(e){var t=Object.entries(e);return t.sort((function(e,t){return e[0].localeCompare(t[0])})),(0,l.useMemo)((function(){return e}),t.flat())}function b(e){return function(t){var n=t.children;return(0,d.jsx)(d.Fragment,{children:e.reduceRight((function(e,t){return(0,d.jsx)(t,{children:e})}),n)})}}},91252:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{G:()=>r})},99169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>s,ys:()=>i});var r=n(96540),a=n(97671),o=n(44586);function i(e,t){var n=function(e){var t;return null==(t=!e||e.endsWith("/")?e:e+"/")?void 0:t.toLowerCase()};return n(e)===n(t)}function s(){var e=(0,o.A)().siteConfig.baseUrl;return(0,r.useMemo)((function(){return function(e){var t=e.baseUrl;function n(e){return e.path===t&&!0===e.exact}function r(e){return e.path===t&&!e.exact}return function e(t){if(0!==t.length)return t.find(n)||e(t.filter(r).flatMap((function(e){var t;return null!=(t=e.routes)?t:[]})))}(e.routes)}({routes:a.A,baseUrl:e})}),[e])}},23104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,a_:()=>m,gk:()=>h});var r=n(96540),a=n(38193),o=n(92303),i=n(205),s=n(43807),c=n(74848);var l=r.createContext(void 0);function u(e){var t,n=e.children,a=(t=(0,r.useRef)(!0),(0,r.useMemo)((function(){return{scrollEventsEnabledRef:t,enableScrollEvents:function(){t.current=!0},disableScrollEvents:function(){t.current=!1}}}),[]));return(0,c.jsx)(l.Provider,{value:a,children:n})}function d(){var e=(0,r.useContext)(l);if(null==e)throw new s.dV("ScrollControllerProvider");return e}var p=function(){return a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};function f(e,t){void 0===t&&(t=[]);var n=d().scrollEventsEnabledRef,a=(0,r.useRef)(p()),o=(0,s._q)(e);(0,r.useEffect)((function(){var e=function(){if(n.current){var e=p();o(e,a.current),a.current=e}},t={passive:!0};return e(),window.addEventListener("scroll",e,t),function(){return window.removeEventListener("scroll",e,t)}}),[o,n].concat(t))}function m(){var e,t,n,a=d(),o=(e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((function(t){e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((function(){var t=e.current,n=t.elem,r=t.top;if(!n)return{restored:!1};var a=n.getBoundingClientRect().top-r;return a&&window.scrollBy({left:0,top:a}),e.current={elem:null,top:0},{restored:0!==a}}),[]),(0,r.useMemo)((function(){return{save:t,restore:n}}),[n,t])),s=(0,r.useRef)(void 0),c=(0,r.useCallback)((function(e){o.save(e),a.disableScrollEvents(),s.current=function(){var e=o.restore().restored;if(s.current=void 0,e){var t=function(){a.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else a.enableScrollEvents()}}),[a,o]);return(0,i.A)((function(){queueMicrotask((function(){return null==s.current?void 0:s.current()}))})),{blockElementScrollPositionUntilNextRender:c}}function h(){var e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:function(n){e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),function(){}}(n):function(e){var t=null,n=document.documentElement.scrollTop>e;return function r(){var a=document.documentElement.scrollTop;(n&&a>e||!n&&a{"use strict";n.d(t,{C:()=>r});var r="default"},75376:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u,Dv:()=>d});var r=n(96540);const a=JSON.parse('{"N":"localStorage","M":""}');var o=a.N;function i(e){var t=e.key,n=e.oldValue,r=e.newValue,a=e.storage;if(n!==r){var o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}}function s(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,c||(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),c=!0),null}var t}var c=!1;var l={get:function(){return null},set:function(){},del:function(){},listen:function(){return function(){}}};function u(e,t){var n=""+e+a.M;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}}(n);var r=s(null==t?void 0:t.persistence);return null===r?l:{get:function(){try{return r.getItem(n)}catch(e){return console.error("Docusaurus storage error, can't get key="+n,e),null}},set:function(e){try{var t=r.getItem(n);r.setItem(n,e),i({key:n,oldValue:t,newValue:e,storage:r})}catch(a){console.error("Docusaurus storage error, can't set "+n+"="+e,a)}},del:function(){try{var e=r.getItem(n);r.removeItem(n),i({key:n,oldValue:e,newValue:null,storage:r})}catch(t){console.error("Docusaurus storage error, can't delete key="+n,t)}},listen:function(e){try{var t=function(t){t.storageArea===r&&t.key===n&&e(t)};return window.addEventListener("storage",t),function(){return window.removeEventListener("storage",t)}}catch(a){return console.error("Docusaurus storage error, can't listen for changes of key="+n,a),function(){}}}}}function d(e,t){var n=(0,r.useRef)((function(){return null===e?l:u(e,t)})).current(),a=(0,r.useCallback)((function(e){return"undefined"==typeof window?function(){}:n.listen(e)}),[n]);return[(0,r.useSyncExternalStore)(a,(function(){return"undefined"==typeof window?null:n.get()}),(function(){return null})),n]}},32131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(44586),a=n(56347),o=n(70440);function i(){var e=(0,r.A)(),t=e.siteConfig,n=t.baseUrl,i=t.url,s=t.trailingSlash,c=e.i18n,l=c.defaultLocale,u=c.currentLocale,d=(0,a.zy)().pathname,p=(0,o.Ks)(d,{trailingSlash:s,baseUrl:n}),f=u===l?n:n.replace("/"+u+"/","/"),m=p.replace(n,"");return{createUrl:function(e){var t=e.locale;return""+(e.fullyQualified?i:"")+function(e){return e===l?""+f:""+f+e+"/"}(t)+m}}}},75062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(96540),a=n(56347),o=n(43807);function i(e){var t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)((function(){n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(44586);function a(){return(0,r.A)().siteConfig.themeConfig}},38126:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});var r=n(44586);function a(){return(0,r.A)().siteConfig.themeConfig}},51062:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var r=n(96540),a=n(91252),o=n(86025),i=n(38126);function s(){var e=(0,o.hH)().withBaseUrl,t=(0,i.c)().algolia,n=t.externalUrlRegex,s=t.replaceSearchResultPathname;return(0,r.useCallback)((function(t){var r=new URL(t);if((0,a.G)(n,r.href))return t;var o=""+(r.pathname+r.hash);return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(o,s))}),[e,n,s])}},12983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=a,t.default=function(e,t){var n=t.trailingSlash,r=t.baseUrl;if(e.startsWith("#"))return e;if(void 0===n)return e;var i=e.split(/[#?]/)[0],s="/"===i||i===r?i:(c=i,l=n,l?a(c):o(c));var c,l;return e.replace(i,s)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o;var r=n(42566);function a(e){return e.endsWith("/")?e:e+"/"}function o(e){return(0,r.removeSuffix)(e,"/")}},80253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t].concat(e(t.cause));return[t]}},70440:(e,t,n)=>{"use strict";t.rA=t.Ks=void 0;var r=n(31635);var a=n(12983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(42566);var i=n(80253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},42566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:""+t+e},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:""+e+t},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},97671:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(96540);var r=n(53259),a=n.n(r),o=n(91964);const i={"0058b4c6":[function(){return n.e(849).then(n.t.bind(n,9302,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-175.json",9302],"06597bc8":[function(){return Promise.all([n.e(1869),n.e(6417)]).then(n.bind(n,67526))},"@site/../docs/learn/archive/learn-treasury.md",67526],"078895e8":[function(){return Promise.all([n.e(1869),n.e(9909)]).then(n.bind(n,13995))},"@site/../docs/learn/archive/learn-controller.md",13995],"08c12c3a":[function(){return n.e(5630).then(n.bind(n,84110))},"@site/../docs/general/dune-analytics/parachain-dashboards/polimec-dashboards.md",84110],"09dda9ae":[function(){return n.e(2598).then(n.bind(n,26438))},"@site/../docs/general/dune-analytics/parachain-dashboards/polkadex-dashboards.md",26438],"0a3f0c9b":[function(){return Promise.all([n.e(1869),n.e(6555)]).then(n.bind(n,96475))},"@site/../docs/general/ledger.md",96475],"0b1a788a":[function(){return n.e(3395).then(n.t.bind(n,62508,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-jam-fed.json",62508],"0b632434":[function(){return n.e(4739).then(n.bind(n,69188))},"@site/../docs/general/parachains-apps.md",69188],"0df78d26":[function(){return n.e(782).then(n.bind(n,79411))},"@site/../docs/maintain/maintain-guides-secure-validator.md",79411],"0eeb7a68":[function(){return Promise.all([n.e(1869),n.e(6869)]).then(n.bind(n,503))},"@site/../docs/learn/learn-guides-DOT-KSM-bridge.md",503],"113faa87":[function(){return Promise.all([n.e(1869),n.e(6011)]).then(n.bind(n,74860))},"@site/../docs/learn/learn-guides-assets.md",74860],"12331e8b":[function(){return Promise.all([n.e(1869),n.e(2244)]).then(n.bind(n,38517))},"@site/../docs/general/polkadotjs.md",38517],"1283e352":[function(){return n.e(1396).then(n.t.bind(n,72140,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-01f.json",72140],"131c7f55":[function(){return Promise.all([n.e(1869),n.e(2298)]).then(n.bind(n,97029))},"@site/../docs/learn/learn-architecture.md",97029],"145746f5":[function(){return Promise.all([n.e(1869),n.e(6789)]).then(n.bind(n,61050))},"@site/../docs/maintain/maintain-polkadot-parameters.md",61050],"14eb3368":[function(){return Promise.all([n.e(1869),n.e(6969)]).then(n.bind(n,65847))},"@theme/DocCategoryGeneratedIndexPage",65847],15985664:[function(){return n.e(5881).then(n.bind(n,40393))},"@site/../docs/learn/xcm/journey/summary.md",40393],"1646726c":[function(){return Promise.all([n.e(1869),n.e(3266)]).then(n.bind(n,7244))},"@site/../docs/learn/learn-staking.md",7244],"17541cf3":[function(){return Promise.all([n.e(1869),n.e(2273)]).then(n.bind(n,33986))},"@site/../docs/learn/learn-kusama-inflation.md",33986],17896441:[function(){return Promise.all([n.e(1869),n.e(8401)]).then(n.bind(n,48220))},"@theme/DocItem",48220],"196e07e8":[function(){return n.e(3602).then(n.bind(n,77858))},"@site/../docs/general/dune-analytics/parachain-dashboards/interlay-dashboards.md",77858],"19ed4d4c":[function(){return n.e(4661).then(n.bind(n,69037))},"@site/../docs/learn/learn-comparisons-cosmos.md",69037],"1a4e3797":[function(){return Promise.all([n.e(1869),n.e(2138)]).then(n.bind(n,74604))},"@theme/SearchPage",74604],"1ae2b102":[function(){return n.e(8121).then(n.bind(n,56195))},"@site/../docs/build/build-protocol-info.md",56195],"1d6d4797":[function(){return n.e(3477).then(n.bind(n,49012))},"@site/../docs/learn/xcm/journey/transact.md",49012],"1de1f488":[function(){return n.e(1240).then(n.t.bind(n,72680,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-parachains-index-132.json",72680],"1e051548":[function(){return n.e(3598).then(n.t.bind(n,45621,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-index-c1b.json",45621],"1e15616a":[function(){return n.e(3751).then(n.bind(n,20526))},"@site/../docs/learn/learn-wasm.md",20526],"1ed3671a":[function(){return n.e(3377).then(n.bind(n,4730))},"@site/../docs/learn/xcm/journey/trap-and-claim.md",4730],"1f8e8ebd":[function(){return n.e(5592).then(n.t.bind(n,77299,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-general-dune-analytics-dfe.json",77299],"21877fa5":[function(){return Promise.all([n.e(1869),n.e(6466)]).then(n.bind(n,84746))},"@site/../docs/learn/learn-system-chains.md",84746],"21899dd2":[function(){return Promise.all([n.e(1869),n.e(5168)]).then(n.bind(n,55009))},"@site/../docs/learn/learn-parachains.md",55009],"23210cde":[function(){return Promise.all([n.e(1869),n.e(3482),n.e(499)]).then(n.bind(n,98236))},"@site/../docs/general/chain-state-values.md",98236],"23498fd5":[function(){return n.e(7276).then(n.bind(n,23474))},"@site/../docs/build/build-integrate-assets.md",23474],"240a6b01":[function(){return n.e(9633).then(n.bind(n,11140))},"@site/../docs/general/dune-analytics/parachain-dashboards/nodle-dashboards.md",11140],"2462cc91":[function(){return n.e(9141).then(n.bind(n,10196))},"@site/../docs/general/multisig-apps.md",10196],"25f2bd2a":[function(){return n.e(885).then(n.bind(n,62965))},"@site/../docs/maintain/maintain-guides-how-to-stop-validating.md",62965],"269b78ec":[function(){return n.e(1191).then(n.t.bind(n,76722,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-build-protocol-index-9e0.json",76722],"269bc3bb":[function(){return n.e(1968).then(n.bind(n,48374))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-nominators.md",48374],"26dc7bd1":[function(){return n.e(166).then(n.bind(n,56624))},"@site/../docs/general/dune-analytics/parachain-dashboards/invarch-dashboards.md",56624],"279fb1d6":[function(){return Promise.all([n.e(1869),n.e(4994)]).then(n.bind(n,70134))},"@site/../docs/general/kusama/kusama-getting-started.md",70134],"28b84bbb":[function(){return n.e(9385).then(n.bind(n,11662))},"@site/../docs/build/build-network-overview.md",11662],"2be0d940":[function(){return Promise.all([n.e(1869),n.e(4537)]).then(n.bind(n,23169))},"@site/../docs/learn/learn-guides-identity.md",23169],"2d34559d":[function(){return n.e(7893).then(n.bind(n,95754))},"@site/../docs/learn/learn-jam-chain.md",95754],"2d429218":[function(){return n.e(6361).then(n.bind(n,58267))},"@site/../docs/learn/learn-consensus.md",58267],"2e0c35d5":[function(){return n.e(2698).then(n.bind(n,4057))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-governance-dashboard.md",4057],"2e944e01":[function(){return n.e(4231).then(n.bind(n,13186))},"@site/../docs/general/dune-analytics/parachain-dashboards/manta-dashboards.md",13186],"2ea50c63":[function(){return n.e(1560).then(n.bind(n,6859))},"@site/../docs/learn/learn-xcm-usecases.md",6859],"2f3b630e":[function(){return Promise.all([n.e(1869),n.e(2584)]).then(n.bind(n,59327))},"@site/../docs/learn/learn-polkadot-opengov.md",59327],"3002ebf4":[function(){return Promise.all([n.e(1869),n.e(3423)]).then(n.bind(n,19639))},"@site/../docs/build/build-dapp.md",19639],"3184af97":[function(){return Promise.all([n.e(1869),n.e(5362)]).then(n.bind(n,93313))},"@site/../docs/maintain/archive/maintain-guides-how-to-vote-councillor.md",93313],"31bd35e0":[function(){return n.e(1042).then(n.bind(n,75535))},"@site/../docs/learn/xcm/overview/summary.md",75535],"320c8a05":[function(){return n.e(4479).then(n.bind(n,35689))},"@site/../docs/maintain/maintain-networks.md",35689],"32c9742a":[function(){return n.e(9682).then(n.bind(n,37608))},"@site/../docs/learn/xcm/fundamentals/summary.md",37608],"33b0bcab":[function(){return n.e(1519).then(n.bind(n,15958))},"@site/../docs/learn/xcm/reference/xcvm-registers.md",15958],"33bbe353":[function(){return n.e(5033).then(n.bind(n,35831))},"@site/../docs/maintain/kusama/maintain-guides-society-kusama.md",35831],"34b0fecb":[function(){return n.e(1024).then(n.t.bind(n,22e3,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-references-e58.json",22e3],"3521cab9":[function(){return n.e(3827).then(n.t.bind(n,69073,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-staking-index-244.json",69073],"36051dfe":[function(){return n.e(3949).then(n.bind(n,78579))},"@site/../docs/general/dune-analytics/parachain-dashboards/unique-dashboards.md",78579],"3611be04":[function(){return Promise.all([n.e(1869),n.e(5761)]).then(n.bind(n,46182))},"@site/../docs/learn/learn-offenses.md",46182],"36b7ae49":[function(){return n.e(1914).then(n.bind(n,31184))},"@site/../docs/learn/learn-snowbridge.md",31184],"3829cf1d":[function(){return n.e(5249).then(n.bind(n,56435))},"@site/../docs/maintain/maintain-guides-validator-community.md",56435],"386099fc":[function(){return n.e(3091).then(n.bind(n,18137))},"@site/../docs/learn/learn-polkadot-opengov-treasury.md",18137],"386bfe51":[function(){return n.e(6319).then(n.bind(n,48480))},"@site/../docs/general/contributing.md",48480],"387813b8":[function(){return n.e(2409).then(n.bind(n,91313))},"@site/../docs/learn/learn-guides-coretime-parachains.md",91313],"390ca211":[function(){return Promise.all([n.e(1869),n.e(2623)]).then(n.bind(n,86374))},"@site/../docs/learn/archive/learn-launch.md",86374],"3bd77df4":[function(){return Promise.all([n.e(1869),n.e(3976)]).then(n.bind(n,50628))},"@site/../docs/learn/learn-bridges.md",50628],"3bd87233":[function(){return n.e(8309).then(n.t.bind(n,36278,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-maintain-validator-index-997.json",36278],"3d1bf5db":[function(){return n.e(4190).then(n.bind(n,3413))},"@site/../docs/maintain/maintain-guides-async-backing.md",3413],"3e56470e":[function(){return n.e(1608).then(n.bind(n,97325))},"@site/../docs/maintain/maintain-wss.md",97325],"41b7b3e8":[function(){return n.e(577).then(n.bind(n,16044))},"@site/../docs/learn/learn-staking-advanced.md",16044],"41f7224c":[function(){return Promise.all([n.e(1869),n.e(7376)]).then(n.bind(n,90853))},"@site/../docs/learn/learn-archive.md",90853],"437b4e16":[function(){return n.e(8647).then(n.bind(n,37328))},"@site/../docs/general/dune-analytics/parachain-dashboards/snowbridge-dashboards.md",37328],"43ee4f22":[function(){return Promise.all([n.e(1869),n.e(876)]).then(n.bind(n,95536))},"@site/../docs/build/build-guide.md",95536],"4403bb94":[function(){return n.e(3735).then(n.bind(n,73338))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-dot-ordinals.md",73338],"452ad91d":[function(){return n.e(6195).then(n.bind(n,85671))},"@site/../docs/learn/xcm/overview/intro.md",85671],"4642ab5c":[function(){return n.e(4434).then(n.bind(n,23213))},"@site/../docs/learn/learn-cryptography.md",23213],"46c5b6d8":[function(){return n.e(1905).then(n.t.bind(n,42578,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-comparisons-index-3c0.json",42578],"48d75399":[function(){return n.e(230).then(n.bind(n,76984))},"@site/../docs/general/faq.md",76984],"493c7fdf":[function(){return n.e(5053).then(n.bind(n,22798))},"@site/../docs/general/glossary.md",22798],"497334c4":[function(){return n.e(6736).then(n.bind(n,39084))},"@site/../docs/general/dune-analytics/project-dashboards.md",39084],"49ea81bb":[function(){return n.e(9233).then(n.bind(n,91758))},"@site/../docs/general/dune-analytics/polkadot-dashboards/polkadot-dashboards-staking.md",91758],"4a8eb552":[function(){return n.e(1949).then(n.bind(n,67589))},"@site/../docs/learn/learn-comparisons-kusama.md",67589],"4d76887f":[function(){return n.e(6235).then(n.bind(n,97441))},"@site/../docs/build/build-hackathon.md",97441],"4d9b9869":[function(){return n.e(9550).then(n.bind(n,90986))},"@site/../docs/learn/learn-parachains-protocol.md",90986],"4f031749":[function(){return Promise.all([n.e(1869),n.e(1699)]).then(n.bind(n,50762))},"@site/../docs/learn/learn-guides-staking-pools.md",50762],"4f6f3f96":[function(){return n.e(1531).then(n.t.bind(n,56253,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-overview-d82.json",56253],"5136ee31":[function(){return n.e(4632).then(n.bind(n,56710))},"@site/../docs/learn/xcm/journey/expects.md",56710],"5193d8a9":[function(){return n.e(1511).then(n.bind(n,6513))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-opengov-referenda-home.md",6513],"51fbc2c9":[function(){return n.e(2706).then(n.bind(n,15727))},"@site/../docs/learn/learn-comparisons.md",15727],"5355b952":[function(){return Promise.all([n.e(1869),n.e(3482),n.e(2580),n.e(1003)]).then(n.bind(n,30866))},"@site/../docs/learn/learn-polkadot-opengov-origins.md",30866],"54338ffb":[function(){return n.e(8112).then(n.bind(n,69870))},"@site/../docs/learn/learn-account-multisig.md",69870],"543c9f0a":[function(){return n.e(566).then(n.bind(n,19668))},"@site/../docs/build/build-guides-coretime-troubleshoot.md",19668],"556d3f96":[function(){return n.e(1241).then(n.bind(n,90731))},"@site/../docs/general/dune-analytics/parachain-dashboards/astar-dashboards.md",90731],"571c8793":[function(){return n.e(3984).then(n.bind(n,71701))},"@site/../docs/general/dune-analytics/parachain-dashboards/moonbeam-dashboards.md",71701],"57d69936":[function(){return n.e(8736).then(n.t.bind(n,34309,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-programs-index-225.json",34309],"591eca19":[function(){return n.e(2493).then(n.bind(n,54758))},"@site/../docs/general/polkadot-direction.md",54758],"5c6a20c2":[function(){return n.e(9349).then(n.bind(n,97771))},"@site/../docs/learn/learn-safrole.md",97771],"5c90fc9b":[function(){return n.e(3708).then(n.bind(n,91519))},"@site/../docs/learn/xcm/executor_config/config.md",91519],"5d5db6f5":[function(){return n.e(3200).then(n.t.bind(n,56965,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-advanced-index-8e8.json",56965],"5d69d9d4":[function(){return n.e(1658).then(n.bind(n,23071))},"@site/../docs/maintain/maintain-guides-how-to-upgrade.md",23071],"5db34cd0":[function(){return n.e(8058).then(n.bind(n,21507))},"@site/../docs/general/decentralized-voices.md",21507],"5dfc1fb1":[function(){return n.e(1187).then(n.bind(n,27150))},"@site/../docs/general/pcf.md",27150],"5e1f281f":[function(){return n.e(6835).then(n.t.bind(n,33254,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-stay-safe-index-fb6.json",33254],"5e95c892":[function(){return n.e(9647).then(n.bind(n,7121))},"@theme/DocsRoot",7121],"5e9f5e1a":[function(){return Promise.resolve().then(n.bind(n,85290))},"@generated/docusaurus.config",85290],"5f2beba5":[function(){return n.e(7405).then(n.t.bind(n,39196,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-participants-index-530.json",39196],"60738e36":[function(){return Promise.all([n.e(3482),n.e(7777)]).then(n.bind(n,513))},"@site/../docs/general/metadata.md",513],"6116139f":[function(){return Promise.all([n.e(1869),n.e(4840)]).then(n.bind(n,4908))},"@site/../docs/learn/learn-elastic-scaling.md",4908],"643a7bcf":[function(){return n.e(3345).then(n.t.bind(n,51948,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-wallets-index-9b6.json",51948],"64947d47":[function(){return n.e(8688).then(n.t.bind(n,27375,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-polkadot-vision-index-148.json",27375],"64c7e1cc":[function(){return n.e(8727).then(n.bind(n,13907))},"@site/../docs/build/build-integration.md",13907],"6544ec02":[function(){return n.e(9786).then(n.bind(n,88232))},"@site/../docs/general/alpha-program.md",88232],"6822f432":[function(){return n.e(2356).then(n.t.bind(n,50306,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-community-index-a87.json",50306],"694672cd":[function(){return Promise.all([n.e(1869),n.e(1004)]).then(n.bind(n,29488))},"@site/../docs/learn/learn-guides-staking.md",29488],"69b97ecd":[function(){return n.e(866).then(n.bind(n,75429))},"@site/../docs/learn/learn-implementations.md",75429],"6bfbfa77":[function(){return Promise.all([n.e(1869),n.e(2858)]).then(n.bind(n,94133))},"@site/../docs/learn/archive/learn-auction.md",94133],"6d2ffbf3":[function(){return n.e(4168).then(n.bind(n,53158))},"@site/../docs/learn/xcm/quickstart/first-look.md",53158],"6d423296":[function(){return n.e(9521).then(n.t.bind(n,12483,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-assets-index-7cb.json",12483],"6d5c9a28":[function(){return n.e(417).then(n.bind(n,82315))},"@site/../docs/general/staking-apps.md",82315],"6f1a81b8":[function(){return n.e(2802).then(n.bind(n,73534))},"@site/../docs/maintain/maintain-guides-how-to-chill.md",73534],"700d39cd":[function(){return n.e(5647).then(n.t.bind(n,39389,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-polkadot-opengov-index-246.json",39389],"706277b1":[function(){return n.e(3487).then(n.bind(n,1731))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-validators.md",1731],"71ed82b9":[function(){return n.e(1369).then(n.bind(n,61987))},"@site/../docs/general/start-building.md",61987],"72b78d4a":[function(){return n.e(1772).then(n.bind(n,9627))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-opengov-referendum-voting-analysis.md",9627],73617284:[function(){return n.e(981).then(n.bind(n,76231))},"@site/../docs/learn/learn-hyperbridge.md",76231],"73a7060c":[function(){return n.e(5208).then(n.bind(n,46406))},"@site/../docs/learn/learn-polkadot-technical-fellowship.md",46406],"73d1b372":[function(){return Promise.all([n.e(1869),n.e(1498)]).then(n.bind(n,15735))},"@site/../docs/learn/learn-agile-coretime.md",15735],"74df6a22":[function(){return n.e(7227).then(n.bind(n,77408))},"@site/../docs/maintain/maintain-rpc.md",77408],"766a10e1":[function(){return n.e(6118).then(n.bind(n,16078))},"@site/../docs/learn/learn-comparisons-avalanche.md",16078],"767dd344":[function(){return Promise.all([n.e(1869),n.e(7734)]).then(n.bind(n,28853))},"@site/../docs/learn/archive/thousand-validators.md",28853],"77c23c97":[function(){return Promise.all([n.e(1869),n.e(5555),n.e(3536)]).then(n.bind(n,73554))},"@site/../docs/learn/learn-transactions.md",73554],"78868b16":[function(){return n.e(1539).then(n.bind(n,48626))},"@site/../docs/general/kusama/kusama-social-recovery.md",48626],"78e1e977":[function(){return n.e(5884).then(n.bind(n,97501))},"@site/../docs/learn/xcm/journey/holding-modifiers.md",97501],"7be75fa6":[function(){return n.e(220).then(n.bind(n,29022))},"@site/../docs/learn/learn-guides-test-opengov-proposals.md",29022],"7c138549":[function(){return n.e(7473).then(n.bind(n,24358))},"@site/../docs/general/dune-analytics/parachain-dashboards/neuroweb-dashboards.md",24358],"7c43c534":[function(){return n.e(9787).then(n.t.bind(n,71769,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-fundamentals-multilocation-cfc.json",71769],"7dcec981":[function(){return Promise.all([n.e(1869),n.e(4271)]).then(n.bind(n,37304))},"@site/../docs/build/build-client-side.md",37304],"7fbac68a":[function(){return n.e(2757).then(n.bind(n,98939))},"@site/../docs/general/ambassadors.md",98939],"7ffd66a6":[function(){return n.e(6547).then(n.bind(n,49263))},"@site/../docs/general/dune-analytics/parachain-dashboards/acala-dashboards.md",49263],"804b1e9f":[function(){return Promise.all([n.e(1869),n.e(1062)]).then(n.bind(n,7210))},"@site/../docs/learn/learn-guides-nominator.md",7210],"8081c0c6":[function(){return n.e(8568).then(n.bind(n,90339))},"@site/../docs/general/parity-data-dashboards.md",90339],"824749c6":[function(){return n.e(8800).then(n.bind(n,84316))},"@site/../docs/build/build-node-interaction.md",84316],"8247eba8":[function(){return n.e(7044).then(n.bind(n,8380))},"@site/../docs/learn/xcm/journey/transfers/teleports.md",8380],"83d4859f":[function(){return n.e(2808).then(n.bind(n,84890))},"@site/../docs/learn/xcm/journey/transfers/summary.md",84890],"84ede15a":[function(){return Promise.all([n.e(1869),n.e(6124)]).then(n.bind(n,41209))},"@site/../docs/learn/learn-guides-transfers.md",41209],"85afe03a":[function(){return n.e(1628).then(n.bind(n,42692))},"@site/../docs/maintain/maintain-errors.md",42692],"863c4753":[function(){return n.e(6076).then(n.bind(n,95697))},"@site/../docs/learn/xcm/journey/register-modifiers.md",95697],"879e564b":[function(){return n.e(8789).then(n.bind(n,73538))},"@site/../docs/general/dune-analytics/onboarding-status-and-key-dashboards.md",73538],"899aadcc":[function(){return n.e(6993).then(n.bind(n,53044))},"@site/../docs/learn/xcm/overview/architecture.md",53044],"89a76fd2":[function(){return Promise.all([n.e(1869),n.e(2204)]).then(n.bind(n,78076))},"@site/../docs/learn/archive/learn-redenomination.md",78076],"8a8a7d05":[function(){return n.e(4791).then(n.bind(n,11659))},"@site/../docs/build/build-parachains.md",11659],"8b670b2b":[function(){return n.e(954).then(n.bind(n,6705))},"@site/../docs/build/build-index.md",6705],"8d3a1bf8":[function(){return Promise.all([n.e(1869),n.e(5588)]).then(n.bind(n,2203))},"@site/../docs/learn/learn-inflation.md",2203],"8d48ec84":[function(){return n.e(2615).then(n.bind(n,43996))},"@site/../docs/general/dune-analytics/parachain-dashboards/frequency-dashboards.md",43996],"8fadc1f3":[function(){return n.e(2191).then(n.t.bind(n,98303,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-index-b78.json",98303],"90a09ad1":[function(){return n.e(8768).then(n.bind(n,10775))},"@site/../docs/general/dune-analytics/dunesql-cheatsheet.md",10775],"918b38b6":[function(){return Promise.all([n.e(1869),n.e(6930)]).then(n.bind(n,61900))},"@site/../docs/learn/learn-async-backing.md",61900],"93953b85":[function(){return n.e(6247).then(n.t.bind(n,48324,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-journey-f1c.json",48324],"943aba4c":[function(){return Promise.all([n.e(1869),n.e(1112)]).then(n.bind(n,94436))},"@site/../docs/learn/learn-guides-claims.md",94436],"9528ac88":[function(){return n.e(1379).then(n.bind(n,88693))},"@site/../docs/learn/learn-xcm-transport.md",88693],"95aedc42":[function(){return n.e(6842).then(n.t.bind(n,49664,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-journey-transfers-540.json",49664],"9662c81e":[function(){return Promise.all([n.e(1869),n.e(7809)]).then(n.bind(n,69959))},"@site/../docs/maintain/archive/maintain-guides-how-to-join-council.md",69959],"967fa6d4":[function(){return Promise.all([n.e(1869),n.e(7876)]).then(n.bind(n,48660))},"@site/../docs/learn/learn-guides-accounts-multisig.md",48660],"979a04e7":[function(){return n.e(3705).then(n.bind(n,15554))},"@site/../docs/general/dune-analytics/parachain-dashboards/bifrost-dashboards.md",15554],"987d08ef":[function(){return n.e(6496).then(n.bind(n,14954))},"@site/../docs/build/build-smart-contracts.md",14954],"98a30fd8":[function(){return n.e(2950).then(n.bind(n,81151))},"@site/../docs/learn/xcm/fundamentals/multiasset.md",81151],"98a431f4":[function(){return n.e(8005).then(n.bind(n,34760))},"@site/../docs/general/transaction-attacks.md",34760],"9913464d":[function(){return Promise.all([n.e(1869),n.e(5883)]).then(n.bind(n,93563))},"@site/../docs/learn/archive/learn-governance.md",93563],"9e2042f5":[function(){return n.e(3086).then(n.bind(n,79554))},"@site/../docs/learn/learn-collator.md",79554],"9e3f6a8a":[function(){return n.e(8108).then(n.bind(n,44533))},"@site/../docs/learn/learn-comparison-ethereum-2.md",44533],"9e6341e5":[function(){return n.e(8431).then(n.bind(n,82057))},"@site/../docs/learn/xcm/journey/transfers/reserve.md",82057],"9e76b49d":[function(){return n.e(6775).then(n.bind(n,1399))},"@site/../docs/learn/xcm/testing.md",1399],"9f319605":[function(){return n.e(834).then(n.bind(n,1567))},"@site/../docs/learn/xcm/journey/fees.md",1567],"9f804621":[function(){return Promise.all([n.e(1869),n.e(5555),n.e(1431)]).then(n.bind(n,68448))},"@site/../docs/learn/learn-guides-accounts.md",68448],a2800a5b:[function(){return n.e(3234).then(n.bind(n,52350))},"@site/../docs/build/build-transaction-construction.md",52350],a29dc56e:[function(){return n.e(7554).then(n.bind(n,55221))},"@site/../docs/maintain/maintain-guides-how-to-monitor-your-node.md",55221],a2d5a6d8:[function(){return n.e(6622).then(n.bind(n,68962))},"@site/../docs/general/dune-analytics/parachain-dashboards/collectives-dashboards.md",68962],a44b8423:[function(){return n.e(319).then(n.bind(n,71484))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-pool-member.md",71484],a5002e4a:[function(){return n.e(1067).then(n.bind(n,13094))},"@site/../docs/build/build-oracle.md",13094],a5b3561d:[function(){return n.e(2226).then(n.bind(n,49538))},"@site/../docs/general/kusama/kusama-coc.md",49538],a6e65e5f:[function(){return n.e(7208).then(n.t.bind(n,3840,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-quickstart-1cc.json",3840],a7456010:[function(){return n.e(1235).then(n.t.bind(n,50950,19))},"@generated/docusaurus-plugin-content-pages/default/__plugin.json",50950],a74a59a0:[function(){return n.e(4975).then(n.bind(n,61861))},"@site/../docs/maintain/maintain-guides-how-to-validate-polkadot.md",61861],a7b37b86:[function(){return n.e(1447).then(n.bind(n,10958))},"@site/../docs/general/scams.md",10958],a7bd4aaa:[function(){return n.e(7098).then(n.bind(n,74532))},"@theme/DocVersionRoot",74532],a8f54fb1:[function(){return n.e(1706).then(n.bind(n,37672))},"@site/../docs/learn/learn-DOT-KSM-bridge.md",37672],a94703ab:[function(){return Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,11377))},"@theme/DocRoot",11377],a9f58d5b:[function(){return n.e(5331).then(n.bind(n,57946))},"@site/../docs/learn/learn-account-balances.md",57946],ab138bf8:[function(){return n.e(8914).then(n.bind(n,18538))},"@site/../docs/learn/learn-proxies.md",18538],aba21aa0:[function(){return n.e(5742).then(n.t.bind(n,98211,19))},"@generated/docusaurus-plugin-content-docs/default/__plugin.json",98211],ad1dd1a4:[function(){return n.e(7217).then(n.t.bind(n,86749,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-dashboards-index-254.json",86749],ad5a1373:[function(){return n.e(3656).then(n.bind(n,30091))},"@site/../docs/general/dune-analytics/parachain-dashboards/phala-dashboards.md",30091],ad762f86:[function(){return Promise.all([n.e(1869),n.e(3041)]).then(n.bind(n,6331))},"@site/../docs/learn/learn-account-advanced.md",6331],af2ff1b5:[function(){return n.e(6646).then(n.bind(n,88350))},"@site/../docs/general/dune-analytics/parachain-dashboards/hydration-dashboards.md",88350],afddde9d:[function(){return n.e(1724).then(n.bind(n,29644))},"@site/../docs/learn/learn-asset-conversion-assethub.md",29644],b0a48d97:[function(){return Promise.all([n.e(1869),n.e(1018)]).then(n.bind(n,83313))},"@site/../docs/learn/learn-guides-ledger.md",83313],b0cb055f:[function(){return n.e(9074).then(n.bind(n,35568))},"@site/../docs/learn/xcm/fundamentals/xcvm.md",35568],b0cbc1d4:[function(){return n.e(7826).then(n.bind(n,86106))},"@site/../docs/general/staking-dashboard.md",86106],b0d34550:[function(){return n.e(8660).then(n.bind(n,80338))},"@site/../docs/general/dune-analytics/polkadot-dashboards/polkadot-dashboards-network.md",80338],b1b82dcd:[function(){return Promise.all([n.e(1869),n.e(557)]).then(n.bind(n,85916))},"@site/../docs/learn/archive/learn-crowdloans.md",85916],b21dd8a7:[function(){return n.e(6024).then(n.bind(n,88617))},"@site/../docs/learn/learn-comparison-rollups.md",88617],b225a2ce:[function(){return n.e(1101).then(n.bind(n,28179))},"@site/../docs/learn/xcm/fundamentals/multilocation/summary.md",28179],b3558274:[function(){return n.e(3975).then(n.bind(n,24716))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard.md",24716],b3719d54:[function(){return n.e(8290).then(n.bind(n,61004))},"@site/../docs/general/polkadot-v1.md",61004],b38833d4:[function(){return n.e(6104).then(n.bind(n,15199))},"@site/../docs/learn/learn-phragmen.md",15199],b418feb9:[function(){return n.e(7242).then(n.bind(n,94910))},"@site/../docs/general/dune-analytics/polkadot-dashboards/polkadot-dashboards-governance.md",94910],b48c599b:[function(){return n.e(9057).then(n.bind(n,90313))},"@site/../docs/general/kusama/kusama-bug-bounty.md",90313],b7bd3ab3:[function(){return n.e(6445).then(n.bind(n,26705))},"@site/../docs/general/dune-analytics/parachain-dashboards/energywebx-dashboards.md",26705],b835d927:[function(){return n.e(1397).then(n.bind(n,66600))},"@site/../docs/general/ecosystem-funds.md",66600],b8cd9d81:[function(){return n.e(3910).then(n.t.bind(n,33716,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-general-dune-analytics-polkadot-dashboards-be4.json",33716],b906f375:[function(){return n.e(159).then(n.bind(n,91160))},"@site/../docs/build/build-light-clients.md",91160],b940de31:[function(){return n.e(4817).then(n.bind(n,21644))},"@site/../docs/learn/learn-assets.md",21644],b9b4ec9e:[function(){return n.e(3316).then(n.bind(n,8255))},"@site/../docs/learn/xcm/reference/glossary.md",8255],bb8b1738:[function(){return n.e(2916).then(n.bind(n,77348))},"@site/../docs/learn/learn-validator.md",77348],bbba852d:[function(){return n.e(9799).then(n.bind(n,17681))},"@site/../docs/general/kusama/kusama-adverserial-cheatsheet.md",17681],bd701914:[function(){return Promise.all([n.e(1869),n.e(1077)]).then(n.bind(n,4366))},"@site/../docs/learn/learn-parachains-faq.md",4366],bea375d6:[function(){return n.e(4938).then(n.bind(n,85374))},"@site/../docs/general/grants.md",85374],bf3ab9de:[function(){return Promise.all([n.e(1869),n.e(2389)]).then(n.bind(n,4543))},"@site/../docs/learn/learn-guides-bridges.md",4543],c07c2447:[function(){return Promise.all([n.e(1869),n.e(7561)]).then(n.bind(n,28794))},"@site/../docs/learn/learn-guides-polkadot-opengov.md",28794],c07ecb8b:[function(){return n.e(7371).then(n.t.bind(n,56310,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-general-dune-analytics-parachain-dashboards-671.json",56310],c110e322:[function(){return n.e(1592).then(n.bind(n,34687))},"@site/../docs/learn/learn-guides-coretime-swap.md",34687],c141421f:[function(){return n.e(957).then(n.t.bind(n,90786,19))},"@generated/docusaurus-theme-search-algolia/default/__plugin.json",90786],c1bbdb2a:[function(){return n.e(5558).then(n.bind(n,99435))},"@site/../docs/learn/learn-polkadot-host.md",99435],c2912163:[function(){return n.e(7352).then(n.t.bind(n,61910,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-components-index-c9a.json",61910],c2c6a3a6:[function(){return n.e(8506).then(n.bind(n,39323))},"@site/../docs/learn/learn-nft-projects.md",39323],c41801b5:[function(){return Promise.all([n.e(3482),n.e(9507)]).then(n.bind(n,62499))},"@site/../docs/maintain/kusama/maintain-guides-how-to-validate-kusama.md",62499],c4f5d8e4:[function(){return Promise.all([n.e(1869),n.e(2634)]).then(n.bind(n,497))},"@site/src/pages/index.js",497],c52e674c:[function(){return n.e(4466).then(n.t.bind(n,81627,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-build-archive-index-a99.json",81627],c57cca4f:[function(){return n.e(895).then(n.t.bind(n,33202,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-future-implementations-index-472.json",33202],c630d0cd:[function(){return n.e(5420).then(n.bind(n,3284))},"@site/../docs/build/build-guides-template-basic.md",3284],c662f00a:[function(){return n.e(7887).then(n.bind(n,84768))},"@site/../docs/learn/xcm/journey/queries.md",84768],c6b91cbc:[function(){return n.e(1050).then(n.t.bind(n,28239,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-basics-index-5be.json",28239],c78e4f7d:[function(){return n.e(1335).then(n.bind(n,97685))},"@site/../docs/general/dune-analytics/polkadot-dashboards/polkadot-dashboards-overview.md",97685],c7a044bb:[function(){return n.e(9110).then(n.bind(n,31189))},"@site/../docs/learn/xcm/journey/channels-and-bridges.md",31189],c7a2145e:[function(){return n.e(6277).then(n.bind(n,40319))},"@site/../docs/general/how-to-dyor.md",40319],c7c5ba1a:[function(){return Promise.all([n.e(1869),n.e(9476)]).then(n.bind(n,55927))},"@site/../docs/learn/learn-accounts.md",55927],c8dd560b:[function(){return Promise.all([n.e(1869),n.e(4293)]).then(n.bind(n,13699))},"@site/../docs/learn/learn-guides-accounts-proxy-pure.md",13699],c91a9c06:[function(){return Promise.all([n.e(1869),n.e(1019)]).then(n.bind(n,27186))},"@site/../docs/learn/learn-identity.md",27186],c977dfe8:[function(){return n.e(4024).then(n.bind(n,32690))},"@site/../docs/learn/learn-teleport.md",32690],ca45e589:[function(){return n.e(4821).then(n.t.bind(n,22754,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-explore-index-06f.json",22754],ca9fe671:[function(){return n.e(5827).then(n.bind(n,47733))},"@site/../docs/learn/xcm/overview/xcvm.md",47733],cb9afd28:[function(){return Promise.all([n.e(1869),n.e(1738)]).then(n.bind(n,58772))},"@site/../docs/learn/learn-polkadot-js-guides.md",58772],cc44e8fd:[function(){return n.e(5052).then(n.bind(n,93123))},"@site/../docs/build/build-node-management.md",93123],ccc1222e:[function(){return n.e(5702).then(n.bind(n,6295))},"@site/../docs/build/build-open-source.md",6295],cda87995:[function(){return n.e(1711).then(n.bind(n,61925))},"@site/../docs/build/build-tools-index.md",61925],cdedf67f:[function(){return n.e(8050).then(n.t.bind(n,8137,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-maintain-node-index-307.json",8137],ceaa29cb:[function(){return n.e(4841).then(n.bind(n,50965))},"@site/../docs/learn/xcm/journey/locks/locks.md",50965],cfd53ea4:[function(){return n.e(7482).then(n.bind(n,69091))},"@site/../docs/general/kusama/kusama-timeline.md",69091],cfe984ba:[function(){return n.e(8289).then(n.t.bind(n,57081,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-apps-index-b66.json",57081],d000eb73:[function(){return n.e(4228).then(n.bind(n,6124))},"@site/../docs/general/dune-analytics/parachain-dashboards/stellaswap-dashboards.md",6124],d27ae88d:[function(){return n.e(3170).then(n.bind(n,93346))},"@site/../docs/learn/learn-video-tutorials.md",93346],d3a753cf:[function(){return n.e(4191).then(n.bind(n,96737))},"@site/../docs/learn/xcm/fundamentals/multilocation/example.md",96737],d42819bc:[function(){return n.e(3306).then(n.bind(n,19238))},"@site/../docs/general/dune-analytics/parachain-dashboards/bridgehub-dashboards.md",19238],d569989b:[function(){return n.e(8255).then(n.bind(n,69864))},"@site/../docs/general/bug-bounty.md",69864],d5909206:[function(){return n.e(5434).then(n.bind(n,17287))},"@site/../docs/learn/xcm/fundamentals/multilocation/junction.md",17287],d6a97e7e:[function(){return n.e(1107).then(n.bind(n,41316))},"@site/../docs/learn/xcm/quickstart/xcm-simulator.md",41316],d6b0148d:[function(){return n.e(2980).then(n.bind(n,29811))},"@site/../docs/learn/xcm/journey/origins.md",29811],d9a69e3a:[function(){return n.e(5829).then(n.bind(n,19923))},"@site/../docs/general/dune-analytics/parachain-dashboards/people-dashboards.md",19923],d9ef69a7:[function(){return n.e(2164).then(n.bind(n,47734))},"@site/../docs/general/contributors.md",47734],da9f79cb:[function(){return Promise.all([n.e(1869),n.e(3044)]).then(n.bind(n,86708))},"@site/../docs/learn/learn-nomination-pools.md",86708],daaf1ab4:[function(){return Promise.all([n.e(1869),n.e(8215)]).then(n.bind(n,25939))},"@site/../docs/general/funding.md",25939],db039c7f:[function(){return n.e(2481).then(n.bind(n,685))},"@site/../docs/learn/xcm/overview/format.md",685],db3d6c4d:[function(){return n.e(7845).then(n.bind(n,5065))},"@site/../docs/learn/learn-account-abstraction.md",5065],db9d4dae:[function(){return n.e(8472).then(n.bind(n,17907))},"@site/../docs/general/dune-analytics/parachain-dashboards/coretime-dashboards.md",17907],dbbd9e76:[function(){return Promise.all([n.e(1869),n.e(2922)]).then(n.bind(n,97626))},"@site/../docs/learn/learn-guides-vault.md",97626],dc0f9344:[function(){return n.e(1058).then(n.bind(n,34578))},"@site/../docs/general/dune-analytics/parachain-dashboards/pendulum-dashboards.md",34578],dc36d550:[function(){return Promise.all([n.e(1869),n.e(2357)]).then(n.bind(n,5782))},"@site/../docs/maintain/maintain-archive.md",5782],dc776cbc:[function(){return n.e(4498).then(n.bind(n,2405))},"@site/../docs/general/thousand-contributors.md",2405],dd2fa029:[function(){return Promise.all([n.e(1869),n.e(2047)]).then(n.bind(n,44992))},"@site/../docs/learn/learn-polkadotjs.md",44992],dd32e389:[function(){return n.e(7781).then(n.bind(n,69175))},"@site/../docs/general/polkadot-vault.md",69175],df154d69:[function(){return n.e(3880).then(n.bind(n,79822))},"@site/../docs/learn/learn-xcm.md",79822],e00ac272:[function(){return n.e(1881).then(n.bind(n,95369))},"@site/../docs/learn/learn-guides-coretime-marketplaces.md",95369],e2e89062:[function(){return n.e(9894).then(n.bind(n,20696))},"@site/../docs/learn/learn-proxies-pure.md",20696],e31fc461:[function(){return n.e(352).then(n.bind(n,21253))},"@site/../docs/learn/xcm/learn-xcm-docs-intro.md",21253],e43aed4a:[function(){return n.e(1122).then(n.t.bind(n,95773,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-general-index-bbd.json",95773],e495ca4d:[function(){return Promise.all([n.e(1869),n.e(662)]).then(n.bind(n,74360))},"@site/../docs/maintain/archive/maintain-guides-democracy.md",74360],e4ef088f:[function(){return Promise.all([n.e(1869),n.e(3315)]).then(n.bind(n,20888))},"@site/../docs/build/build-guides-install-deps.md",20888],e77078a1:[function(){return n.e(3557).then(n.bind(n,21775))},"@site/../docs/learn/learn-jam-faq.md",21775],e8522a07:[function(){return n.e(5513).then(n.bind(n,53144))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-nomination-pool.md",53144],ec3b6a32:[function(){return n.e(8832).then(n.bind(n,96287))},"@site/../docs/learn/learn-nft.md",96287],ecb495b7:[function(){return n.e(6786).then(n.bind(n,96724))},"@site/../docs/maintain/maintain-guides-how-to-systemd.md",96724],ece9fdae:[function(){return Promise.all([n.e(1869),n.e(6641)]).then(n.bind(n,2619))},"@site/../docs/general/community.md",2619],ed3409b3:[function(){return Promise.all([n.e(1869),n.e(4117)]).then(n.bind(n,8575))},"@site/../docs/learn/learn-guides-bounties.md",8575],eef3f1dd:[function(){return Promise.all([n.e(1869),n.e(7827)]).then(n.bind(n,62313))},"@site/../docs/learn/learn-guides-treasury.md",62313],efba78c5:[function(){return n.e(3368).then(n.bind(n,40162))},"@site/../docs/general/dune-analytics/polkadot-ecosystem-overview.md",40162],f0ff685a:[function(){return Promise.all([n.e(1869),n.e(2393)]).then(n.bind(n,11854))},"@site/../docs/learn/learn-guides-accounts-proxy.md",11854],f10f9928:[function(){return n.e(5534).then(n.bind(n,2475))},"@site/../docs/general/dune-analytics/parachain-dashboards/assethub-dashboards.md",2475],f137ce68:[function(){return Promise.all([n.e(1869),n.e(9188)]).then(n.bind(n,93716))},"@site/../docs/learn/learn-xcm-instructions.md",93716],f1585bfb:[function(){return n.e(3642).then(n.bind(n,53608))},"@site/../docs/learn/xcm/quickstart/summary.md",53608],f189ca9f:[function(){return n.e(5312).then(n.bind(n,18451))},"@site/../docs/learn/learn-spree.md",18451],f2521980:[function(){return n.e(3584).then(n.bind(n,55969))},"@site/../docs/general/getting-started.md",55969],f2b5c614:[function(){return n.e(4076).then(n.bind(n,15837))},"@site/../docs/general/dune-analytics/parachain-dashboards/centrifuge-dashboards.md",15837],f2c21b54:[function(){return n.e(4410).then(n.bind(n,54185))},"@site/../docs/build/build-storage.md",54185],f3027c84:[function(){return Promise.all([n.e(1869),n.e(1906)]).then(n.bind(n,98958))},"@site/../docs/general/polkadotjs-ui.md",98958],f359a251:[function(){return Promise.all([n.e(1869),n.e(4051)]).then(n.bind(n,49362))},"@site/../docs/maintain/maintain-endpoints.md",49362],f3bde756:[function(){return n.e(9625).then(n.bind(n,15197))},"@site/../docs/maintain/maintain-bootnode.md",15197],f4130007:[function(){return n.e(8582).then(n.bind(n,99149))},"@site/../docs/general/wallets-and-extensions.md",99149],f41c4e9d:[function(){return n.e(8679).then(n.bind(n,29939))},"@site/../docs/learn/learn-xcm-pallet.md",29939],f4200fe5:[function(){return Promise.all([n.e(1869),n.e(3135)]).then(n.bind(n,94445))},"@site/../docs/maintain/maintain-sync.md",94445],f44679e7:[function(){return n.e(9535).then(n.bind(n,5677))},"@site/../docs/general/governance-apps.md",5677],f44ed8f8:[function(){return n.e(2930).then(n.bind(n,64937))},"@site/../docs/build/build-hrmp-channels.md",64937],f47489cd:[function(){return n.e(4544).then(n.bind(n,39892))},"@site/../docs/learn/learn-runtime-upgrades.md",39892],f52abf29:[function(){return n.e(9116).then(n.bind(n,57401))},"@site/../docs/general/decentralized-futures.md",57401],f62dca67:[function(){return n.e(6416).then(n.t.bind(n,78697,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-fundamentals-e19.json",78697],f750c690:[function(){return n.e(3261).then(n.bind(n,76825))},"@site/../docs/learn/learn-nft-pallets.md",76825],f7acb151:[function(){return Promise.all([n.e(1869),n.e(2783)]).then(n.bind(n,91689))},"@site/../docs/learn/learn-guides-assets-create.md",91689],f8518919:[function(){return n.e(4484).then(n.bind(n,11366))},"@site/../docs/general/web3-and-polkadot.md",11366],f861e7c0:[function(){return n.e(5967).then(n.bind(n,84277))},"@site/../docs/general/dune-analytics/parachain-dashboards/litentry-dashboards.md",84277],f90fa732:[function(){return n.e(8225).then(n.bind(n,47791))},"@site/../docs/build/build-data.md",47791],fa343ad1:[function(){return n.e(2368).then(n.bind(n,90355))},"@site/../docs/learn/xcm/fundamentals/weight_and_fees.md",90355],fabebe44:[function(){return n.e(9783).then(n.bind(n,58846))},"@site/../docs/general/dev-heroes.md",58846],fc0e5740:[function(){return n.e(8067).then(n.t.bind(n,32591,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-build-client-index-10e.json",32591],fda65b2b:[function(){return Promise.all([n.e(1869),n.e(6225)]).then(n.bind(n,95619))},"@site/../docs/learn/learn-guides-asset-conversion.md",95619],fea93377:[function(){return n.e(4898).then(n.bind(n,48568))},"@site/../docs/maintain/maintain-guides-validator-payout.md",48568],feadf832:[function(){return Promise.all([n.e(1869),n.e(1710)]).then(n.bind(n,33317))},"@site/../docs/build/build-guides-coretime-start.md",33317],fecdcc34:[function(){return n.e(2410).then(n.bind(n,17293))},"@site/../docs/learn/xcm/journey/version.md",17293],feea648c:[function(){return n.e(9175).then(n.bind(n,44529))},"@site/../docs/learn/learn-xcvm.md",44529],ff154173:[function(){return n.e(34).then(n.t.bind(n,88796,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-maintain-collator-index-c0b.json",88796],ff6596ea:[function(){return n.e(3507).then(n.bind(n,45909))},"@site/../docs/learn/learn-nominator.md",45909],ffd76171:[function(){return Promise.all([n.e(1869),n.e(639)]).then(n.bind(n,15038))},"@site/../docs/maintain/maintain-index.md",15038],ffe9c3c9:[function(){return n.e(1967).then(n.bind(n,47995))},"@site/../docs/learn/learn-DOT.md",47995]};var s=n(74848);function c(e){var t=e.error,n=e.retry,r=e.pastDelay;return t?(0,s.jsxs)("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%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("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",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var l=n(86921),u=n(53102);function d(e,t){if("*"===e)return a()({loading:c,loader:function(){return n.e(2237).then(n.bind(n,82237))},modules:["@theme/NotFound"],webpack:function(){return[82237]},render:function(e,t){var n=e.default;return(0,s.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,Object.assign({},t))})}});var r=o[e+"-"+t],d={},p=[],f=[],m=(0,l.A)(r);return Object.entries(m).forEach((function(e){var t=e[0],n=e[1],r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:c,loader:d,modules:p,webpack:function(){return f},render:function(t,n){var a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((function(t){var n=t[0],r=t[1],o=r.default;if(!o)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 o&&"function"!=typeof o||Object.keys(r).filter((function(e){return"default"!==e})).forEach((function(e){o[e]=r[e]}));var i=a,s=n.split(".");s.slice(0,-1).forEach((function(e){i=i[e]})),i[s[s.length-1]]=o}));var o=a.__comp;delete a.__comp;var i=a.__context;delete a.__context;var c=a.__props;return delete a.__props,(0,s.jsx)(u.W,{value:i,children:(0,s.jsx)(o,Object.assign({},a,c,n))})}})}const p=[{path:"/search",component:d("/search","5de"),exact:!0},{path:"/docs",component:d("/docs","228"),routes:[{path:"/docs",component:d("/docs","758"),routes:[{path:"/docs",component:d("/docs","fc6"),routes:[{path:"/docs/alpha-program",component:d("/docs/alpha-program","9f0"),exact:!0,sidebar:"docs"},{path:"/docs/ambassadors",component:d("/docs/ambassadors","718"),exact:!0,sidebar:"docs"},{path:"/docs/apps-index",component:d("/docs/apps-index","b46"),exact:!0,sidebar:"docs"},{path:"/docs/bug-bounty",component:d("/docs/bug-bounty","1ba"),exact:!0,sidebar:"docs"},{path:"/docs/build-archive-index",component:d("/docs/build-archive-index","3b3"),exact:!0,sidebar:"docs"},{path:"/docs/build-client-index",component:d("/docs/build-client-index","e7c"),exact:!0,sidebar:"docs"},{path:"/docs/build-client-side",component:d("/docs/build-client-side","65f"),exact:!0,sidebar:"docs"},{path:"/docs/build-dapp",component:d("/docs/build-dapp","b5a"),exact:!0},{path:"/docs/build-data",component:d("/docs/build-data","5d6"),exact:!0,sidebar:"docs"},{path:"/docs/build-guide",component:d("/docs/build-guide","479"),exact:!0,sidebar:"docs"},{path:"/docs/build-guides-coretime-start",component:d("/docs/build-guides-coretime-start","7be"),exact:!0,sidebar:"docs"},{path:"/docs/build-guides-coretime-troubleshoot",component:d("/docs/build-guides-coretime-troubleshoot","0fb"),exact:!0,sidebar:"docs"},{path:"/docs/build-guides-install-deps",component:d("/docs/build-guides-install-deps","5f9"),exact:!0,sidebar:"docs"},{path:"/docs/build-guides-template-basic",component:d("/docs/build-guides-template-basic","752"),exact:!0,sidebar:"docs"},{path:"/docs/build-hackathon",component:d("/docs/build-hackathon","c97"),exact:!0,sidebar:"docs"},{path:"/docs/build-hrmp-channels",component:d("/docs/build-hrmp-channels","05c"),exact:!0,sidebar:"docs"},{path:"/docs/build-index",component:d("/docs/build-index","26d"),exact:!0},{path:"/docs/build-integrate-assets",component:d("/docs/build-integrate-assets","3ad"),exact:!0,sidebar:"docs"},{path:"/docs/build-integration",component:d("/docs/build-integration","75b"),exact:!0,sidebar:"docs"},{path:"/docs/build-light-clients",component:d("/docs/build-light-clients","f31"),exact:!0,sidebar:"docs"},{path:"/docs/build-network-overview",component:d("/docs/build-network-overview","fb1"),exact:!0,sidebar:"docs"},{path:"/docs/build-node-interaction",component:d("/docs/build-node-interaction","f39"),exact:!0,sidebar:"docs"},{path:"/docs/build-node-management",component:d("/docs/build-node-management","cef"),exact:!0,sidebar:"docs"},{path:"/docs/build-open-source",component:d("/docs/build-open-source","b8d"),exact:!0,sidebar:"docs"},{path:"/docs/build-oracle",component:d("/docs/build-oracle","392"),exact:!0},{path:"/docs/build-pdk",component:d("/docs/build-pdk","d70"),exact:!0,sidebar:"docs"},{path:"/docs/build-protocol-index",component:d("/docs/build-protocol-index","aac"),exact:!0,sidebar:"docs"},{path:"/docs/build-protocol-info",component:d("/docs/build-protocol-info","10f"),exact:!0,sidebar:"docs"},{path:"/docs/build-smart-contracts",component:d("/docs/build-smart-contracts","bd5"),exact:!0,sidebar:"docs"},{path:"/docs/build-storage",component:d("/docs/build-storage","451"),exact:!0},{path:"/docs/build-tools-index",component:d("/docs/build-tools-index","6fd"),exact:!0,sidebar:"docs"},{path:"/docs/build-transaction-construction",component:d("/docs/build-transaction-construction","5ab"),exact:!0,sidebar:"docs"},{path:"/docs/chain-state-values",component:d("/docs/chain-state-values","35a"),exact:!0,sidebar:"docs"},{path:"/docs/community",component:d("/docs/community","d96"),exact:!0,sidebar:"docs"},{path:"/docs/community-index",component:d("/docs/community-index","d5a"),exact:!0,sidebar:"docs"},{path:"/docs/contributing",component:d("/docs/contributing","89f"),exact:!0,sidebar:"docs"},{path:"/docs/contributors",component:d("/docs/contributors","420"),exact:!0,sidebar:"docs"},{path:"/docs/dashboards-index",component:d("/docs/dashboards-index","421"),exact:!0,sidebar:"docs"},{path:"/docs/decentralized-futures",component:d("/docs/decentralized-futures","ff3"),exact:!0,sidebar:"docs"},{path:"/docs/decentralized-voices",component:d("/docs/decentralized-voices","f82"),exact:!0,sidebar:"docs"},{path:"/docs/dev-heroes",component:d("/docs/dev-heroes","3a5"),exact:!0,sidebar:"docs"},{path:"/docs/ecosystem-funds",component:d("/docs/ecosystem-funds","479"),exact:!0,sidebar:"docs"},{path:"/docs/explore-index",component:d("/docs/explore-index","1f3"),exact:!0,sidebar:"docs"},{path:"/docs/faq",component:d("/docs/faq","d8a"),exact:!0,sidebar:"docs"},{path:"/docs/funding",component:d("/docs/funding","331"),exact:!0,sidebar:"docs"},{path:"/docs/general-index",component:d("/docs/general-index","409"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics",component:d("/docs/general/dune-analytics","b98"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/acala-dashboards",component:d("/docs/general/dune-analytics/acala-dashboards","792"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/assethub-dashboards",component:d("/docs/general/dune-analytics/assethub-dashboards","400"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/astar-dashboards",component:d("/docs/general/dune-analytics/astar-dashboards","790"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/bifrost-dashboards",component:d("/docs/general/dune-analytics/bifrost-dashboards","a46"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/bridgehub-dashboards",component:d("/docs/general/dune-analytics/bridgehub-dashboards","c1b"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/centrifuge-dashboards",component:d("/docs/general/dune-analytics/centrifuge-dashboards","ec8"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/collectives-dashboards",component:d("/docs/general/dune-analytics/collectives-dashboards","e12"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/coretime-dashboards",component:d("/docs/general/dune-analytics/coretime-dashboards","d8b"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/energywebx-dashboards",component:d("/docs/general/dune-analytics/energywebx-dashboards","936"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/frequency-dashboards",component:d("/docs/general/dune-analytics/frequency-dashboards","549"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/hydration-dashboards",component:d("/docs/general/dune-analytics/hydration-dashboards","366"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/interlay-dashboards",component:d("/docs/general/dune-analytics/interlay-dashboards","0c8"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/invarch-dashboards",component:d("/docs/general/dune-analytics/invarch-dashboards","8e2"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/litentry-dashboards",component:d("/docs/general/dune-analytics/litentry-dashboards","120"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/manta-dashboards",component:d("/docs/general/dune-analytics/manta-dashboards","02e"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/moonbeam-dashboards",component:d("/docs/general/dune-analytics/moonbeam-dashboards","319"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/neuroweb-dashboards",component:d("/docs/general/dune-analytics/neuroweb-dashboards","91b"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/nodle-dashboards",component:d("/docs/general/dune-analytics/nodle-dashboards","02e"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/parachain-dashboards",component:d("/docs/general/dune-analytics/parachain-dashboards","8fc"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/pendulum-dashboards",component:d("/docs/general/dune-analytics/pendulum-dashboards","dee"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/people-dashboards",component:d("/docs/general/dune-analytics/people-dashboards","7cf"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/phala-dashboards",component:d("/docs/general/dune-analytics/phala-dashboards","1a0"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/polimec-dashboards",component:d("/docs/general/dune-analytics/polimec-dashboards","1ba"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/polkadex-dashboards",component:d("/docs/general/dune-analytics/polkadex-dashboards","a53"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/polkadot-dashboards",component:d("/docs/general/dune-analytics/polkadot-dashboards","689"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/polkadot-dashboards-governance",component:d("/docs/general/dune-analytics/polkadot-dashboards-governance","a36"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/polkadot-dashboards-network",component:d("/docs/general/dune-analytics/polkadot-dashboards-network","73d"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/polkadot-dashboards-overview",component:d("/docs/general/dune-analytics/polkadot-dashboards-overview","d8e"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/polkadot-dashboards-staking",component:d("/docs/general/dune-analytics/polkadot-dashboards-staking","f70"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals","2ad"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard","bf1"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home","b4b"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis","cfb"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard","856"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool","613"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators","a03"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member","ddb"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators","d6d"),exact:!0},{path:"/docs/general/dune-analytics/snowbridge-dashboards",component:d("/docs/general/dune-analytics/snowbridge-dashboards","915"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/stellaswap-dashboards",component:d("/docs/general/dune-analytics/stellaswap-dashboards","0bf"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/unique-dashboards",component:d("/docs/general/dune-analytics/unique-dashboards","f74"),exact:!0,sidebar:"docs"},{path:"/docs/general/dunesql-cheatsheet",component:d("/docs/general/dunesql-cheatsheet","fe2"),exact:!0,sidebar:"docs"},{path:"/docs/general/onboarding-status-and-key-dashboards",component:d("/docs/general/onboarding-status-and-key-dashboards","b88"),exact:!0,sidebar:"docs"},{path:"/docs/general/polkadot-ecosystem-overview",component:d("/docs/general/polkadot-ecosystem-overview","bcd"),exact:!0,sidebar:"docs"},{path:"/docs/general/project-dashboards",component:d("/docs/general/project-dashboards","c57"),exact:!0,sidebar:"docs"},{path:"/docs/getting-started",component:d("/docs/getting-started","33e"),exact:!0,sidebar:"docs"},{path:"/docs/glossary",component:d("/docs/glossary","233"),exact:!0,sidebar:"docs"},{path:"/docs/governance-apps",component:d("/docs/governance-apps","dbc"),exact:!0,sidebar:"docs"},{path:"/docs/grants",component:d("/docs/grants","586"),exact:!0,sidebar:"docs"},{path:"/docs/how-to-dyor",component:d("/docs/how-to-dyor","9ea"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-adversarial-cheatsheet",component:d("/docs/kusama-adversarial-cheatsheet","7ad"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-bug-bounty",component:d("/docs/kusama-bug-bounty","5ce"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-coc",component:d("/docs/kusama-coc","fee"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-getting-started",component:d("/docs/kusama-getting-started","d5d"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-social-recovery",component:d("/docs/kusama-social-recovery","f3d"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-timeline",component:d("/docs/kusama-timeline","d67"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-abstraction",component:d("/docs/learn-account-abstraction","670"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-advanced",component:d("/docs/learn-account-advanced","652"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-balances",component:d("/docs/learn-account-balances","8e6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-multisig",component:d("/docs/learn-account-multisig","f13"),exact:!0,sidebar:"docs"},{path:"/docs/learn-accounts",component:d("/docs/learn-accounts","42e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-advanced-index",component:d("/docs/learn-advanced-index","63e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-agile-coretime",component:d("/docs/learn-agile-coretime","224"),exact:!0,sidebar:"docs"},{path:"/docs/learn-architecture",component:d("/docs/learn-architecture","908"),exact:!0,sidebar:"docs"},{path:"/docs/learn-archive",component:d("/docs/learn-archive","ca8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-asset-conversion-assethub",component:d("/docs/learn-asset-conversion-assethub","426"),exact:!0,sidebar:"docs"},{path:"/docs/learn-assets",component:d("/docs/learn-assets","479"),exact:!0,sidebar:"docs"},{path:"/docs/learn-assets-index",component:d("/docs/learn-assets-index","506"),exact:!0,sidebar:"docs"},{path:"/docs/learn-async-backing",component:d("/docs/learn-async-backing","203"),exact:!0,sidebar:"docs"},{path:"/docs/learn-basics-index",component:d("/docs/learn-basics-index","2ab"),exact:!0,sidebar:"docs"},{path:"/docs/learn-bridges",component:d("/docs/learn-bridges","28f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-collator",component:d("/docs/learn-collator","58b"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons",component:d("/docs/learn-comparisons","26e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-avalanche",component:d("/docs/learn-comparisons-avalanche","9e6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-cosmos",component:d("/docs/learn-comparisons-cosmos","9e6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-ethereum-2",component:d("/docs/learn-comparisons-ethereum-2","e28"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-index",component:d("/docs/learn-comparisons-index","d6b"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-kusama",component:d("/docs/learn-comparisons-kusama","6a6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-rollups",component:d("/docs/learn-comparisons-rollups","f66"),exact:!0,sidebar:"docs"},{path:"/docs/learn-components-index",component:d("/docs/learn-components-index","ba1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-consensus",component:d("/docs/learn-consensus","83d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-cryptography",component:d("/docs/learn-cryptography","ed0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-DOT",component:d("/docs/learn-DOT","829"),exact:!0,sidebar:"docs"},{path:"/docs/learn-dot-ksm-bridge",component:d("/docs/learn-dot-ksm-bridge","cac"),exact:!0,sidebar:"docs"},{path:"/docs/learn-elastic-scaling",component:d("/docs/learn-elastic-scaling","44a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-future-implementations-index",component:d("/docs/learn-future-implementations-index","e25"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts",component:d("/docs/learn-guides-accounts","39f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-multisig",component:d("/docs/learn-guides-accounts-multisig","53f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-proxy",component:d("/docs/learn-guides-accounts-proxy","d1c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-proxy-pure",component:d("/docs/learn-guides-accounts-proxy-pure","bbc"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-asset-conversion",component:d("/docs/learn-guides-asset-conversion","ef4"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-assets",component:d("/docs/learn-guides-assets","8f4"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-assets-create",component:d("/docs/learn-guides-assets-create","5a5"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-bounties",component:d("/docs/learn-guides-bounties","43b"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-bridges",component:d("/docs/learn-guides-bridges","7e1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-claims",component:d("/docs/learn-guides-claims","aa7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-coretime-marketplaces",component:d("/docs/learn-guides-coretime-marketplaces","515"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-coretime-parachains",component:d("/docs/learn-guides-coretime-parachains","8e6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-coretime-swap",component:d("/docs/learn-guides-coretime-swap","eeb"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-dot-ksm-bridge",component:d("/docs/learn-guides-dot-ksm-bridge","c5e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-identity",component:d("/docs/learn-guides-identity","271"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-ledger",component:d("/docs/learn-guides-ledger","4d2"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-nominator",component:d("/docs/learn-guides-nominator","d01"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-polkadot-opengov",component:d("/docs/learn-guides-polkadot-opengov","e43"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-staking",component:d("/docs/learn-guides-staking","c84"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-staking-pools",component:d("/docs/learn-guides-staking-pools","599"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-test-opengov-proposals",component:d("/docs/learn-guides-test-opengov-proposals","1b1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-transfers",component:d("/docs/learn-guides-transfers","d9a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-treasury",component:d("/docs/learn-guides-treasury","378"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-vault",component:d("/docs/learn-guides-vault","c39"),exact:!0,sidebar:"docs"},{path:"/docs/learn-hyperbridge",component:d("/docs/learn-hyperbridge","646"),exact:!0,sidebar:"docs"},{path:"/docs/learn-identity",component:d("/docs/learn-identity","2c1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-implementations",component:d("/docs/learn-implementations","9b0"),exact:!0},{path:"/docs/learn-index",component:d("/docs/learn-index","0b7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-inflation",component:d("/docs/learn-inflation","649"),exact:!0,sidebar:"docs"},{path:"/docs/learn-jam",component:d("/docs/learn-jam","e19"),exact:!0,sidebar:"docs"},{path:"/docs/learn-jam-chain",component:d("/docs/learn-jam-chain","35f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-jam-faq",component:d("/docs/learn-jam-faq","617"),exact:!0,sidebar:"docs"},{path:"/docs/learn-kusama-inflation",component:d("/docs/learn-kusama-inflation","df6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft",component:d("/docs/learn-nft","078"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft-pallets",component:d("/docs/learn-nft-pallets","665"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft-projects",component:d("/docs/learn-nft-projects","226"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nomination-pools",component:d("/docs/learn-nomination-pools","328"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nominator",component:d("/docs/learn-nominator","043"),exact:!0,sidebar:"docs"},{path:"/docs/learn-offenses",component:d("/docs/learn-offenses","be7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains",component:d("/docs/learn-parachains","b9e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-faq",component:d("/docs/learn-parachains-faq","357"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-index",component:d("/docs/learn-parachains-index","e80"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-protocol",component:d("/docs/learn-parachains-protocol","0a7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-participants-index",component:d("/docs/learn-participants-index","426"),exact:!0,sidebar:"docs"},{path:"/docs/learn-phragmen",component:d("/docs/learn-phragmen","773"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-host",component:d("/docs/learn-polkadot-host","92a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-js-guides",component:d("/docs/learn-polkadot-js-guides","347"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov",component:d("/docs/learn-polkadot-opengov","3b3"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-index",component:d("/docs/learn-polkadot-opengov-index","922"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-origins",component:d("/docs/learn-polkadot-opengov-origins","9d6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-treasury",component:d("/docs/learn-polkadot-opengov-treasury","140"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-technical-fellowship",component:d("/docs/learn-polkadot-technical-fellowship","608"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadotjs",component:d("/docs/learn-polkadotjs","089"),exact:!0,sidebar:"docs"},{path:"/docs/learn-proxies",component:d("/docs/learn-proxies","a18"),exact:!0,sidebar:"docs"},{path:"/docs/learn-proxies-pure",component:d("/docs/learn-proxies-pure","8be"),exact:!0,sidebar:"docs"},{path:"/docs/learn-runtime-upgrades",component:d("/docs/learn-runtime-upgrades","582"),exact:!0,sidebar:"docs"},{path:"/docs/learn-safrole",component:d("/docs/learn-safrole","213"),exact:!0,sidebar:"docs"},{path:"/docs/learn-scams",component:d("/docs/learn-scams","a7e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-snowbridge",component:d("/docs/learn-snowbridge","f68"),exact:!0,sidebar:"docs"},{path:"/docs/learn-spree",component:d("/docs/learn-spree","c79"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking",component:d("/docs/learn-staking","e0a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking-advanced",component:d("/docs/learn-staking-advanced","9de"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking-index",component:d("/docs/learn-staking-index","cf9"),exact:!0,sidebar:"docs"},{path:"/docs/learn-system-chains",component:d("/docs/learn-system-chains","3b8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-teleport",component:d("/docs/learn-teleport","18c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-transactions",component:d("/docs/learn-transactions","340"),exact:!0,sidebar:"docs"},{path:"/docs/learn-validator",component:d("/docs/learn-validator","e28"),exact:!0,sidebar:"docs"},{path:"/docs/learn-video-tutorials",component:d("/docs/learn-video-tutorials","64f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-wasm",component:d("/docs/learn-wasm","0b7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm",component:d("/docs/learn-xcm","20d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-index",component:d("/docs/learn-xcm-index","49c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-instructions",component:d("/docs/learn-xcm-instructions","8ed"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-pallet",component:d("/docs/learn-xcm-pallet","3da"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-transport",component:d("/docs/learn-xcm-transport","5ef"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-usecases",component:d("/docs/learn-xcm-usecases","2ae"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcvm",component:d("/docs/learn-xcvm","d56"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-auction",component:d("/docs/learn/learn-auction","9ae"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-controller",component:d("/docs/learn/learn-controller","d30"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-crowdloans",component:d("/docs/learn/learn-crowdloans","b27"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-governance",component:d("/docs/learn/learn-governance","fde"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-launch",component:d("/docs/learn/learn-launch","853"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-redenomination",component:d("/docs/learn/learn-redenomination","6a6"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-treasury",component:d("/docs/learn/learn-treasury","75c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/thousand-validators",component:d("/docs/learn/thousand-validators","138"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm",component:d("/docs/learn/xcm","995"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/config-deep-dive",component:d("/docs/learn/xcm/config-deep-dive","b64"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals",component:d("/docs/learn/xcm/fundamentals","13d"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-fees",component:d("/docs/learn/xcm/fundamentals-fees","6b3"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-multiasset",component:d("/docs/learn/xcm/fundamentals-multiasset","001"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-summary",component:d("/docs/learn/xcm/fundamentals-summary","a4b"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-xcvm",component:d("/docs/learn/xcm/fundamentals-xcvm","086"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation",component:d("/docs/learn/xcm/fundamentals/multilocation","e19"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-example",component:d("/docs/learn/xcm/fundamentals/multilocation-example","358"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-junctions",component:d("/docs/learn/xcm/fundamentals/multilocation-junctions","e64"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-summary",component:d("/docs/learn/xcm/fundamentals/multilocation-summary","958"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/introduction",component:d("/docs/learn/xcm/introduction","813"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey",component:d("/docs/learn/xcm/journey","0b1"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-assets",component:d("/docs/learn/xcm/journey-assets","bf0"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-channels",component:d("/docs/learn/xcm/journey-channels","22c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-expectations",component:d("/docs/learn/xcm/journey-expectations","c0f"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-fees",component:d("/docs/learn/xcm/journey-fees","193"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-holding",component:d("/docs/learn/xcm/journey-holding","b29"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-locks",component:d("/docs/learn/xcm/journey-locks","f3a"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-origin",component:d("/docs/learn/xcm/journey-origin","a4d"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-queries",component:d("/docs/learn/xcm/journey-queries","670"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-register",component:d("/docs/learn/xcm/journey-register","0fe"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-summary",component:d("/docs/learn/xcm/journey-summary","6a3"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-transact",component:d("/docs/learn/xcm/journey-transact","eae"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-version",component:d("/docs/learn/xcm/journey-version","d38"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers",component:d("/docs/learn/xcm/journey/transfers","d74"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-reserve",component:d("/docs/learn/xcm/journey/transfers-reserve","4a6"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-summary",component:d("/docs/learn/xcm/journey/transfers-summary","2e8"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-teleport",component:d("/docs/learn/xcm/journey/transfers-teleport","2a8"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview",component:d("/docs/learn/xcm/overview","376"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-architecture",component:d("/docs/learn/xcm/overview-architecture","7ac"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-format",component:d("/docs/learn/xcm/overview-format","bef"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-intro",component:d("/docs/learn/xcm/overview-intro","32c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-summary",component:d("/docs/learn/xcm/overview-summary","daf"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-xcvm",component:d("/docs/learn/xcm/overview-xcvm","238"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart",component:d("/docs/learn/xcm/quickstart","9db"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-first-look",component:d("/docs/learn/xcm/quickstart-first-look","b8c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-simulator",component:d("/docs/learn/xcm/quickstart-simulator","de9"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-summary",component:d("/docs/learn/xcm/quickstart-summary","30b"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/reference-glossary",component:d("/docs/learn/xcm/reference-glossary","aa6"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/reference-xcvm-registers",component:d("/docs/learn/xcm/reference-xcvm-registers","043"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/references",component:d("/docs/learn/xcm/references","61c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/testing",component:d("/docs/learn/xcm/testing","81b"),exact:!0,sidebar:"docs"},{path:"/docs/ledger",component:d("/docs/ledger","3c3"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-archive",component:d("/docs/maintain-archive","17f"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-bootnode",component:d("/docs/maintain-bootnode","9a2"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-collator-index",component:d("/docs/maintain-collator-index","058"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-endpoints",component:d("/docs/maintain-endpoints","3c9"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-errors",component:d("/docs/maintain-errors","57a"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-async-backing",component:d("/docs/maintain-guides-async-backing","e3a"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-chill",component:d("/docs/maintain-guides-how-to-chill","0b1"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-monitor-your-node",component:d("/docs/maintain-guides-how-to-monitor-your-node","c4b"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-stop-validating",component:d("/docs/maintain-guides-how-to-stop-validating","67e"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-systemd",component:d("/docs/maintain-guides-how-to-systemd","1ad"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-upgrade",component:d("/docs/maintain-guides-how-to-upgrade","b06"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-validate-kusama",component:d("/docs/maintain-guides-how-to-validate-kusama","3b0"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-validate-polkadot",component:d("/docs/maintain-guides-how-to-validate-polkadot","d1e"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-secure-validator",component:d("/docs/maintain-guides-secure-validator","5d5"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-society-kusama",component:d("/docs/maintain-guides-society-kusama","059"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-validator-community",component:d("/docs/maintain-guides-validator-community","699"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-validator-payout",component:d("/docs/maintain-guides-validator-payout","302"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-index",component:d("/docs/maintain-index","c57"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-networks",component:d("/docs/maintain-networks","5dc"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-node-index",component:d("/docs/maintain-node-index","e80"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-polkadot-parameters",component:d("/docs/maintain-polkadot-parameters","38b"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-rpc",component:d("/docs/maintain-rpc","887"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-sync",component:d("/docs/maintain-sync","724"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-validator-index",component:d("/docs/maintain-validator-index","069"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-wss",component:d("/docs/maintain-wss","207"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-democracy",component:d("/docs/maintain/maintain-guides-democracy","0ce"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-how-to-join-council",component:d("/docs/maintain/maintain-guides-how-to-join-council","992"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-how-to-vote-councillor",component:d("/docs/maintain/maintain-guides-how-to-vote-councillor","817"),exact:!0,sidebar:"docs"},{path:"/docs/metadata",component:d("/docs/metadata","e9a"),exact:!0,sidebar:"docs"},{path:"/docs/multisig-apps",component:d("/docs/multisig-apps","4d5"),exact:!0,sidebar:"docs"},{path:"/docs/parachains-apps",component:d("/docs/parachains-apps","a17"),exact:!0,sidebar:"docs"},{path:"/docs/parity-data-dashboards",component:d("/docs/parity-data-dashboards","11c"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-community-foundation",component:d("/docs/polkadot-community-foundation","0d6"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-direction",component:d("/docs/polkadot-direction","40a"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-v1",component:d("/docs/polkadot-v1","db1"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-vault",component:d("/docs/polkadot-vault","e33"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-vision-index",component:d("/docs/polkadot-vision-index","641"),exact:!0,sidebar:"docs"},{path:"/docs/polkadotjs",component:d("/docs/polkadotjs","8d7"),exact:!0,sidebar:"docs"},{path:"/docs/polkadotjs-ui",component:d("/docs/polkadotjs-ui","4c2"),exact:!0,sidebar:"docs"},{path:"/docs/programs-index",component:d("/docs/programs-index","292"),exact:!0,sidebar:"docs"},{path:"/docs/staking-apps",component:d("/docs/staking-apps","c2d"),exact:!0,sidebar:"docs"},{path:"/docs/staking-dashboard",component:d("/docs/staking-dashboard","a19"),exact:!0,sidebar:"docs"},{path:"/docs/start-building",component:d("/docs/start-building","501"),exact:!0,sidebar:"docs"},{path:"/docs/stay-safe-index",component:d("/docs/stay-safe-index","e19"),exact:!0,sidebar:"docs"},{path:"/docs/thousand-contributors",component:d("/docs/thousand-contributors","b6c"),exact:!0,sidebar:"docs"},{path:"/docs/transaction-attacks",component:d("/docs/transaction-attacks","5b0"),exact:!0,sidebar:"docs"},{path:"/docs/wallets-and-extensions",component:d("/docs/wallets-and-extensions","be8"),exact:!0,sidebar:"docs"},{path:"/docs/wallets-index",component:d("/docs/wallets-index","d70"),exact:!0,sidebar:"docs"},{path:"/docs/web3-and-polkadot",component:d("/docs/web3-and-polkadot","a00"),exact:!0,sidebar:"docs"}]}]}]},{path:"/",component:d("/","2e1"),exact:!0},{path:"*",component:d("*")}]},31513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>x,TM:()=>j,yJ:()=>f,sC:()=>A,AO:()=>p});var r=n(58168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!l)for(;d--;d)i.unshift("..");!l||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(11561);function c(e){return"/"===e.charAt(0)?e:"/"+e}function l(e){return"/"===e.charAt(0)?e.substr(1):e}function u(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 d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(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 f(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.A)({},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(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}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 m(){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;rt?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=f(e,t,h(),x.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(x.entries[x.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=x.index+e;return t>=0&&t{"use strict";var r=n(44363),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},s={};function c(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var l=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=c(t),h=c(n),b=0;b{"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,a,o,i,s],u=0;(c=new Error(t.replace(/%s/g,(function(){return l[u++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},10119:(e,t,n)=>{"use strict";n.r(t)},74100:(e,t,n)=>{"use strict";n.r(t)},35697:(e,t,n)=>{"use strict";n.r(t)},95728:(e,t,n)=>{"use strict";n.r(t)},5947: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:'
'};function a(e,t,n){return en?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),l=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),c(l,i(e,u,d)),1===e?(c(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){c(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),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");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),s=e?"-100":o(n.status||0),l=document.querySelector(r.parent);return c(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),l!=document.body&&u(l,"nprogress-custom-parent"),l.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&&f(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 s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),c=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 l(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;l(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);l(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(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)},19700:()=>{!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,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=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(s){for(var c=0;c=o.length);c++){var l=s[c];if("string"==typeof l||l.content&&"string"==typeof l.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof l?l:l.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),b=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),g=p.substring(m+f.length),y=[];h&&y.push.apply(y,i([h])),y.push(b),g&&y.push.apply(y,i([g])),"string"==typeof l?s.splice.apply(s,[c,1].concat(y)):l.content=y}}else l.content&&i(l.content)}return s}(n.tokens)}}}})}(Prism)},75342:()=>{!function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,(function(){return t}));t=t.replace(//g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(Prism)},91830:(e,t,n)=>{var r={"./prism-rust":75342};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=91830},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=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 s.name="Invariant Violation",s}}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}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},61105:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var r=n(46942),a=n.n(r),o=n(96540),i=n(36519),s=n(74848);const c=o.forwardRef(((e,t)=>{const[{className:n,...r},{as:o="div",bsPrefix:c,spans:l}]=function({as:e,bsPrefix:t,className:n,...r}){t=(0,i.oU)(t,"col");const o=(0,i.gy)(),s=(0,i.Jm)(),c=[],l=[];return o.forEach((e=>{const n=r[e];let a,o,i;delete r[e],"object"==typeof n&&null!=n?({span:a,offset:o,order:i}=n):a=n;const u=e!==s?`-${e}`:"";a&&c.push(!0===a?`${t}${u}`:`${t}${u}-${a}`),null!=i&&l.push(`order${u}-${i}`),null!=o&&l.push(`offset${u}-${o}`)})),[{...r,className:a()(n,...c,...l)},{as:e,bsPrefix:t,spans:c}]}(e);return(0,s.jsx)(o,{...r,ref:t,className:a()(n,!l.length&&c)})}));c.displayName="Col";const l=c},43048:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var r=n(46942),a=n.n(r),o=n(96540),i=n(36519),s=n(74848);const c=o.forwardRef((({bsPrefix:e,fluid:t=!1,as:n="div",className:r,...o},c)=>{const l=(0,i.oU)(e,"container"),u="string"==typeof t?`-${t}`:"-fluid";return(0,s.jsx)(n,{ref:c,...o,className:a()(r,t?`${l}${u}`:l)})}));c.displayName="Container";const l=c},44479:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var r=n(46942),a=n.n(r),o=n(96540),i=n(36519),s=n(74848);const c=o.forwardRef((({bsPrefix:e,className:t,as:n="div",...r},o)=>{const c=(0,i.oU)(e,"row"),l=(0,i.gy)(),u=(0,i.Jm)(),d=`${c}-cols`,p=[];return l.forEach((e=>{const t=r[e];let n;delete r[e],null!=t&&"object"==typeof t?({cols:n}=t):n=t;const a=e!==u?`-${e}`:"";null!=n&&p.push(`${d}${a}-${n}`)})),(0,s.jsx)(n,{ref:o,...r,className:a()(t,c,...p)})}));c.displayName="Row";const l=c},36519:(e,t,n)=>{"use strict";n.d(t,{Jm:()=>u,gy:()=>l,oU:()=>c});var r=n(96540);n(74848);const a=["xxl","xl","lg","md","sm","xs"],o=r.createContext({prefixes:{},breakpoints:a,minBreakpoint:"xs"}),{Consumer:i,Provider:s}=o;function c(e,t){const{prefixes:n}=(0,r.useContext)(o);return e||n[t]||t}function l(){const{breakpoints:e}=(0,r.useContext)(o);return e}function u(){const{minBreakpoint:e}=(0,r.useContext)(o);return e}},22551:(e,t,n)=>{"use strict";var r=n(96540),a=n(69982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n