From 0988327b0509dd8b99c3629ea21543183bd9919b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 May 2024 21:50:03 +0000 Subject: [PATCH] deploy: 2a25d9f1b819989ba3bd21e0dcb3202a53201b0f --- 404.html | 8 +++---- assets/js/687e506c.c26f1dc3.js | 1 + assets/js/935f2afb.75059978.js | 1 - assets/js/935f2afb.d4a970f1.js | 1 + assets/js/dcec6889.3e18e7ab.js | 1 + assets/js/dcec6889.49a9deaa.js | 1 - assets/js/e48c32e6.378086fd.js | 1 + assets/js/e48c32e6.49423ed6.js | 1 - assets/js/main.44ad4b75.js | 2 ++ ...CENSE.txt => main.44ad4b75.js.LICENSE.txt} | 0 assets/js/main.55fb2f81.js | 2 -- assets/js/runtime~main.623d3a75.js | 1 - assets/js/runtime~main.bbfd0784.js | 1 + bc-start/index.html | 8 +++---- docs/BC-FAQs/index.html | 8 +++---- docs/BEP20/index.html | 8 +++---- docs/BSC-FAQs-delegator/index.html | 8 +++---- docs/BSC-FAQs-general/index.html | 8 +++---- docs/BSC-FAQs-tokens/index.html | 8 +++---- docs/BSC-FAQs-validator/index.html | 8 +++---- docs/BSC-FAQs/index.html | 8 +++---- docs/BSC-fast-node/index.html | 8 +++---- docs/BSC-mainnet-explorers/index.html | 8 +++---- docs/BSC-separate-node/index.html | 8 +++---- docs/BSC-testnet-explorers/index.html | 8 +++---- docs/BSC-verify-node/index.html | 8 +++---- docs/BSCexplorers/index.html | 8 +++---- docs/BSCmainnet/index.html | 8 +++---- docs/BSCtestnet/index.html | 8 +++---- docs/ERC721/index.html | 10 ++++---- docs/Wallet/index.html | 8 +++---- docs/add-account/index.html | 8 +++---- docs/api-reference/cli/index.html | 8 +++---- docs/api-reference/dex-api/paths/index.html | 8 +++---- docs/api-reference/node-rpc/index.html | 8 +++---- docs/api-reference/sdk/index.html | 8 +++---- docs/archivenode/index.html | 8 +++---- docs/band/index.html | 8 +++---- .../crosschain-redelegation/index.html | 8 +++---- docs/bcfusion/developers/gov/index.html | 8 +++---- docs/bcfusion/developers/staking/index.html | 8 +++---- .../developers/system-contracts/index.html | 8 +++---- docs/bcfusion/overview/index.html | 8 +++---- docs/bcfusion/owners/bind/index.html | 8 +++---- docs/bcfusion/users/assets/index.html | 8 +++---- .../users/bep153-stake-migration/index.html | 8 +++---- docs/bcfusion/users/gov/index.html | 8 +++---- docs/bcfusion/users/new-stake/index.html | 8 +++---- .../bcfusion/users/stake-migration/index.html | 8 +++---- docs/bcfusion/users/swaps/index.html | 8 +++---- docs/bcfusion/users/timelocks/index.html | 8 +++---- docs/bcfusion/validators/creation/index.html | 8 +++---- docs/bcfusion/validators/gov/index.html | 8 +++---- .../validators/key-management/index.html | 8 +++---- .../bcfusion/validators/migrations/index.html | 8 +++---- docs/bcfusion/validators/slash/index.html | 8 +++---- docs/bcfusion/validators/staking/index.html | 8 +++---- docs/beaconchain/CONTRIBUTING/index.html | 8 +++---- docs/beaconchain/account/index.html | 8 +++---- docs/beaconchain/acknowledgement/index.html | 8 +++---- docs/beaconchain/anti-frontrun/index.html | 8 +++---- docs/beaconchain/atomic-swap/index.html | 8 +++---- docs/beaconchain/bc-tutorials/index.html | 8 +++---- docs/beaconchain/blockchain/index.html | 8 +++---- docs/beaconchain/chain-access/index.html | 8 +++---- docs/beaconchain/dataseed_list/index.html | 8 +++---- .../block-service-example/index.html | 8 +++---- .../develop/api-reference/cli/index.html | 8 +++---- .../dex-api/block-service-example/index.html | 8 +++---- .../dex-api/block-service/index.html | 8 +++---- .../dex-api/bridge-widget/index.html | 8 +++---- .../api-reference/dex-api/bridge/index.html | 8 +++---- .../dex-api/migration-guide/index.html | 8 +++---- .../dex-api/paths-testnet/index.html | 8 +++---- .../api-reference/dex-api/paths/index.html | 8 +++---- .../api-reference/dex-api/staking/index.html | 8 +++---- .../dex-api/ws-connection/index.html | 8 +++---- .../dex-api/ws-streams/index.html | 8 +++---- .../develop/api-reference/http-api/index.html | 8 +++---- .../develop/api-reference/node-rpc/index.html | 8 +++---- .../api-reference/transactions/index.html | 8 +++---- docs/beaconchain/develop/bcsdk/index.html | 8 +++---- .../develop/node/extra-info/index.html | 8 +++---- .../develop/node/fullnode-faq/index.html | 8 +++---- .../develop/node/fullnodeissue/index.html | 8 +++---- .../develop/node/install/index.html | 8 +++---- .../develop/node/join-mainnet/index.html | 8 +++---- .../develop/node/join-testnet/index.html | 8 +++---- .../develop/node/localnetwork/index.html | 8 +++---- .../develop/node/nodetypes/index.html | 8 +++---- .../develop/node/snapshot/index.html | 8 +++---- .../develop/node/synctypes/index.html | 8 +++---- .../develop/node/upgrade/index.html | 8 +++---- docs/beaconchain/develop/rpc/index.html | 8 +++---- .../develop/testnetandexplorer/index.html | 8 +++---- docs/beaconchain/encoding/index.html | 8 +++---- .../exchange-integration/index.html | 8 +++---- docs/beaconchain/faq/index.html | 8 +++---- docs/beaconchain/fullnode/index.html | 8 +++---- docs/beaconchain/fullnodeissue/index.html | 8 +++---- .../get-extra-data-from-fullnode/index.html | 8 +++---- docs/beaconchain/get-started/index.html | 8 +++---- docs/beaconchain/imToken/index.html | 8 +++---- docs/beaconchain/index.html | 8 +++---- docs/beaconchain/keys/index.html | 8 +++---- docs/beaconchain/learn/BEP8/index.html | 8 +++---- docs/beaconchain/learn/BEP82/index.html | 8 +++---- docs/beaconchain/learn/accounts/index.html | 8 +++---- .../beaconchain/learn/architecture/index.html | 8 +++---- docs/beaconchain/learn/assets/index.html | 8 +++---- .../beaconchain/learn/atomic-swaps/index.html | 8 +++---- docs/beaconchain/learn/bc-bridge/index.html | 8 +++---- docs/beaconchain/learn/bc-slashing/index.html | 8 +++---- docs/beaconchain/learn/bc-staking/index.html | 8 +++---- .../learn/breathe-block/index.html | 8 +++---- docs/beaconchain/learn/bsc-gov/index.html | 8 +++---- .../learn/encoding/amino-example/index.html | 8 +++---- docs/beaconchain/learn/encoding/index.html | 8 +++---- .../learn/escrow-accounts/index.html | 8 +++---- docs/beaconchain/learn/fees/index.html | 8 +++---- docs/beaconchain/learn/genesis/index.html | 8 +++---- .../learn/matching-engine/index.html | 8 +++---- docs/beaconchain/learn/signature/index.html | 8 +++---- .../threshold-signature-scheme/index.html | 8 +++---- .../learn/trading-interface/index.html | 8 +++---- .../learn/trading-specification/index.html | 8 +++---- docs/beaconchain/learn/transaction/index.html | 8 +++---- .../beaconchain/learn/transactions/index.html | 8 +++---- .../learn/walletconnect/index.html | 8 +++---- docs/beaconchain/light-client/index.html | 8 +++---- docs/beaconchain/list/index.html | 8 +++---- docs/beaconchain/list_instruction/index.html | 8 +++---- docs/beaconchain/match-examples/index.html | 8 +++---- docs/beaconchain/match/index.html | 8 +++---- docs/beaconchain/memo-validation/index.html | 8 +++---- docs/beaconchain/offline/index.html | 8 +++---- docs/beaconchain/resources/index.html | 8 +++---- docs/beaconchain/timelock/index.html | 8 +++---- docs/beaconchain/tokens/index.html | 8 +++---- docs/beaconchain/trade/index.html | 8 +++---- docs/beaconchain/trading-spec/index.html | 8 +++---- docs/beaconchain/transfer/index.html | 8 +++---- docs/beaconchain/tss/index.html | 8 +++---- .../validator/create-val/index.html | 8 +++---- .../beaconchain/validator/overview/index.html | 8 +++---- docs/beaconchain/validator/run-val/index.html | 8 +++---- .../How-to-use-BSC-on-imToken/index.html | 8 +++---- .../how-to-create-venly-wallet/index.html | 8 +++---- .../wallet/tutorial/bep8/index.html | 8 +++---- .../index.html | 8 +++---- .../how-to-trade-on-binance-dex/index.html | 8 +++---- .../ledger-nano-s-usage-guide/index.html | 8 +++---- .../trezor-model-t-user-guide/index.html | 8 +++---- .../wallet/tutorial/videos/index.html | 8 +++---- .../walletconnect-support/index.html | 8 +++---- docs/beaconchain/walletconnect/index.html | 8 +++---- docs/beaconchain/wallets/index.html | 8 +++---- docs/bind-tokens/index.html | 8 +++---- docs/bnb-chain-wallet/index.html | 8 +++---- docs/boot-nodes/index.html | 8 +++---- docs/bsc-faucet/index.html | 8 +++---- docs/bsc-tutorials/index.html | 8 +++---- docs/chainide/index.html | 8 +++---- docs/circulation-model/index.html | 8 +++---- docs/contribute/index.html | 8 +++---- docs/create-wallet/index.html | 8 +++---- docs/cross/index.html | 8 +++---- docs/dapp-dev/Hello-World/index.html | 8 +++---- docs/dapp-dev/web3js-tutorial/index.html | 8 +++---- docs/dev-outlook/decentralization/index.html | 8 +++---- docs/dev-outlook/scaling/index.html | 8 +++---- docs/dev-tools/index.html | 8 +++---- docs/dia/index.html | 8 +++---- docs/dstorages/index.html | 8 +++---- docs/encoding/index.html | 8 +++---- docs/faq/index.html | 8 +++---- docs/fullnodeissue/index.html | 8 +++---- docs/get-extra-data-from-fullnode/index.html | 8 +++---- docs/getting-started/index.html | 8 +++---- docs/hardhat-new/index.html | 8 +++---- docs/hardhat/index.html | 8 +++---- docs/issue-BEP20/index.html | 8 +++---- docs/keys/index.html | 8 +++---- docs/learn/beaconIntro/index.html | 8 +++---- docs/learn/bsc-gov/index.html | 8 +++---- docs/learn/bsc-relayer/index.html | 8 +++---- docs/learn/consensus/index.html | 8 +++---- docs/learn/cross-chain-api/index.html | 8 +++---- docs/learn/cross-chain-bridges/index.html | 8 +++---- docs/learn/cross-chain/index.html | 8 +++---- docs/learn/ecosystem/index.html | 8 +++---- docs/learn/genesis/index.html | 8 +++---- docs/learn/gnosis/index.html | 8 +++---- docs/learn/incentives/index.html | 8 +++---- docs/learn/intro/index.html | 8 +++---- docs/learn/oracle-module/index.html | 8 +++---- docs/learn/oracle-relayer/index.html | 8 +++---- docs/learn/system-contract/index.html | 8 +++---- docs/link/index.html | 8 +++---- docs/manual/index.html | 8 +++---- docs/mev/builder-integration/index.html | 8 +++---- docs/mev/faqs/index.html | 8 +++---- docs/mev/overview/index.html | 8 +++---- docs/mev/validator-integration/index.html | 8 +++---- .../evm-chains/chain-comparison/index.html | 8 +++---- .../evm-chains/token-comparison/index.html | 8 +++---- .../evm-chains/token-migration/index.html | 8 +++---- .../solana/architecture-comparison/index.html | 8 +++---- .../solana/token-migration/index.html | 8 +++---- docs/mirror/index.html | 8 +++---- docs/more-help/index.html | 8 +++---- docs/nft-metadata-standard/index.html | 10 ++++---- docs/nft-storage/index.html | 12 +++++----- docs/nft_blackide/index.html | 10 ++++---- docs/oracles/index.html | 8 +++---- docs/overview/index.html | 8 +++---- docs/parameters/index.html | 8 +++---- docs/proxy/index.html | 8 +++---- docs/remix-new/index.html | 8 +++---- docs/replit/index.html | 8 +++---- docs/rpc/index.html | 8 +++---- docs/stake/Staking/index.html | 8 +++---- docs/stake/cli-commands/index.html | 8 +++---- docs/staking-with-ext-wallet/index.html | 8 +++---- docs/submit-dapp/index.html | 8 +++---- docs/sync/index.html | 8 +++---- docs/token-bind-tool/index.html | 8 +++---- docs/tokens-cross-chain/index.html | 8 +++---- docs/tokens/index.html | 8 +++---- docs/trading-spec/index.html | 8 +++---- docs/truffle-new/index.html | 8 +++---- docs/truffle/index.html | 8 +++---- docs/upgrade-fullnode/index.html | 8 +++---- docs/validator/Penalty-overview/index.html | 8 +++---- docs/validator/bc-slashing/index.html | 8 +++---- docs/validator/best-practice/index.html | 8 +++---- docs/validator/create-val/index.html | 8 +++---- docs/validator/docker/index.html | 8 +++---- docs/validator/fullnode/index.html | 8 +++---- .../monitor-and-query-slash/index.html | 8 +++---- docs/validator/node-maintenance/index.html | 8 +++---- docs/validator/overview/index.html | 8 +++---- docs/validator/run-val/index.html | 8 +++---- docs/validator/security/index.html | 8 +++---- docs/validator/send-slash-evidence/index.html | 8 +++---- docs/validator/slash-fee/index.html | 8 +++---- docs/validator/unjail/index.html | 8 +++---- docs/validator/upgrade-fullnode/index.html | 8 +++---- docs/venly-nft-api/index.html | 23 +++++++++++++++++++ docs/verify-proxy/index.html | 8 +++---- docs/verify/index.html | 8 +++---- docs/wallet/AlphaWallet/index.html | 8 +++---- docs/wallet/arkane-developer/index.html | 8 +++---- docs/wallet/binance-cn/index.html | 8 +++---- docs/wallet/bnb-chain-wallet/index.html | 8 +++---- docs/wallet/coin98wallet/index.html | 8 +++---- docs/wallet/create-wallet/index.html | 8 +++---- docs/wallet/extension/add-account/index.html | 8 +++---- docs/wallet/extension/add-asset/index.html | 8 +++---- docs/wallet/extension/direct/index.html | 8 +++---- docs/wallet/extension/ledger/index.html | 8 +++---- docs/wallet/extension/reset/index.html | 8 +++---- docs/wallet/extension/safe/index.html | 8 +++---- docs/wallet/extension/seed/index.html | 8 +++---- docs/wallet/faq/index.html | 8 +++---- docs/wallet/infinitywallet/index.html | 8 +++---- docs/wallet/ledger/index.html | 8 +++---- docs/wallet/math-resource/index.html | 8 +++---- docs/wallet/math/index.html | 8 +++---- docs/wallet/metamask/index.html | 8 +++---- docs/wallet/myetherwallet/index.html | 8 +++---- docs/wallet/staking/index.html | 8 +++---- docs/wallet/trezor/index.html | 8 +++---- docs/wallet/trustwallet/index.html | 8 +++---- docs/wallet/venly/index.html | 8 +++---- docs/wallet/wallet_api/index.html | 8 +++---- docs/wallet/withdraw-cn/index.html | 8 +++---- docs/wallet/withdraw-en/index.html | 8 +++---- docs/wallet_api/index.html | 8 +++---- docs/wallets/index.html | 8 +++---- docs/wallets/tutorial/BSCimToken/index.html | 8 +++---- docs/wallets/tutorial/bep8/index.html | 8 +++---- .../index.html | 8 +++---- .../how-to-trade-on-binance-dex/index.html | 8 +++---- .../ledger-nano-s-usage-guide/index.html | 8 +++---- .../trezor-model-t-user-guide/index.html | 8 +++---- docs/wallets/tutorial/videos/index.html | 8 +++---- .../wallet-tutorial-overview/index.html | 8 +++---- docs/wallets/walletconnect-support/index.html | 8 +++---- index.html | 8 +++---- markdown-page/index.html | 8 +++---- search/index.html | 8 +++---- sitemap.xml | 2 +- 293 files changed, 1152 insertions(+), 1128 deletions(-) create mode 100644 assets/js/687e506c.c26f1dc3.js delete mode 100644 assets/js/935f2afb.75059978.js create mode 100644 assets/js/935f2afb.d4a970f1.js create mode 100644 assets/js/dcec6889.3e18e7ab.js delete mode 100644 assets/js/dcec6889.49a9deaa.js create mode 100644 assets/js/e48c32e6.378086fd.js delete mode 100644 assets/js/e48c32e6.49423ed6.js create mode 100644 assets/js/main.44ad4b75.js rename assets/js/{main.55fb2f81.js.LICENSE.txt => main.44ad4b75.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.55fb2f81.js delete mode 100644 assets/js/runtime~main.623d3a75.js create mode 100644 assets/js/runtime~main.bbfd0784.js create mode 100644 docs/venly-nft-api/index.html diff --git a/404.html b/404.html index 1c87d65a3f..0c895d63d9 100644 --- a/404.html +++ b/404.html @@ -9,14 +9,14 @@ - - + +
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/687e506c.c26f1dc3.js b/assets/js/687e506c.c26f1dc3.js new file mode 100644 index 0000000000..454f3625ae --- /dev/null +++ b/assets/js/687e506c.c26f1dc3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeta_BNB_Docs=self.webpackChunkbeta_BNB_Docs||[]).push([[5941],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=p(n),u=r,k=c["".concat(s,".").concat(u)]||c[u]||m[u]||i;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:r,o[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const i={sidebar_label:"Using Venly",hide_table_of_contents:!1,sidebar_position:4},o="Using Venly NFT-API to Mint NFTs on BSC",l={unversionedId:"venly-nft-api",id:"venly-nft-api",title:"Using Venly NFT-API to Mint NFTs on BSC",description:"Minting NFTs on Binance Smart Chain",source:"@site/docs/venly-nft-api.md",sourceDirName:".",slug:"/venly-nft-api",permalink:"/docs/venly-nft-api",draft:!1,editUrl:"https://github.com/bnb-chain/bnb-chain.github.io/blob/master/docs/venly-nft-api.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_label:"Using Venly",hide_table_of_contents:!1,sidebar_position:4},sidebar:"bscSideBar",previous:{title:"Using Black IDE",permalink:"/docs/nft_blackide"},next:{title:"Storing NFT on IPFS & Filecoin",permalink:"/docs/nft-storage"}},s={},p=[{value:"What we cover in this guide",id:"what-we-cover-in-this-guide",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"1. Authenticating",id:"1-authenticating",level:2},{value:"2. Creating a Contract on the BSC Testnet Chain",id:"2-creating-a-contract-on-the-bsc-testnet-chain",level:2},{value:"Request Endpoint: reference",id:"request-endpoint-reference",level:3},{value:"Request Body:",id:"request-body",level:3},{value:"Response Body:",id:"response-body",level:3},{value:"3. Check the status of the contract/collection",id:"3-check-the-status-of-the-contractcollection",level:2},{value:"Request Endpoint: reference",id:"request-endpoint-reference-1",level:3},{value:"Example Request",id:"example-request",level:3},{value:"Response Body",id:"response-body-1",level:3},{value:"4. Creating Token-type",id:"4-creating-token-type",level:2},{value:"Request Endpoint: reference",id:"request-endpoint-reference-2",level:3},{value:"Request Body:",id:"request-body-1",level:3},{value:"Response Body:",id:"response-body-2",level:3},{value:"5. Check the status of token-type",id:"5-check-the-status-of-token-type",level:2},{value:"Request Endpoint: reference",id:"request-endpoint-reference-3",level:3},{value:"Example Request",id:"example-request-1",level:3},{value:"Response Body",id:"response-body-3",level:3},{value:"6. Minting an NFT on BSC Testnet Chain",id:"6-minting-an-nft-on-bsc-testnet-chain",level:2},{value:"Request Endpoint: reference",id:"request-endpoint-reference-4",level:3},{value:"Request Body:",id:"request-body-2",level:3},{value:"Response Body:",id:"response-body-4",level:3},{value:"7. Check the status of NFT mints",id:"7-check-the-status-of-nft-mints",level:2},{value:"Request Endpoint: reference",id:"request-endpoint-reference-5",level:3},{value:"Example Request",id:"example-request-2",level:3},{value:"Response Body",id:"response-body-5",level:3},{value:"Minted NFT Preview",id:"minted-nft-preview",level:2},{value:"Resources:",id:"resources",level:2}],d={toc:p},c="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"using-venly-nft-api-to-mint-nfts-on-bsc"},"Using Venly NFT-API to Mint NFTs on BSC"),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://github.com/bnb-chain/bnb-chain.github.io/assets/139292301/04e09159-9c6d-46c0-991b-4f56d064ccb7",alt:"Minting NFTs on Binance Smart Chain"})),(0,r.kt)("h2",{id:"what-we-cover-in-this-guide"},"What we cover in this guide"),(0,r.kt)("p",null,"In this guide, we will explain how to authenticate to our API service, create a contract on the BSC testnet, and create/mint your first NFT on Binance Smart Chain (testnet). We will walk you through several endpoints to help you get started."),(0,r.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"You need a Venly business account, if you don't have one, click ",(0,r.kt)("a",{parentName:"li",href:"https://portal.venly.io"},"here")," to register in our Developer Portal, or follow our step-by-step guide, ",(0,r.kt)("a",{parentName:"li",href:"https://venly.readme.io/docs/getting-started"},"Getting Started with Venly"),"."),(0,r.kt)("li",{parentName:"ol"},"You need an active ",(0,r.kt)("strong",{parentName:"li"},"trial")," or ",(0,r.kt)("strong",{parentName:"li"},"paid subscription")," of the NFT-API. You can start a 30-day free trial for the NFT-API."),(0,r.kt)("li",{parentName:"ol"},"You need your ",(0,r.kt)("strong",{parentName:"li"},"Client ID")," and ",(0,r.kt)("strong",{parentName:"li"},"Client Secret")," which can be obtained from the Portal.")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"All the API calls for this guide run on a sandbox environment. You can test and experiment with API calls without causing any harm to the actual blockchain or data.")),(0,r.kt)("p",null,"There are several ways to run API calls, but for this guide, you can use the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.venly.io/reference"},"API-Reference")," or ",(0,r.kt)("a",{parentName:"p",href:"https://www.postman.com/"},"Postman")," to execute the different endpoints."),(0,r.kt)("h2",{id:"1-authenticating"},"1","."," Authenticating"),(0,r.kt)("p",null,"To obtain a bearer token and authorize all API calls, you will need your Client ID and Client Secret. These credentials are necessary for authentication purposes."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("a",{parentName:"p",href:"https://docs.venly.io/reference/how-to-get-bearer-token"},"Click here to learn how to retrieve a bearer token and authenticate API calls."))),(0,r.kt)("p",null,"Please note that the base path for all NFT API endpoints is ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"https://nft-api-sandbox.venly.io"))),(0,r.kt)("h2",{id:"2-creating-a-contract-on-the-bsc-testnet-chain"},"2","."," Creating a Contract on the BSC Testnet Chain"),(0,r.kt)("p",null,"Let's start by defining your first contract. This contract will represent a collection for the NFTs. We will create a contract on the ",(0,r.kt)("strong",{parentName:"p"},"BSC")," testnet chain."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"As the API calls are running in a sandbox environment, the contract will be created on a testnet chain. In this example we will create an NFT contract on the BSC testnet chain.")),(0,r.kt)("h3",{id:"request-endpoint-reference"},"Request Endpoint: ",(0,r.kt)("a",{parentName:"h3",href:"https://docs.venly.io/reference/deploycontract-1"},"reference")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-https"}," POST /api/v2/contracts/deployments\n")),(0,r.kt)("h3",{id:"request-body"},"Request Body:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Required"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"name")),(0,r.kt)("td",{parentName:"tr",align:"left"},"The name of your NFT collection/contract"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"description")),(0,r.kt)("td",{parentName:"tr",align:"left"},"The description of your NFT collection/contract"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"image")),(0,r.kt)("td",{parentName:"tr",align:"left"},"The image URL for your NFT collection/contract that will be displayed"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"externalUrl")),(0,r.kt)("td",{parentName:"tr",align:"left"},"This can be any link such as a link to your website, landing page, etc."),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"chain")),(0,r.kt)("td",{parentName:"tr",align:"left"},"This is the blockchain on which you want to create the contract on"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "name": "NFT Collection",\n "description": "Sample description",\n "image": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "externalUrl": "www.venly.io",\n "chain": "BSC"\n}\n')),(0,r.kt)("h3",{id:"response-body"},"Response Body:"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Save the ",(0,r.kt)("inlineCode",{parentName:"p"},"result.id")," from the response body. This is the ",(0,r.kt)("strong",{parentName:"p"},"Deployment ID")," used to track the status of the contract creation request.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "success": true,\n "result": {\n "name": "NFT Collection",\n "description": "Sample description",\n "id": "5da1e825-ecfb-484a-9638-9fab7caee7fd",\n "secretType": "BSC",\n "symbol": "NFCO",\n "externalUrl": "www.venly.io",\n "image": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "media": [],\n "transactionHash": "0x84af5436ac576d576459730adf109a0aa04af6e93f2d565351ad5040662b23e0",\n "status": "PENDING",\n "storage": {\n "type": "cloud",\n "location": "https://metadata-qa.venly.io/metadata/contracts/11794"\n },\n "contractUri": "https://metadata-qa.venly.io/metadata/contracts/11794",\n "external_link": "www.venly.io"\n }\n}\n')),(0,r.kt)("h2",{id:"3-check-the-status-of-the-contractcollection"},"3","."," Check the status of the contract/collection"),(0,r.kt)("p",null,"This endpoint is used to check the status of a contract/collection on v2. The ",(0,r.kt)("inlineCode",{parentName:"p"},"{deploymentId}")," in the path is for tracking the status of contract creation. It is in the response body of the create contract/collection endpoint as ",(0,r.kt)("strong",{parentName:"p"},"result.",(0,r.kt)("inlineCode",{parentName:"strong"},"id")),"."),(0,r.kt)("h3",{id:"request-endpoint-reference-1"},"Request Endpoint: ",(0,r.kt)("a",{parentName:"h3",href:"https://docs.venly.io/reference/getcontract_1-1"},"reference")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-https"},"GET /api/v2/contracts/deployments/{deploymentId}\n")),(0,r.kt)("h3",{id:"example-request"},"Example Request"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-https"},"GET /api/v2/contracts/deployments/5da1e825-ecfb-484a-9638-9fab7caee7fd\n")),(0,r.kt)("h3",{id:"response-body-1"},"Response Body"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"In the response body look for the ",(0,r.kt)("strong",{parentName:"p"},"result.",(0,r.kt)("inlineCode",{parentName:"strong"},"status"))," parameter. It can have three possible values:"),(0,r.kt)("ul",{parentName:"blockquote"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SUCCEEDED")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PENDING")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"FAILED")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "success": true,\n "result": {\n "name": "NFT Collection",\n "description": "Sample description",\n "address": "0xc155ce47013a73d49ff5f5ebb74c520bcdbff9d6",\n "id": "5da1e825-ecfb-484a-9638-9fab7caee7fd",\n "secretType": "BSC",\n "symbol": "NFCO",\n "externalUrl": "www.venly.io",\n "image": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "media": [],\n "transactionHash": "0x84af5436ac576d576459730adf109a0aa04af6e93f2d565351ad5040662b23e0",\n "status": "SUCCEEDED",\n "storage": {\n "type": "cloud",\n "location": "https://metadata-qa.venly.io/metadata/contracts/11794"\n },\n "contractUri": "https://metadata-qa.venly.io/metadata/contracts/11794",\n "external_link": "www.venly.io"\n }\n}\n')),(0,r.kt)("h2",{id:"4-creating-token-type"},"4","."," Creating Token-type"),(0,r.kt)("p",null,"Next, we will create a token-type which serves as a template for minting NFTs. This means you just have to define the NFT template once with parameters like its name, image, attributes, etc, and then you can mint multiple NFTs directly to your end-users wallets. "),(0,r.kt)("p",null,"Defining token types helps structure the information such as ",(0,r.kt)("a",{parentName:"p",href:"https://docs.venly.io/docs/nft-attributes"},"attributes "),"and ",(0,r.kt)("a",{parentName:"p",href:"https://docs.venly.io/docs/animation-media"},"animationUrls"),"."),(0,r.kt)("h3",{id:"request-endpoint-reference-2"},"Request Endpoint: ",(0,r.kt)("a",{parentName:"h3",href:"https://docs.venly.io/reference/createtokentype"},"reference")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-https",metastring:"HTTP",HTTP:!0},"POST /api/v2/token-types/creations\n")),(0,r.kt)("h3",{id:"request-body-1"},"Request Body:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Required"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"secretType")),(0,r.kt)("td",{parentName:"tr",align:"left"},"The blockchain of the contract"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"contractAddress")),(0,r.kt)("td",{parentName:"tr",align:"left"},"The contract address under which you want to create the token-type"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"creations")),(0,r.kt)("td",{parentName:"tr",align:"left"},"An array of objects that can define one or multiple token-type details"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Array of objects"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"creations.name")),(0,r.kt)("td",{parentName:"tr",align:"left"},"The name of the token-type"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"creations.description")),(0,r.kt)("td",{parentName:"tr",align:"left"},"The description of the token-type"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"creations.image")),(0,r.kt)("td",{parentName:"tr",align:"left"},"The image URL for the token-type that will be displayed"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u274c")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "secretType": "BSC",\n "contractAddress": "0xc155ce47013a73d49ff5f5ebb74c520bcdbff9d6",\n "creations": [\n {\n "name": "BSC Token-type",\n "description": "Venly",\n "image": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png"\n }\n ]\n}\n')),(0,r.kt)("h3",{id:"response-body-2"},"Response Body:"),(0,r.kt)("blockquote",null,(0,r.kt)("ul",{parentName:"blockquote"},(0,r.kt)("li",{parentName:"ul"},"Save the ",(0,r.kt)("inlineCode",{parentName:"li"},"result.creations.id")," from the response body. This is the token ",(0,r.kt)("strong",{parentName:"li"},"Creation ID")," and it's used to track the status of the token-type creation request."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"status")," attribute indicates the token-type creation status."))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "success": true,\n "result": {\n "creations": [\n {\n "id": "3dda6999-3110-400c-8564-0bfbe0bb604d",\n "status": "PENDING",\n "tokenTypeId": 1,\n "metadata": {\n "name": "BSC Token-type",\n "description": "Venly",\n "image": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "imagePreview": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "imageThumbnail": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "animationUrls": [],\n "attributes": [\n {\n "type": "system",\n "name": "tokenTypeId",\n "value": "1",\n "traitType": "Token Type ID",\n "trait_type": "Token Type ID"\n }\n ],\n "contract": {\n "address": "0xc155ce47013a73d49ff5f5ebb74c520bcdbff9d6",\n "name": "NFT Collection",\n "symbol": "NFCO",\n "image": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "imageUrl": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "image_url": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "description": "Sample description",\n "externalLink": "www.venly.io",\n "external_link": "www.venly.io",\n "externalUrl": "www.venly.io",\n "external_url": "www.venly.io",\n "media": [],\n "type": "ERC_1155"\n },\n "fungible": false\n }\n }\n ]\n }\n}\n')),(0,r.kt)("h2",{id:"5-check-the-status-of-token-type"},"5","."," Check the status of token-type"),(0,r.kt)("p",null,"This endpoint is used to check the status of token-type creation. The ",(0,r.kt)("inlineCode",{parentName:"p"},"{creationId}")," in the path is for tracking the status of token-type creation. It is in the response body of the create token-type endpoint as ",(0,r.kt)("strong",{parentName:"p"},"result.",(0,r.kt)("inlineCode",{parentName:"strong"},"id")),"."),(0,r.kt)("h3",{id:"request-endpoint-reference-3"},"Request Endpoint: ",(0,r.kt)("a",{parentName:"h3",href:"https://docs.venly.io/reference/gettokentype"},"reference")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-https"},"GET /api/v2/token-types/creations/{creationId}\n")),(0,r.kt)("h3",{id:"example-request-1"},"Example Request"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-https"},"GET /api/v2/token-types/creations/3dda6999-3110-400c-8564-0bfbe0bb604d\n")),(0,r.kt)("h3",{id:"response-body-3"},"Response Body"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"In the response body look for the ",(0,r.kt)("strong",{parentName:"p"},"result.",(0,r.kt)("inlineCode",{parentName:"strong"},"status"))," parameter. It can have three possible values:"),(0,r.kt)("ul",{parentName:"blockquote"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SUCCEEDED")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PENDING")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"FAILED")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "success": true,\n "result": {\n "id": "3dda6999-3110-400c-8564-0bfbe0bb604d",\n "status": "SUCCEEDED",\n "transactionHash": "0x630765e565958fc5cd845f58db9753f34b87f3e0bc8b5a74e85d52b4e4655d9a",\n "tokenTypeId": 1,\n "mints": [],\n "metadata": {\n "name": "BSC Token-type",\n "description": "Venly",\n "image": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "imagePreview": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "imageThumbnail": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "animationUrls": [],\n "attributes": [\n {\n "type": "system",\n "name": "tokenTypeId",\n "value": "1",\n "traitType": "Token Type ID",\n "trait_type": "Token Type ID"\n }\n ],\n "contract": {\n "address": "0xc155ce47013a73d49ff5f5ebb74c520bcdbff9d6",\n "name": "NFT Collection",\n "symbol": "NFCO",\n "image": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "imageUrl": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "image_url": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "description": "Sample description",\n "externalLink": "www.venly.io",\n "external_link": "www.venly.io",\n "externalUrl": "www.venly.io",\n "external_url": "www.venly.io",\n "media": [],\n "type": "ERC_1155"\n },\n "fungible": false\n }\n }\n}\n')),(0,r.kt)("h2",{id:"6-minting-an-nft-on-bsc-testnet-chain"},"6","."," Minting an NFT on BSC Testnet Chain"),(0,r.kt)("h3",{id:"request-endpoint-reference-4"},"Request Endpoint: ",(0,r.kt)("a",{parentName:"h3",href:"https://docs.venly.io/reference/minttokens"},"reference")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-https",metastring:"HTTP",HTTP:!0}," POST /api/v2/contracts/deployments\n")),(0,r.kt)("h3",{id:"request-body-2"},"Request Body:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Param Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Required"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"contractAddress")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Body"),(0,r.kt)("td",{parentName:"tr",align:"left"},"The contract address"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"secretType")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Body"),(0,r.kt)("td",{parentName:"tr",align:"left"},"The blockchain of the contract"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"tokenTypeId")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Body"),(0,r.kt)("td",{parentName:"tr",align:"left"},"This is the ",(0,r.kt)("inlineCode",{parentName:"td"},"ID")," of the ",(0,r.kt)("strong",{parentName:"td"},"token-type"),". You can get it from the response body when you create a token-type."),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"destinations")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Body"),(0,r.kt)("td",{parentName:"tr",align:"left"},"The array which includes all the wallet addresses and the number of NFTs to mint per wallet address"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Array of objects"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"destinations.address")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Body"),(0,r.kt)("td",{parentName:"tr",align:"left"},"The wallet address to mint and send the NFT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"String"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"destinations.amount")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Body"),(0,r.kt)("td",{parentName:"tr",align:"left"},"The number of NFTs you want to mint and send"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Integer"),(0,r.kt)("td",{parentName:"tr",align:"left"},"\u2705")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "contractAddress": "0xc155ce47013a73d49ff5f5ebb74c520bcdbff9d6",\n "secretType": "BSC",\n "tokenTypeId": "1",\n "destinations": [\n {\n "address": "0xcdA9e3959E7f9c58D2a2088b8F7C9F1C60B1Bd24",\n "amount": 1\n }\n ]\n}\n')),(0,r.kt)("blockquote",null,(0,r.kt)("ul",{parentName:"blockquote"},(0,r.kt)("li",{parentName:"ul"},"Make sure the destinations.",(0,r.kt)("inlineCode",{parentName:"li"},"address")," (",(0,r.kt)("em",{parentName:"li"},"wallet address"),") has the same chain as the contract. In this case, it should be a ",(0,r.kt)("strong",{parentName:"li"},"BSC")," wallet(Binance Smart Chain)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"NOTE"),": The ",(0,r.kt)("inlineCode",{parentName:"li"},"contractAddress"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"secretType")," (",(0,r.kt)("em",{parentName:"li"},"blockchain"),"), and the ",(0,r.kt)("inlineCode",{parentName:"li"},"tokenTypeId")," are defined in the request body."))),(0,r.kt)("h3",{id:"response-body-4"},"Response Body:"),(0,r.kt)("blockquote",null,(0,r.kt)("ul",{parentName:"blockquote"},(0,r.kt)("li",{parentName:"ul"},"Under the ",(0,r.kt)("inlineCode",{parentName:"li"},"mints")," array, you can find the ",(0,r.kt)("inlineCode",{parentName:"li"},"id")," (",(0,r.kt)("em",{parentName:"li"},"mintId"),") for each minted NFT listed with the wallet address. This unique ",(0,r.kt)("inlineCode",{parentName:"li"},"id")," can be used to track the status of the mint request."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"status")," attribute indicates the on-chain token mint status."))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "success": true,\n "result": {\n "mints": [\n {\n "id": "778a3b09-64a8-45d9-a581-7716020f7fda",\n "createdOn": "2024-04-25T10:38:37.215647494",\n "status": "PENDING",\n "destination": {\n "address": "0xcdA9e3959E7f9c58D2a2088b8F7C9F1C60B1Bd24",\n "amount": 1\n }\n }\n ],\n "metadata": {\n "name": "BSC Token-type",\n "description": "Venly",\n "image": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "imagePreview": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "imageThumbnail": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "animationUrls": [],\n "attributes": [\n {\n "type": "system",\n "name": "tokenTypeId",\n "value": "1",\n "traitType": "Token Type ID",\n "trait_type": "Token Type ID"\n }\n ],\n "contract": {\n "address": "0xc155ce47013a73d49ff5f5ebb74c520bcdbff9d6",\n "name": "NFT Collection",\n "symbol": "NFCO",\n "image": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "imageUrl": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "image_url": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "description": "Sample description",\n "externalLink": "www.venly.io",\n "external_link": "www.venly.io",\n "externalUrl": "www.venly.io",\n "external_url": "www.venly.io",\n "media": [],\n "type": "ERC_1155"\n },\n "fungible": false\n }\n }\n}\n')),(0,r.kt)("h2",{id:"7-check-the-status-of-nft-mints"},"7","."," Check the status of NFT mints"),(0,r.kt)("p",null,"This endpoint is used to check the status of NFT mints. The ",(0,r.kt)("inlineCode",{parentName:"p"},"{mintId}")," in the path is for tracking the status of the NFT mint. It is in the response body of the Mint Fungible or Non-Fungible Tokens endpoint as ",(0,r.kt)("strong",{parentName:"p"},"result.mints.",(0,r.kt)("inlineCode",{parentName:"strong"},"id")),"."),(0,r.kt)("h3",{id:"request-endpoint-reference-5"},"Request Endpoint: ",(0,r.kt)("a",{parentName:"h3",href:"https://docs.venly.io/reference/gettokenmint"},"reference")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-https"},"GET /api/v2/tokens/mints/{mintId}\n")),(0,r.kt)("h3",{id:"example-request-2"},"Example Request"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-https"},"GET /api/v2/tokens/mints/778a3b09-64a8-45d9-a581-7716020f7fda\n")),(0,r.kt)("h3",{id:"response-body-5"},"Response Body"),(0,r.kt)("blockquote",null,(0,r.kt)("ul",{parentName:"blockquote"},(0,r.kt)("li",{parentName:"ul"},"You can get the ",(0,r.kt)("inlineCode",{parentName:"li"},"tokenId")," in the response body."),(0,r.kt)("li",{parentName:"ul"},"In the response body look for the ",(0,r.kt)("strong",{parentName:"li"},"result.",(0,r.kt)("inlineCode",{parentName:"strong"},"status"))," parameter. It can have three possible values:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SUCCEEDED")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PENDING")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"FAILED")))))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "success": true,\n "result": {\n "id": "778a3b09-64a8-45d9-a581-7716020f7fda",\n "tokenId": 2,\n "createdOn": "2024-04-25T10:38:37.215647",\n "status": "SUCCEEDED",\n "transactionHash": "0x22b6d453691997893494a8444adb04e1c0af2a410b0b8128b80346f377d644b7",\n "destination": {\n "address": "0xcdA9e3959E7f9c58D2a2088b8F7C9F1C60B1Bd24",\n "amount": 1\n },\n "metadata": {\n "name": "BSC Token-type",\n "description": "Venly",\n "image": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "imagePreview": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "imageThumbnail": "https://ideogram.ai/api/images/direct/pzyvhW2yS4uHoC8ntu3K1w.png",\n "animationUrls": [],\n "attributes": [\n {\n "type": "system",\n "name": "tokenTypeId",\n "value": "1",\n "traitType": "Token Type ID",\n "trait_type": "Token Type ID"\n },\n {\n "type": "property",\n "name": "mintNumber",\n "value": "1",\n "traitType": "Mint Number",\n "trait_type": "Mint Number"\n }\n ],\n "contract": {\n "address": "0xc155ce47013a73d49ff5f5ebb74c520bcdbff9d6",\n "name": "NFT Collection",\n "symbol": "NFCO",\n "image": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "imageUrl": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "image_url": "https://techround.co.uk/wp-content/uploads/2022/01/Venly-logo.png",\n "description": "Sample description",\n "externalLink": "www.venly.io",\n "external_link": "www.venly.io",\n "externalUrl": "www.venly.io",\n "external_url": "www.venly.io",\n "media": [],\n "type": "ERC_1155"\n },\n "fungible": false\n }\n }\n}\n')),(0,r.kt)("h2",{id:"minted-nft-preview"},"Minted NFT Preview"),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://github.com/bnb-chain/bnb-chain.github.io/assets/139292301/33f72434-8551-45e7-9d89-0e54e43c3fc0",alt:"BSC NFT Minted preview on Venly Wallet"})),(0,r.kt)("h2",{id:"resources"},"Resources:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.venly.io/docs/dynamic-nfts-api-flow"},"Dynamic NFTs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.venly.io/docs/mass-minting"},"Mass Minting")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.venly.io/docs/webhooks-nft-api"},"Webhooks"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.75059978.js b/assets/js/935f2afb.75059978.js deleted file mode 100644 index 03197afbbc..0000000000 --- a/assets/js/935f2afb.75059978.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkbeta_BNB_Docs=self.webpackChunkbeta_BNB_Docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"bscSideBar":[{"type":"category","label":"BNB Chain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Overview","href":"/docs/overview","docId":"overview"},{"type":"link","label":"Getting Started","href":"/docs/getting-started","docId":"getting-started"},{"type":"category","collapsible":true,"collapsed":true,"label":"BNB Smart Chain","items":[{"type":"link","label":"Introduction","href":"/docs/learn/intro","docId":"learn/intro"},{"type":"link","label":"Claim test tBNB Tokens","href":"/docs/bsc-faucet","docId":"bsc-faucet"},{"type":"link","label":"Tutorials","href":"/docs/bsc-tutorials","docId":"bsc-tutorials"},{"type":"category","collapsed":true,"label":"Core Concepts","items":[{"type":"link","label":"Parlia Consensus Engine","href":"/docs/learn/consensus","docId":"learn/consensus"},{"type":"category","collapsible":true,"collapsed":true,"label":"BC and BSC Cross-Chain Mechanism","items":[{"type":"link","label":"Architecture","href":"/docs/learn/cross-chain","docId":"learn/cross-chain"},{"type":"link","label":"Build-in System Contracts","href":"/docs/learn/system-contract","docId":"learn/system-contract"},{"type":"link","label":"BSC Relayer","href":"/docs/learn/bsc-relayer","docId":"learn/bsc-relayer"},{"type":"link","label":"Incentive Mechanism","href":"/docs/learn/incentives","docId":"learn/incentives"},{"type":"link","label":"Oracle Module","href":"/docs/learn/oracle-module","docId":"learn/oracle-module"},{"type":"link","label":"Oracle Relayer","href":"/docs/learn/oracle-relayer","docId":"learn/oracle-relayer"},{"type":"link","label":"Cross-Chain API","href":"/docs/learn/cross-chain-api","docId":"learn/cross-chain-api"}]},{"type":"link","label":"Governance of BSC","href":"/docs/learn/bsc-gov","docId":"learn/bsc-gov"}],"collapsible":true},{"type":"category","collapsible":true,"collapsed":true,"label":"Develop","items":[{"type":"category","label":"Wallet","items":[{"type":"link","label":"Wallet Guide","href":"/docs/Wallet","docId":"Wallet"},{"type":"link","label":"Supported Wallets","href":"/docs/beaconchain/wallets","docId":"beaconchain/wallets"},{"type":"link","label":"Wallet Key Management","href":"/docs/create-wallet","docId":"create-wallet"},{"type":"category","label":"Tutorials","items":[{"type":"link","label":"Trust Wallet Guide","href":"/docs/beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet","docId":"beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet"},{"type":"link","label":"Venly Wallet Guide","href":"/docs/beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet","docId":"beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet"},{"type":"link","label":"Ledger Wallet Guide","href":"/docs/beaconchain/wallet/tutorial/ledger-nano-s-usage-guide","docId":"beaconchain/wallet/tutorial/ledger-nano-s-usage-guide"},{"type":"link","label":"Trezor Wallet Guide","href":"/docs/beaconchain/wallet/tutorial/trezor-model-t-user-guide","docId":"beaconchain/wallet/tutorial/trezor-model-t-user-guide"},{"type":"link","label":"How to manage BEP8 token with Web Wallet","href":"/docs/beaconchain/wallet/tutorial/bep8","docId":"beaconchain/wallet/tutorial/bep8"}],"collapsed":true,"collapsible":true},{"type":"category","collapsed":true,"label":"BNB Chain Extension Wallet","items":[{"type":"link","label":"How to Use","href":"/docs/bnb-chain-wallet","docId":"bnb-chain-wallet"},{"type":"link","label":"Manually Install Binance Extension Wallet","href":"/docs/manual","docId":"manual"},{"type":"link","label":"Add Account","href":"/docs/add-account","docId":"add-account"},{"type":"link","label":"API","href":"/docs/wallet_api","docId":"wallet_api"},{"type":"link","label":"Staking","href":"/docs/staking-with-ext-wallet","docId":"staking-with-ext-wallet"}],"collapsible":true},{"type":"category","collapsed":true,"label":"Tutorials on Third Party Wallets","items":[{"type":"link","label":"Overview","href":"/docs/wallets/wallet-tutorial-overview","docId":"wallets/wallet-tutorial-overview"},{"type":"link","label":"Trust Wallet","href":"/docs/wallet/trustwallet","docId":"wallet/trustwallet"},{"type":"link","label":"Metamask","href":"/docs/wallet/metamask","docId":"wallet/metamask"},{"type":"link","label":"Venly Wallet","href":"/docs/wallet/venly","docId":"wallet/venly"},{"type":"link","label":"Math Wallet","href":"/docs/wallet/math","docId":"wallet/math"},{"type":"link","label":"MyEtherWallet","href":"/docs/wallet/myetherwallet","docId":"wallet/myetherwallet"},{"type":"link","label":"infinity Wallet","href":"/docs/wallet/infinitywallet","docId":"wallet/infinitywallet"},{"type":"link","label":"AlphaWallet","href":"/docs/wallet/AlphaWallet","docId":"wallet/AlphaWallet"},{"type":"link","label":"Coin98 Wallet","href":"/docs/wallet/coin98wallet","docId":"wallet/coin98wallet"},{"type":"link","label":"Ledger Hardware Wallet","href":"/docs/wallet/ledger","docId":"wallet/ledger"},{"type":"link","label":"Trezor Wallet","href":"/docs/wallet/trezor","docId":"wallet/trezor"},{"type":"link","label":"imToken","href":"/docs/wallets/tutorial/BSCimToken","docId":"wallets/tutorial/BSCimToken"},{"type":"link","label":"Gnosis Safe Multisig","href":"/docs/learn/gnosis","docId":"learn/gnosis"}],"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"link","label":"Developer Tooling Landscape","href":"https://www.bnbchain.org/en/dev-tools"},{"type":"link","label":"Tools","href":"/docs/learn/ecosystem","docId":"learn/ecosystem"},{"type":"link","label":"RPC","href":"/docs/rpc","docId":"rpc"},{"type":"link","label":"BSC Mainnet","href":"/docs/BSCmainnet","docId":"BSCmainnet"},{"type":"link","label":"BSC Testnet","href":"/docs/BSCtestnet","docId":"BSCtestnet"},{"type":"link","label":"BSC Explorers","href":"/docs/BSCexplorers","docId":"BSCexplorers"},{"type":"category","collapsed":true,"label":"Running BSC Nodes","items":[{"type":"link","label":"BNB Smart Chain (BSC) Node Configuration: Best Practices","href":"/docs/validator/best-practice","docId":"validator/best-practice"},{"type":"link","label":"BNB Smart Chain Full Node","href":"/docs/validator/fullnode","docId":"validator/fullnode"},{"type":"link","label":"BNB Smart Chain Fast Node","href":"/docs/BSC-fast-node","docId":"BSC-fast-node"},{"type":"link","label":"BNB Smart Chain Archive Node","href":"/docs/archivenode","docId":"archivenode"},{"type":"link","label":"BNB Smart Chain Separate Node","href":"/docs/BSC-separate-node","docId":"BSC-separate-node"},{"type":"link","label":"BNB Smart Chain Verify Node","href":"/docs/BSC-verify-node","docId":"BSC-verify-node"},{"type":"link","label":"BNB Smart Chain Boot Nodes","href":"/docs/boot-nodes","docId":"boot-nodes"},{"type":"link","label":"Node Maintenance","href":"/docs/validator/node-maintenance","docId":"validator/node-maintenance"},{"type":"link","label":"Upgrading Geth","href":"/docs/validator/upgrade-fullnode","docId":"validator/upgrade-fullnode"},{"type":"link","label":"BNB Smart Chain Docker","href":"/docs/validator/docker","docId":"validator/docker"}],"collapsible":true},{"type":"category","collapsed":true,"label":"Deploy Smart Contract","items":[{"type":"link","label":"Using ChainIDE","href":"/docs/chainide","docId":"chainide"},{"type":"link","label":"Using Remix IDE","href":"/docs/remix-new","docId":"remix-new"},{"type":"link","label":"Using Truffle","href":"/docs/truffle-new","docId":"truffle-new"},{"type":"link","label":"Using HardHat","href":"/docs/hardhat-new","docId":"hardhat-new"},{"type":"link","label":"Using Replit","href":"/docs/replit","docId":"replit"},{"type":"link","label":"Verify Your Contract on BscScan","href":"/docs/verify","docId":"verify"}],"collapsible":true},{"type":"category","label":"Deploy NFTs on BSC","items":[{"type":"link","label":"NFT Metadata Standard","href":"/docs/nft-metadata-standard","docId":"nft-metadata-standard"},{"type":"link","label":"Using Truffle","href":"/docs/ERC721","docId":"ERC721"},{"type":"link","label":"Using Black IDE","href":"/docs/nft_blackide","docId":"nft_blackide"},{"type":"link","label":"Storing NFT on IPFS & Filecoin","href":"/docs/nft-storage","docId":"nft-storage"}],"collapsed":true,"collapsible":true},{"type":"category","collapsed":true,"label":"BEP20 Tokens","items":[{"type":"link","label":"Introduction","href":"/docs/BEP20","docId":"BEP20"},{"type":"link","label":"Issue BEP20 Tokens","href":"/docs/issue-BEP20","docId":"issue-BEP20"},{"type":"category","collapsed":true,"label":"Bind Tokens","items":[{"type":"link","label":"Cross-chain Token Management","href":"/docs/tokens-cross-chain","docId":"tokens-cross-chain"},{"type":"link","label":"Bind BEP2 and BEP20 Tokens","href":"/docs/bind-tokens","docId":"bind-tokens"},{"type":"link","label":"Mirror BEP2 and BEP20 Token","href":"/docs/mirror","docId":"mirror"},{"type":"link","label":"Token Circulation Model","href":"/docs/circulation-model","docId":"circulation-model"},{"type":"link","label":"Sync Token Supply","href":"/docs/sync","docId":"sync"}],"collapsible":true},{"type":"category","collapsed":true,"label":"BEP20 Contracts","items":[{"type":"link","label":"Upgradable BEP20 Contracts on BSC","href":"/docs/proxy","docId":"proxy"},{"type":"link","label":"Verify Proxy Contracts","href":"/docs/verify-proxy","docId":"verify-proxy"}],"collapsible":true}],"collapsible":true},{"type":"category","collapsed":true,"label":"Dapp Tutorials","items":[{"type":"link","label":"Full Stack Hello World dApp","href":"/docs/dapp-dev/Hello-World","docId":"dapp-dev/Hello-World"},{"type":"link","label":"Using Web3.js Library on BNB Smart Chain","href":"/docs/dapp-dev/web3js-tutorial","docId":"dapp-dev/web3js-tutorial"}],"collapsible":true},{"type":"link","label":"Oracles","href":"/docs/oracles","docId":"oracles"},{"type":"link","label":"DStorages","href":"/docs/dstorages","docId":"dstorages"},{"type":"link","label":"Cross-Chain Bridges","href":"/docs/learn/cross-chain-bridges","docId":"learn/cross-chain-bridges"}]},{"type":"category","collapsed":true,"label":"Validator","items":[{"type":"link","label":"Overview","href":"/docs/validator/overview","docId":"validator/overview"},{"type":"link","label":"Create Validator","href":"/docs/validator/create-val","docId":"validator/create-val"},{"type":"link","label":"Run Validator","href":"/docs/validator/run-val","docId":"validator/run-val"},{"type":"category","label":"MEV","items":[{"type":"link","label":"Overview","href":"/docs/mev/overview","docId":"mev/overview"},{"type":"link","label":"Validator Integration Guide","href":"/docs/mev/validator-integration","docId":"mev/validator-integration"},{"type":"link","label":"Builder Integration Guide","href":"/docs/mev/builder-integration","docId":"mev/builder-integration"},{"type":"link","label":"FAQs","href":"/docs/mev/faqs","docId":"mev/faqs"}],"collapsed":true,"collapsible":true}],"collapsible":true},{"type":"category","collapsed":true,"label":"Staking","items":[{"type":"link","label":"Overview","href":"/docs/stake/Staking","docId":"stake/Staking"},{"type":"link","label":"CLI Commands","href":"/docs/stake/cli-commands","docId":"stake/cli-commands"},{"type":"link","label":"Staking with Binance Extension Wallet","href":"/docs/wallet/staking","docId":"wallet/staking"},{"type":"category","collapsed":true,"label":"Slashing","items":[{"type":"link","label":"Overview","href":"/docs/validator/Penalty-overview","docId":"validator/Penalty-overview"},{"type":"link","label":"Unjail","href":"/docs/validator/unjail","docId":"validator/unjail"},{"type":"link","label":"Slashing Fee","href":"/docs/validator/slash-fee","docId":"validator/slash-fee"},{"type":"link","label":"Submit Slash Evidence","href":"/docs/validator/send-slash-evidence","docId":"validator/send-slash-evidence"},{"type":"link","label":"Monitoring","href":"/docs/validator/monitor-and-query-slash","docId":"validator/monitor-and-query-slash"}],"collapsible":true}],"collapsible":true},{"type":"category","collapsed":true,"label":"Migrating to BNB Chain","items":[{"type":"category","collapsed":true,"label":"Solana","items":[{"type":"link","label":"Architecture","href":"/docs/migration/non-evm-chains/solana/architecture-comparison","docId":"migration/non-evm-chains/solana/architecture-comparison"},{"type":"link","label":"Token Migration","href":"/docs/migration/non-evm-chains/solana/token-migration","docId":"migration/non-evm-chains/solana/token-migration"}],"collapsible":true},{"type":"category","collapsed":true,"label":"Polygon","items":[{"type":"link","label":"Comparison with BSC","href":"/docs/migration/evm-chains/chain-comparison","docId":"migration/evm-chains/chain-comparison"},{"type":"link","label":"Token Standard Comparison","href":"/docs/migration/evm-chains/token-comparison","docId":"migration/evm-chains/token-comparison"},{"type":"link","label":"Token Migration","href":"/docs/migration/evm-chains/token-migration","docId":"migration/evm-chains/token-migration"}],"collapsible":true}],"collapsible":true}]},{"type":"category","label":"BNB Beacon Chain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/learn/beaconIntro","docId":"learn/beaconIntro"},{"type":"link","label":"Tutorials","href":"/docs/beaconchain/bc-tutorials","docId":"beaconchain/bc-tutorials"},{"type":"category","label":"Learn","collapsed":true,"items":[{"type":"link","label":"Architecture","href":"/docs/beaconchain/learn/architecture","docId":"beaconchain/learn/architecture"},{"type":"link","label":"Accounts","href":"/docs/beaconchain/learn/accounts","docId":"beaconchain/learn/accounts"},{"type":"link","label":"Escrow Accounts","href":"/docs/beaconchain/learn/escrow-accounts","docId":"beaconchain/learn/escrow-accounts"},{"type":"link","label":"Assets","href":"/docs/beaconchain/learn/assets","docId":"beaconchain/learn/assets"},{"type":"link","label":"Breathe Blocks","href":"/docs/beaconchain/learn/breathe-block","docId":"beaconchain/learn/breathe-block"},{"type":"link","label":"Transactions","href":"/docs/beaconchain/learn/transactions","docId":"beaconchain/learn/transactions"},{"type":"link","label":"Genesis File","href":"/docs/beaconchain/learn/genesis","docId":"beaconchain/learn/genesis"},{"type":"link","label":"Signatures","href":"/docs/beaconchain/learn/signature","docId":"beaconchain/learn/signature"},{"type":"link","label":"BEP8 Tokens","href":"/docs/beaconchain/learn/BEP8","docId":"beaconchain/learn/BEP8"},{"type":"category","label":"Encoding","collapsed":true,"items":[{"type":"link","label":"Transaction Encoding Specification","href":"/docs/encoding","docId":"encoding"},{"type":"link","label":"Types","href":"/docs/beaconchain/learn/encoding/","docId":"beaconchain/learn/encoding/encoding"},{"type":"link","label":"Encoding Examples","href":"/docs/beaconchain/learn/encoding/amino-example","docId":"beaconchain/learn/encoding/amino-example"}],"collapsible":true}],"collapsible":true},{"type":"category","label":"Develop","items":[{"type":"link","label":"RPC","href":"/docs/beaconchain/develop/rpc","docId":"beaconchain/develop/rpc"},{"type":"category","label":"BNB Beacon Chain Fullnode","items":[{"type":"link","label":"Install Binaries","href":"/docs/beaconchain/develop/node/install","docId":"beaconchain/develop/node/install"},{"type":"link","label":"Join Mainnet","href":"/docs/beaconchain/develop/node/join-mainnet","docId":"beaconchain/develop/node/join-mainnet"},{"type":"link","label":"Join Testnet","href":"/docs/beaconchain/develop/node/join-testnet","docId":"beaconchain/develop/node/join-testnet"},{"type":"link","label":"Different Sync Types","href":"/docs/beaconchain/develop/node/synctypes","docId":"beaconchain/develop/node/synctypes"},{"type":"link","label":"Get Extra Data From Your Full Node","href":"/docs/beaconchain/develop/node/extra-info","docId":"beaconchain/develop/node/extra-info"},{"type":"link","label":"Types of Nodes","href":"/docs/beaconchain/develop/node/nodetypes","docId":"beaconchain/develop/node/nodetypes"},{"type":"link","label":"Upgrade","href":"/docs/beaconchain/develop/node/upgrade","docId":"beaconchain/develop/node/upgrade"},{"type":"link","label":"Run a Local Testnet","href":"/docs/beaconchain/develop/node/localnetwork","docId":"beaconchain/develop/node/localnetwork"},{"type":"link","label":"Common Issues When Running a Full Node","href":"/docs/beaconchain/develop/node/fullnodeissue","docId":"beaconchain/develop/node/fullnodeissue"}],"collapsed":true,"collapsible":true},{"type":"link","label":"BNB Beacon Chain CLI","href":"/docs/beaconchain/develop/api-reference/cli","docId":"beaconchain/develop/api-reference/cli"},{"type":"link","label":"BNB Beacon Chain SDK","href":"/docs/beaconchain/develop/bcsdk","docId":"beaconchain/develop/bcsdk"},{"type":"link","label":"BNB Beacon Chain Testnet","href":"/docs/beaconchain/develop/testnetandexplorer","docId":"beaconchain/develop/testnetandexplorer"},{"type":"link","label":"Light Client","href":"/docs/beaconchain/light-client","docId":"beaconchain/light-client"},{"type":"link","label":"Asset Management","href":"/docs/beaconchain/tokens","docId":"beaconchain/tokens"},{"type":"category","label":"BNB Beacon Chain API Reference","items":[{"type":"link","label":"New Accelerated Node HTTP API Mainnet","href":"/docs/beaconchain/develop/api-reference/dex-api/block-service","docId":"beaconchain/develop/api-reference/dex-api/block-service"},{"type":"link","label":"Accelerated Node HTTP API Mainnet - Paths and Models","href":"/docs/beaconchain/develop/api-reference/dex-api/paths","docId":"beaconchain/develop/api-reference/dex-api/paths"},{"type":"link","label":"Accelerated Node HTTP API Testnet- Paths and Models","href":"/docs/beaconchain/develop/api-reference/dex-api/paths-testnet","docId":"beaconchain/develop/api-reference/dex-api/paths-testnet"},{"type":"link","href":"pathname:///api-swagger/index.html","label":"Accelerated Node HTTP API Swagger"},{"type":"link","label":"Staking API","href":"/docs/beaconchain/develop/api-reference/dex-api/staking","docId":"beaconchain/develop/api-reference/dex-api/staking"},{"type":"link","label":"WebSockets - Connecting","href":"/docs/beaconchain/develop/api-reference/dex-api/ws-connection","docId":"beaconchain/develop/api-reference/dex-api/ws-connection"},{"type":"link","label":"WebSockets - Streams","href":"/docs/beaconchain/develop/api-reference/dex-api/ws-streams","docId":"beaconchain/develop/api-reference/dex-api/ws-streams"},{"type":"link","label":"Node RPC - Paths and Models","href":"/docs/beaconchain/develop/api-reference/node-rpc","docId":"beaconchain/develop/api-reference/node-rpc"},{"type":"link","href":"pathname:///rpc-swagger/index.html","label":"Node RPC Swagger"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Validator","items":[{"type":"link","label":"Overview","href":"/docs/beaconchain/validator/overview","docId":"beaconchain/validator/overview"},{"type":"link","label":"Create Validator","href":"/docs/beaconchain/validator/create-val","docId":"beaconchain/validator/create-val"},{"type":"link","label":"Run Validator","href":"/docs/beaconchain/validator/run-val","docId":"beaconchain/validator/run-val"}],"collapsed":true,"collapsible":true}]},{"type":"link","label":"BNB Greenfield","href":"https://docs.bnbchain.org/greenfield-docs/"},{"type":"link","label":"zkBNB","href":"https://docs.bnbchain.org/zkBNB-docs/"},{"type":"link","label":"opBNB","href":"https://docs.bnbchain.org/opbnb-docs/"},{"type":"category","label":"\ud83c\udf05BNB Beacon Chain Sunset","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Overview","href":"/docs/bcfusion/overview","docId":"bcfusion/overview"},{"type":"category","label":"For Users","items":[{"type":"link","label":"Manange Your Assets","href":"/docs/bcfusion/users/assets","docId":"bcfusion/users/assets"},{"type":"link","label":"Manage Your Atomic Swaps","href":"/docs/bcfusion/users/swaps","docId":"bcfusion/users/swaps"},{"type":"link","label":"Manage Your TimeLocks","href":"/docs/bcfusion/users/timelocks","docId":"bcfusion/users/timelocks"},{"type":"link","label":"Manage Your Old Delegations","href":"/docs/bcfusion/users/stake-migration","docId":"bcfusion/users/stake-migration"},{"type":"link","label":"BEP153 and LSD Stake Migration","href":"/docs/bcfusion/users/bep153-stake-migration","docId":"bcfusion/users/bep153-stake-migration"},{"type":"link","label":"Manage Your New Delegations","href":"/docs/bcfusion/users/new-stake","docId":"bcfusion/users/new-stake"},{"type":"link","label":"Participate in Governance","href":"/docs/bcfusion/users/gov","docId":"bcfusion/users/gov"}],"collapsed":true,"collapsible":true},{"type":"category","label":"For Token Issuers","items":[{"type":"link","label":"Bind Your Tokens","href":"/docs/bcfusion/owners/bind","docId":"bcfusion/owners/bind"}],"collapsed":true,"collapsible":true},{"type":"category","label":"For Validators","items":[{"type":"link","label":"Migrate Your Validators","href":"/docs/bcfusion/validators/migrations","docId":"bcfusion/validators/migrations"},{"type":"link","label":"Create New Validators","href":"/docs/bcfusion/validators/creation","docId":"bcfusion/validators/creation"},{"type":"link","label":"Key Management","href":"/docs/bcfusion/validators/key-management","docId":"bcfusion/validators/key-management"}],"collapsed":true,"collapsible":true},{"type":"category","label":"For Developers","items":[{"type":"link","label":"New Staking","href":"/docs/bcfusion/developers/staking","docId":"bcfusion/developers/staking"},{"type":"link","label":"New Governance","href":"/docs/bcfusion/developers/gov","docId":"bcfusion/developers/gov"},{"type":"link","label":"Cross Chain Redelegation","href":"/docs/bcfusion/developers/crosschain-redelegation","docId":"bcfusion/developers/crosschain-redelegation"},{"type":"link","label":"Build-in System Contracts","href":"/docs/bcfusion/developers/system-contracts","docId":"bcfusion/developers/system-contracts"}],"collapsed":true,"collapsible":true},{"type":"category","label":"New Staking & Governance","items":[{"type":"link","label":"Staking","href":"/docs/bcfusion/validators/staking","docId":"bcfusion/validators/staking"},{"type":"link","label":"Slash","href":"/docs/bcfusion/validators/slash","docId":"bcfusion/validators/slash"},{"type":"link","label":"Governance","href":"/docs/bcfusion/validators/gov","docId":"bcfusion/validators/gov"}],"collapsed":true,"collapsible":true}]}]},{"type":"link","label":"BSC Roadmap","href":"https://forum.bnbchain.org/t/bnb-chain-upgrades-mainnet/936"},{"type":"category","collapsed":true,"label":"FAQs","items":[{"type":"category","collapsed":true,"label":"BNB Smart Chain FAQs","items":[{"type":"link","label":"BSC General FAQs","href":"/docs/BSC-FAQs-general","docId":"BSC-FAQs-general"},{"type":"link","label":"BSC Tokens FAQs","href":"/docs/BSC-FAQs-tokens","docId":"BSC-FAQs-tokens"},{"type":"link","label":"BSC Validator FAQs","href":"/docs/BSC-FAQs-validator","docId":"BSC-FAQs-validator"},{"type":"link","label":"BSC Delegator FAQs","href":"/docs/BSC-FAQs-delegator","docId":"BSC-FAQs-delegator"},{"type":"link","label":"BSC Staking Parameters FAQs","href":"/docs/parameters","docId":"parameters"},{"type":"link","label":"BSC Cross-chain Communication FAQs","href":"/docs/cross","docId":"cross"}],"collapsible":true},{"type":"link","label":"BNB Beacon Chain FAQs","href":"/docs/beaconchain/faq/","docId":"beaconchain/faq/faq"}],"collapsible":true},{"type":"link","label":"How to Contribute","href":"/docs/contribute","docId":"contribute"},{"type":"link","label":"Join BNBChain Ecosystem","href":"/docs/submit-dapp","docId":"submit-dapp"},{"type":"link","label":"More Help","href":"/docs/more-help","docId":"more-help"}]},"docs":{"add-account":{"id":"add-account","title":"How does Add Account Work","description":"BIP39","sidebar":"bscSideBar"},"api-reference/cli":{"id":"api-reference/cli","title":"Command Line Interface (CLI)","description":"BNB CLI is one of several ways to interact with BNB Beacon Chain."},"api-reference/dex-api/paths":{"id":"api-reference/dex-api/paths","title":"HTTP API","description":"Within the ecosystem of BNB Beacon Chain, there are several accelerated nodes which provides more secure and faster lines to access BNB Beacon Chain and DEX data service including HTTP API."},"api-reference/node-rpc":{"id":"api-reference/node-rpc","title":"Node RPC","description":"RPC endpoints may be used to interact with a node directly over HTTP or websockets. Using RPC, you may perform low-level operations like executing ABCI queries, viewing network/consensus state or broadcasting a transaction."},"api-reference/sdk":{"id":"api-reference/sdk","title":"SDKs for BNB Beacon Chain","description":"Here the client SDK is used to connect to BNB Beacon Chain and DEX. There are libraries in a few programming languages, including:"},"archivenode":{"id":"archivenode","title":"How to Run an Archive Node on BNB Smart Chain","description":"What is an archive node?","sidebar":"bscSideBar"},"band":{"id":"band","title":"Band Protocol Price Feed on BNB Smart Chain","description":"Introduction"},"BC-FAQs":{"id":"BC-FAQs","title":"BNB Beacon Chain FAQs","description":"What is BNB Beacon Chain and Binance DEX?"},"bcfusion/developers/crosschain-redelegation":{"id":"bcfusion/developers/crosschain-redelegation","title":"Crosschain Redelgation","description":"To migrate the exisiting delegation from BNB Beacon chain (the old BSC staking) to the new BNB smart chain native","sidebar":"bscSideBar"},"bcfusion/developers/gov":{"id":"bcfusion/developers/gov","title":"Governance","description":"This guide provides an overview of the key operations of governance, including creating proposals,","sidebar":"bscSideBar"},"bcfusion/developers/staking":{"id":"bcfusion/developers/staking","title":"staking","description":"[# Staking","sidebar":"bscSideBar"},"bcfusion/developers/system-contracts":{"id":"bcfusion/developers/system-contracts","title":"Build-in System Contracts","description":"This section will provide a brief overview of the new build-in system contracts in the BNB Smart Chain.","sidebar":"bscSideBar"},"bcfusion/overview":{"id":"bcfusion/overview","title":"Overview","description":"BNB Beacon Chain is a blockchain developed by the BNB Chain community that implements a vision of a decentralized","sidebar":"bscSideBar"},"bcfusion/owners/bind":{"id":"bcfusion/owners/bind","title":"Token Bind","description":"Token binding was introduced to faciliate that one token can circulate in both BC and BSC with confirmed total supply.","sidebar":"bscSideBar"},"bcfusion/users/assets":{"id":"bcfusion/users/assets","title":"Asset Management","description":"The BNB Chain community recently introduced [BEP333: BNB Chain","sidebar":"bscSideBar"},"bcfusion/users/bep153-stake-migration":{"id":"bcfusion/users/bep153-stake-migration","title":"Stake Migration For BEP153","description":"The BEP-153 has been introduced as a native staking","sidebar":"bscSideBar"},"bcfusion/users/gov":{"id":"bcfusion/users/gov","title":"Governance with Tally","description":"This document provides a guide on how to participate in governance on the BNB Smart Chain (BSC) using Tally. It","sidebar":"bscSideBar"},"bcfusion/users/new-stake":{"id":"bcfusion/users/new-stake","title":"Managing New Stakes with BNB Staking dApp","description":"Leverage the BNB staking dApp for streamlined management of your stakes. This guide provides a step-by-step walkthrough for using the dApp on both testnet and mainnet.","sidebar":"bscSideBar"},"bcfusion/users/stake-migration":{"id":"bcfusion/users/stake-migration","title":"Stake Migration","description":"The BNB Chain community has introduced BEP333: BNB Chain Fusion, a","sidebar":"bscSideBar"},"bcfusion/users/swaps":{"id":"bcfusion/users/swaps","title":"Atomic Swap Management","description":"HTLC based atomic swaps are introduced in","sidebar":"bscSideBar"},"bcfusion/users/timelocks":{"id":"bcfusion/users/timelocks","title":"TimeLock Management","description":"A timelock is a feature that allows users to lock their assets for a certain period of time, which is introduced","sidebar":"bscSideBar"},"bcfusion/validators/creation":{"id":"bcfusion/validators/creation","title":"Validator Creation Guide","description":"This guide outlines the process for creating a new validator on the BNB Smart Chain (BSC).","sidebar":"bscSideBar"},"bcfusion/validators/gov":{"id":"bcfusion/validators/gov","title":"Governance","description":"BEP-297 introduces the native governance module for BNB smart chain after","sidebar":"bscSideBar"},"bcfusion/validators/key-management":{"id":"bcfusion/validators/key-management","title":"Key Management for BSC Validators","description":"BEP-294 and BEP-297","sidebar":"bscSideBar"},"bcfusion/validators/migrations":{"id":"bcfusion/validators/migrations","title":"Validator Migration Guide","description":"The introduction of native staking on the BNB Smart","sidebar":"bscSideBar"},"bcfusion/validators/slash":{"id":"bcfusion/validators/slash","title":"Slash","description":"The BNB smart chain (BSC) is a blockchain network that aims to provide fast, secure, and reliable transactions. To","sidebar":"bscSideBar"},"bcfusion/validators/staking":{"id":"bcfusion/validators/staking","title":"Staking","description":"BNB smart chain (BSC) is a Proof-of-Staked-Authority (PoSA) blockchain, which means that staking is one of the most","sidebar":"bscSideBar"},"beaconchain/account":{"id":"beaconchain/account","title":"Account and Balance","description":"Each account contains cryptographic authentication info. It is created by a user of the blockchain. It also includes public key, address, and account number/sequence number for replay protection. Whenever a new address receives an asset, the corresponding transaction would create an Account for that address, which contains balances across all assets that are owned on this address."},"beaconchain/acknowledgement":{"id":"beaconchain/acknowledgement","title":"Acknowledgements","description":"BNB Beacon Chain has been through several iterations and evolutions, each time building upon work contributed by members of the blockchain community. We would like to acknowledge the outstanding work that we have been able to achieve during development. Let\'s build the future together!"},"beaconchain/anti-frontrun":{"id":"beaconchain/anti-frontrun","title":"Anti Front-Running","description":"Front-running means someone can get prior knowledge of transactions from other beneficial owners via technology or market advantage, so that they can influence the price beforehand and result in economic gain, which usually brings loss or cost to others. It is a daunting question asked to both centralized and other decentralized exchanges (DEX). Especially on some DEX, front-running actually happens quite often, e.g. via gas or timestamp manipulations, or slow matching."},"beaconchain/atomic-swap":{"id":"beaconchain/atomic-swap","title":"atomic-swap","description":"Introduction"},"beaconchain/bc-tutorials":{"id":"beaconchain/bc-tutorials","title":"Tutorials","description":"In this section, we have provided tutorials on usage of different components of BNB Beacon Chain.","sidebar":"bscSideBar"},"beaconchain/blockchain":{"id":"beaconchain/blockchain","title":"The BNB Beacon Chain Blockchain","description":"The purpose of the BNB Beacon Chain blockchain and DEX is to create an alternative marketplace for issuing and exchanging digital assets in a decentralized manner."},"beaconchain/chain-access":{"id":"beaconchain/chain-access","title":"How to Access BNB Beacon Chain","description":"Get Started pages already show how to access BNB Beacon Chain and DEX via"},"beaconchain/CONTRIBUTING":{"id":"beaconchain/CONTRIBUTING","title":"How to Contribute to BNB Chain Documentations Project","description":"Your contributions to the BNB Chain will help build a fast and secure decentralized digital asset exchange."},"beaconchain/dataseed_list":{"id":"beaconchain/dataseed_list","title":"dataseed_list","description":""},"beaconchain/develop/api-reference/block-service-example":{"id":"beaconchain/develop/api-reference/block-service-example","title":"Example for tx response, for different tx types","description":"NEW_ORDER"},"beaconchain/develop/api-reference/cli":{"id":"beaconchain/develop/api-reference/cli","title":"Command Line Interface (CLI)","description":"BNB Beacon Chain CLI is one of several ways to interact with BNB Beacon Chain.","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/block-service":{"id":"beaconchain/develop/api-reference/dex-api/block-service","title":"API reference for block service","description":"API description for block and transaction service","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/block-service-example":{"id":"beaconchain/develop/api-reference/dex-api/block-service-example","title":"Example for tx response, for different tx types","description":"NEW_ORDER"},"beaconchain/develop/api-reference/dex-api/bridge":{"id":"beaconchain/develop/api-reference/dex-api/bridge","title":"Swagger API reference for swap service","description":"API description for swap service"},"beaconchain/develop/api-reference/dex-api/bridge-widget":{"id":"beaconchain/develop/api-reference/dex-api/bridge-widget","title":"Introduction","description":"Currently, users can\'t perform any actions with Binance Bridge unless their wallets are connected. This widget is meant to be used client-side to improve the flow of connecting wallets."},"beaconchain/develop/api-reference/dex-api/migration-guide":{"id":"beaconchain/develop/api-reference/dex-api/migration-guide","title":"Migration Guide","description":"Target Audience"},"beaconchain/develop/api-reference/dex-api/paths":{"id":"beaconchain/develop/api-reference/dex-api/paths","title":"HTTP API","description":"Within the ecosystem of BNB Becon Chain, there are several accelerated nodes which provides more secure and faster lines to access BNB Beacon Chain data service including HTTP API.","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/paths-testnet":{"id":"beaconchain/develop/api-reference/dex-api/paths-testnet","title":"HTTP API","description":"Within the ecosystem of BNB Chain, there are several accelerated nodes which provides more secure and faster lines to access BNB Beacon Chain data service including HTTP API.","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/staking":{"id":"beaconchain/develop/api-reference/dex-api/staking","title":"Staking API","description":"Version: 1.0","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/ws-connection":{"id":"beaconchain/develop/api-reference/dex-api/ws-connection","title":"WebSocket Connections","description":"Several data streams are exposed over standard WebSocket connections, which can be consumed by modern web browsers and server-side WebSocket libraries.","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/ws-streams":{"id":"beaconchain/develop/api-reference/dex-api/ws-streams","title":"WebSocket Streams","description":"1. Account","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/http-api":{"id":"beaconchain/develop/api-reference/http-api","title":"http-api","description":"dex-api/paths.md"},"beaconchain/develop/api-reference/node-rpc":{"id":"beaconchain/develop/api-reference/node-rpc","title":"Node RPC","description":"RPC endpoints may be used to interact with a node directly over HTTP or websockets. Using RPC, you may perform low-level operations like executing ABCI queries, viewing network/consensus state or broadcasting a transaction.","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/transactions":{"id":"beaconchain/develop/api-reference/transactions","title":"Transaction Data","description":"A transaction in tendermint is any sequence of bytes. It\'s up to the ABCI application to accept or reject the transactions."},"beaconchain/develop/bcsdk":{"id":"beaconchain/develop/bcsdk","title":"BNB Beacon Chain SDK","description":"BNB Beacon Chain provides SDK in different languages for various purposes. Following is the list of SDKs.","sidebar":"bscSideBar"},"beaconchain/develop/node/extra-info":{"id":"beaconchain/develop/node/extra-info","title":"Get Extra Data From Your Full Node","description":"This document is intended for developers who are interested in transactions, order books, account changes, fee charges in every block and would like to build their own downstream services of the full node.","sidebar":"bscSideBar"},"beaconchain/develop/node/fullnode-faq":{"id":"beaconchain/develop/node/fullnode-faq","title":"Common Issues When Running a Full Node","description":"AppHash Confliction"},"beaconchain/develop/node/fullnodeissue":{"id":"beaconchain/develop/node/fullnodeissue","title":"Common Issues When Running a Full Node","description":"How to monitor your full node syncing process?","sidebar":"bscSideBar"},"beaconchain/develop/node/install":{"id":"beaconchain/develop/node/install","title":"Install Binaries","description":"This guide will explain how to install the binaries: bnbchaind and bnbcli, onto your server. With these installed on a server, you can participate in the mainnet or testnet as a Full Node. Full Nodes of BNB Beacon Chain also help the network by accepting transactions from other nodes and then relaying them to the core BNB Chain network.","sidebar":"bscSideBar"},"beaconchain/develop/node/join-mainnet":{"id":"beaconchain/develop/node/join-mainnet","title":"Join Mainnet","description":"See the node repo for information on the mainnet,","sidebar":"bscSideBar"},"beaconchain/develop/node/join-testnet":{"id":"beaconchain/develop/node/join-testnet","title":"Join Testnet","description":"See the node repo for information on the mainnet,","sidebar":"bscSideBar"},"beaconchain/develop/node/localnetwork":{"id":"beaconchain/develop/node/localnetwork","title":"Run a Local Testnet","description":"Single-node on Local Testnet","sidebar":"bscSideBar"},"beaconchain/develop/node/nodetypes":{"id":"beaconchain/develop/node/nodetypes","title":"Types of Nodes","description":"Full Node Node Roles","sidebar":"bscSideBar"},"beaconchain/develop/node/snapshot":{"id":"beaconchain/develop/node/snapshot","title":"Chain Data Snapshots","description":"A snapshot is a recording of the state of BNB Beacon Chain at a particular block height."},"beaconchain/develop/node/synctypes":{"id":"beaconchain/develop/node/synctypes","title":"Different Sync Types","description":"There are three ways for you to get synced with other peers in blockchain network and these methods can be used together.","sidebar":"bscSideBar"},"beaconchain/develop/node/upgrade":{"id":"beaconchain/develop/node/upgrade","title":"Upgrade","description":"Please follow our official channels to get the latest news about upcoming upgrades.","sidebar":"bscSideBar"},"beaconchain/develop/rpc":{"id":"beaconchain/develop/rpc","title":"RPC Endpoint","description":"RPC endpoints may be used to interact with a node directly over HTTP or websockets. Using RPC, you may perform low-level operations like executing ABCI queries, viewing network/consensus state or broadcasting a transaction.","sidebar":"bscSideBar"},"beaconchain/develop/testnetandexplorer":{"id":"beaconchain/develop/testnetandexplorer","title":"BNB Beacon Chain Testnet","description":"What is a Testnet?","sidebar":"bscSideBar"},"beaconchain/encoding":{"id":"beaconchain/encoding","title":"BNB Beacon Chain Transaction Encoding Specification","description":"BNB Beacon Chain transactions are protocol-based data types and can only be submitted in a compatible encoded frame."},"beaconchain/exchange-integration":{"id":"beaconchain/exchange-integration","title":"exchange-integration","description":"Public Services"},"beaconchain/faq/faq":{"id":"beaconchain/faq/faq","title":"BNB Beacon Chain FAQ","description":"What is BNB Beacon Chain and Binance DEX?","sidebar":"bscSideBar"},"beaconchain/fullnode":{"id":"beaconchain/fullnode","title":"Run Full Node to Join BNB Beacon Chain","description":"A full node of BNB Beacon Chain is a witness, which observes the consensus messaging, downloads blocks from data seed nodes and executes business logic to achieve the consistent state as validator node (and other full node). Full nodes also help the network by accepting transactions from other nodes and then relaying them to the core BNB Chain network."},"beaconchain/fullnodeissue":{"id":"beaconchain/fullnodeissue","title":"Common Issues When Running a Full Node","description":"How to monitor your full node syncing process?"},"beaconchain/get-extra-data-from-fullnode":{"id":"beaconchain/get-extra-data-from-fullnode","title":"Get Extra Data From Your Full Node","description":"This document is intended for developers who are interested in transactions, order books, account changes, fee charges in every block and would like to build their own downstream services of the full node."},"beaconchain/get-started":{"id":"beaconchain/get-started","title":"Get Started with BNB Beacon Chain","description":"Wallet"},"beaconchain/imToken":{"id":"beaconchain/imToken","title":"imToken","description":"What is it?"},"beaconchain/index":{"id":"beaconchain/index","title":"BNB Beacon Chain Documentation","description":"Welcome to the BNB Beacon Chain documentation site!"},"beaconchain/keys":{"id":"beaconchain/keys","title":"keys","description":"Introduction"},"beaconchain/learn/accounts":{"id":"beaconchain/learn/accounts","title":"Accounts","description":"Whenever a new address receives an asset, the corresponding transaction would create an Account for that address, which contains balances across all assets that are owned on this address.","sidebar":"bscSideBar"},"beaconchain/learn/architecture":{"id":"beaconchain/learn/architecture","title":"Architecture","description":"BNB Beacon Chain is a multi-modular blockchain with excellent native support for account management, asset management, cross chain, goverenance and so on.","sidebar":"bscSideBar"},"beaconchain/learn/assets":{"id":"beaconchain/learn/assets","title":"Assets","description":"Assets are stored as tokens on BNB Beacon Chain , and the below management actions are available. All the assets are complied with BEP2 standard. BEP stands for BNB Chain Evolution Proposal. Each BEP will be a proposal document providing information to the BNB Beacon Chain /DEX community. The BEP should provide a concise technical specification of the feature or improvement and the rationale behind it. Each BEP proposer is responsible for building consensus within the community and documenting dissenting opinions. Each BEP has a unique index number.","sidebar":"bscSideBar"},"beaconchain/learn/atomic-swaps":{"id":"beaconchain/learn/atomic-swaps","title":"Cross-chain Atomic Swaps","description":"Atomic Swap"},"beaconchain/learn/bc-bridge":{"id":"beaconchain/learn/bc-bridge","title":"BC <-> BSC Token Bridge","description":"!!! Note"},"beaconchain/learn/bc-slashing":{"id":"beaconchain/learn/bc-slashing","title":"Slashing","description":"Slashing"},"beaconchain/learn/bc-staking":{"id":"beaconchain/learn/bc-staking","title":"Staking","description":"PoSA Consensus of BNB Smart Chain"},"beaconchain/learn/BEP8":{"id":"beaconchain/learn/BEP8","title":"Introduction","description":"As explained in BEP8,the idea of BEP8 Tokens is raised to accommodate the small or micro projects, intellectual properties, and other small token economies to build a more comprehensive venue for token trading.","sidebar":"bscSideBar"},"beaconchain/learn/BEP82":{"id":"beaconchain/learn/BEP82","title":"BEP82","description":"Note: this feature is only available in Testnet after Lagrange Upgrade."},"beaconchain/learn/breathe-block":{"id":"beaconchain/learn/breathe-block","title":"Breathe Blocks","description":"In BNB Beacon Chain, there is one kind of special blocks called Breathe Block.","sidebar":"bscSideBar"},"beaconchain/learn/bsc-gov":{"id":"beaconchain/learn/bsc-gov","title":"Governance of BSC","description":"There are many system parameters to control the behavior of the BSC:"},"beaconchain/learn/encoding/amino-example":{"id":"beaconchain/learn/encoding/amino-example","title":"Encoding Examples","description":"Encoding Output","sidebar":"bscSideBar"},"beaconchain/learn/encoding/encoding":{"id":"beaconchain/learn/encoding/encoding","title":"Encoding","description":"The Cosmos SDK utilizes two binary wire encoding protocols, BNB Beacon Chain Amino","sidebar":"bscSideBar"},"beaconchain/learn/escrow-accounts":{"id":"beaconchain/learn/escrow-accounts","title":"Escrow Accounts","description":"A purely-code-controlled escrow account is a kind of account which is derived from a hard-coded string in BNB Beacon Chain protocol. This kind of account doesn\'t have its own private key and it\'s only controlled by code of the protocol. The code for calculating escrow account is the same that is used in cosmos-sdk.","sidebar":"bscSideBar"},"beaconchain/learn/fees":{"id":"beaconchain/learn/fees","title":"Fees","description":"BNB is the native token on BNB Chain , thus users are charged BNB for sending transactions."},"beaconchain/learn/genesis":{"id":"beaconchain/learn/genesis","title":"Genesis File","description":"What is a Genesis File","sidebar":"bscSideBar"},"beaconchain/learn/matching-engine":{"id":"beaconchain/learn/matching-engine","title":"Matching Engine","description":"Binance DEX is the native marketplace on BNB Beacon Chain , allowing you to exchange digital assets issued and listed on it."},"beaconchain/learn/signature":{"id":"beaconchain/learn/signature","title":"Signatures","description":"Signature is the evidence to prove the sender owns the transaction. It will be created from the actions outlined below:","sidebar":"bscSideBar"},"beaconchain/learn/threshold-signature-scheme":{"id":"beaconchain/learn/threshold-signature-scheme","title":"Threshold Signature Scheme","description":"Introduction"},"beaconchain/learn/trading-interface":{"id":"beaconchain/learn/trading-interface","title":"Binance DEX Trading Interface","description":"Binance DEX trading page is designed to provide a user-friendly trading interface to everyone. To get started, go to the trading page first at https"},"beaconchain/learn/trading-specification":{"id":"beaconchain/learn/trading-specification","title":"Trading Specification","description":"- [ ] https://docs.bnbchain.org/trading-spec.html"},"beaconchain/learn/transaction":{"id":"beaconchain/learn/transaction","title":"BNB Beacon Chain Transaction Basics","description":"A blockchain is a globally shared, transactional database. This means that everyone can read entries in the database just by participating in the network. If you want to change something in the database, you have to create a so-called transaction which has to be accepted by all others. The word transaction implies that the change you want to make (assume you want to change two values at the same time) is either not done at all or completely applied. Furthermore, while your transaction is being applied to the database, no other transaction can alter it."},"beaconchain/learn/transactions":{"id":"beaconchain/learn/transactions","title":"BNB Beacon Chain Transaction Basics","description":"A blockchain is a globally shared, transactional database. This means that everyone can read entries in the database just by participating in the network. If you want to change something in the database, you have to create a so-called transaction which has to be accepted by all others. The word transaction implies that the change you want to make (assume you want to change two values at the same time) is either not done at all or completely applied. Furthermore, while your transaction is being applied to the database, no other transaction can alter it.","sidebar":"bscSideBar"},"beaconchain/learn/walletconnect":{"id":"beaconchain/learn/walletconnect","title":"Wallet Connect","description":"- [ ] https://docs.bnbchain.org/walletconnect.html"},"beaconchain/light-client":{"id":"beaconchain/light-client","title":"Light Client","description":"Light client is a program that connects to a full node to help users access and interact with BNB Beacon Chain","sidebar":"bscSideBar"},"beaconchain/list":{"id":"beaconchain/list","title":"List Transaction","description":"Only BEP2 tokens issued on BNB Beacon Chain can be listed. Learn how to issue BEP2 tokens here. If a token\'s listing proposal has been passed by valdiators, then a list transaction must be sent before expire-time."},"beaconchain/list_instruction":{"id":"beaconchain/list_instruction","title":"List Instructions","description":"Listing a trading pair is a rather advanced feature in DEX. To list your token, you can follow the step-by-step instruction here."},"beaconchain/match":{"id":"beaconchain/match","title":"What exactly is Binance DEX matching logic?","description":"Binance DEX uses periodic auction to match all available orders. Maker/Taker concepts are introduced to enhance the current periodic auction match algorithm. The match is still executed only once in each block while the execution prices may vary for maker and taker orders."},"beaconchain/match-examples":{"id":"beaconchain/match-examples","title":"Match Steps and Examples","description":"Match Steps"},"beaconchain/memo-validation":{"id":"beaconchain/memo-validation","title":"Customized Scripts and Transfer Memo Validation","description":"Memo Validation"},"beaconchain/offline":{"id":"beaconchain/offline","title":"Offline","description":"bnbcli support generating and signing all types of transactions offline, then broadcast them. This feature will let users generate and sign their transactions at an offline machine, then use another machine to broadcast it to the network"},"beaconchain/resources":{"id":"beaconchain/resources","title":"More Help","description":"You can always post your question in Online Forum: this is the main portal to get community support."},"beaconchain/timelock":{"id":"beaconchain/timelock","title":"TimeLock","description":"As explained in BEP9, some business plans decide to lock certain amount tokens for pre-defined periods of time, and the only vest in the future according to the schedules. For example, some projects may lock some allocation of the issued tokens as a commitment by the founding team; some business scenarios also need to lock some tokens as collateral for value."},"beaconchain/tokens":{"id":"beaconchain/tokens","title":"Asset Management","description":"Introduction","sidebar":"bscSideBar"},"beaconchain/trade":{"id":"beaconchain/trade","title":"Trade","description":"Binance DEX is the native marketplace which allows you to exchange digital assets issued and listed on it. The matching happens within the blockchain nodes and all of the transactions are recorded on-chain, therefore forming a complete, auditable ledger of activity. The following commands are available for trading:"},"beaconchain/trading-spec":{"id":"beaconchain/trading-spec","title":"Binance DEX Trading Specification","description":"Orders"},"beaconchain/transfer":{"id":"beaconchain/transfer","title":"Asset Transfer","description":"Transfer is the most basic transaction BNB Beacon Chain supports, it moves assets among different addresses."},"beaconchain/tss":{"id":"beaconchain/tss","title":"User Guide of Threshold Signature Scheme (TSS) in BNB Beacon Chain","description":"Introduction"},"beaconchain/validator/create-val":{"id":"beaconchain/validator/create-val","title":"Create Validator","description":"Requirements and Responsibility","sidebar":"bscSideBar"},"beaconchain/validator/overview":{"id":"beaconchain/validator/overview","title":"Overview","description":"BEP159 introduces a permissionless validator election mechanism","sidebar":"bscSideBar"},"beaconchain/validator/run-val":{"id":"beaconchain/validator/run-val","title":"Run Validator","description":"Validator Hardware Requirements","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet":{"id":"beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet","title":"Venly Wallet","description":"If you are looking for a user-friendly BNB Smart Chain wallet, consider creating a Venly Wallet. It allows you to enable the recovery mechanism and comes with end-user support via their in-app chat, making sure you are never lost in the wonderful land of cryptocurrency.","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/bep8":{"id":"beaconchain/wallet/tutorial/bep8","title":"How to manage your BEP8 tokens in BNB Chain Testnet web wallet","description":"In this article, we are going to take a tour about how to manage your BEP8 tokens in BNB Chain Testnet web wallet.","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet":{"id":"beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet","title":"How to create your wallet with Trust Wallet","description":"Step 1. To get the latest Trust Wallet App you should follow one of the download links on our website trustwallet.com.","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/how-to-trade-on-binance-dex":{"id":"beaconchain/wallet/tutorial/how-to-trade-on-binance-dex","title":"How to Trade on Binance DEX","description":"1) Go to www.binance.org"},"beaconchain/wallet/tutorial/How-to-use-BSC-on-imToken":{"id":"beaconchain/wallet/tutorial/How-to-use-BSC-on-imToken","title":"How to use BNB Smart Chain (BSC) on imToken?","description":"An introduction on how to start with using BSC on the imToken wallet"},"beaconchain/wallet/tutorial/ledger-nano-s-usage-guide":{"id":"beaconchain/wallet/tutorial/ledger-nano-s-usage-guide","title":"Ledger Nano S Usage Guide","description":"This guide will show you how to use your Ledger Nano S hardware wallet with BNB Beacon Chain and Binance DEX.","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/trezor-model-t-user-guide":{"id":"beaconchain/wallet/tutorial/trezor-model-t-user-guide","title":"Trezor User Guide","description":"This guide will show you how to use your Trezor Model T hardware wallet with BNB Beacon Chain and Binance DEX.","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/videos":{"id":"beaconchain/wallet/tutorial/videos","title":"Video Tutorials","description":"1. Cool Wallet: YouTube"},"beaconchain/walletconnect":{"id":"beaconchain/walletconnect","title":"Wallet Connect","description":"--\x3e"},"beaconchain/walletconnect-support":{"id":"beaconchain/walletconnect-support","title":"Wallets with WalletConnect Support","description":"* List of Wallets Supporting WalletConnect on BNB Chain"},"beaconchain/wallets":{"id":"beaconchain/wallets","title":"Supported Wallets","description":"* List of Wallets Supporting BNB Beacon Chain Mainnet","sidebar":"bscSideBar"},"BEP20":{"id":"BEP20","title":"BEP20 Token","description":"Introduction","sidebar":"bscSideBar"},"bind-tokens":{"id":"bind-tokens","title":"Bind BEP2 and BEP20 Tokens","description":"BSC and BC work together to ensure that one token can circulate in both formats with confirmed total supply and be used in different use cases. Token Binding can happen at any time after BEP2/BEP8 and BEP20 are ready. The token owners of either BEP2/BEP8 or BEP20 only need to complete the Binding process when a cross-chain feature is necessary.","sidebar":"bscSideBar"},"bnb-chain-wallet":{"id":"bnb-chain-wallet","title":"Using BNB Chain Wallet","description":"What is it?","sidebar":"bscSideBar"},"boot-nodes":{"id":"boot-nodes","title":"Boot Nodes","description":"Through the maintenance release v1.2.12 4, Boot Nodes were introduced on the BSC mainnet. BSC Boot Nodes are similar to Ethereum Boot Nodes, refer here for more details. The main benefit of Boot Nodes is that it would be easier for user to connect to the BSC network. Users would no longer need to setup the StaticNodes in config.toml, just leave it empty and make sure delete the BootstrapNodes field in config.toml.","sidebar":"bscSideBar"},"BSC-FAQs":{"id":"BSC-FAQs","title":"BNB Smart Chain","description":"What is BNB Smart Chain ?"},"BSC-FAQs-delegator":{"id":"BSC-FAQs-delegator","title":"BNB Smart Chain Delegator","description":"What\'s the role of a delegator?","sidebar":"bscSideBar"},"BSC-FAQs-general":{"id":"BSC-FAQs-general","title":"BNB Smart Chain FAQs","description":"Where can I find BNB Smart Chain code? Is there a GitHub repository?","sidebar":"bscSideBar"},"BSC-FAQs-tokens":{"id":"BSC-FAQs-tokens","title":"Tokens in BNB Beacon Chain and BNB Smart Chain","description":"What role does BNB play in securing BNB Smart Chain ?","sidebar":"bscSideBar"},"BSC-FAQs-validator":{"id":"BSC-FAQs-validator","title":"BNB Smart Chain Validator FAQs","description":"What is the role of BNB Smart Chain Validators?","sidebar":"bscSideBar"},"BSC-fast-node":{"id":"BSC-fast-node","title":"Fast Node on BNB Smart Chain","description":"Note","sidebar":"bscSideBar"},"bsc-faucet":{"id":"bsc-faucet","title":"Claim test tBNB Tokens","description":"Claim tBNB from Online Faucet","sidebar":"bscSideBar"},"BSC-mainnet-explorers":{"id":"BSC-mainnet-explorers","title":"BSC Explorers","description":"BNB Smart Chain explorers is a graphic user interface designed to allow users to interact with the blockchain. Through this interface, a user can browse information about blocks that have been added to the blockchain, transactions that have occurred on the blockchain, wallet balances, and information about BNB."},"BSC-separate-node":{"id":"BSC-separate-node","title":"Separate Node on BNB Smart Chain","description":"Introduction","sidebar":"bscSideBar"},"BSC-testnet-explorers":{"id":"BSC-testnet-explorers","title":"BSC Explorers","description":"BNB Smart Chain explorers is a graphic user interface designed to allow users to interact with the blockchain. Through this interface, a user can browse information about blocks that have been added to the blockchain, transactions that have occurred on the blockchain, wallet balances, and information about BNB."},"bsc-tutorials":{"id":"bsc-tutorials","title":"Tutorials","description":"In this section, we have provided tutorials on usage of different components of BNB Smart Chain.","sidebar":"bscSideBar"},"BSC-verify-node":{"id":"BSC-verify-node","title":"Verify Node on BNB Smart Chain","description":"Verify Node Functions","sidebar":"bscSideBar"},"BSCexplorers":{"id":"BSCexplorers","title":"BNB Smart Chain (BSC) Explorer","description":"BNB Smart Chain (BSC) explorer is a graphic user interface designed to allow users to interact with the blockchain. Through this interface, a user can browse information about blocks that have been added to the blockchain, transactions that have occurred on the blockchain, wallet balances, and information about BNB.","sidebar":"bscSideBar"},"BSCmainnet":{"id":"BSCmainnet","title":"BSC Mainnet","description":"What is Mainnet?","sidebar":"bscSideBar"},"BSCtestnet":{"id":"BSCtestnet","title":"BSC Testnet","description":"What is a Testnet?","sidebar":"bscSideBar"},"chainide":{"id":"chainide","title":"Using ChainIDE","description":"Introduction","sidebar":"bscSideBar"},"circulation-model":{"id":"circulation-model","title":"Circulation Model","description":"BC and BSC share the same token universe for BNB and BEP8/BEP2/BEP20 tokens. This defines:","sidebar":"bscSideBar"},"contribute":{"id":"contribute","title":"How to Contribute to BNB Chain Documentations Project","description":"Your contributions to the BNB Chain will help build a fast and secure decentralized digital asset exchange.","sidebar":"bscSideBar"},"create-wallet":{"id":"create-wallet","title":"Key Management","description":"This article is a guide about key management strategy on client side of your Decentralised Application on BNB Smart Chain","sidebar":"bscSideBar"},"cross":{"id":"cross","title":"Cross-chain Communication","description":"How much is cross-chain transfer fee?","sidebar":"bscSideBar"},"dapp-dev/Hello-World":{"id":"dapp-dev/Hello-World","title":"Develop Full Stack dApp on BNB Smart Chain in 5 minutes","description":"Designed for anyone wanting to learn blockchain development, this tutorial provides a step-by-step guide on how to develop a full-stack Hello World Smart dApp that is used for storing and retrieving data from the BSC blockchain. The technology stack used in this tutorial includes Solidity, Truffle, Ganache, Web3.js, and Node js. We also cover how to deploy smart contracts on the BNB Smart Chain Testnet.","sidebar":"bscSideBar"},"dapp-dev/web3js-tutorial":{"id":"dapp-dev/web3js-tutorial","title":"Using Web3.js Library on BNB Smart Chain","description":"Designed for anyone wanting to learn development on the BNB Smart Chain, this tutorial provides a step-by-step guide on how to use web3.js library along with Nodereal API to fetch transaction details from the BNB Smart Chain blockchain for the given transaction hash. The technology stack used in this tutorial includes Web3.js, Nodereal MegaNode, and http-server.","sidebar":"bscSideBar"},"dev-outlook/decentralization":{"id":"dev-outlook/decentralization","title":"Decentralization Further","description":"Candidate ValidatorSet"},"dev-outlook/scaling":{"id":"dev-outlook/scaling","title":"Scaling and Improvements for Better User Experience","description":"Scaling"},"dev-tools":{"id":"dev-tools","title":"Development Tools on BSC","description":"Smart contracts development with BSC enables you to build your smart contracts for any use, including cryptocurrency exchanges, smart contract-based dApps, Decentralized Finance, and more."},"dia":{"id":"dia","title":"DIA Data Oracles on BNB Smart Chain","description":"Introduction"},"dstorages":{"id":"dstorages","title":"Decentralized Storage","description":"Decentralized storage system enable users to store their data in a peer-to-peer distributed network which consists of operators across different locations. Comparing with centralized storage, it offers more control, privacy as well as security over the user\'s own data. Further more, decentralized storage is more resilient since there is no single point of failure of the storage.","sidebar":"bscSideBar"},"encoding":{"id":"encoding","title":"BNB Beacon Chain Transaction Encoding Specification","description":"BNB Beacon Chain transactions are protocol-based data types and can only be submitted in a compatible encoded frame.","sidebar":"bscSideBar"},"ERC721":{"id":"ERC721","title":"Using Truffle to Deploy NFTs on BSC","description":"This work is inspired by this blog","sidebar":"bscSideBar"},"faq":{"id":"faq","title":"Binance Extension Wallet FAQs","description":"How can I download Binance Extension Wallet (BEW)?"},"fullnodeissue":{"id":"fullnodeissue","title":"Common Issues When Running a Full Node","description":"How to Monitor Your Full Node Syncing Process?"},"get-extra-data-from-fullnode":{"id":"get-extra-data-from-fullnode","title":"Get Extra Data From Your Full Node","description":"This document is intended for developers who are interested in transactions, order books, account changes, fee charges in every block and would like to build their own downstream services of the full node."},"getting-started":{"id":"getting-started","title":"Getting Started","description":"This document serve as a starting point for new users to the BNB Chain ecosystem. General knowledge of cryptocurrency is assumed, and in particular familiarity with the Ethereum ecosystem. If you don\'t understand something right away, that\'s OK. Search for an answer online, and if you don\'t find it, ask on our Discord.","sidebar":"bscSideBar"},"hardhat":{"id":"hardhat","title":"Using Hardhat","description":"What is Hardhat"},"hardhat-new":{"id":"hardhat-new","title":"Using Hardhat for Deploying Smart Contracts on BSC","description":"In this tutorial, we explain step-by-step how to create, compile and deploy a simple smart contract on the BSC Testnet using Hardhat.","sidebar":"bscSideBar"},"issue-BEP20":{"id":"issue-BEP20","title":"Issue BEP20 Tokens","description":"This document provides a brief walk through on how to issue BEP20 tokens on the BNB Smart Chain. For this tutorial we have used Remix IDE and Metamask Wallet. Further, in this guide, we provide steps for issuing BEP20 tokens on the BSC Testnet, however, the steps for mainnet are also the same.","sidebar":"bscSideBar"},"keys":{"id":"keys","title":"keys","description":"Introduction"},"learn/beaconIntro":{"id":"learn/beaconIntro","title":"Introduction","description":"BNB Beacon Chain is a blockchain developed by its community that implements the staking and governance layer of BNB ecosystem. It has a flexible set of native assets and pluggable modules for governance, staking and etc. It uses Tendermint for consensus and app logic is built upon Cosmos SDK. It targets fast block times, a native dApp layer and multi-token support with no smart contract VM.","sidebar":"bscSideBar"},"learn/bsc-gov":{"id":"learn/bsc-gov","title":"Governance of BSC","description":"Introduction","sidebar":"bscSideBar"},"learn/bsc-relayer":{"id":"learn/bsc-relayer","title":"BSC Relayer","description":"Relayers are responsible for submitting Cross-Chain Communication Packages between the two blockchains, BNB Smart Chain (BSC) and BNB Beacon Chain (BC). Due to the heterogeneous parallel chain structure, two different types of Relayers are created.","sidebar":"bscSideBar"},"learn/consensus":{"id":"learn/consensus","title":"Parlia Consensus Engine","description":"Although Proof-of-Work (PoW) has been recognized as a practical mechanism to implement a decentralized network, it is not friendly to the environment and also requires a large size of participants to maintain the security.","sidebar":"bscSideBar"},"learn/cross-chain":{"id":"learn/cross-chain","title":"Cross-Chain Communication","description":"Cross-chain communication is the key foundation to allow the community to take advantage of the dual chain structure:","sidebar":"bscSideBar"},"learn/cross-chain-api":{"id":"learn/cross-chain-api","title":"Cross-Chain API","description":"To facilitate querying cross chain transactions between BNB Beacon Chain and BNB Smart Chain, following APIs are provided.","sidebar":"bscSideBar"},"learn/cross-chain-bridges":{"id":"learn/cross-chain-bridges","title":"Cross-Chain Bridges","description":"The ability to transfer tokens cross-chain is an essential need. This allows users to transfer their funds from one blockchain network to another. Keeping the importance of cross-chain support in mind, multiple networks now have their respective \\"bridges\\" to help in easy fund transfers. Following is a list of bridges and exchanges that support cross-chain transfer of BSC with other tokens.","sidebar":"bscSideBar"},"learn/ecosystem":{"id":"learn/ecosystem","title":"BNB Chain Development Tools","description":"In order to check the latest updates on the ecosystem of BNB Chain, visit our official GitHub Page.","sidebar":"bscSideBar"},"learn/genesis":{"id":"learn/genesis","title":"Genesis File","description":"In this section, we explain how the genesis file of the BNB Smart Chain is structured."},"learn/gnosis":{"id":"learn/gnosis","title":"Gnosis Safe Multisig on BNB Smart Chain","description":"Introduction","sidebar":"bscSideBar"},"learn/incentives":{"id":"learn/incentives","title":"Incentive Mechanism","description":"The BSC relayers play an important role in relaying interchain packages from BC to BSC.","sidebar":"bscSideBar"},"learn/intro":{"id":"learn/intro","title":"Introduction","description":"BNB Smart Chain is an innovative solution to bring programmability and interoperability to BNB Beacon Chain. BNB Smart Chain relies on a system of 55 validators with Proof of Staked Authority (PoSA) consensus that can support short block time and lower fees. The most bonded validator candidates of staking will become validators and produce blocks. The double-sign detection, malicious vote detection and other slashing logic guarantee security, stability, and chain finality.","sidebar":"bscSideBar"},"learn/oracle-module":{"id":"learn/oracle-module","title":"Oracle on BNB Beacon Chain","description":"The Oracle module is a common module like the Governance module which is used to handle prophecy and claim. Prophecy means the validators want to reach a consensus on something, like cross chain transfer. Claim is raised by a validator and the content of claim is the cross chain transfer. When most of the validators (like 70%) claim the same thing on the prophecy, the winning claim will be executed.For oracle module is a common module, other module which depends on oracle module will register claim type and related hooks checking and handling claim. Each claim type has a sequence, oracle module should process prophecy and claim by sequence. When one prophecy is executed successfully, the sequence of the claim type will be increased by one.","sidebar":"bscSideBar"},"learn/oracle-relayer":{"id":"learn/oracle-relayer","title":"Oracle Relayer","description":"The relayer is a service which monitors events on BSC, builds and broadcasts transactions to BC. Each validator operator should maintain its own relayer service. The relayer service requires to have access to the validator operator private key. All relayer service independently witness the peggy contract events, then build transactions to claim events to BC oracle module.","sidebar":"bscSideBar"},"learn/system-contract":{"id":"learn/system-contract","title":"Build-in System Contract","description":"GitHub Implementation link:","sidebar":"bscSideBar"},"link":{"id":"link","title":"BNB Smart Chain Price Feeds from Chainlink","description":"Introduction to Price Feeds"},"manual":{"id":"manual","title":"How to Manually Install Binance Extension Wallet","description":"Download the zip file","sidebar":"bscSideBar"},"mev/builder-integration":{"id":"mev/builder-integration","title":"Integration Guide for Builder","description":"The Builder API Specification","sidebar":"bscSideBar"},"mev/faqs":{"id":"mev/faqs","title":"FAQs","description":"1. Do builders fetch the in-turn proposer\'s GasCeil to build block\uff1f","sidebar":"bscSideBar"},"mev/overview":{"id":"mev/overview","title":"Overview","description":"The BSC network has introduced the [Builder API","sidebar":"bscSideBar"},"mev/validator-integration":{"id":"mev/validator-integration","title":"Integration Guide for Validator","description":"Decison Make","sidebar":"bscSideBar"},"migration/evm-chains/chain-comparison":{"id":"migration/evm-chains/chain-comparison","title":"BNB Smart Chain vs Polygon - Comparing the Differences","description":"Launched in 2020, BNB Smart Chain quickly gained a lot of popularity due to its distinguishing features of low cost and faster transactions. Several projects that are based on other blockchain platforms are migrating to the BNB Chain platform. In this article, we provide a comparison of BNB Chain with other EVM Chains, to help the readers make sound decisions when migrating their projects from other EVM Chains to BNB Chain.","sidebar":"bscSideBar"},"migration/evm-chains/token-comparison":{"id":"migration/evm-chains/token-comparison","title":"Token Standard Comparison","description":"Over the few years, blockchain technology has evolved with respect to several different features like design, infrastructure, working mechanism, etc. However, with new platforms offering much more attractive features, it is common for blockchain-based projects, aka decentralized applications (dApps) and crypto tokens, to migrate from one blockchain to another.","sidebar":"bscSideBar"},"migration/evm-chains/token-migration":{"id":"migration/evm-chains/token-migration","title":"Migrate Tokens From Polygon to BSC","description":"In this article, we\'ll discuss how to migrate deployed tokens from Polygon to BSC and also the migration of vested tokens.","sidebar":"bscSideBar"},"migration/non-evm-chains/solana/architecture-comparison":{"id":"migration/non-evm-chains/solana/architecture-comparison","title":"BNB Chain and Solana Architecture Differences","description":"This document covers the architectural differences between BNB Chain and Solana blockchain, providing an overview to developers aiming to migrate their projects from Solana to BNB Chain ecosytem.","sidebar":"bscSideBar"},"migration/non-evm-chains/solana/token-migration":{"id":"migration/non-evm-chains/solana/token-migration","title":"Token Migration from Solana to BNB Smart Chain","description":"Blockchain technology has gained superlative popularity over time, proving that it is here to stay. This popularity has resulted in a multitude of blockchain platforms that offer unique features for dapp development. As every blockchain platform has its pros and cons and differs from each other in terms of the underlying architecture, working mechanisms, etc., it is possible for blockchain-based projects and crypto tokens to migrate from one blockchain platform to another. For instance, from Solana to BNB Smart Chain (BSC), for better user experience by leveraging the innovative features of BSC.","sidebar":"bscSideBar"},"mirror":{"id":"mirror","title":"Mirror BEP2 and BEP20 Token","description":"Pre-requisites","sidebar":"bscSideBar"},"more-help":{"id":"more-help","title":"More Help","description":"There is a \\\\#validator-support Discord channel available to reach other testnet participants.","sidebar":"bscSideBar"},"nft_blackide":{"id":"nft_blackide","title":"Using Black IDE to Deploy NFTs on BSC","description":"BSC supports different NFT standards like ERC-721 and ERC-1155. Both of these are two different token standards used for creating and managing non-fungible tokens (NFTs).","sidebar":"bscSideBar"},"nft-metadata-standard":{"id":"nft-metadata-standard","title":"NFT Metadata Standard","description":"Implementing Token URI","sidebar":"bscSideBar"},"nft-storage":{"id":"nft-storage","title":"Storing NFTs on IPFS & Filecoin","description":"After the preview two tutorials, you must have learned how to write NFT smart contract and deploy it on BSC testNet. The most important part for any NFT project is that where your NFT assets are stored. If you want to avoid the risk of losing your NFT assets or not able to access them, storing your NFTs on decentralized network is the better option for you.","sidebar":"bscSideBar"},"oracles":{"id":"oracles","title":"Oracles","description":"Blockchain oracles are entities that connect blockchains to external systems, thereby enabling smart contracts to execute based upon inputs and outputs from the real world. Simply put, oracles provide a mechanism for the decentralized Web3 ecosystem to access existing data sources, legacy systems, and advanced computations.","sidebar":"bscSideBar"},"overview":{"id":"overview","title":"BNB Chain: An Ecosystem of Blockchains","description":"Build N Build Chain aka BNB Chain, one of the most popular blockchains in the world, dedicates to delivering its core infrastructure necessary for future public adoption, and always remains as a community-first and open-source ecosystem built on a permissionless and decentralized environment.","sidebar":"bscSideBar"},"parameters":{"id":"parameters","title":"BNB Smart Chain Staking Parameters","description":"Staking Token","sidebar":"bscSideBar"},"proxy":{"id":"proxy","title":"Upgradeable BEP20 Contracts on BSC","description":"What are Upgradeable Contracts?","sidebar":"bscSideBar"},"remix-new":{"id":"remix-new","title":"Using Remix IDE for Deploying Smart Contracts on BSC","description":"In this tutorial, we provide guidelines on how to create, compile, and deploy a simple Hello World smart contract on BSC using the Remix IDE.","sidebar":"bscSideBar"},"replit":{"id":"replit","title":"Using Replit IDE for Deploying Smart Contracts on BSC","description":"Replit is a coding platform that allows you to write code and host apps. Replit supports Solidity programming language and provides all of the features and functionality that are required by Web3 developers for creating and deploying smart contracts.","sidebar":"bscSideBar"},"rpc":{"id":"rpc","title":"JSON-RPC Endpoint","description":"JSON-RPC endpoints refers to the network location where a program could transfer its RPC requests to access server data. Once you connect a decentralized application to an RPC endpoint, you can access the functionalities of different operations, which could enable real-time usage of blockchain data. BNB Chain provides several RPC endpoints for connectinto both its Minent and Testnet. In this section, we list the JSON-RPC endpoints that can be used for connecting to BNB Smart Chain.","sidebar":"bscSideBar"},"stake/cli-commands":{"id":"stake/cli-commands","title":"CLI Commands","description":"In order to run the CLI commands related to staking and delegation, it important to first download the bnbcli and tbnbcli binaries.","sidebar":"bscSideBar"},"stake/Staking":{"id":"stake/Staking","title":"Staking","description":"BNB Smart Chain is an innovative solution to bring programmability and interoperability to BNB Beacon Chain. BNB Smart Chain relies on a system of 50 validators with Proof of Staked Authority (PoSA) consensus that can support short block time and lower fees. The most bonded validator candidates of staking will become validators and produce blocks. The double-sign detection and other slashing logic guarantee security, stability, and chain finality.","sidebar":"bscSideBar"},"staking-with-ext-wallet":{"id":"staking-with-ext-wallet","title":"Staking with BNB Chain Wallet","description":"How to Delegate Your BNB with Binance Extension Wallet","sidebar":"bscSideBar"},"submit-dapp":{"id":"submit-dapp","title":"Join BNB Ecosystem and Get More Exposure","description":"There are several ways to share your project with BNBChain Ecosystem or seeking for cooperations.","sidebar":"bscSideBar"},"sync":{"id":"sync","title":"Sync BEP2 and BEP20 Token Supply","description":"Prerequisite","sidebar":"bscSideBar"},"token-bind-tool":{"id":"token-bind-tool","title":"token-bind-tool","description":"Tool to bind BEP2 tokens and BEP20 tokens. please refer to document for detail bind mechanism. Github repo for bind token tool here."},"tokens":{"id":"tokens","title":"Asset Management","description":"Introduction"},"tokens-cross-chain":{"id":"tokens-cross-chain","title":"Cross-chain Token Management","description":"The dual-chain architecture of BNB Beacon Chain & BNB Smart Chain empowers you to build your own decentralized apps. The native cross-chain communication mechanism allows tokens to be transferred between BC and BSC easily.","sidebar":"bscSideBar"},"trading-spec":{"id":"trading-spec","title":"Binance DEX Trading Specification","description":"Orders"},"truffle":{"id":"truffle","title":"Using Truffle","description":"Setting up the development environment"},"truffle-new":{"id":"truffle-new","title":"Using Truffle for Deploying Smart Contracts on BSC","description":"In this tutorial, you will learn to create, compile and deploy smart contract on the BNB Smart Chain network using the Truffle IDE.","sidebar":"bscSideBar"},"upgrade-fullnode":{"id":"upgrade-fullnode","title":"How to Upgrade Geth","description":"Updating geth is as easy as it gets. You just need to download and install the newer version of geth, shutdown your node and restart with the new software. Geth will automatically use the data of your old node and sync the latest blocks that were mined since you shutdown the old software."},"validator/bc-slashing":{"id":"validator/bc-slashing","title":"Slashing","description":"Slashing"},"validator/best-practice":{"id":"validator/best-practice","title":"BNB Smart Chain (BSC) Node Configuration: Best Practices","description":"Hardware Specifications","sidebar":"bscSideBar"},"validator/create-val":{"id":"validator/create-val","title":"Create Validator","description":"Create a mining account","sidebar":"bscSideBar"},"validator/docker":{"id":"validator/docker","title":"How to Run A Fullnode Using BSC Docker Image","description":"Resources","sidebar":"bscSideBar"},"validator/fullnode":{"id":"validator/fullnode","title":"How to Run A Fullnode on BNB Smart Chain","description":"Fullnodes Functions","sidebar":"bscSideBar"},"validator/monitor-and-query-slash":{"id":"validator/monitor-and-query-slash","title":"Monitoring","description":"Monitoring Slash Contract","sidebar":"bscSideBar"},"validator/node-maintenance":{"id":"validator/node-maintenance","title":"Node Maintainence","description":"Binary","sidebar":"bscSideBar"},"validator/overview":{"id":"validator/overview","title":"Overview","description":"BNB Smart Chain is an innovative solution to bring programmability and interoperability to BNB Beacon Chain. BNB Smart Chain relies on a system of 56 validators with Proof of Staked Authority (PoSA) consensus that can support short block time and lower fees. The most bonded validator candidates of staking will become validators and produce blocks. The double-sign detection and other slashing logic guarantee security, stability, and chain finality.","sidebar":"bscSideBar"},"validator/Penalty-overview":{"id":"validator/Penalty-overview","title":"Overview","description":"Slashing is part of the on-chain governance, to ensure the malicious or negative behaviors are punished. BSC slash can be submitted by anyone. The transaction submission requires slash evidence and costs fees but also brings a larger reward when it is successful.","sidebar":"bscSideBar"},"validator/run-val":{"id":"validator/run-val","title":"Run Validator","description":"Validator Hardware Requirements","sidebar":"bscSideBar"},"validator/security":{"id":"validator/security","title":"Securing the Validators","description":"Each validator candidate is encouraged to run its operations independently, as diverse setups increase the resilience of the network. Due to the high amount invested by validators it is highly essential to protect them against different DoS and DDoS attacks. In this section, we discuss the security mechanism adopted by BSC for its validators."},"validator/send-slash-evidence":{"id":"validator/send-slash-evidence","title":"How to send BSC Slash Evidence","description":"Double Sign","sidebar":"bscSideBar"},"validator/slash-fee":{"id":"validator/slash-fee","title":"Slashing Fee and Evidence Validation","description":"Double Sign","sidebar":"bscSideBar"},"validator/unjail":{"id":"validator/unjail","title":"Unjail","description":"Jailed validator nodes due to their malicious or bad behavior, may request for release by sending side-unjail transactions provided they passed initial validation. After release, to re-join the validator set again, the validator must wait for the following UTC 0:00. The fees to unjail a smart contract validator is 1 BNB_**. Whereas, the fee for submitting a byzantine behavior evidence of a validator is 10 BNB_.","sidebar":"bscSideBar"},"validator/upgrade-fullnode":{"id":"validator/upgrade-fullnode","title":"How to Upgrade Geth","description":"Updating geth is as easy as it gets. You just need to download and install the newer version of geth, shutdown your node and restart with the new software. Geth will automatically use the data of your old node and sync the latest blocks that were mined since you shut down the old software.","sidebar":"bscSideBar"},"verify":{"id":"verify","title":"How to Verify Your Contract on BscScan","description":"Step 1: Deploy your contract on BNB Smart Chain","sidebar":"bscSideBar"},"verify-proxy":{"id":"verify-proxy","title":"How to Verify Proxy Contract","description":"In this section, we provide a quick guide on how to verify a deployed BEP20 proxy contract.","sidebar":"bscSideBar"},"Wallet":{"id":"Wallet","title":"Wallet Guide","description":"What is a Wallet?","sidebar":"bscSideBar"},"wallet_api":{"id":"wallet_api","title":"Binance Extension Wallet API","description":"Binance Extension Wallet injects a global API into websites visited by its users at window.BinanceChain.","sidebar":"bscSideBar"},"wallet/AlphaWallet":{"id":"wallet/AlphaWallet","title":"How to Use AlphaWallet for BNB Smart Chain on Your Mobile","description":"Install","sidebar":"bscSideBar"},"wallet/arkane-developer":{"id":"wallet/arkane-developer","title":"Wallet provider for Dapps","description":"A wallet provider is a service that allows DApps to provide wallets to their end-users without having to deal with key management\'s security concerns. It is a great way to prepare your Dapp for onboarding a more mainstream audience."},"wallet/binance-cn":{"id":"wallet/binance-cn","title":"\u5e01\u5b89\u94fe\u63d2\u4ef6\u94b1\u5305\u6307\u5357","description":"\u5e01\u5b89\u94fe\u63d2\u4ef6\u94b1\u5305\u662f\u4ec0\u4e48?"},"wallet/bnb-chain-wallet":{"id":"wallet/bnb-chain-wallet","title":"BNB Chain Wallet","description":"What is it?"},"wallet/coin98wallet":{"id":"wallet/coin98wallet","title":"How to create BNB Smart Chain Wallet on Coin98 Wallet","description":"Users are able to store, send & receive BNB, the native token of BNB Smart Chain and BEP20 tokens on Coin98 Wallet","sidebar":"bscSideBar"},"wallet/create-wallet":{"id":"wallet/create-wallet","title":"Key Management","description":"This article is a guide about key management strategy on client side of your Decentralised Application on BNB Smart Chain"},"wallet/extension/add-account":{"id":"wallet/extension/add-account","title":"How does Add Account Work","description":"BIP39"},"wallet/extension/add-asset":{"id":"wallet/extension/add-asset","title":"How to Add a Token","description":"How to Add Pegged Token"},"wallet/extension/direct":{"id":"wallet/extension/direct","title":"[Wallet Direct](https://www.binance.com/en/wallet-direct) User Guide","description":"Key Features"},"wallet/extension/ledger":{"id":"wallet/extension/ledger","title":"How to use Ledger with Binance Extension Wallet","description":"Binance Extension Wallet v1.121.1 is released and verified on Firefox and Chrome with Ledger Nano S"},"wallet/extension/reset":{"id":"wallet/extension/reset","title":"How to Reset My Password or Import an Account","description":"When resetting your password for your Binance Extension wallet, you will need your 12 or 24 word seed phrase. If you do not already have your seed phrase saved someplace safe, please make sure to read How to Reveal Your Seed Phrase"},"wallet/extension/safe":{"id":"wallet/extension/safe","title":"How to stay safe","description":"Wallets are a bit of a shift in thinking. Financial freedom and the ability to access and use funds anywhere comes with a bit of responsibility \u2013 there\u2019s no customer support in crypto."},"wallet/extension/seed":{"id":"wallet/extension/seed","title":"How to Reveal Your Seed Phrase","description":"When dealing with cryptocurrencies or crypto assets like BNB or BUSD, it is important to always be aware of and have your private keys, seed phrases and passwords backed up in case the unexpected occurs."},"wallet/faq":{"id":"wallet/faq","title":"Binance Extension Wallet FAQ","description":"Tokens not visible after withdrawing from Binance"},"wallet/infinitywallet":{"id":"wallet/infinitywallet","title":"Using Infinity Wallet on the BNB Smart Chain","description":"What is it?","sidebar":"bscSideBar"},"wallet/ledger":{"id":"wallet/ledger","title":"Ledger Hardware Wallet","description":"BNB and coins on BNB Smart Chain are supported by the Ledger Nano S hardware wallet. The following describes how to use Ledger Nano S to connect to BSC","sidebar":"bscSideBar"},"wallet/math":{"id":"wallet/math","title":"How to use Math Wallet for BNB Smart Chain","description":"Install","sidebar":"bscSideBar"},"wallet/math-resource":{"id":"wallet/math-resource","title":"Math Wallet Tutorials","description":"1. BNB Smart Chain \u65b0\u624b\u6307\u5357"},"wallet/metamask":{"id":"wallet/metamask","title":"Use MetaMask For BNB Smart Chain","description":"!!! Tip","sidebar":"bscSideBar"},"wallet/myetherwallet":{"id":"wallet/myetherwallet","title":"MyEtherWallet","description":"Connect to MetaMask on MEW","sidebar":"bscSideBar"},"wallet/staking":{"id":"wallet/staking","title":"Staking with BNB Chain Wallet","description":"How to Delegate Your BNB with the BNB Chain Wallet","sidebar":"bscSideBar"},"wallet/trezor":{"id":"wallet/trezor","title":"Using Trezor Wallet with BNB Smart Chain","description":"BNB and coins on BNB Smart Chain are supported by the Trezor hardware wallet. The following describes how to use Trezor to connect to BSC.","sidebar":"bscSideBar"},"wallet/trustwallet":{"id":"wallet/trustwallet","title":"Using Trust Wallet for BNB Smart Chain","description":"What is Trust Wallet?","sidebar":"bscSideBar"},"wallet/venly":{"id":"wallet/venly","title":"How to create a BSC wallet with Venly","description":"If you are looking for a user-friendly BNB Smart Chain wallet, consider creating a Venly Wallet. It allows you to enable the recovery mechanism and comes with end-user support via their in-app chat, making sure you are never lost in the wonderful land of cryptocurrency.","sidebar":"bscSideBar"},"wallet/wallet_api":{"id":"wallet/wallet_api","title":"Binance Extension Wallet API","description":"Binance Extension Wallet injects a global API into websites visited by its users at window.BinanceChain."},"wallet/withdraw-cn":{"id":"wallet/withdraw-cn","title":"\u5982\u4f55\u627e\u56de\u60a8\u63d0\u73b0BEP20 \u800c\u8bef\u9009ERC20 \u7684Token\uff1f","description":"\u80cc\u666f"},"wallet/withdraw-en":{"id":"wallet/withdraw-en","title":"How to recover if you choose the wrong network type?","description":"Background"},"wallets/tutorial/bep8":{"id":"wallets/tutorial/bep8","title":"bep8","description":"In this article, we are going to take a tour about how to manage your BEP8 tokens in BNB Chain Testnet web wallet."},"wallets/tutorial/BSCimToken":{"id":"wallets/tutorial/BSCimToken","title":"How to use BNB Smart Chain (BSC) on imToken?","description":"An introduction on how to start with using BSC on the imToken wallet","sidebar":"bscSideBar"},"wallets/tutorial/how-to-create-a-wallet-on-trustwallet":{"id":"wallets/tutorial/how-to-create-a-wallet-on-trustwallet","title":"How to Create Your Wallet with Trust Wallet","description":"Step 1. To get the latest Trust Wallet App you should follow one of the download links on our website trustwallet.com."},"wallets/tutorial/how-to-trade-on-binance-dex":{"id":"wallets/tutorial/how-to-trade-on-binance-dex","title":"How to Trade on Binance DEX","description":"1) Go to www.binance.org"},"wallets/tutorial/ledger-nano-s-usage-guide":{"id":"wallets/tutorial/ledger-nano-s-usage-guide","title":"Ledger Nano S Usage Guide","description":"This guide will show you how to use your Ledger Nano S hardware wallet with BNB Beacon Chain and Binance DEX."},"wallets/tutorial/trezor-model-t-user-guide":{"id":"wallets/tutorial/trezor-model-t-user-guide","title":"Trezor User Guide","description":"This guide will show you how to use your Trezor Model T hardware wallet with BNB Beacon Chain and Binance DEX."},"wallets/tutorial/videos":{"id":"wallets/tutorial/videos","title":"Video Tutorials","description":"1. Cool Wallet: YouTube"},"wallets/wallet-tutorial-overview":{"id":"wallets/wallet-tutorial-overview","title":"Tutorials on Using Third-Party Wallets on BNB Smart Chain","description":"BNB Smart Chain offers extensive support of third-party wallets that can be used for sending/receiving/buying/exchanging/staking BNB Tokens. Below we provide a list of the most popular wallets.","sidebar":"bscSideBar"},"wallets/walletconnect-support":{"id":"wallets/walletconnect-support","title":"Wallets with WalletConnect Support","description":"* List of Wallets Supporting WalletConnect on BNB Chain"},"wallets/wallets":{"id":"wallets/wallets","title":"Wallet Support","description":"* List of Wallets Supporting BNB Beacon Chain Mainnet"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.d4a970f1.js b/assets/js/935f2afb.d4a970f1.js new file mode 100644 index 0000000000..d261e78e4f --- /dev/null +++ b/assets/js/935f2afb.d4a970f1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeta_BNB_Docs=self.webpackChunkbeta_BNB_Docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"bscSideBar":[{"type":"category","label":"BNB Chain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Overview","href":"/docs/overview","docId":"overview"},{"type":"link","label":"Getting Started","href":"/docs/getting-started","docId":"getting-started"},{"type":"category","collapsible":true,"collapsed":true,"label":"BNB Smart Chain","items":[{"type":"link","label":"Introduction","href":"/docs/learn/intro","docId":"learn/intro"},{"type":"link","label":"Claim test tBNB Tokens","href":"/docs/bsc-faucet","docId":"bsc-faucet"},{"type":"link","label":"Tutorials","href":"/docs/bsc-tutorials","docId":"bsc-tutorials"},{"type":"category","collapsed":true,"label":"Core Concepts","items":[{"type":"link","label":"Parlia Consensus Engine","href":"/docs/learn/consensus","docId":"learn/consensus"},{"type":"category","collapsible":true,"collapsed":true,"label":"BC and BSC Cross-Chain Mechanism","items":[{"type":"link","label":"Architecture","href":"/docs/learn/cross-chain","docId":"learn/cross-chain"},{"type":"link","label":"Build-in System Contracts","href":"/docs/learn/system-contract","docId":"learn/system-contract"},{"type":"link","label":"BSC Relayer","href":"/docs/learn/bsc-relayer","docId":"learn/bsc-relayer"},{"type":"link","label":"Incentive Mechanism","href":"/docs/learn/incentives","docId":"learn/incentives"},{"type":"link","label":"Oracle Module","href":"/docs/learn/oracle-module","docId":"learn/oracle-module"},{"type":"link","label":"Oracle Relayer","href":"/docs/learn/oracle-relayer","docId":"learn/oracle-relayer"},{"type":"link","label":"Cross-Chain API","href":"/docs/learn/cross-chain-api","docId":"learn/cross-chain-api"}]},{"type":"link","label":"Governance of BSC","href":"/docs/learn/bsc-gov","docId":"learn/bsc-gov"}],"collapsible":true},{"type":"category","collapsible":true,"collapsed":true,"label":"Develop","items":[{"type":"category","label":"Wallet","items":[{"type":"link","label":"Wallet Guide","href":"/docs/Wallet","docId":"Wallet"},{"type":"link","label":"Supported Wallets","href":"/docs/beaconchain/wallets","docId":"beaconchain/wallets"},{"type":"link","label":"Wallet Key Management","href":"/docs/create-wallet","docId":"create-wallet"},{"type":"category","label":"Tutorials","items":[{"type":"link","label":"Trust Wallet Guide","href":"/docs/beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet","docId":"beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet"},{"type":"link","label":"Venly Wallet Guide","href":"/docs/beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet","docId":"beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet"},{"type":"link","label":"Ledger Wallet Guide","href":"/docs/beaconchain/wallet/tutorial/ledger-nano-s-usage-guide","docId":"beaconchain/wallet/tutorial/ledger-nano-s-usage-guide"},{"type":"link","label":"Trezor Wallet Guide","href":"/docs/beaconchain/wallet/tutorial/trezor-model-t-user-guide","docId":"beaconchain/wallet/tutorial/trezor-model-t-user-guide"},{"type":"link","label":"How to manage BEP8 token with Web Wallet","href":"/docs/beaconchain/wallet/tutorial/bep8","docId":"beaconchain/wallet/tutorial/bep8"}],"collapsed":true,"collapsible":true},{"type":"category","collapsed":true,"label":"BNB Chain Extension Wallet","items":[{"type":"link","label":"How to Use","href":"/docs/bnb-chain-wallet","docId":"bnb-chain-wallet"},{"type":"link","label":"Manually Install Binance Extension Wallet","href":"/docs/manual","docId":"manual"},{"type":"link","label":"Add Account","href":"/docs/add-account","docId":"add-account"},{"type":"link","label":"API","href":"/docs/wallet_api","docId":"wallet_api"},{"type":"link","label":"Staking","href":"/docs/staking-with-ext-wallet","docId":"staking-with-ext-wallet"}],"collapsible":true},{"type":"category","collapsed":true,"label":"Tutorials on Third Party Wallets","items":[{"type":"link","label":"Overview","href":"/docs/wallets/wallet-tutorial-overview","docId":"wallets/wallet-tutorial-overview"},{"type":"link","label":"Trust Wallet","href":"/docs/wallet/trustwallet","docId":"wallet/trustwallet"},{"type":"link","label":"Metamask","href":"/docs/wallet/metamask","docId":"wallet/metamask"},{"type":"link","label":"Venly Wallet","href":"/docs/wallet/venly","docId":"wallet/venly"},{"type":"link","label":"Math Wallet","href":"/docs/wallet/math","docId":"wallet/math"},{"type":"link","label":"MyEtherWallet","href":"/docs/wallet/myetherwallet","docId":"wallet/myetherwallet"},{"type":"link","label":"infinity Wallet","href":"/docs/wallet/infinitywallet","docId":"wallet/infinitywallet"},{"type":"link","label":"AlphaWallet","href":"/docs/wallet/AlphaWallet","docId":"wallet/AlphaWallet"},{"type":"link","label":"Coin98 Wallet","href":"/docs/wallet/coin98wallet","docId":"wallet/coin98wallet"},{"type":"link","label":"Ledger Hardware Wallet","href":"/docs/wallet/ledger","docId":"wallet/ledger"},{"type":"link","label":"Trezor Wallet","href":"/docs/wallet/trezor","docId":"wallet/trezor"},{"type":"link","label":"imToken","href":"/docs/wallets/tutorial/BSCimToken","docId":"wallets/tutorial/BSCimToken"},{"type":"link","label":"Gnosis Safe Multisig","href":"/docs/learn/gnosis","docId":"learn/gnosis"}],"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"link","label":"Developer Tooling Landscape","href":"https://www.bnbchain.org/en/dev-tools"},{"type":"link","label":"Tools","href":"/docs/learn/ecosystem","docId":"learn/ecosystem"},{"type":"link","label":"RPC","href":"/docs/rpc","docId":"rpc"},{"type":"link","label":"BSC Mainnet","href":"/docs/BSCmainnet","docId":"BSCmainnet"},{"type":"link","label":"BSC Testnet","href":"/docs/BSCtestnet","docId":"BSCtestnet"},{"type":"link","label":"BSC Explorers","href":"/docs/BSCexplorers","docId":"BSCexplorers"},{"type":"category","collapsed":true,"label":"Running BSC Nodes","items":[{"type":"link","label":"BNB Smart Chain (BSC) Node Configuration: Best Practices","href":"/docs/validator/best-practice","docId":"validator/best-practice"},{"type":"link","label":"BNB Smart Chain Full Node","href":"/docs/validator/fullnode","docId":"validator/fullnode"},{"type":"link","label":"BNB Smart Chain Fast Node","href":"/docs/BSC-fast-node","docId":"BSC-fast-node"},{"type":"link","label":"BNB Smart Chain Archive Node","href":"/docs/archivenode","docId":"archivenode"},{"type":"link","label":"BNB Smart Chain Separate Node","href":"/docs/BSC-separate-node","docId":"BSC-separate-node"},{"type":"link","label":"BNB Smart Chain Verify Node","href":"/docs/BSC-verify-node","docId":"BSC-verify-node"},{"type":"link","label":"BNB Smart Chain Boot Nodes","href":"/docs/boot-nodes","docId":"boot-nodes"},{"type":"link","label":"Node Maintenance","href":"/docs/validator/node-maintenance","docId":"validator/node-maintenance"},{"type":"link","label":"Upgrading Geth","href":"/docs/validator/upgrade-fullnode","docId":"validator/upgrade-fullnode"},{"type":"link","label":"BNB Smart Chain Docker","href":"/docs/validator/docker","docId":"validator/docker"}],"collapsible":true},{"type":"category","collapsed":true,"label":"Deploy Smart Contract","items":[{"type":"link","label":"Using ChainIDE","href":"/docs/chainide","docId":"chainide"},{"type":"link","label":"Using Remix IDE","href":"/docs/remix-new","docId":"remix-new"},{"type":"link","label":"Using Truffle","href":"/docs/truffle-new","docId":"truffle-new"},{"type":"link","label":"Using HardHat","href":"/docs/hardhat-new","docId":"hardhat-new"},{"type":"link","label":"Using Replit","href":"/docs/replit","docId":"replit"},{"type":"link","label":"Verify Your Contract on BscScan","href":"/docs/verify","docId":"verify"}],"collapsible":true},{"type":"category","label":"Deploy NFTs on BSC","items":[{"type":"link","label":"NFT Metadata Standard","href":"/docs/nft-metadata-standard","docId":"nft-metadata-standard"},{"type":"link","label":"Using Truffle","href":"/docs/ERC721","docId":"ERC721"},{"type":"link","label":"Using Black IDE","href":"/docs/nft_blackide","docId":"nft_blackide"},{"type":"link","label":"Using Venly","href":"/docs/venly-nft-api","docId":"venly-nft-api"},{"type":"link","label":"Storing NFT on IPFS & Filecoin","href":"/docs/nft-storage","docId":"nft-storage"}],"collapsed":true,"collapsible":true},{"type":"category","collapsed":true,"label":"BEP20 Tokens","items":[{"type":"link","label":"Introduction","href":"/docs/BEP20","docId":"BEP20"},{"type":"link","label":"Issue BEP20 Tokens","href":"/docs/issue-BEP20","docId":"issue-BEP20"},{"type":"category","collapsed":true,"label":"Bind Tokens","items":[{"type":"link","label":"Cross-chain Token Management","href":"/docs/tokens-cross-chain","docId":"tokens-cross-chain"},{"type":"link","label":"Bind BEP2 and BEP20 Tokens","href":"/docs/bind-tokens","docId":"bind-tokens"},{"type":"link","label":"Mirror BEP2 and BEP20 Token","href":"/docs/mirror","docId":"mirror"},{"type":"link","label":"Token Circulation Model","href":"/docs/circulation-model","docId":"circulation-model"},{"type":"link","label":"Sync Token Supply","href":"/docs/sync","docId":"sync"}],"collapsible":true},{"type":"category","collapsed":true,"label":"BEP20 Contracts","items":[{"type":"link","label":"Upgradable BEP20 Contracts on BSC","href":"/docs/proxy","docId":"proxy"},{"type":"link","label":"Verify Proxy Contracts","href":"/docs/verify-proxy","docId":"verify-proxy"}],"collapsible":true}],"collapsible":true},{"type":"category","collapsed":true,"label":"Dapp Tutorials","items":[{"type":"link","label":"Full Stack Hello World dApp","href":"/docs/dapp-dev/Hello-World","docId":"dapp-dev/Hello-World"},{"type":"link","label":"Using Web3.js Library on BNB Smart Chain","href":"/docs/dapp-dev/web3js-tutorial","docId":"dapp-dev/web3js-tutorial"}],"collapsible":true},{"type":"link","label":"Oracles","href":"/docs/oracles","docId":"oracles"},{"type":"link","label":"DStorages","href":"/docs/dstorages","docId":"dstorages"},{"type":"link","label":"Cross-Chain Bridges","href":"/docs/learn/cross-chain-bridges","docId":"learn/cross-chain-bridges"}]},{"type":"category","collapsed":true,"label":"Validator","items":[{"type":"link","label":"Overview","href":"/docs/validator/overview","docId":"validator/overview"},{"type":"link","label":"Create Validator","href":"/docs/validator/create-val","docId":"validator/create-val"},{"type":"link","label":"Run Validator","href":"/docs/validator/run-val","docId":"validator/run-val"},{"type":"category","label":"MEV","items":[{"type":"link","label":"Overview","href":"/docs/mev/overview","docId":"mev/overview"},{"type":"link","label":"Validator Integration Guide","href":"/docs/mev/validator-integration","docId":"mev/validator-integration"},{"type":"link","label":"Builder Integration Guide","href":"/docs/mev/builder-integration","docId":"mev/builder-integration"},{"type":"link","label":"FAQs","href":"/docs/mev/faqs","docId":"mev/faqs"}],"collapsed":true,"collapsible":true}],"collapsible":true},{"type":"category","collapsed":true,"label":"Staking","items":[{"type":"link","label":"Overview","href":"/docs/stake/Staking","docId":"stake/Staking"},{"type":"link","label":"CLI Commands","href":"/docs/stake/cli-commands","docId":"stake/cli-commands"},{"type":"link","label":"Staking with Binance Extension Wallet","href":"/docs/wallet/staking","docId":"wallet/staking"},{"type":"category","collapsed":true,"label":"Slashing","items":[{"type":"link","label":"Overview","href":"/docs/validator/Penalty-overview","docId":"validator/Penalty-overview"},{"type":"link","label":"Unjail","href":"/docs/validator/unjail","docId":"validator/unjail"},{"type":"link","label":"Slashing Fee","href":"/docs/validator/slash-fee","docId":"validator/slash-fee"},{"type":"link","label":"Submit Slash Evidence","href":"/docs/validator/send-slash-evidence","docId":"validator/send-slash-evidence"},{"type":"link","label":"Monitoring","href":"/docs/validator/monitor-and-query-slash","docId":"validator/monitor-and-query-slash"}],"collapsible":true}],"collapsible":true},{"type":"category","collapsed":true,"label":"Migrating to BNB Chain","items":[{"type":"category","collapsed":true,"label":"Solana","items":[{"type":"link","label":"Architecture","href":"/docs/migration/non-evm-chains/solana/architecture-comparison","docId":"migration/non-evm-chains/solana/architecture-comparison"},{"type":"link","label":"Token Migration","href":"/docs/migration/non-evm-chains/solana/token-migration","docId":"migration/non-evm-chains/solana/token-migration"}],"collapsible":true},{"type":"category","collapsed":true,"label":"Polygon","items":[{"type":"link","label":"Comparison with BSC","href":"/docs/migration/evm-chains/chain-comparison","docId":"migration/evm-chains/chain-comparison"},{"type":"link","label":"Token Standard Comparison","href":"/docs/migration/evm-chains/token-comparison","docId":"migration/evm-chains/token-comparison"},{"type":"link","label":"Token Migration","href":"/docs/migration/evm-chains/token-migration","docId":"migration/evm-chains/token-migration"}],"collapsible":true}],"collapsible":true}]},{"type":"category","label":"BNB Beacon Chain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/learn/beaconIntro","docId":"learn/beaconIntro"},{"type":"link","label":"Tutorials","href":"/docs/beaconchain/bc-tutorials","docId":"beaconchain/bc-tutorials"},{"type":"category","label":"Learn","collapsed":true,"items":[{"type":"link","label":"Architecture","href":"/docs/beaconchain/learn/architecture","docId":"beaconchain/learn/architecture"},{"type":"link","label":"Accounts","href":"/docs/beaconchain/learn/accounts","docId":"beaconchain/learn/accounts"},{"type":"link","label":"Escrow Accounts","href":"/docs/beaconchain/learn/escrow-accounts","docId":"beaconchain/learn/escrow-accounts"},{"type":"link","label":"Assets","href":"/docs/beaconchain/learn/assets","docId":"beaconchain/learn/assets"},{"type":"link","label":"Breathe Blocks","href":"/docs/beaconchain/learn/breathe-block","docId":"beaconchain/learn/breathe-block"},{"type":"link","label":"Transactions","href":"/docs/beaconchain/learn/transactions","docId":"beaconchain/learn/transactions"},{"type":"link","label":"Genesis File","href":"/docs/beaconchain/learn/genesis","docId":"beaconchain/learn/genesis"},{"type":"link","label":"Signatures","href":"/docs/beaconchain/learn/signature","docId":"beaconchain/learn/signature"},{"type":"link","label":"BEP8 Tokens","href":"/docs/beaconchain/learn/BEP8","docId":"beaconchain/learn/BEP8"},{"type":"category","label":"Encoding","collapsed":true,"items":[{"type":"link","label":"Transaction Encoding Specification","href":"/docs/encoding","docId":"encoding"},{"type":"link","label":"Types","href":"/docs/beaconchain/learn/encoding/","docId":"beaconchain/learn/encoding/encoding"},{"type":"link","label":"Encoding Examples","href":"/docs/beaconchain/learn/encoding/amino-example","docId":"beaconchain/learn/encoding/amino-example"}],"collapsible":true}],"collapsible":true},{"type":"category","label":"Develop","items":[{"type":"link","label":"RPC","href":"/docs/beaconchain/develop/rpc","docId":"beaconchain/develop/rpc"},{"type":"category","label":"BNB Beacon Chain Fullnode","items":[{"type":"link","label":"Install Binaries","href":"/docs/beaconchain/develop/node/install","docId":"beaconchain/develop/node/install"},{"type":"link","label":"Join Mainnet","href":"/docs/beaconchain/develop/node/join-mainnet","docId":"beaconchain/develop/node/join-mainnet"},{"type":"link","label":"Join Testnet","href":"/docs/beaconchain/develop/node/join-testnet","docId":"beaconchain/develop/node/join-testnet"},{"type":"link","label":"Different Sync Types","href":"/docs/beaconchain/develop/node/synctypes","docId":"beaconchain/develop/node/synctypes"},{"type":"link","label":"Get Extra Data From Your Full Node","href":"/docs/beaconchain/develop/node/extra-info","docId":"beaconchain/develop/node/extra-info"},{"type":"link","label":"Types of Nodes","href":"/docs/beaconchain/develop/node/nodetypes","docId":"beaconchain/develop/node/nodetypes"},{"type":"link","label":"Upgrade","href":"/docs/beaconchain/develop/node/upgrade","docId":"beaconchain/develop/node/upgrade"},{"type":"link","label":"Run a Local Testnet","href":"/docs/beaconchain/develop/node/localnetwork","docId":"beaconchain/develop/node/localnetwork"},{"type":"link","label":"Common Issues When Running a Full Node","href":"/docs/beaconchain/develop/node/fullnodeissue","docId":"beaconchain/develop/node/fullnodeissue"}],"collapsed":true,"collapsible":true},{"type":"link","label":"BNB Beacon Chain CLI","href":"/docs/beaconchain/develop/api-reference/cli","docId":"beaconchain/develop/api-reference/cli"},{"type":"link","label":"BNB Beacon Chain SDK","href":"/docs/beaconchain/develop/bcsdk","docId":"beaconchain/develop/bcsdk"},{"type":"link","label":"BNB Beacon Chain Testnet","href":"/docs/beaconchain/develop/testnetandexplorer","docId":"beaconchain/develop/testnetandexplorer"},{"type":"link","label":"Light Client","href":"/docs/beaconchain/light-client","docId":"beaconchain/light-client"},{"type":"link","label":"Asset Management","href":"/docs/beaconchain/tokens","docId":"beaconchain/tokens"},{"type":"category","label":"BNB Beacon Chain API Reference","items":[{"type":"link","label":"New Accelerated Node HTTP API Mainnet","href":"/docs/beaconchain/develop/api-reference/dex-api/block-service","docId":"beaconchain/develop/api-reference/dex-api/block-service"},{"type":"link","label":"Accelerated Node HTTP API Mainnet - Paths and Models","href":"/docs/beaconchain/develop/api-reference/dex-api/paths","docId":"beaconchain/develop/api-reference/dex-api/paths"},{"type":"link","label":"Accelerated Node HTTP API Testnet- Paths and Models","href":"/docs/beaconchain/develop/api-reference/dex-api/paths-testnet","docId":"beaconchain/develop/api-reference/dex-api/paths-testnet"},{"type":"link","href":"pathname:///api-swagger/index.html","label":"Accelerated Node HTTP API Swagger"},{"type":"link","label":"Staking API","href":"/docs/beaconchain/develop/api-reference/dex-api/staking","docId":"beaconchain/develop/api-reference/dex-api/staking"},{"type":"link","label":"WebSockets - Connecting","href":"/docs/beaconchain/develop/api-reference/dex-api/ws-connection","docId":"beaconchain/develop/api-reference/dex-api/ws-connection"},{"type":"link","label":"WebSockets - Streams","href":"/docs/beaconchain/develop/api-reference/dex-api/ws-streams","docId":"beaconchain/develop/api-reference/dex-api/ws-streams"},{"type":"link","label":"Node RPC - Paths and Models","href":"/docs/beaconchain/develop/api-reference/node-rpc","docId":"beaconchain/develop/api-reference/node-rpc"},{"type":"link","href":"pathname:///rpc-swagger/index.html","label":"Node RPC Swagger"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Validator","items":[{"type":"link","label":"Overview","href":"/docs/beaconchain/validator/overview","docId":"beaconchain/validator/overview"},{"type":"link","label":"Create Validator","href":"/docs/beaconchain/validator/create-val","docId":"beaconchain/validator/create-val"},{"type":"link","label":"Run Validator","href":"/docs/beaconchain/validator/run-val","docId":"beaconchain/validator/run-val"}],"collapsed":true,"collapsible":true}]},{"type":"link","label":"BNB Greenfield","href":"https://docs.bnbchain.org/greenfield-docs/"},{"type":"link","label":"zkBNB","href":"https://docs.bnbchain.org/zkBNB-docs/"},{"type":"link","label":"opBNB","href":"https://docs.bnbchain.org/opbnb-docs/"},{"type":"category","label":"\ud83c\udf05BNB Beacon Chain Sunset","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Overview","href":"/docs/bcfusion/overview","docId":"bcfusion/overview"},{"type":"category","label":"For Users","items":[{"type":"link","label":"Manange Your Assets","href":"/docs/bcfusion/users/assets","docId":"bcfusion/users/assets"},{"type":"link","label":"Manage Your Atomic Swaps","href":"/docs/bcfusion/users/swaps","docId":"bcfusion/users/swaps"},{"type":"link","label":"Manage Your TimeLocks","href":"/docs/bcfusion/users/timelocks","docId":"bcfusion/users/timelocks"},{"type":"link","label":"Manage Your Old Delegations","href":"/docs/bcfusion/users/stake-migration","docId":"bcfusion/users/stake-migration"},{"type":"link","label":"BEP153 and LSD Stake Migration","href":"/docs/bcfusion/users/bep153-stake-migration","docId":"bcfusion/users/bep153-stake-migration"},{"type":"link","label":"Manage Your New Delegations","href":"/docs/bcfusion/users/new-stake","docId":"bcfusion/users/new-stake"},{"type":"link","label":"Participate in Governance","href":"/docs/bcfusion/users/gov","docId":"bcfusion/users/gov"}],"collapsed":true,"collapsible":true},{"type":"category","label":"For Token Issuers","items":[{"type":"link","label":"Bind Your Tokens","href":"/docs/bcfusion/owners/bind","docId":"bcfusion/owners/bind"}],"collapsed":true,"collapsible":true},{"type":"category","label":"For Validators","items":[{"type":"link","label":"Migrate Your Validators","href":"/docs/bcfusion/validators/migrations","docId":"bcfusion/validators/migrations"},{"type":"link","label":"Create New Validators","href":"/docs/bcfusion/validators/creation","docId":"bcfusion/validators/creation"},{"type":"link","label":"Key Management","href":"/docs/bcfusion/validators/key-management","docId":"bcfusion/validators/key-management"}],"collapsed":true,"collapsible":true},{"type":"category","label":"For Developers","items":[{"type":"link","label":"New Staking","href":"/docs/bcfusion/developers/staking","docId":"bcfusion/developers/staking"},{"type":"link","label":"New Governance","href":"/docs/bcfusion/developers/gov","docId":"bcfusion/developers/gov"},{"type":"link","label":"Cross Chain Redelegation","href":"/docs/bcfusion/developers/crosschain-redelegation","docId":"bcfusion/developers/crosschain-redelegation"},{"type":"link","label":"Build-in System Contracts","href":"/docs/bcfusion/developers/system-contracts","docId":"bcfusion/developers/system-contracts"}],"collapsed":true,"collapsible":true},{"type":"category","label":"New Staking & Governance","items":[{"type":"link","label":"Staking","href":"/docs/bcfusion/validators/staking","docId":"bcfusion/validators/staking"},{"type":"link","label":"Slash","href":"/docs/bcfusion/validators/slash","docId":"bcfusion/validators/slash"},{"type":"link","label":"Governance","href":"/docs/bcfusion/validators/gov","docId":"bcfusion/validators/gov"}],"collapsed":true,"collapsible":true}]}]},{"type":"link","label":"BSC Roadmap","href":"https://forum.bnbchain.org/t/bnb-chain-upgrades-mainnet/936"},{"type":"category","collapsed":true,"label":"FAQs","items":[{"type":"category","collapsed":true,"label":"BNB Smart Chain FAQs","items":[{"type":"link","label":"BSC General FAQs","href":"/docs/BSC-FAQs-general","docId":"BSC-FAQs-general"},{"type":"link","label":"BSC Tokens FAQs","href":"/docs/BSC-FAQs-tokens","docId":"BSC-FAQs-tokens"},{"type":"link","label":"BSC Validator FAQs","href":"/docs/BSC-FAQs-validator","docId":"BSC-FAQs-validator"},{"type":"link","label":"BSC Delegator FAQs","href":"/docs/BSC-FAQs-delegator","docId":"BSC-FAQs-delegator"},{"type":"link","label":"BSC Staking Parameters FAQs","href":"/docs/parameters","docId":"parameters"},{"type":"link","label":"BSC Cross-chain Communication FAQs","href":"/docs/cross","docId":"cross"}],"collapsible":true},{"type":"link","label":"BNB Beacon Chain FAQs","href":"/docs/beaconchain/faq/","docId":"beaconchain/faq/faq"}],"collapsible":true},{"type":"link","label":"How to Contribute","href":"/docs/contribute","docId":"contribute"},{"type":"link","label":"Join BNBChain Ecosystem","href":"/docs/submit-dapp","docId":"submit-dapp"},{"type":"link","label":"More Help","href":"/docs/more-help","docId":"more-help"}]},"docs":{"add-account":{"id":"add-account","title":"How does Add Account Work","description":"BIP39","sidebar":"bscSideBar"},"api-reference/cli":{"id":"api-reference/cli","title":"Command Line Interface (CLI)","description":"BNB CLI is one of several ways to interact with BNB Beacon Chain."},"api-reference/dex-api/paths":{"id":"api-reference/dex-api/paths","title":"HTTP API","description":"Within the ecosystem of BNB Beacon Chain, there are several accelerated nodes which provides more secure and faster lines to access BNB Beacon Chain and DEX data service including HTTP API."},"api-reference/node-rpc":{"id":"api-reference/node-rpc","title":"Node RPC","description":"RPC endpoints may be used to interact with a node directly over HTTP or websockets. Using RPC, you may perform low-level operations like executing ABCI queries, viewing network/consensus state or broadcasting a transaction."},"api-reference/sdk":{"id":"api-reference/sdk","title":"SDKs for BNB Beacon Chain","description":"Here the client SDK is used to connect to BNB Beacon Chain and DEX. There are libraries in a few programming languages, including:"},"archivenode":{"id":"archivenode","title":"How to Run an Archive Node on BNB Smart Chain","description":"What is an archive node?","sidebar":"bscSideBar"},"band":{"id":"band","title":"Band Protocol Price Feed on BNB Smart Chain","description":"Introduction"},"BC-FAQs":{"id":"BC-FAQs","title":"BNB Beacon Chain FAQs","description":"What is BNB Beacon Chain and Binance DEX?"},"bcfusion/developers/crosschain-redelegation":{"id":"bcfusion/developers/crosschain-redelegation","title":"Crosschain Redelgation","description":"To migrate the exisiting delegation from BNB Beacon chain (the old BSC staking) to the new BNB smart chain native","sidebar":"bscSideBar"},"bcfusion/developers/gov":{"id":"bcfusion/developers/gov","title":"Governance","description":"This guide provides an overview of the key operations of governance, including creating proposals,","sidebar":"bscSideBar"},"bcfusion/developers/staking":{"id":"bcfusion/developers/staking","title":"staking","description":"[# Staking","sidebar":"bscSideBar"},"bcfusion/developers/system-contracts":{"id":"bcfusion/developers/system-contracts","title":"Build-in System Contracts","description":"This section will provide a brief overview of the new build-in system contracts in the BNB Smart Chain.","sidebar":"bscSideBar"},"bcfusion/overview":{"id":"bcfusion/overview","title":"Overview","description":"BNB Beacon Chain is a blockchain developed by the BNB Chain community that implements a vision of a decentralized","sidebar":"bscSideBar"},"bcfusion/owners/bind":{"id":"bcfusion/owners/bind","title":"Token Bind","description":"Token binding was introduced to faciliate that one token can circulate in both BC and BSC with confirmed total supply.","sidebar":"bscSideBar"},"bcfusion/users/assets":{"id":"bcfusion/users/assets","title":"Asset Management","description":"The BNB Chain community recently introduced [BEP333: BNB Chain","sidebar":"bscSideBar"},"bcfusion/users/bep153-stake-migration":{"id":"bcfusion/users/bep153-stake-migration","title":"Stake Migration For BEP153","description":"The BEP-153 has been introduced as a native staking","sidebar":"bscSideBar"},"bcfusion/users/gov":{"id":"bcfusion/users/gov","title":"Governance with Tally","description":"This document provides a guide on how to participate in governance on the BNB Smart Chain (BSC) using Tally. It","sidebar":"bscSideBar"},"bcfusion/users/new-stake":{"id":"bcfusion/users/new-stake","title":"Managing New Stakes with BNB Staking dApp","description":"Leverage the BNB staking dApp for streamlined management of your stakes. This guide provides a step-by-step walkthrough for using the dApp on both testnet and mainnet.","sidebar":"bscSideBar"},"bcfusion/users/stake-migration":{"id":"bcfusion/users/stake-migration","title":"Stake Migration","description":"The BNB Chain community has introduced BEP333: BNB Chain Fusion, a","sidebar":"bscSideBar"},"bcfusion/users/swaps":{"id":"bcfusion/users/swaps","title":"Atomic Swap Management","description":"HTLC based atomic swaps are introduced in","sidebar":"bscSideBar"},"bcfusion/users/timelocks":{"id":"bcfusion/users/timelocks","title":"TimeLock Management","description":"A timelock is a feature that allows users to lock their assets for a certain period of time, which is introduced","sidebar":"bscSideBar"},"bcfusion/validators/creation":{"id":"bcfusion/validators/creation","title":"Validator Creation Guide","description":"This guide outlines the process for creating a new validator on the BNB Smart Chain (BSC).","sidebar":"bscSideBar"},"bcfusion/validators/gov":{"id":"bcfusion/validators/gov","title":"Governance","description":"BEP-297 introduces the native governance module for BNB smart chain after","sidebar":"bscSideBar"},"bcfusion/validators/key-management":{"id":"bcfusion/validators/key-management","title":"Key Management for BSC Validators","description":"BEP-294 and BEP-297","sidebar":"bscSideBar"},"bcfusion/validators/migrations":{"id":"bcfusion/validators/migrations","title":"Validator Migration Guide","description":"The introduction of native staking on the BNB Smart","sidebar":"bscSideBar"},"bcfusion/validators/slash":{"id":"bcfusion/validators/slash","title":"Slash","description":"The BNB smart chain (BSC) is a blockchain network that aims to provide fast, secure, and reliable transactions. To","sidebar":"bscSideBar"},"bcfusion/validators/staking":{"id":"bcfusion/validators/staking","title":"Staking","description":"BNB smart chain (BSC) is a Proof-of-Staked-Authority (PoSA) blockchain, which means that staking is one of the most","sidebar":"bscSideBar"},"beaconchain/account":{"id":"beaconchain/account","title":"Account and Balance","description":"Each account contains cryptographic authentication info. It is created by a user of the blockchain. It also includes public key, address, and account number/sequence number for replay protection. Whenever a new address receives an asset, the corresponding transaction would create an Account for that address, which contains balances across all assets that are owned on this address."},"beaconchain/acknowledgement":{"id":"beaconchain/acknowledgement","title":"Acknowledgements","description":"BNB Beacon Chain has been through several iterations and evolutions, each time building upon work contributed by members of the blockchain community. We would like to acknowledge the outstanding work that we have been able to achieve during development. Let\'s build the future together!"},"beaconchain/anti-frontrun":{"id":"beaconchain/anti-frontrun","title":"Anti Front-Running","description":"Front-running means someone can get prior knowledge of transactions from other beneficial owners via technology or market advantage, so that they can influence the price beforehand and result in economic gain, which usually brings loss or cost to others. It is a daunting question asked to both centralized and other decentralized exchanges (DEX). Especially on some DEX, front-running actually happens quite often, e.g. via gas or timestamp manipulations, or slow matching."},"beaconchain/atomic-swap":{"id":"beaconchain/atomic-swap","title":"atomic-swap","description":"Introduction"},"beaconchain/bc-tutorials":{"id":"beaconchain/bc-tutorials","title":"Tutorials","description":"In this section, we have provided tutorials on usage of different components of BNB Beacon Chain.","sidebar":"bscSideBar"},"beaconchain/blockchain":{"id":"beaconchain/blockchain","title":"The BNB Beacon Chain Blockchain","description":"The purpose of the BNB Beacon Chain blockchain and DEX is to create an alternative marketplace for issuing and exchanging digital assets in a decentralized manner."},"beaconchain/chain-access":{"id":"beaconchain/chain-access","title":"How to Access BNB Beacon Chain","description":"Get Started pages already show how to access BNB Beacon Chain and DEX via"},"beaconchain/CONTRIBUTING":{"id":"beaconchain/CONTRIBUTING","title":"How to Contribute to BNB Chain Documentations Project","description":"Your contributions to the BNB Chain will help build a fast and secure decentralized digital asset exchange."},"beaconchain/dataseed_list":{"id":"beaconchain/dataseed_list","title":"dataseed_list","description":""},"beaconchain/develop/api-reference/block-service-example":{"id":"beaconchain/develop/api-reference/block-service-example","title":"Example for tx response, for different tx types","description":"NEW_ORDER"},"beaconchain/develop/api-reference/cli":{"id":"beaconchain/develop/api-reference/cli","title":"Command Line Interface (CLI)","description":"BNB Beacon Chain CLI is one of several ways to interact with BNB Beacon Chain.","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/block-service":{"id":"beaconchain/develop/api-reference/dex-api/block-service","title":"API reference for block service","description":"API description for block and transaction service","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/block-service-example":{"id":"beaconchain/develop/api-reference/dex-api/block-service-example","title":"Example for tx response, for different tx types","description":"NEW_ORDER"},"beaconchain/develop/api-reference/dex-api/bridge":{"id":"beaconchain/develop/api-reference/dex-api/bridge","title":"Swagger API reference for swap service","description":"API description for swap service"},"beaconchain/develop/api-reference/dex-api/bridge-widget":{"id":"beaconchain/develop/api-reference/dex-api/bridge-widget","title":"Introduction","description":"Currently, users can\'t perform any actions with Binance Bridge unless their wallets are connected. This widget is meant to be used client-side to improve the flow of connecting wallets."},"beaconchain/develop/api-reference/dex-api/migration-guide":{"id":"beaconchain/develop/api-reference/dex-api/migration-guide","title":"Migration Guide","description":"Target Audience"},"beaconchain/develop/api-reference/dex-api/paths":{"id":"beaconchain/develop/api-reference/dex-api/paths","title":"HTTP API","description":"Within the ecosystem of BNB Becon Chain, there are several accelerated nodes which provides more secure and faster lines to access BNB Beacon Chain data service including HTTP API.","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/paths-testnet":{"id":"beaconchain/develop/api-reference/dex-api/paths-testnet","title":"HTTP API","description":"Within the ecosystem of BNB Chain, there are several accelerated nodes which provides more secure and faster lines to access BNB Beacon Chain data service including HTTP API.","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/staking":{"id":"beaconchain/develop/api-reference/dex-api/staking","title":"Staking API","description":"Version: 1.0","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/ws-connection":{"id":"beaconchain/develop/api-reference/dex-api/ws-connection","title":"WebSocket Connections","description":"Several data streams are exposed over standard WebSocket connections, which can be consumed by modern web browsers and server-side WebSocket libraries.","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/dex-api/ws-streams":{"id":"beaconchain/develop/api-reference/dex-api/ws-streams","title":"WebSocket Streams","description":"1. Account","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/http-api":{"id":"beaconchain/develop/api-reference/http-api","title":"http-api","description":"dex-api/paths.md"},"beaconchain/develop/api-reference/node-rpc":{"id":"beaconchain/develop/api-reference/node-rpc","title":"Node RPC","description":"RPC endpoints may be used to interact with a node directly over HTTP or websockets. Using RPC, you may perform low-level operations like executing ABCI queries, viewing network/consensus state or broadcasting a transaction.","sidebar":"bscSideBar"},"beaconchain/develop/api-reference/transactions":{"id":"beaconchain/develop/api-reference/transactions","title":"Transaction Data","description":"A transaction in tendermint is any sequence of bytes. It\'s up to the ABCI application to accept or reject the transactions."},"beaconchain/develop/bcsdk":{"id":"beaconchain/develop/bcsdk","title":"BNB Beacon Chain SDK","description":"BNB Beacon Chain provides SDK in different languages for various purposes. Following is the list of SDKs.","sidebar":"bscSideBar"},"beaconchain/develop/node/extra-info":{"id":"beaconchain/develop/node/extra-info","title":"Get Extra Data From Your Full Node","description":"This document is intended for developers who are interested in transactions, order books, account changes, fee charges in every block and would like to build their own downstream services of the full node.","sidebar":"bscSideBar"},"beaconchain/develop/node/fullnode-faq":{"id":"beaconchain/develop/node/fullnode-faq","title":"Common Issues When Running a Full Node","description":"AppHash Confliction"},"beaconchain/develop/node/fullnodeissue":{"id":"beaconchain/develop/node/fullnodeissue","title":"Common Issues When Running a Full Node","description":"How to monitor your full node syncing process?","sidebar":"bscSideBar"},"beaconchain/develop/node/install":{"id":"beaconchain/develop/node/install","title":"Install Binaries","description":"This guide will explain how to install the binaries: bnbchaind and bnbcli, onto your server. With these installed on a server, you can participate in the mainnet or testnet as a Full Node. Full Nodes of BNB Beacon Chain also help the network by accepting transactions from other nodes and then relaying them to the core BNB Chain network.","sidebar":"bscSideBar"},"beaconchain/develop/node/join-mainnet":{"id":"beaconchain/develop/node/join-mainnet","title":"Join Mainnet","description":"See the node repo for information on the mainnet,","sidebar":"bscSideBar"},"beaconchain/develop/node/join-testnet":{"id":"beaconchain/develop/node/join-testnet","title":"Join Testnet","description":"See the node repo for information on the mainnet,","sidebar":"bscSideBar"},"beaconchain/develop/node/localnetwork":{"id":"beaconchain/develop/node/localnetwork","title":"Run a Local Testnet","description":"Single-node on Local Testnet","sidebar":"bscSideBar"},"beaconchain/develop/node/nodetypes":{"id":"beaconchain/develop/node/nodetypes","title":"Types of Nodes","description":"Full Node Node Roles","sidebar":"bscSideBar"},"beaconchain/develop/node/snapshot":{"id":"beaconchain/develop/node/snapshot","title":"Chain Data Snapshots","description":"A snapshot is a recording of the state of BNB Beacon Chain at a particular block height."},"beaconchain/develop/node/synctypes":{"id":"beaconchain/develop/node/synctypes","title":"Different Sync Types","description":"There are three ways for you to get synced with other peers in blockchain network and these methods can be used together.","sidebar":"bscSideBar"},"beaconchain/develop/node/upgrade":{"id":"beaconchain/develop/node/upgrade","title":"Upgrade","description":"Please follow our official channels to get the latest news about upcoming upgrades.","sidebar":"bscSideBar"},"beaconchain/develop/rpc":{"id":"beaconchain/develop/rpc","title":"RPC Endpoint","description":"RPC endpoints may be used to interact with a node directly over HTTP or websockets. Using RPC, you may perform low-level operations like executing ABCI queries, viewing network/consensus state or broadcasting a transaction.","sidebar":"bscSideBar"},"beaconchain/develop/testnetandexplorer":{"id":"beaconchain/develop/testnetandexplorer","title":"BNB Beacon Chain Testnet","description":"What is a Testnet?","sidebar":"bscSideBar"},"beaconchain/encoding":{"id":"beaconchain/encoding","title":"BNB Beacon Chain Transaction Encoding Specification","description":"BNB Beacon Chain transactions are protocol-based data types and can only be submitted in a compatible encoded frame."},"beaconchain/exchange-integration":{"id":"beaconchain/exchange-integration","title":"exchange-integration","description":"Public Services"},"beaconchain/faq/faq":{"id":"beaconchain/faq/faq","title":"BNB Beacon Chain FAQ","description":"What is BNB Beacon Chain and Binance DEX?","sidebar":"bscSideBar"},"beaconchain/fullnode":{"id":"beaconchain/fullnode","title":"Run Full Node to Join BNB Beacon Chain","description":"A full node of BNB Beacon Chain is a witness, which observes the consensus messaging, downloads blocks from data seed nodes and executes business logic to achieve the consistent state as validator node (and other full node). Full nodes also help the network by accepting transactions from other nodes and then relaying them to the core BNB Chain network."},"beaconchain/fullnodeissue":{"id":"beaconchain/fullnodeissue","title":"Common Issues When Running a Full Node","description":"How to monitor your full node syncing process?"},"beaconchain/get-extra-data-from-fullnode":{"id":"beaconchain/get-extra-data-from-fullnode","title":"Get Extra Data From Your Full Node","description":"This document is intended for developers who are interested in transactions, order books, account changes, fee charges in every block and would like to build their own downstream services of the full node."},"beaconchain/get-started":{"id":"beaconchain/get-started","title":"Get Started with BNB Beacon Chain","description":"Wallet"},"beaconchain/imToken":{"id":"beaconchain/imToken","title":"imToken","description":"What is it?"},"beaconchain/index":{"id":"beaconchain/index","title":"BNB Beacon Chain Documentation","description":"Welcome to the BNB Beacon Chain documentation site!"},"beaconchain/keys":{"id":"beaconchain/keys","title":"keys","description":"Introduction"},"beaconchain/learn/accounts":{"id":"beaconchain/learn/accounts","title":"Accounts","description":"Whenever a new address receives an asset, the corresponding transaction would create an Account for that address, which contains balances across all assets that are owned on this address.","sidebar":"bscSideBar"},"beaconchain/learn/architecture":{"id":"beaconchain/learn/architecture","title":"Architecture","description":"BNB Beacon Chain is a multi-modular blockchain with excellent native support for account management, asset management, cross chain, goverenance and so on.","sidebar":"bscSideBar"},"beaconchain/learn/assets":{"id":"beaconchain/learn/assets","title":"Assets","description":"Assets are stored as tokens on BNB Beacon Chain , and the below management actions are available. All the assets are complied with BEP2 standard. BEP stands for BNB Chain Evolution Proposal. Each BEP will be a proposal document providing information to the BNB Beacon Chain /DEX community. The BEP should provide a concise technical specification of the feature or improvement and the rationale behind it. Each BEP proposer is responsible for building consensus within the community and documenting dissenting opinions. Each BEP has a unique index number.","sidebar":"bscSideBar"},"beaconchain/learn/atomic-swaps":{"id":"beaconchain/learn/atomic-swaps","title":"Cross-chain Atomic Swaps","description":"Atomic Swap"},"beaconchain/learn/bc-bridge":{"id":"beaconchain/learn/bc-bridge","title":"BC <-> BSC Token Bridge","description":"!!! Note"},"beaconchain/learn/bc-slashing":{"id":"beaconchain/learn/bc-slashing","title":"Slashing","description":"Slashing"},"beaconchain/learn/bc-staking":{"id":"beaconchain/learn/bc-staking","title":"Staking","description":"PoSA Consensus of BNB Smart Chain"},"beaconchain/learn/BEP8":{"id":"beaconchain/learn/BEP8","title":"Introduction","description":"As explained in BEP8,the idea of BEP8 Tokens is raised to accommodate the small or micro projects, intellectual properties, and other small token economies to build a more comprehensive venue for token trading.","sidebar":"bscSideBar"},"beaconchain/learn/BEP82":{"id":"beaconchain/learn/BEP82","title":"BEP82","description":"Note: this feature is only available in Testnet after Lagrange Upgrade."},"beaconchain/learn/breathe-block":{"id":"beaconchain/learn/breathe-block","title":"Breathe Blocks","description":"In BNB Beacon Chain, there is one kind of special blocks called Breathe Block.","sidebar":"bscSideBar"},"beaconchain/learn/bsc-gov":{"id":"beaconchain/learn/bsc-gov","title":"Governance of BSC","description":"There are many system parameters to control the behavior of the BSC:"},"beaconchain/learn/encoding/amino-example":{"id":"beaconchain/learn/encoding/amino-example","title":"Encoding Examples","description":"Encoding Output","sidebar":"bscSideBar"},"beaconchain/learn/encoding/encoding":{"id":"beaconchain/learn/encoding/encoding","title":"Encoding","description":"The Cosmos SDK utilizes two binary wire encoding protocols, BNB Beacon Chain Amino","sidebar":"bscSideBar"},"beaconchain/learn/escrow-accounts":{"id":"beaconchain/learn/escrow-accounts","title":"Escrow Accounts","description":"A purely-code-controlled escrow account is a kind of account which is derived from a hard-coded string in BNB Beacon Chain protocol. This kind of account doesn\'t have its own private key and it\'s only controlled by code of the protocol. The code for calculating escrow account is the same that is used in cosmos-sdk.","sidebar":"bscSideBar"},"beaconchain/learn/fees":{"id":"beaconchain/learn/fees","title":"Fees","description":"BNB is the native token on BNB Chain , thus users are charged BNB for sending transactions."},"beaconchain/learn/genesis":{"id":"beaconchain/learn/genesis","title":"Genesis File","description":"What is a Genesis File","sidebar":"bscSideBar"},"beaconchain/learn/matching-engine":{"id":"beaconchain/learn/matching-engine","title":"Matching Engine","description":"Binance DEX is the native marketplace on BNB Beacon Chain , allowing you to exchange digital assets issued and listed on it."},"beaconchain/learn/signature":{"id":"beaconchain/learn/signature","title":"Signatures","description":"Signature is the evidence to prove the sender owns the transaction. It will be created from the actions outlined below:","sidebar":"bscSideBar"},"beaconchain/learn/threshold-signature-scheme":{"id":"beaconchain/learn/threshold-signature-scheme","title":"Threshold Signature Scheme","description":"Introduction"},"beaconchain/learn/trading-interface":{"id":"beaconchain/learn/trading-interface","title":"Binance DEX Trading Interface","description":"Binance DEX trading page is designed to provide a user-friendly trading interface to everyone. To get started, go to the trading page first at https"},"beaconchain/learn/trading-specification":{"id":"beaconchain/learn/trading-specification","title":"Trading Specification","description":"- [ ] https://docs.bnbchain.org/trading-spec.html"},"beaconchain/learn/transaction":{"id":"beaconchain/learn/transaction","title":"BNB Beacon Chain Transaction Basics","description":"A blockchain is a globally shared, transactional database. This means that everyone can read entries in the database just by participating in the network. If you want to change something in the database, you have to create a so-called transaction which has to be accepted by all others. The word transaction implies that the change you want to make (assume you want to change two values at the same time) is either not done at all or completely applied. Furthermore, while your transaction is being applied to the database, no other transaction can alter it."},"beaconchain/learn/transactions":{"id":"beaconchain/learn/transactions","title":"BNB Beacon Chain Transaction Basics","description":"A blockchain is a globally shared, transactional database. This means that everyone can read entries in the database just by participating in the network. If you want to change something in the database, you have to create a so-called transaction which has to be accepted by all others. The word transaction implies that the change you want to make (assume you want to change two values at the same time) is either not done at all or completely applied. Furthermore, while your transaction is being applied to the database, no other transaction can alter it.","sidebar":"bscSideBar"},"beaconchain/learn/walletconnect":{"id":"beaconchain/learn/walletconnect","title":"Wallet Connect","description":"- [ ] https://docs.bnbchain.org/walletconnect.html"},"beaconchain/light-client":{"id":"beaconchain/light-client","title":"Light Client","description":"Light client is a program that connects to a full node to help users access and interact with BNB Beacon Chain","sidebar":"bscSideBar"},"beaconchain/list":{"id":"beaconchain/list","title":"List Transaction","description":"Only BEP2 tokens issued on BNB Beacon Chain can be listed. Learn how to issue BEP2 tokens here. If a token\'s listing proposal has been passed by valdiators, then a list transaction must be sent before expire-time."},"beaconchain/list_instruction":{"id":"beaconchain/list_instruction","title":"List Instructions","description":"Listing a trading pair is a rather advanced feature in DEX. To list your token, you can follow the step-by-step instruction here."},"beaconchain/match":{"id":"beaconchain/match","title":"What exactly is Binance DEX matching logic?","description":"Binance DEX uses periodic auction to match all available orders. Maker/Taker concepts are introduced to enhance the current periodic auction match algorithm. The match is still executed only once in each block while the execution prices may vary for maker and taker orders."},"beaconchain/match-examples":{"id":"beaconchain/match-examples","title":"Match Steps and Examples","description":"Match Steps"},"beaconchain/memo-validation":{"id":"beaconchain/memo-validation","title":"Customized Scripts and Transfer Memo Validation","description":"Memo Validation"},"beaconchain/offline":{"id":"beaconchain/offline","title":"Offline","description":"bnbcli support generating and signing all types of transactions offline, then broadcast them. This feature will let users generate and sign their transactions at an offline machine, then use another machine to broadcast it to the network"},"beaconchain/resources":{"id":"beaconchain/resources","title":"More Help","description":"You can always post your question in Online Forum: this is the main portal to get community support."},"beaconchain/timelock":{"id":"beaconchain/timelock","title":"TimeLock","description":"As explained in BEP9, some business plans decide to lock certain amount tokens for pre-defined periods of time, and the only vest in the future according to the schedules. For example, some projects may lock some allocation of the issued tokens as a commitment by the founding team; some business scenarios also need to lock some tokens as collateral for value."},"beaconchain/tokens":{"id":"beaconchain/tokens","title":"Asset Management","description":"Introduction","sidebar":"bscSideBar"},"beaconchain/trade":{"id":"beaconchain/trade","title":"Trade","description":"Binance DEX is the native marketplace which allows you to exchange digital assets issued and listed on it. The matching happens within the blockchain nodes and all of the transactions are recorded on-chain, therefore forming a complete, auditable ledger of activity. The following commands are available for trading:"},"beaconchain/trading-spec":{"id":"beaconchain/trading-spec","title":"Binance DEX Trading Specification","description":"Orders"},"beaconchain/transfer":{"id":"beaconchain/transfer","title":"Asset Transfer","description":"Transfer is the most basic transaction BNB Beacon Chain supports, it moves assets among different addresses."},"beaconchain/tss":{"id":"beaconchain/tss","title":"User Guide of Threshold Signature Scheme (TSS) in BNB Beacon Chain","description":"Introduction"},"beaconchain/validator/create-val":{"id":"beaconchain/validator/create-val","title":"Create Validator","description":"Requirements and Responsibility","sidebar":"bscSideBar"},"beaconchain/validator/overview":{"id":"beaconchain/validator/overview","title":"Overview","description":"BEP159 introduces a permissionless validator election mechanism","sidebar":"bscSideBar"},"beaconchain/validator/run-val":{"id":"beaconchain/validator/run-val","title":"Run Validator","description":"Validator Hardware Requirements","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet":{"id":"beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet","title":"Venly Wallet","description":"If you are looking for a user-friendly BNB Smart Chain wallet, consider creating a Venly Wallet. It allows you to enable the recovery mechanism and comes with end-user support via their in-app chat, making sure you are never lost in the wonderful land of cryptocurrency.","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/bep8":{"id":"beaconchain/wallet/tutorial/bep8","title":"How to manage your BEP8 tokens in BNB Chain Testnet web wallet","description":"In this article, we are going to take a tour about how to manage your BEP8 tokens in BNB Chain Testnet web wallet.","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet":{"id":"beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet","title":"How to create your wallet with Trust Wallet","description":"Step 1. To get the latest Trust Wallet App you should follow one of the download links on our website trustwallet.com.","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/how-to-trade-on-binance-dex":{"id":"beaconchain/wallet/tutorial/how-to-trade-on-binance-dex","title":"How to Trade on Binance DEX","description":"1) Go to www.binance.org"},"beaconchain/wallet/tutorial/How-to-use-BSC-on-imToken":{"id":"beaconchain/wallet/tutorial/How-to-use-BSC-on-imToken","title":"How to use BNB Smart Chain (BSC) on imToken?","description":"An introduction on how to start with using BSC on the imToken wallet"},"beaconchain/wallet/tutorial/ledger-nano-s-usage-guide":{"id":"beaconchain/wallet/tutorial/ledger-nano-s-usage-guide","title":"Ledger Nano S Usage Guide","description":"This guide will show you how to use your Ledger Nano S hardware wallet with BNB Beacon Chain and Binance DEX.","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/trezor-model-t-user-guide":{"id":"beaconchain/wallet/tutorial/trezor-model-t-user-guide","title":"Trezor User Guide","description":"This guide will show you how to use your Trezor Model T hardware wallet with BNB Beacon Chain and Binance DEX.","sidebar":"bscSideBar"},"beaconchain/wallet/tutorial/videos":{"id":"beaconchain/wallet/tutorial/videos","title":"Video Tutorials","description":"1. Cool Wallet: YouTube"},"beaconchain/walletconnect":{"id":"beaconchain/walletconnect","title":"Wallet Connect","description":"--\x3e"},"beaconchain/walletconnect-support":{"id":"beaconchain/walletconnect-support","title":"Wallets with WalletConnect Support","description":"* List of Wallets Supporting WalletConnect on BNB Chain"},"beaconchain/wallets":{"id":"beaconchain/wallets","title":"Supported Wallets","description":"* List of Wallets Supporting BNB Beacon Chain Mainnet","sidebar":"bscSideBar"},"BEP20":{"id":"BEP20","title":"BEP20 Token","description":"Introduction","sidebar":"bscSideBar"},"bind-tokens":{"id":"bind-tokens","title":"Bind BEP2 and BEP20 Tokens","description":"BSC and BC work together to ensure that one token can circulate in both formats with confirmed total supply and be used in different use cases. Token Binding can happen at any time after BEP2/BEP8 and BEP20 are ready. The token owners of either BEP2/BEP8 or BEP20 only need to complete the Binding process when a cross-chain feature is necessary.","sidebar":"bscSideBar"},"bnb-chain-wallet":{"id":"bnb-chain-wallet","title":"Using BNB Chain Wallet","description":"What is it?","sidebar":"bscSideBar"},"boot-nodes":{"id":"boot-nodes","title":"Boot Nodes","description":"Through the maintenance release v1.2.12 4, Boot Nodes were introduced on the BSC mainnet. BSC Boot Nodes are similar to Ethereum Boot Nodes, refer here for more details. The main benefit of Boot Nodes is that it would be easier for user to connect to the BSC network. Users would no longer need to setup the StaticNodes in config.toml, just leave it empty and make sure delete the BootstrapNodes field in config.toml.","sidebar":"bscSideBar"},"BSC-FAQs":{"id":"BSC-FAQs","title":"BNB Smart Chain","description":"What is BNB Smart Chain ?"},"BSC-FAQs-delegator":{"id":"BSC-FAQs-delegator","title":"BNB Smart Chain Delegator","description":"What\'s the role of a delegator?","sidebar":"bscSideBar"},"BSC-FAQs-general":{"id":"BSC-FAQs-general","title":"BNB Smart Chain FAQs","description":"Where can I find BNB Smart Chain code? Is there a GitHub repository?","sidebar":"bscSideBar"},"BSC-FAQs-tokens":{"id":"BSC-FAQs-tokens","title":"Tokens in BNB Beacon Chain and BNB Smart Chain","description":"What role does BNB play in securing BNB Smart Chain ?","sidebar":"bscSideBar"},"BSC-FAQs-validator":{"id":"BSC-FAQs-validator","title":"BNB Smart Chain Validator FAQs","description":"What is the role of BNB Smart Chain Validators?","sidebar":"bscSideBar"},"BSC-fast-node":{"id":"BSC-fast-node","title":"Fast Node on BNB Smart Chain","description":"Note","sidebar":"bscSideBar"},"bsc-faucet":{"id":"bsc-faucet","title":"Claim test tBNB Tokens","description":"Claim tBNB from Online Faucet","sidebar":"bscSideBar"},"BSC-mainnet-explorers":{"id":"BSC-mainnet-explorers","title":"BSC Explorers","description":"BNB Smart Chain explorers is a graphic user interface designed to allow users to interact with the blockchain. Through this interface, a user can browse information about blocks that have been added to the blockchain, transactions that have occurred on the blockchain, wallet balances, and information about BNB."},"BSC-separate-node":{"id":"BSC-separate-node","title":"Separate Node on BNB Smart Chain","description":"Introduction","sidebar":"bscSideBar"},"BSC-testnet-explorers":{"id":"BSC-testnet-explorers","title":"BSC Explorers","description":"BNB Smart Chain explorers is a graphic user interface designed to allow users to interact with the blockchain. Through this interface, a user can browse information about blocks that have been added to the blockchain, transactions that have occurred on the blockchain, wallet balances, and information about BNB."},"bsc-tutorials":{"id":"bsc-tutorials","title":"Tutorials","description":"In this section, we have provided tutorials on usage of different components of BNB Smart Chain.","sidebar":"bscSideBar"},"BSC-verify-node":{"id":"BSC-verify-node","title":"Verify Node on BNB Smart Chain","description":"Verify Node Functions","sidebar":"bscSideBar"},"BSCexplorers":{"id":"BSCexplorers","title":"BNB Smart Chain (BSC) Explorer","description":"BNB Smart Chain (BSC) explorer is a graphic user interface designed to allow users to interact with the blockchain. Through this interface, a user can browse information about blocks that have been added to the blockchain, transactions that have occurred on the blockchain, wallet balances, and information about BNB.","sidebar":"bscSideBar"},"BSCmainnet":{"id":"BSCmainnet","title":"BSC Mainnet","description":"What is Mainnet?","sidebar":"bscSideBar"},"BSCtestnet":{"id":"BSCtestnet","title":"BSC Testnet","description":"What is a Testnet?","sidebar":"bscSideBar"},"chainide":{"id":"chainide","title":"Using ChainIDE","description":"Introduction","sidebar":"bscSideBar"},"circulation-model":{"id":"circulation-model","title":"Circulation Model","description":"BC and BSC share the same token universe for BNB and BEP8/BEP2/BEP20 tokens. This defines:","sidebar":"bscSideBar"},"contribute":{"id":"contribute","title":"How to Contribute to BNB Chain Documentations Project","description":"Your contributions to the BNB Chain will help build a fast and secure decentralized digital asset exchange.","sidebar":"bscSideBar"},"create-wallet":{"id":"create-wallet","title":"Key Management","description":"This article is a guide about key management strategy on client side of your Decentralised Application on BNB Smart Chain","sidebar":"bscSideBar"},"cross":{"id":"cross","title":"Cross-chain Communication","description":"How much is cross-chain transfer fee?","sidebar":"bscSideBar"},"dapp-dev/Hello-World":{"id":"dapp-dev/Hello-World","title":"Develop Full Stack dApp on BNB Smart Chain in 5 minutes","description":"Designed for anyone wanting to learn blockchain development, this tutorial provides a step-by-step guide on how to develop a full-stack Hello World Smart dApp that is used for storing and retrieving data from the BSC blockchain. The technology stack used in this tutorial includes Solidity, Truffle, Ganache, Web3.js, and Node js. We also cover how to deploy smart contracts on the BNB Smart Chain Testnet.","sidebar":"bscSideBar"},"dapp-dev/web3js-tutorial":{"id":"dapp-dev/web3js-tutorial","title":"Using Web3.js Library on BNB Smart Chain","description":"Designed for anyone wanting to learn development on the BNB Smart Chain, this tutorial provides a step-by-step guide on how to use web3.js library along with Nodereal API to fetch transaction details from the BNB Smart Chain blockchain for the given transaction hash. The technology stack used in this tutorial includes Web3.js, Nodereal MegaNode, and http-server.","sidebar":"bscSideBar"},"dev-outlook/decentralization":{"id":"dev-outlook/decentralization","title":"Decentralization Further","description":"Candidate ValidatorSet"},"dev-outlook/scaling":{"id":"dev-outlook/scaling","title":"Scaling and Improvements for Better User Experience","description":"Scaling"},"dev-tools":{"id":"dev-tools","title":"Development Tools on BSC","description":"Smart contracts development with BSC enables you to build your smart contracts for any use, including cryptocurrency exchanges, smart contract-based dApps, Decentralized Finance, and more."},"dia":{"id":"dia","title":"DIA Data Oracles on BNB Smart Chain","description":"Introduction"},"dstorages":{"id":"dstorages","title":"Decentralized Storage","description":"Decentralized storage system enable users to store their data in a peer-to-peer distributed network which consists of operators across different locations. Comparing with centralized storage, it offers more control, privacy as well as security over the user\'s own data. Further more, decentralized storage is more resilient since there is no single point of failure of the storage.","sidebar":"bscSideBar"},"encoding":{"id":"encoding","title":"BNB Beacon Chain Transaction Encoding Specification","description":"BNB Beacon Chain transactions are protocol-based data types and can only be submitted in a compatible encoded frame.","sidebar":"bscSideBar"},"ERC721":{"id":"ERC721","title":"Using Truffle to Deploy NFTs on BSC","description":"This work is inspired by this blog","sidebar":"bscSideBar"},"faq":{"id":"faq","title":"Binance Extension Wallet FAQs","description":"How can I download Binance Extension Wallet (BEW)?"},"fullnodeissue":{"id":"fullnodeissue","title":"Common Issues When Running a Full Node","description":"How to Monitor Your Full Node Syncing Process?"},"get-extra-data-from-fullnode":{"id":"get-extra-data-from-fullnode","title":"Get Extra Data From Your Full Node","description":"This document is intended for developers who are interested in transactions, order books, account changes, fee charges in every block and would like to build their own downstream services of the full node."},"getting-started":{"id":"getting-started","title":"Getting Started","description":"This document serve as a starting point for new users to the BNB Chain ecosystem. General knowledge of cryptocurrency is assumed, and in particular familiarity with the Ethereum ecosystem. If you don\'t understand something right away, that\'s OK. Search for an answer online, and if you don\'t find it, ask on our Discord.","sidebar":"bscSideBar"},"hardhat":{"id":"hardhat","title":"Using Hardhat","description":"What is Hardhat"},"hardhat-new":{"id":"hardhat-new","title":"Using Hardhat for Deploying Smart Contracts on BSC","description":"In this tutorial, we explain step-by-step how to create, compile and deploy a simple smart contract on the BSC Testnet using Hardhat.","sidebar":"bscSideBar"},"issue-BEP20":{"id":"issue-BEP20","title":"Issue BEP20 Tokens","description":"This document provides a brief walk through on how to issue BEP20 tokens on the BNB Smart Chain. For this tutorial we have used Remix IDE and Metamask Wallet. Further, in this guide, we provide steps for issuing BEP20 tokens on the BSC Testnet, however, the steps for mainnet are also the same.","sidebar":"bscSideBar"},"keys":{"id":"keys","title":"keys","description":"Introduction"},"learn/beaconIntro":{"id":"learn/beaconIntro","title":"Introduction","description":"BNB Beacon Chain is a blockchain developed by its community that implements the staking and governance layer of BNB ecosystem. It has a flexible set of native assets and pluggable modules for governance, staking and etc. It uses Tendermint for consensus and app logic is built upon Cosmos SDK. It targets fast block times, a native dApp layer and multi-token support with no smart contract VM.","sidebar":"bscSideBar"},"learn/bsc-gov":{"id":"learn/bsc-gov","title":"Governance of BSC","description":"Introduction","sidebar":"bscSideBar"},"learn/bsc-relayer":{"id":"learn/bsc-relayer","title":"BSC Relayer","description":"Relayers are responsible for submitting Cross-Chain Communication Packages between the two blockchains, BNB Smart Chain (BSC) and BNB Beacon Chain (BC). Due to the heterogeneous parallel chain structure, two different types of Relayers are created.","sidebar":"bscSideBar"},"learn/consensus":{"id":"learn/consensus","title":"Parlia Consensus Engine","description":"Although Proof-of-Work (PoW) has been recognized as a practical mechanism to implement a decentralized network, it is not friendly to the environment and also requires a large size of participants to maintain the security.","sidebar":"bscSideBar"},"learn/cross-chain":{"id":"learn/cross-chain","title":"Cross-Chain Communication","description":"Cross-chain communication is the key foundation to allow the community to take advantage of the dual chain structure:","sidebar":"bscSideBar"},"learn/cross-chain-api":{"id":"learn/cross-chain-api","title":"Cross-Chain API","description":"To facilitate querying cross chain transactions between BNB Beacon Chain and BNB Smart Chain, following APIs are provided.","sidebar":"bscSideBar"},"learn/cross-chain-bridges":{"id":"learn/cross-chain-bridges","title":"Cross-Chain Bridges","description":"The ability to transfer tokens cross-chain is an essential need. This allows users to transfer their funds from one blockchain network to another. Keeping the importance of cross-chain support in mind, multiple networks now have their respective \\"bridges\\" to help in easy fund transfers. Following is a list of bridges and exchanges that support cross-chain transfer of BSC with other tokens.","sidebar":"bscSideBar"},"learn/ecosystem":{"id":"learn/ecosystem","title":"BNB Chain Development Tools","description":"In order to check the latest updates on the ecosystem of BNB Chain, visit our official GitHub Page.","sidebar":"bscSideBar"},"learn/genesis":{"id":"learn/genesis","title":"Genesis File","description":"In this section, we explain how the genesis file of the BNB Smart Chain is structured."},"learn/gnosis":{"id":"learn/gnosis","title":"Gnosis Safe Multisig on BNB Smart Chain","description":"Introduction","sidebar":"bscSideBar"},"learn/incentives":{"id":"learn/incentives","title":"Incentive Mechanism","description":"The BSC relayers play an important role in relaying interchain packages from BC to BSC.","sidebar":"bscSideBar"},"learn/intro":{"id":"learn/intro","title":"Introduction","description":"BNB Smart Chain is an innovative solution to bring programmability and interoperability to BNB Beacon Chain. BNB Smart Chain relies on a system of 55 validators with Proof of Staked Authority (PoSA) consensus that can support short block time and lower fees. The most bonded validator candidates of staking will become validators and produce blocks. The double-sign detection, malicious vote detection and other slashing logic guarantee security, stability, and chain finality.","sidebar":"bscSideBar"},"learn/oracle-module":{"id":"learn/oracle-module","title":"Oracle on BNB Beacon Chain","description":"The Oracle module is a common module like the Governance module which is used to handle prophecy and claim. Prophecy means the validators want to reach a consensus on something, like cross chain transfer. Claim is raised by a validator and the content of claim is the cross chain transfer. When most of the validators (like 70%) claim the same thing on the prophecy, the winning claim will be executed.For oracle module is a common module, other module which depends on oracle module will register claim type and related hooks checking and handling claim. Each claim type has a sequence, oracle module should process prophecy and claim by sequence. When one prophecy is executed successfully, the sequence of the claim type will be increased by one.","sidebar":"bscSideBar"},"learn/oracle-relayer":{"id":"learn/oracle-relayer","title":"Oracle Relayer","description":"The relayer is a service which monitors events on BSC, builds and broadcasts transactions to BC. Each validator operator should maintain its own relayer service. The relayer service requires to have access to the validator operator private key. All relayer service independently witness the peggy contract events, then build transactions to claim events to BC oracle module.","sidebar":"bscSideBar"},"learn/system-contract":{"id":"learn/system-contract","title":"Build-in System Contract","description":"GitHub Implementation link:","sidebar":"bscSideBar"},"link":{"id":"link","title":"BNB Smart Chain Price Feeds from Chainlink","description":"Introduction to Price Feeds"},"manual":{"id":"manual","title":"How to Manually Install Binance Extension Wallet","description":"Download the zip file","sidebar":"bscSideBar"},"mev/builder-integration":{"id":"mev/builder-integration","title":"Integration Guide for Builder","description":"The Builder API Specification","sidebar":"bscSideBar"},"mev/faqs":{"id":"mev/faqs","title":"FAQs","description":"1. Do builders fetch the in-turn proposer\'s GasCeil to build block\uff1f","sidebar":"bscSideBar"},"mev/overview":{"id":"mev/overview","title":"Overview","description":"The BSC network has introduced the [Builder API","sidebar":"bscSideBar"},"mev/validator-integration":{"id":"mev/validator-integration","title":"Integration Guide for Validator","description":"Decison Make","sidebar":"bscSideBar"},"migration/evm-chains/chain-comparison":{"id":"migration/evm-chains/chain-comparison","title":"BNB Smart Chain vs Polygon - Comparing the Differences","description":"Launched in 2020, BNB Smart Chain quickly gained a lot of popularity due to its distinguishing features of low cost and faster transactions. Several projects that are based on other blockchain platforms are migrating to the BNB Chain platform. In this article, we provide a comparison of BNB Chain with other EVM Chains, to help the readers make sound decisions when migrating their projects from other EVM Chains to BNB Chain.","sidebar":"bscSideBar"},"migration/evm-chains/token-comparison":{"id":"migration/evm-chains/token-comparison","title":"Token Standard Comparison","description":"Over the few years, blockchain technology has evolved with respect to several different features like design, infrastructure, working mechanism, etc. However, with new platforms offering much more attractive features, it is common for blockchain-based projects, aka decentralized applications (dApps) and crypto tokens, to migrate from one blockchain to another.","sidebar":"bscSideBar"},"migration/evm-chains/token-migration":{"id":"migration/evm-chains/token-migration","title":"Migrate Tokens From Polygon to BSC","description":"In this article, we\'ll discuss how to migrate deployed tokens from Polygon to BSC and also the migration of vested tokens.","sidebar":"bscSideBar"},"migration/non-evm-chains/solana/architecture-comparison":{"id":"migration/non-evm-chains/solana/architecture-comparison","title":"BNB Chain and Solana Architecture Differences","description":"This document covers the architectural differences between BNB Chain and Solana blockchain, providing an overview to developers aiming to migrate their projects from Solana to BNB Chain ecosytem.","sidebar":"bscSideBar"},"migration/non-evm-chains/solana/token-migration":{"id":"migration/non-evm-chains/solana/token-migration","title":"Token Migration from Solana to BNB Smart Chain","description":"Blockchain technology has gained superlative popularity over time, proving that it is here to stay. This popularity has resulted in a multitude of blockchain platforms that offer unique features for dapp development. As every blockchain platform has its pros and cons and differs from each other in terms of the underlying architecture, working mechanisms, etc., it is possible for blockchain-based projects and crypto tokens to migrate from one blockchain platform to another. For instance, from Solana to BNB Smart Chain (BSC), for better user experience by leveraging the innovative features of BSC.","sidebar":"bscSideBar"},"mirror":{"id":"mirror","title":"Mirror BEP2 and BEP20 Token","description":"Pre-requisites","sidebar":"bscSideBar"},"more-help":{"id":"more-help","title":"More Help","description":"There is a \\\\#validator-support Discord channel available to reach other testnet participants.","sidebar":"bscSideBar"},"nft_blackide":{"id":"nft_blackide","title":"Using Black IDE to Deploy NFTs on BSC","description":"BSC supports different NFT standards like ERC-721 and ERC-1155. Both of these are two different token standards used for creating and managing non-fungible tokens (NFTs).","sidebar":"bscSideBar"},"nft-metadata-standard":{"id":"nft-metadata-standard","title":"NFT Metadata Standard","description":"Implementing Token URI","sidebar":"bscSideBar"},"nft-storage":{"id":"nft-storage","title":"Storing NFTs on IPFS & Filecoin","description":"After the preview two tutorials, you must have learned how to write NFT smart contract and deploy it on BSC testNet. The most important part for any NFT project is that where your NFT assets are stored. If you want to avoid the risk of losing your NFT assets or not able to access them, storing your NFTs on decentralized network is the better option for you.","sidebar":"bscSideBar"},"oracles":{"id":"oracles","title":"Oracles","description":"Blockchain oracles are entities that connect blockchains to external systems, thereby enabling smart contracts to execute based upon inputs and outputs from the real world. Simply put, oracles provide a mechanism for the decentralized Web3 ecosystem to access existing data sources, legacy systems, and advanced computations.","sidebar":"bscSideBar"},"overview":{"id":"overview","title":"BNB Chain: An Ecosystem of Blockchains","description":"Build N Build Chain aka BNB Chain, one of the most popular blockchains in the world, dedicates to delivering its core infrastructure necessary for future public adoption, and always remains as a community-first and open-source ecosystem built on a permissionless and decentralized environment.","sidebar":"bscSideBar"},"parameters":{"id":"parameters","title":"BNB Smart Chain Staking Parameters","description":"Staking Token","sidebar":"bscSideBar"},"proxy":{"id":"proxy","title":"Upgradeable BEP20 Contracts on BSC","description":"What are Upgradeable Contracts?","sidebar":"bscSideBar"},"remix-new":{"id":"remix-new","title":"Using Remix IDE for Deploying Smart Contracts on BSC","description":"In this tutorial, we provide guidelines on how to create, compile, and deploy a simple Hello World smart contract on BSC using the Remix IDE.","sidebar":"bscSideBar"},"replit":{"id":"replit","title":"Using Replit IDE for Deploying Smart Contracts on BSC","description":"Replit is a coding platform that allows you to write code and host apps. Replit supports Solidity programming language and provides all of the features and functionality that are required by Web3 developers for creating and deploying smart contracts.","sidebar":"bscSideBar"},"rpc":{"id":"rpc","title":"JSON-RPC Endpoint","description":"JSON-RPC endpoints refers to the network location where a program could transfer its RPC requests to access server data. Once you connect a decentralized application to an RPC endpoint, you can access the functionalities of different operations, which could enable real-time usage of blockchain data. BNB Chain provides several RPC endpoints for connectinto both its Minent and Testnet. In this section, we list the JSON-RPC endpoints that can be used for connecting to BNB Smart Chain.","sidebar":"bscSideBar"},"stake/cli-commands":{"id":"stake/cli-commands","title":"CLI Commands","description":"In order to run the CLI commands related to staking and delegation, it important to first download the bnbcli and tbnbcli binaries.","sidebar":"bscSideBar"},"stake/Staking":{"id":"stake/Staking","title":"Staking","description":"BNB Smart Chain is an innovative solution to bring programmability and interoperability to BNB Beacon Chain. BNB Smart Chain relies on a system of 50 validators with Proof of Staked Authority (PoSA) consensus that can support short block time and lower fees. The most bonded validator candidates of staking will become validators and produce blocks. The double-sign detection and other slashing logic guarantee security, stability, and chain finality.","sidebar":"bscSideBar"},"staking-with-ext-wallet":{"id":"staking-with-ext-wallet","title":"Staking with BNB Chain Wallet","description":"How to Delegate Your BNB with Binance Extension Wallet","sidebar":"bscSideBar"},"submit-dapp":{"id":"submit-dapp","title":"Join BNB Ecosystem and Get More Exposure","description":"There are several ways to share your project with BNBChain Ecosystem or seeking for cooperations.","sidebar":"bscSideBar"},"sync":{"id":"sync","title":"Sync BEP2 and BEP20 Token Supply","description":"Prerequisite","sidebar":"bscSideBar"},"token-bind-tool":{"id":"token-bind-tool","title":"token-bind-tool","description":"Tool to bind BEP2 tokens and BEP20 tokens. please refer to document for detail bind mechanism. Github repo for bind token tool here."},"tokens":{"id":"tokens","title":"Asset Management","description":"Introduction"},"tokens-cross-chain":{"id":"tokens-cross-chain","title":"Cross-chain Token Management","description":"The dual-chain architecture of BNB Beacon Chain & BNB Smart Chain empowers you to build your own decentralized apps. The native cross-chain communication mechanism allows tokens to be transferred between BC and BSC easily.","sidebar":"bscSideBar"},"trading-spec":{"id":"trading-spec","title":"Binance DEX Trading Specification","description":"Orders"},"truffle":{"id":"truffle","title":"Using Truffle","description":"Setting up the development environment"},"truffle-new":{"id":"truffle-new","title":"Using Truffle for Deploying Smart Contracts on BSC","description":"In this tutorial, you will learn to create, compile and deploy smart contract on the BNB Smart Chain network using the Truffle IDE.","sidebar":"bscSideBar"},"upgrade-fullnode":{"id":"upgrade-fullnode","title":"How to Upgrade Geth","description":"Updating geth is as easy as it gets. You just need to download and install the newer version of geth, shutdown your node and restart with the new software. Geth will automatically use the data of your old node and sync the latest blocks that were mined since you shutdown the old software."},"validator/bc-slashing":{"id":"validator/bc-slashing","title":"Slashing","description":"Slashing"},"validator/best-practice":{"id":"validator/best-practice","title":"BNB Smart Chain (BSC) Node Configuration: Best Practices","description":"Hardware Specifications","sidebar":"bscSideBar"},"validator/create-val":{"id":"validator/create-val","title":"Create Validator","description":"Create a mining account","sidebar":"bscSideBar"},"validator/docker":{"id":"validator/docker","title":"How to Run A Fullnode Using BSC Docker Image","description":"Resources","sidebar":"bscSideBar"},"validator/fullnode":{"id":"validator/fullnode","title":"How to Run A Fullnode on BNB Smart Chain","description":"Fullnodes Functions","sidebar":"bscSideBar"},"validator/monitor-and-query-slash":{"id":"validator/monitor-and-query-slash","title":"Monitoring","description":"Monitoring Slash Contract","sidebar":"bscSideBar"},"validator/node-maintenance":{"id":"validator/node-maintenance","title":"Node Maintainence","description":"Binary","sidebar":"bscSideBar"},"validator/overview":{"id":"validator/overview","title":"Overview","description":"BNB Smart Chain is an innovative solution to bring programmability and interoperability to BNB Beacon Chain. BNB Smart Chain relies on a system of 56 validators with Proof of Staked Authority (PoSA) consensus that can support short block time and lower fees. The most bonded validator candidates of staking will become validators and produce blocks. The double-sign detection and other slashing logic guarantee security, stability, and chain finality.","sidebar":"bscSideBar"},"validator/Penalty-overview":{"id":"validator/Penalty-overview","title":"Overview","description":"Slashing is part of the on-chain governance, to ensure the malicious or negative behaviors are punished. BSC slash can be submitted by anyone. The transaction submission requires slash evidence and costs fees but also brings a larger reward when it is successful.","sidebar":"bscSideBar"},"validator/run-val":{"id":"validator/run-val","title":"Run Validator","description":"Validator Hardware Requirements","sidebar":"bscSideBar"},"validator/security":{"id":"validator/security","title":"Securing the Validators","description":"Each validator candidate is encouraged to run its operations independently, as diverse setups increase the resilience of the network. Due to the high amount invested by validators it is highly essential to protect them against different DoS and DDoS attacks. In this section, we discuss the security mechanism adopted by BSC for its validators."},"validator/send-slash-evidence":{"id":"validator/send-slash-evidence","title":"How to send BSC Slash Evidence","description":"Double Sign","sidebar":"bscSideBar"},"validator/slash-fee":{"id":"validator/slash-fee","title":"Slashing Fee and Evidence Validation","description":"Double Sign","sidebar":"bscSideBar"},"validator/unjail":{"id":"validator/unjail","title":"Unjail","description":"Jailed validator nodes due to their malicious or bad behavior, may request for release by sending side-unjail transactions provided they passed initial validation. After release, to re-join the validator set again, the validator must wait for the following UTC 0:00. The fees to unjail a smart contract validator is 1 BNB_**. Whereas, the fee for submitting a byzantine behavior evidence of a validator is 10 BNB_.","sidebar":"bscSideBar"},"validator/upgrade-fullnode":{"id":"validator/upgrade-fullnode","title":"How to Upgrade Geth","description":"Updating geth is as easy as it gets. You just need to download and install the newer version of geth, shutdown your node and restart with the new software. Geth will automatically use the data of your old node and sync the latest blocks that were mined since you shut down the old software.","sidebar":"bscSideBar"},"venly-nft-api":{"id":"venly-nft-api","title":"Using Venly NFT-API to Mint NFTs on BSC","description":"Minting NFTs on Binance Smart Chain","sidebar":"bscSideBar"},"verify":{"id":"verify","title":"How to Verify Your Contract on BscScan","description":"Step 1: Deploy your contract on BNB Smart Chain","sidebar":"bscSideBar"},"verify-proxy":{"id":"verify-proxy","title":"How to Verify Proxy Contract","description":"In this section, we provide a quick guide on how to verify a deployed BEP20 proxy contract.","sidebar":"bscSideBar"},"Wallet":{"id":"Wallet","title":"Wallet Guide","description":"What is a Wallet?","sidebar":"bscSideBar"},"wallet_api":{"id":"wallet_api","title":"Binance Extension Wallet API","description":"Binance Extension Wallet injects a global API into websites visited by its users at window.BinanceChain.","sidebar":"bscSideBar"},"wallet/AlphaWallet":{"id":"wallet/AlphaWallet","title":"How to Use AlphaWallet for BNB Smart Chain on Your Mobile","description":"Install","sidebar":"bscSideBar"},"wallet/arkane-developer":{"id":"wallet/arkane-developer","title":"Wallet provider for Dapps","description":"A wallet provider is a service that allows DApps to provide wallets to their end-users without having to deal with key management\'s security concerns. It is a great way to prepare your Dapp for onboarding a more mainstream audience."},"wallet/binance-cn":{"id":"wallet/binance-cn","title":"\u5e01\u5b89\u94fe\u63d2\u4ef6\u94b1\u5305\u6307\u5357","description":"\u5e01\u5b89\u94fe\u63d2\u4ef6\u94b1\u5305\u662f\u4ec0\u4e48?"},"wallet/bnb-chain-wallet":{"id":"wallet/bnb-chain-wallet","title":"BNB Chain Wallet","description":"What is it?"},"wallet/coin98wallet":{"id":"wallet/coin98wallet","title":"How to create BNB Smart Chain Wallet on Coin98 Wallet","description":"Users are able to store, send & receive BNB, the native token of BNB Smart Chain and BEP20 tokens on Coin98 Wallet","sidebar":"bscSideBar"},"wallet/create-wallet":{"id":"wallet/create-wallet","title":"Key Management","description":"This article is a guide about key management strategy on client side of your Decentralised Application on BNB Smart Chain"},"wallet/extension/add-account":{"id":"wallet/extension/add-account","title":"How does Add Account Work","description":"BIP39"},"wallet/extension/add-asset":{"id":"wallet/extension/add-asset","title":"How to Add a Token","description":"How to Add Pegged Token"},"wallet/extension/direct":{"id":"wallet/extension/direct","title":"[Wallet Direct](https://www.binance.com/en/wallet-direct) User Guide","description":"Key Features"},"wallet/extension/ledger":{"id":"wallet/extension/ledger","title":"How to use Ledger with Binance Extension Wallet","description":"Binance Extension Wallet v1.121.1 is released and verified on Firefox and Chrome with Ledger Nano S"},"wallet/extension/reset":{"id":"wallet/extension/reset","title":"How to Reset My Password or Import an Account","description":"When resetting your password for your Binance Extension wallet, you will need your 12 or 24 word seed phrase. If you do not already have your seed phrase saved someplace safe, please make sure to read How to Reveal Your Seed Phrase"},"wallet/extension/safe":{"id":"wallet/extension/safe","title":"How to stay safe","description":"Wallets are a bit of a shift in thinking. Financial freedom and the ability to access and use funds anywhere comes with a bit of responsibility \u2013 there\u2019s no customer support in crypto."},"wallet/extension/seed":{"id":"wallet/extension/seed","title":"How to Reveal Your Seed Phrase","description":"When dealing with cryptocurrencies or crypto assets like BNB or BUSD, it is important to always be aware of and have your private keys, seed phrases and passwords backed up in case the unexpected occurs."},"wallet/faq":{"id":"wallet/faq","title":"Binance Extension Wallet FAQ","description":"Tokens not visible after withdrawing from Binance"},"wallet/infinitywallet":{"id":"wallet/infinitywallet","title":"Using Infinity Wallet on the BNB Smart Chain","description":"What is it?","sidebar":"bscSideBar"},"wallet/ledger":{"id":"wallet/ledger","title":"Ledger Hardware Wallet","description":"BNB and coins on BNB Smart Chain are supported by the Ledger Nano S hardware wallet. The following describes how to use Ledger Nano S to connect to BSC","sidebar":"bscSideBar"},"wallet/math":{"id":"wallet/math","title":"How to use Math Wallet for BNB Smart Chain","description":"Install","sidebar":"bscSideBar"},"wallet/math-resource":{"id":"wallet/math-resource","title":"Math Wallet Tutorials","description":"1. BNB Smart Chain \u65b0\u624b\u6307\u5357"},"wallet/metamask":{"id":"wallet/metamask","title":"Use MetaMask For BNB Smart Chain","description":"!!! Tip","sidebar":"bscSideBar"},"wallet/myetherwallet":{"id":"wallet/myetherwallet","title":"MyEtherWallet","description":"Connect to MetaMask on MEW","sidebar":"bscSideBar"},"wallet/staking":{"id":"wallet/staking","title":"Staking with BNB Chain Wallet","description":"How to Delegate Your BNB with the BNB Chain Wallet","sidebar":"bscSideBar"},"wallet/trezor":{"id":"wallet/trezor","title":"Using Trezor Wallet with BNB Smart Chain","description":"BNB and coins on BNB Smart Chain are supported by the Trezor hardware wallet. The following describes how to use Trezor to connect to BSC.","sidebar":"bscSideBar"},"wallet/trustwallet":{"id":"wallet/trustwallet","title":"Using Trust Wallet for BNB Smart Chain","description":"What is Trust Wallet?","sidebar":"bscSideBar"},"wallet/venly":{"id":"wallet/venly","title":"How to create a BSC wallet with Venly","description":"If you are looking for a user-friendly BNB Smart Chain wallet, consider creating a Venly Wallet. It allows you to enable the recovery mechanism and comes with end-user support via their in-app chat, making sure you are never lost in the wonderful land of cryptocurrency.","sidebar":"bscSideBar"},"wallet/wallet_api":{"id":"wallet/wallet_api","title":"Binance Extension Wallet API","description":"Binance Extension Wallet injects a global API into websites visited by its users at window.BinanceChain."},"wallet/withdraw-cn":{"id":"wallet/withdraw-cn","title":"\u5982\u4f55\u627e\u56de\u60a8\u63d0\u73b0BEP20 \u800c\u8bef\u9009ERC20 \u7684Token\uff1f","description":"\u80cc\u666f"},"wallet/withdraw-en":{"id":"wallet/withdraw-en","title":"How to recover if you choose the wrong network type?","description":"Background"},"wallets/tutorial/bep8":{"id":"wallets/tutorial/bep8","title":"bep8","description":"In this article, we are going to take a tour about how to manage your BEP8 tokens in BNB Chain Testnet web wallet."},"wallets/tutorial/BSCimToken":{"id":"wallets/tutorial/BSCimToken","title":"How to use BNB Smart Chain (BSC) on imToken?","description":"An introduction on how to start with using BSC on the imToken wallet","sidebar":"bscSideBar"},"wallets/tutorial/how-to-create-a-wallet-on-trustwallet":{"id":"wallets/tutorial/how-to-create-a-wallet-on-trustwallet","title":"How to Create Your Wallet with Trust Wallet","description":"Step 1. To get the latest Trust Wallet App you should follow one of the download links on our website trustwallet.com."},"wallets/tutorial/how-to-trade-on-binance-dex":{"id":"wallets/tutorial/how-to-trade-on-binance-dex","title":"How to Trade on Binance DEX","description":"1) Go to www.binance.org"},"wallets/tutorial/ledger-nano-s-usage-guide":{"id":"wallets/tutorial/ledger-nano-s-usage-guide","title":"Ledger Nano S Usage Guide","description":"This guide will show you how to use your Ledger Nano S hardware wallet with BNB Beacon Chain and Binance DEX."},"wallets/tutorial/trezor-model-t-user-guide":{"id":"wallets/tutorial/trezor-model-t-user-guide","title":"Trezor User Guide","description":"This guide will show you how to use your Trezor Model T hardware wallet with BNB Beacon Chain and Binance DEX."},"wallets/tutorial/videos":{"id":"wallets/tutorial/videos","title":"Video Tutorials","description":"1. Cool Wallet: YouTube"},"wallets/wallet-tutorial-overview":{"id":"wallets/wallet-tutorial-overview","title":"Tutorials on Using Third-Party Wallets on BNB Smart Chain","description":"BNB Smart Chain offers extensive support of third-party wallets that can be used for sending/receiving/buying/exchanging/staking BNB Tokens. Below we provide a list of the most popular wallets.","sidebar":"bscSideBar"},"wallets/walletconnect-support":{"id":"wallets/walletconnect-support","title":"Wallets with WalletConnect Support","description":"* List of Wallets Supporting WalletConnect on BNB Chain"},"wallets/wallets":{"id":"wallets/wallets","title":"Wallet Support","description":"* List of Wallets Supporting BNB Beacon Chain Mainnet"}}}')}}]); \ No newline at end of file diff --git a/assets/js/dcec6889.3e18e7ab.js b/assets/js/dcec6889.3e18e7ab.js new file mode 100644 index 0000000000..aa95cec1c2 --- /dev/null +++ b/assets/js/dcec6889.3e18e7ab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeta_BNB_Docs=self.webpackChunkbeta_BNB_Docs||[]).push([[3231],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>d});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),c=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(a),h=o,d=u["".concat(l,".").concat(h)]||u[h]||m[h]||i;return a?n.createElement(d,r(r({ref:t},p),{},{components:a})):n.createElement(d,r({ref:t},p))}));function d(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=a.length,r=new Array(i);r[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,r[1]=s;for(var c=2;c{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>m,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var n=a(87462),o=(a(67294),a(3905));const i={sidebar_label:"Using Black IDE",hide_table_of_contents:!1,sidebar_position:2},r="Using Black IDE to Deploy NFTs on BSC",s={unversionedId:"nft_blackide",id:"nft_blackide",title:"Using Black IDE to Deploy NFTs on BSC",description:"BSC supports different NFT standards like ERC-721 and ERC-1155. Both of these are two different token standards used for creating and managing non-fungible tokens (NFTs).",source:"@site/docs/nft_blackide.md",sourceDirName:".",slug:"/nft_blackide",permalink:"/docs/nft_blackide",draft:!1,editUrl:"https://github.com/bnb-chain/bnb-chain.github.io/blob/master/docs/nft_blackide.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_label:"Using Black IDE",hide_table_of_contents:!1,sidebar_position:2},sidebar:"bscSideBar",previous:{title:"Using Truffle",permalink:"/docs/ERC721"},next:{title:"Using Venly",permalink:"/docs/venly-nft-api"}},l={},c=[{value:"Learning Takeaways",id:"learning-takeaways",level:2},{value:"Technology Stack Details",id:"technology-stack-details",level:2},{value:"Brief Introduction Tech Stack",id:"brief-introduction-tech-stack",level:2},{value:"Setting up the Environment",id:"setting-up-the-environment",level:2},{value:"Login into Black IDE",id:"login-into-black-ide",level:2},{value:"Create New Project",id:"create-new-project",level:2},{value:"Smart Contract Creation",id:"smart-contract-creation",level:2},{value:"Writing Smart Contract Code",id:"writing-smart-contract-code",level:2},{value:"Edit default project settings",id:"edit-default-project-settings",level:2},{value:"Connect the Black IDE to the BSC Testnet",id:"connect-the-black-ide-to-the-bsc-testnet",level:2},{value:"Acquire BNB Test Tokens",id:"acquire-bnb-test-tokens",level:2},{value:"Deploy Smart Contract on BSC Testnet",id:"deploy-smart-contract-on-bsc-testnet",level:2},{value:"Interact with deployed smart contract and Mint NFTs",id:"interact-with-deployed-smart-contract-and-mint-nfts",level:2},{value:"Mint NFTs",id:"mint-nfts",level:2},{value:"View Your NFTs in Metamask Wallet",id:"view-your-nfts-in-metamask-wallet",level:2},{value:"Conclusion",id:"conclusion",level:2}],p={toc:c},u="wrapper";function m(e){let{components:t,...a}=e;return(0,o.kt)(u,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"using-black-ide-to-deploy-nfts-on-bsc"},"Using Black IDE to Deploy NFTs on BSC"),(0,o.kt)("p",null,"BSC supports different NFT standards like ERC-721 and ERC-1155. Both of these are two different token standards used for creating and managing non-fungible tokens (NFTs)."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"ERC-721:")," ERC-721 is a well-established Ethereum token standard for NFTs. Each ERC-721 token is unique and distinct, making it ideal for representing one-of-a-kind assets, such as digital art or collectibles. These tokens cannot be subdivided and are typically used for single, indivisible assets.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"ERC-1155:")," ERC-1155 is a more versatile token standard, designed to support both fungible and non-fungible tokens within a single contract. It allows developers to create a range of token types, making it more efficient for managing a variety of assets, from unique NFTs to fungible tokens like in-game currency. This standard reduces the gas costs associated with deploying multiple contracts for different token types."))),(0,o.kt)("p",null,"The major differences between them are:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Uniqueness:")," ERC-721 tokens are unique and represent one distinct asset, while ERC-1155 tokens can represent both unique and fungible assets within the same contract.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Gas Efficiency:")," ERC-1155 is more gas-efficient because it allows multiple types of tokens to be managed in a single contract, reducing the overhead of deploying multiple contracts for different token types.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Use Cases:")," ERC-721 is typically used for one-of-a-kind NFTs, whereas ERC-1155 is suitable for projects requiring a combination of unique and fungible tokens, like blockchain-based games with various in-game items and currencies.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Interoperability:")," ERC-721 is widely used on Ethereum, while ERC-1155 is more commonly associated with the Binance Smart Chain, but it can also be deployed on Ethereum and other blockchains, making it a more flexible option for developers.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Flexibility:")," ERC-1155 offers more flexibility in designing token ecosystems because it can support a broader range of token types, allowing developers to adapt to various project requirements."))),(0,o.kt)("p",null,"In this tutorial, we provide a step-by-step guide to the readers on how to issue Non-fungible tokens (NFTs) (ERC721/1155) on the BNB Smart Chain (BSC) Testnet using the Black IDE. This is a detailed guide to learning how to issue, mint and transfer NFTs on the BSC Testnet. The technology stack used in this tutorial includes Solidity, Truffle, MetaMask, and BlackIDE. "),(0,o.kt)("h2",{id:"learning-takeaways"},"Learning Takeaways"),(0,o.kt)("p",null,"This tutorial will help you gain knowledge on the following learning points:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Using BlackIDE for smart contract development;"),(0,o.kt)("li",{parentName:"ul"},"Managing Keypairs and Funding BNB Tokens to your account on BlackIDE;"),(0,o.kt)("li",{parentName:"ul"},"MetaMask Wallet connectivity to BSC Testnet;"),(0,o.kt)("li",{parentName:"ul"},"Smart-contract development;"),(0,o.kt)("li",{parentName:"ul"},"Issuing, minting, and transferring NFTs;")),(0,o.kt)("h2",{id:"technology-stack-details"},"Technology Stack Details"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"BlackIDE v0.15.4"),(0,o.kt)("li",{parentName:"ul"},"Truffle v5.5.19 (core: 5.5.19)"),(0,o.kt)("li",{parentName:"ul"},"MetaMask Wallet v10.16.1"),(0,o.kt)("li",{parentName:"ul"},"Docker v20.10.14")),(0,o.kt)("h2",{id:"brief-introduction-tech-stack"},"Brief Introduction Tech Stack"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Solidity:")," one of the most popular object-oriented high-level smart contract programming languages. For more details on Solidity, refer here."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"MetaMask Wallet Browser Extension:")," we recommend using the Metamask Chrome extension. It is a web wallet that allows connecting the chrome browser to any valid blockchain network."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Black IDE:")," Black IDE is an integrated development environment (IDE), making developing EVM-compatible smart contracts faster and easier. Black IDE offers both desktop and web (Black IDE Web) applications.")),(0,o.kt)("h2",{id:"setting-up-the-environment"},"Setting up the Environment"),(0,o.kt)("p",null,"We aim to keep this tutorial as simple as possible and hence tend to use as minimal resources as possible and have used the following tools in this tutorial."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Metamask Wallet"),(0,o.kt)("li",{parentName:"ul"},"Ensure that you have the Metamask Wallet extension installed and running on our browser."),(0,o.kt)("li",{parentName:"ul"},"Configure the Metamask wallet for use with the BSC Testnet. Use the following details to add the BSC Testnet. For further details, refer here."),(0,o.kt)("li",{parentName:"ul"},"Network Name: BSC Testnet"),(0,o.kt)("li",{parentName:"ul"},"RPC URL: ",(0,o.kt)("a",{parentName:"li",href:"https://data-seed-prebsc-1-s1.bnbchain.org:8545"},"https://data-seed-prebsc-1-s1.bnbchain.org:8545")),(0,o.kt)("li",{parentName:"ul"},"Chain ID: 97"),(0,o.kt)("li",{parentName:"ul"},"Currency Symbol: BNB"),(0,o.kt)("li",{parentName:"ul"},"Block Explorer URL: <",(0,o.kt)("a",{parentName:"li",href:"https://testnet.bscscan.com"},"https://testnet.bscscan.com")," >"),(0,o.kt)("li",{parentName:"ul"},"Black IDE: both desktop app and web app are available and it is up to your convenience to choose from. For this tutorial, we used the desktop app as the web app lacks support for importing OpenZeppelin Contracts. "),(0,o.kt)("li",{parentName:"ul"},"Download/Install any dependencies required by BlackIDE")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177942609-e2c942a6-342c-46cd-b794-92fc8e72bdc0.png",alt:"image"})),(0,o.kt)("h2",{id:"login-into-black-ide"},"Login into Black IDE"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Open the Black IDE desktop application. We will be using it for compiling and deploying our smart contract for NFTs on the BSC Testnet.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Click on the Login button and authorize using your GitHub account."))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177942736-d3d79717-8952-4fc7-b7c2-b28dc978f277.png",alt:"image"})),(0,o.kt)("h2",{id:"create-new-project"},"Create New Project"),(0,o.kt)("ol",{start:3},(0,o.kt)("li",{parentName:"ol"},"Click on the New button next to the projects to create a new project. ")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://github.com/bnb-chain/bnb-chain.github.io/assets/93580180/ba585ff7-c774-4d87-beea-0abaa390f59e",alt:"image"})),(0,o.kt)("ol",{start:4},(0,o.kt)("li",{parentName:"ol"},"Specify the location where you want to save your project on your device, the project name, e.g. \u201cBSC-NFT\u201d, and select the project type from the dropdown list as \u201cBasics- ERC20, ERC721, & ERC1155 (v31+)\u201d. Then click the Create button to create the project.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177942969-a1e8170f-e806-44d5-9e9f-99e5cc2914f8.png",alt:"image"})),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},"Remember the smart contract in this tutorial is just a sample, you can always modify and be innovative.")),(0,o.kt)("h2",{id:"smart-contract-creation"},"Smart Contract Creation"),(0,o.kt)("ol",{start:6},(0,o.kt)("li",{parentName:"ol"},"Expand the contracts menu and delete the default files. ")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177948005-436776e5-07b4-4109-8b19-897925e623e4.png",alt:"image"})),(0,o.kt)("ol",{start:7},(0,o.kt)("li",{parentName:"ol"},"Right-click on the contracts menu and select New File. Specify a name for your file, e.g., BSC-NFT.sol, and then click Create button.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177943065-cc591abd-d856-4c9c-bbef-94b2e826af7f.png",alt:"image"})),(0,o.kt)("h2",{id:"writing-smart-contract-code"},"Writing Smart Contract Code"),(0,o.kt)("ol",{start:8},(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Copy the following code into your smart contract file. We have used the contract code from this ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/bnb-chain/bnb-chain-tutorial/blob/main/03-Using-BlackIDE-for-Deploying-NFTs/ERC721_NFT.sol"},"repo"),".")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Remember to change the ",(0,o.kt)("inlineCode",{parentName:"p"},"MINT_PRICE"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"MAX_SUPPLY"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"name"),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"symbol")," of the token as per your need. Also, remember to change the ",(0,o.kt)("inlineCode",{parentName:"p"},"_baseURI")," as per your token."))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177949895-a095fdb5-f770-4530-84f6-8854a0d7a5eb.png",alt:"image"})),(0,o.kt)("h2",{id:"edit-default-project-settings"},"Edit default project settings"),(0,o.kt)("ol",{start:10},(0,o.kt)("li",{parentName:"ol"},"Click on the config.json file to change the default setting. Change the main file name to the name of your contract, BSC-NFT.sol in our case. Similarly, change the name of the smart contract to deploy, BSCNFT.json in our case.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177948095-b6a905da-792c-47da-86d6-8a5d5db6a40b.png",alt:"image"})),(0,o.kt)("h2",{id:"connect-the-black-ide-to-the-bsc-testnet"},"Connect the Black IDE to the BSC Testnet"),(0,o.kt)("ol",{start:11},(0,o.kt)("li",{parentName:"ol"},"In order to connect the Black IDE to the BSC Testnet, click on the dropdown icon on the network menu in the top right corner and then select Testnet under the BNB Chain label.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177948186-e052e522-7069-4072-abae-fd0e6c819ee6.png",alt:"image"})),(0,o.kt)("ol",{start:12},(0,o.kt)("li",{parentName:"ol"},"Click on the ",(0,o.kt)("img",{parentName:"li",src:"https://user-images.githubusercontent.com/93580180/177943789-3557fde5-8805-4b03-ace8-05d2ace216c0.png",alt:"image"})," icon in the bottom left corner of the IDE to generate new keypair to perform transactions. You can skip this step if you already have generated a keypair. On the Keypair Manager, click on the CREATE button to generate new keypair.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944146-eb6e2f1e-95f0-4b00-8458-c8145b008d15.png",alt:"image"})),(0,o.kt)("ol",{start:13},(0,o.kt)("li",{parentName:"ol"},"Specify your desired name for the keypair, in our case BSC-Testnet-Key. Then click on the CREATE button. Remember to keep your private keys securely and not share them with anyone.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944170-fa9ed3bc-53d9-41f3-8a46-a07f56fee1d7.png",alt:"image"})),(0,o.kt)("h2",{id:"acquire-bnb-test-tokens"},"Acquire BNB Test Tokens"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Initially, the balance of a newly created key pair is 0.0 ETH. To get BNB test tokens, you can use the ",(0,o.kt)("a",{parentName:"p",href:"https://www.bnbchain.org/en/testnet-faucet/"},"BSC Testnet Faucet"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Copy your public address from the keypair manager"))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944290-d06f2f06-e256-4110-8936-809c0f78e0fa.png",alt:"image"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Paste this on the facet and acquire test tokens as required, as shown below. A green pop-up is displayed on the successful transfer of test tokens.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944333-ca8aefed-fec2-4271-aa3e-d2ccc301eb6c.png",alt:"image"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Close and re-open keypair manager to verify that the balance has been updated. Wait for approx. 1-2 mins for balance to get updated.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944370-3aa70613-be45-4558-8c83-aca1a00557c3.png",alt:"image"})),(0,o.kt)("h2",{id:"deploy-smart-contract-on-bsc-testnet"},"Deploy Smart Contract on BSC Testnet"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Select the appropriate Solidity compiler version from the bottom right corner of the IDE, Solc (0.8.4), ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944415-e733562a-54ad-4ed8-85a5-f17c79edfeac.png",alt:"image"})," in our case.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Click on the Build icon ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944483-ff523eed-017d-4265-b722-78ded06fe826.png",alt:"image"})," to build your smart contract. Upon successful build, the project navigation pane reflects a new folder named build. This folder contains contracts folder that has json files of the contracts built. All of the contracts imported in our BSCNFT contract are also built and imported as json files. "))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177948331-ece850ae-01fd-479b-b25f-d1f28c3400f6.png",alt:"image"})),(0,o.kt)("ol",{start:3},(0,o.kt)("li",{parentName:"ol"},"After successfully building your contract, it\u2019s time to deploy the contract. Click on the Deploy icon ",(0,o.kt)("img",{parentName:"li",src:"https://user-images.githubusercontent.com/93580180/177944540-10d86198-03f2-40d8-8ac0-c013483c6458.png",alt:"image"})," for deploying your smart contract. Specify the details for your contract, as shown below, then click on the Estimate & Deploy button. The wizard will auto-estimate and fill the gas limit for your contract. Then click the Deploy button. ")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944618-47b0fb1d-0ce3-4512-9b29-66f7a3416325.png",alt:"image"})),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944632-839f7ac5-c9d5-4d80-b6fe-0b6be2e6c3fb.png",alt:"image"})),(0,o.kt)("ol",{start:4},(0,o.kt)("li",{parentName:"ol"},"Deployment details will pop-up, as shown in the figure below.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944726-41c20038-1fc5-434a-b61f-be54f36f3ac6.png",alt:"image"})),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},"The status of the transaction will be updated to confirmed after the transaction is confirmed as shown in the figure below")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944768-dc622464-832f-4afd-8ccd-0529c675d46d.png",alt:"image"})),(0,o.kt)("ol",{start:6},(0,o.kt)("li",{parentName:"ol"},"You can also view this transaction by clicking on the transaction icon in the bottom left on the IDE.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944786-8b7f3e34-e562-406b-890e-dcc22d48313f.png",alt:"image"})),(0,o.kt)("h2",{id:"interact-with-deployed-smart-contract-and-mint-nfts"},"Interact with deployed smart contract and Mint NFTs"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"You can also interact with the contract using the different functions. Click on the Transactions Icon on the bottom-left corner of the IDE and then transaction of deployment of your smart contract. On the transaction details, click on the contract address to access the functions to interact with the smart contract. The left most column has all the Write Functions. The middle column has the View Functions and the right most column has the Events details.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177948835-197860e5-8f25-4692-bc34-467a997f98a1.png",alt:"image"})),(0,o.kt)("h2",{id:"mint-nfts"},"Mint NFTs"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"As per our smart contract, when the contract is deployed, unless the NFTs are minted they won\u2019t be visible in the wallet. ")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Create another keypair as defined previously. We will be issuing i.e. minting NFTs to the public address of this new keypair.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"To mint i.e. issue an NFT to a specific user we use the \u201csafeMint\u201d function of the deployed smart contract. As shown in Steps 1 and 2 in the figure below, navigate to the deployed contracts, then in the left-most column click the drop-down menu to view the list of write functions available for use with the deployed contract. Select the \u201csafeMint\u201d function. ")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Use the safeMint function to mint new NFTs to a specific user address. As shown in figure above, steps 3 to 6, enter the \u201cETH to send\u201d as the minting price of NFT, as per our smart contract the minting price is 50000000000000000 Wei, i.e., 0.05 ETH. We entered 0.06 ETH to cover the transaction charges as well. Then select the address to whom you want to issue (mint) an NFT to. Here, for the To address use the newly generated keypair in the section above. After this, click the transact button to execute the safeMint function. For the Signer, ensure that you are using the account that was used to deploy the smart contract. "))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177949113-3de5d538-852f-4a21-aa75-47d0231b6521.png",alt:"image"})),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},"To confirm what transfers have occurred, execute the Transfer event from the right most column. This will display the list of NFT transfers along with NFT token id, as shown in the figure below.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177945187-4e426ba2-a63f-4648-a259-fc9506ab5cb1.png",alt:"image"})),(0,o.kt)("ol",{start:6},(0,o.kt)("li",{parentName:"ol"},"To confirm owner of an NFT, use the ownerOf function. Pass the token id as input to the function, as illustrated in the figure below.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177945228-3a984146-dfa5-4a7b-9306-6258e9990f2a.png",alt:"image"})),(0,o.kt)("h2",{id:"view-your-nfts-in-metamask-wallet"},"View Your NFTs in Metamask Wallet"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"On the receiving end, the user can import the NFT token details into their Metamask wallet to view the assets. Please note that currently, Metamask Web Extension does not support the use of NFTs however, the mobile app version does support it. For the next steps to view the owned NFTs in your Metamask wallet, we will be using the Metamask Mobile Application.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Open Keypair manager on the Black IDE and copy the private key of the keypair that you minted i.e., transfer NFT."))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177945281-060b95ce-2912-49a2-aa5d-bbf848ba9688.png",alt:"image"})),(0,o.kt)("ol",{start:3},(0,o.kt)("li",{parentName:"ol"},"On the Metamask wallet mobile app, import an account using this key pair. Enter the private key copied in the previous step and click import.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177954799-b86dae87-5274-4408-9d0b-5b52682549d1.png",alt:"image"})),(0,o.kt)("ol",{start:4},(0,o.kt)("li",{parentName:"ol"},"After importing account, the next step is to add the BSC Testnet configuration to the wallet. Ensure that you are using the same account whose pubic address was issued the NFT.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177950571-4674930b-c8c6-4480-8808-ea587af2bb2d.png",alt:"image"})),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},"Ensure that your account is connected to the BSC Testnet. Also, ensure that you have enough BNB test tokens in your account. If not, you can use the BSC Testnet Faucet to acquire some, as mentioned earlier.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177945438-84033dff-6d51-4fe6-875b-3b12bfe815c1.png",alt:"image"})),(0,o.kt)("ol",{start:6},(0,o.kt)("li",{parentName:"ol"},"To view the owned NFT assets your Metamask Mobile Wallet, click on the NFTs tab and then on the Import Tokens. Fill in the NFT details. In the address field, pass the address of the deployed contract and in the Id field pass the tokenID. Then click the Import button.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177949365-52efd22c-25ac-4eac-b47e-82349d6b0a5c.png",alt:"image"})),(0,o.kt)("h2",{id:"conclusion"},"Conclusion"),(0,o.kt)("p",null,"In this tutorial, we provided a step-to-step guide on how to issue, mint and transfer NFTs on the BSC Testnet using the BlackIDE from Obsidian Labs.. The technology stack used in this tutorial includes Solidity, Truffle, MetaMask, and BlackIDE. Check out our ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/bnb-chain/bnb-chain-tutorial"},"GitHub")," for more tutorials on how to develop on BSC. If you have any questions or are stuck, reach out to us on our ",(0,o.kt)("a",{parentName:"p",href:"https://discord.com/channels/789402563035660308/912296662834241597"},"Discord Channel"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dcec6889.49a9deaa.js b/assets/js/dcec6889.49a9deaa.js deleted file mode 100644 index 65fe4b6cf5..0000000000 --- a/assets/js/dcec6889.49a9deaa.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkbeta_BNB_Docs=self.webpackChunkbeta_BNB_Docs||[]).push([[3231],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>d});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),c=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(a),h=o,d=u["".concat(l,".").concat(h)]||u[h]||m[h]||i;return a?n.createElement(d,r(r({ref:t},p),{},{components:a})):n.createElement(d,r({ref:t},p))}));function d(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=a.length,r=new Array(i);r[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,r[1]=s;for(var c=2;c{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>m,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var n=a(87462),o=(a(67294),a(3905));const i={sidebar_label:"Using Black IDE",hide_table_of_contents:!1,sidebar_position:2},r="Using Black IDE to Deploy NFTs on BSC",s={unversionedId:"nft_blackide",id:"nft_blackide",title:"Using Black IDE to Deploy NFTs on BSC",description:"BSC supports different NFT standards like ERC-721 and ERC-1155. Both of these are two different token standards used for creating and managing non-fungible tokens (NFTs).",source:"@site/docs/nft_blackide.md",sourceDirName:".",slug:"/nft_blackide",permalink:"/docs/nft_blackide",draft:!1,editUrl:"https://github.com/bnb-chain/bnb-chain.github.io/blob/master/docs/nft_blackide.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_label:"Using Black IDE",hide_table_of_contents:!1,sidebar_position:2},sidebar:"bscSideBar",previous:{title:"Using Truffle",permalink:"/docs/ERC721"},next:{title:"Storing NFT on IPFS & Filecoin",permalink:"/docs/nft-storage"}},l={},c=[{value:"Learning Takeaways",id:"learning-takeaways",level:2},{value:"Technology Stack Details",id:"technology-stack-details",level:2},{value:"Brief Introduction Tech Stack",id:"brief-introduction-tech-stack",level:2},{value:"Setting up the Environment",id:"setting-up-the-environment",level:2},{value:"Login into Black IDE",id:"login-into-black-ide",level:2},{value:"Create New Project",id:"create-new-project",level:2},{value:"Smart Contract Creation",id:"smart-contract-creation",level:2},{value:"Writing Smart Contract Code",id:"writing-smart-contract-code",level:2},{value:"Edit default project settings",id:"edit-default-project-settings",level:2},{value:"Connect the Black IDE to the BSC Testnet",id:"connect-the-black-ide-to-the-bsc-testnet",level:2},{value:"Acquire BNB Test Tokens",id:"acquire-bnb-test-tokens",level:2},{value:"Deploy Smart Contract on BSC Testnet",id:"deploy-smart-contract-on-bsc-testnet",level:2},{value:"Interact with deployed smart contract and Mint NFTs",id:"interact-with-deployed-smart-contract-and-mint-nfts",level:2},{value:"Mint NFTs",id:"mint-nfts",level:2},{value:"View Your NFTs in Metamask Wallet",id:"view-your-nfts-in-metamask-wallet",level:2},{value:"Conclusion",id:"conclusion",level:2}],p={toc:c},u="wrapper";function m(e){let{components:t,...a}=e;return(0,o.kt)(u,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"using-black-ide-to-deploy-nfts-on-bsc"},"Using Black IDE to Deploy NFTs on BSC"),(0,o.kt)("p",null,"BSC supports different NFT standards like ERC-721 and ERC-1155. Both of these are two different token standards used for creating and managing non-fungible tokens (NFTs)."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"ERC-721:")," ERC-721 is a well-established Ethereum token standard for NFTs. Each ERC-721 token is unique and distinct, making it ideal for representing one-of-a-kind assets, such as digital art or collectibles. These tokens cannot be subdivided and are typically used for single, indivisible assets.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"ERC-1155:")," ERC-1155 is a more versatile token standard, designed to support both fungible and non-fungible tokens within a single contract. It allows developers to create a range of token types, making it more efficient for managing a variety of assets, from unique NFTs to fungible tokens like in-game currency. This standard reduces the gas costs associated with deploying multiple contracts for different token types."))),(0,o.kt)("p",null,"The major differences between them are:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Uniqueness:")," ERC-721 tokens are unique and represent one distinct asset, while ERC-1155 tokens can represent both unique and fungible assets within the same contract.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Gas Efficiency:")," ERC-1155 is more gas-efficient because it allows multiple types of tokens to be managed in a single contract, reducing the overhead of deploying multiple contracts for different token types.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Use Cases:")," ERC-721 is typically used for one-of-a-kind NFTs, whereas ERC-1155 is suitable for projects requiring a combination of unique and fungible tokens, like blockchain-based games with various in-game items and currencies.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Interoperability:")," ERC-721 is widely used on Ethereum, while ERC-1155 is more commonly associated with the Binance Smart Chain, but it can also be deployed on Ethereum and other blockchains, making it a more flexible option for developers.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Flexibility:")," ERC-1155 offers more flexibility in designing token ecosystems because it can support a broader range of token types, allowing developers to adapt to various project requirements."))),(0,o.kt)("p",null,"In this tutorial, we provide a step-by-step guide to the readers on how to issue Non-fungible tokens (NFTs) (ERC721/1155) on the BNB Smart Chain (BSC) Testnet using the Black IDE. This is a detailed guide to learning how to issue, mint and transfer NFTs on the BSC Testnet. The technology stack used in this tutorial includes Solidity, Truffle, MetaMask, and BlackIDE. "),(0,o.kt)("h2",{id:"learning-takeaways"},"Learning Takeaways"),(0,o.kt)("p",null,"This tutorial will help you gain knowledge on the following learning points:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Using BlackIDE for smart contract development;"),(0,o.kt)("li",{parentName:"ul"},"Managing Keypairs and Funding BNB Tokens to your account on BlackIDE;"),(0,o.kt)("li",{parentName:"ul"},"MetaMask Wallet connectivity to BSC Testnet;"),(0,o.kt)("li",{parentName:"ul"},"Smart-contract development;"),(0,o.kt)("li",{parentName:"ul"},"Issuing, minting, and transferring NFTs;")),(0,o.kt)("h2",{id:"technology-stack-details"},"Technology Stack Details"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"BlackIDE v0.15.4"),(0,o.kt)("li",{parentName:"ul"},"Truffle v5.5.19 (core: 5.5.19)"),(0,o.kt)("li",{parentName:"ul"},"MetaMask Wallet v10.16.1"),(0,o.kt)("li",{parentName:"ul"},"Docker v20.10.14")),(0,o.kt)("h2",{id:"brief-introduction-tech-stack"},"Brief Introduction Tech Stack"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Solidity:")," one of the most popular object-oriented high-level smart contract programming languages. For more details on Solidity, refer here."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"MetaMask Wallet Browser Extension:")," we recommend using the Metamask Chrome extension. It is a web wallet that allows connecting the chrome browser to any valid blockchain network."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Black IDE:")," Black IDE is an integrated development environment (IDE), making developing EVM-compatible smart contracts faster and easier. Black IDE offers both desktop and web (Black IDE Web) applications.")),(0,o.kt)("h2",{id:"setting-up-the-environment"},"Setting up the Environment"),(0,o.kt)("p",null,"We aim to keep this tutorial as simple as possible and hence tend to use as minimal resources as possible and have used the following tools in this tutorial."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Metamask Wallet"),(0,o.kt)("li",{parentName:"ul"},"Ensure that you have the Metamask Wallet extension installed and running on our browser."),(0,o.kt)("li",{parentName:"ul"},"Configure the Metamask wallet for use with the BSC Testnet. Use the following details to add the BSC Testnet. For further details, refer here."),(0,o.kt)("li",{parentName:"ul"},"Network Name: BSC Testnet"),(0,o.kt)("li",{parentName:"ul"},"RPC URL: ",(0,o.kt)("a",{parentName:"li",href:"https://data-seed-prebsc-1-s1.bnbchain.org:8545"},"https://data-seed-prebsc-1-s1.bnbchain.org:8545")),(0,o.kt)("li",{parentName:"ul"},"Chain ID: 97"),(0,o.kt)("li",{parentName:"ul"},"Currency Symbol: BNB"),(0,o.kt)("li",{parentName:"ul"},"Block Explorer URL: <",(0,o.kt)("a",{parentName:"li",href:"https://testnet.bscscan.com"},"https://testnet.bscscan.com")," >"),(0,o.kt)("li",{parentName:"ul"},"Black IDE: both desktop app and web app are available and it is up to your convenience to choose from. For this tutorial, we used the desktop app as the web app lacks support for importing OpenZeppelin Contracts. "),(0,o.kt)("li",{parentName:"ul"},"Download/Install any dependencies required by BlackIDE")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177942609-e2c942a6-342c-46cd-b794-92fc8e72bdc0.png",alt:"image"})),(0,o.kt)("h2",{id:"login-into-black-ide"},"Login into Black IDE"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Open the Black IDE desktop application. We will be using it for compiling and deploying our smart contract for NFTs on the BSC Testnet.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Click on the Login button and authorize using your GitHub account."))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177942736-d3d79717-8952-4fc7-b7c2-b28dc978f277.png",alt:"image"})),(0,o.kt)("h2",{id:"create-new-project"},"Create New Project"),(0,o.kt)("ol",{start:3},(0,o.kt)("li",{parentName:"ol"},"Click on the New button next to the projects to create a new project. ")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://github.com/bnb-chain/bnb-chain.github.io/assets/93580180/ba585ff7-c774-4d87-beea-0abaa390f59e",alt:"image"})),(0,o.kt)("ol",{start:4},(0,o.kt)("li",{parentName:"ol"},"Specify the location where you want to save your project on your device, the project name, e.g. \u201cBSC-NFT\u201d, and select the project type from the dropdown list as \u201cBasics- ERC20, ERC721, & ERC1155 (v31+)\u201d. Then click the Create button to create the project.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177942969-a1e8170f-e806-44d5-9e9f-99e5cc2914f8.png",alt:"image"})),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},"Remember the smart contract in this tutorial is just a sample, you can always modify and be innovative.")),(0,o.kt)("h2",{id:"smart-contract-creation"},"Smart Contract Creation"),(0,o.kt)("ol",{start:6},(0,o.kt)("li",{parentName:"ol"},"Expand the contracts menu and delete the default files. ")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177948005-436776e5-07b4-4109-8b19-897925e623e4.png",alt:"image"})),(0,o.kt)("ol",{start:7},(0,o.kt)("li",{parentName:"ol"},"Right-click on the contracts menu and select New File. Specify a name for your file, e.g., BSC-NFT.sol, and then click Create button.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177943065-cc591abd-d856-4c9c-bbef-94b2e826af7f.png",alt:"image"})),(0,o.kt)("h2",{id:"writing-smart-contract-code"},"Writing Smart Contract Code"),(0,o.kt)("ol",{start:8},(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Copy the following code into your smart contract file. We have used the contract code from this ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/bnb-chain/bnb-chain-tutorial/blob/main/03-Using-BlackIDE-for-Deploying-NFTs/ERC721_NFT.sol"},"repo"),".")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Remember to change the ",(0,o.kt)("inlineCode",{parentName:"p"},"MINT_PRICE"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"MAX_SUPPLY"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"name"),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"symbol")," of the token as per your need. Also, remember to change the ",(0,o.kt)("inlineCode",{parentName:"p"},"_baseURI")," as per your token."))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177949895-a095fdb5-f770-4530-84f6-8854a0d7a5eb.png",alt:"image"})),(0,o.kt)("h2",{id:"edit-default-project-settings"},"Edit default project settings"),(0,o.kt)("ol",{start:10},(0,o.kt)("li",{parentName:"ol"},"Click on the config.json file to change the default setting. Change the main file name to the name of your contract, BSC-NFT.sol in our case. Similarly, change the name of the smart contract to deploy, BSCNFT.json in our case.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177948095-b6a905da-792c-47da-86d6-8a5d5db6a40b.png",alt:"image"})),(0,o.kt)("h2",{id:"connect-the-black-ide-to-the-bsc-testnet"},"Connect the Black IDE to the BSC Testnet"),(0,o.kt)("ol",{start:11},(0,o.kt)("li",{parentName:"ol"},"In order to connect the Black IDE to the BSC Testnet, click on the dropdown icon on the network menu in the top right corner and then select Testnet under the BNB Chain label.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177948186-e052e522-7069-4072-abae-fd0e6c819ee6.png",alt:"image"})),(0,o.kt)("ol",{start:12},(0,o.kt)("li",{parentName:"ol"},"Click on the ",(0,o.kt)("img",{parentName:"li",src:"https://user-images.githubusercontent.com/93580180/177943789-3557fde5-8805-4b03-ace8-05d2ace216c0.png",alt:"image"})," icon in the bottom left corner of the IDE to generate new keypair to perform transactions. You can skip this step if you already have generated a keypair. On the Keypair Manager, click on the CREATE button to generate new keypair.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944146-eb6e2f1e-95f0-4b00-8458-c8145b008d15.png",alt:"image"})),(0,o.kt)("ol",{start:13},(0,o.kt)("li",{parentName:"ol"},"Specify your desired name for the keypair, in our case BSC-Testnet-Key. Then click on the CREATE button. Remember to keep your private keys securely and not share them with anyone.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944170-fa9ed3bc-53d9-41f3-8a46-a07f56fee1d7.png",alt:"image"})),(0,o.kt)("h2",{id:"acquire-bnb-test-tokens"},"Acquire BNB Test Tokens"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Initially, the balance of a newly created key pair is 0.0 ETH. To get BNB test tokens, you can use the ",(0,o.kt)("a",{parentName:"p",href:"https://www.bnbchain.org/en/testnet-faucet/"},"BSC Testnet Faucet"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Copy your public address from the keypair manager"))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944290-d06f2f06-e256-4110-8936-809c0f78e0fa.png",alt:"image"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Paste this on the facet and acquire test tokens as required, as shown below. A green pop-up is displayed on the successful transfer of test tokens.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944333-ca8aefed-fec2-4271-aa3e-d2ccc301eb6c.png",alt:"image"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Close and re-open keypair manager to verify that the balance has been updated. Wait for approx. 1-2 mins for balance to get updated.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944370-3aa70613-be45-4558-8c83-aca1a00557c3.png",alt:"image"})),(0,o.kt)("h2",{id:"deploy-smart-contract-on-bsc-testnet"},"Deploy Smart Contract on BSC Testnet"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Select the appropriate Solidity compiler version from the bottom right corner of the IDE, Solc (0.8.4), ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944415-e733562a-54ad-4ed8-85a5-f17c79edfeac.png",alt:"image"})," in our case.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Click on the Build icon ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944483-ff523eed-017d-4265-b722-78ded06fe826.png",alt:"image"})," to build your smart contract. Upon successful build, the project navigation pane reflects a new folder named build. This folder contains contracts folder that has json files of the contracts built. All of the contracts imported in our BSCNFT contract are also built and imported as json files. "))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177948331-ece850ae-01fd-479b-b25f-d1f28c3400f6.png",alt:"image"})),(0,o.kt)("ol",{start:3},(0,o.kt)("li",{parentName:"ol"},"After successfully building your contract, it\u2019s time to deploy the contract. Click on the Deploy icon ",(0,o.kt)("img",{parentName:"li",src:"https://user-images.githubusercontent.com/93580180/177944540-10d86198-03f2-40d8-8ac0-c013483c6458.png",alt:"image"})," for deploying your smart contract. Specify the details for your contract, as shown below, then click on the Estimate & Deploy button. The wizard will auto-estimate and fill the gas limit for your contract. Then click the Deploy button. ")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944618-47b0fb1d-0ce3-4512-9b29-66f7a3416325.png",alt:"image"})),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944632-839f7ac5-c9d5-4d80-b6fe-0b6be2e6c3fb.png",alt:"image"})),(0,o.kt)("ol",{start:4},(0,o.kt)("li",{parentName:"ol"},"Deployment details will pop-up, as shown in the figure below.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944726-41c20038-1fc5-434a-b61f-be54f36f3ac6.png",alt:"image"})),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},"The status of the transaction will be updated to confirmed after the transaction is confirmed as shown in the figure below")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944768-dc622464-832f-4afd-8ccd-0529c675d46d.png",alt:"image"})),(0,o.kt)("ol",{start:6},(0,o.kt)("li",{parentName:"ol"},"You can also view this transaction by clicking on the transaction icon in the bottom left on the IDE.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177944786-8b7f3e34-e562-406b-890e-dcc22d48313f.png",alt:"image"})),(0,o.kt)("h2",{id:"interact-with-deployed-smart-contract-and-mint-nfts"},"Interact with deployed smart contract and Mint NFTs"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"You can also interact with the contract using the different functions. Click on the Transactions Icon on the bottom-left corner of the IDE and then transaction of deployment of your smart contract. On the transaction details, click on the contract address to access the functions to interact with the smart contract. The left most column has all the Write Functions. The middle column has the View Functions and the right most column has the Events details.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177948835-197860e5-8f25-4692-bc34-467a997f98a1.png",alt:"image"})),(0,o.kt)("h2",{id:"mint-nfts"},"Mint NFTs"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"As per our smart contract, when the contract is deployed, unless the NFTs are minted they won\u2019t be visible in the wallet. ")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Create another keypair as defined previously. We will be issuing i.e. minting NFTs to the public address of this new keypair.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"To mint i.e. issue an NFT to a specific user we use the \u201csafeMint\u201d function of the deployed smart contract. As shown in Steps 1 and 2 in the figure below, navigate to the deployed contracts, then in the left-most column click the drop-down menu to view the list of write functions available for use with the deployed contract. Select the \u201csafeMint\u201d function. ")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Use the safeMint function to mint new NFTs to a specific user address. As shown in figure above, steps 3 to 6, enter the \u201cETH to send\u201d as the minting price of NFT, as per our smart contract the minting price is 50000000000000000 Wei, i.e., 0.05 ETH. We entered 0.06 ETH to cover the transaction charges as well. Then select the address to whom you want to issue (mint) an NFT to. Here, for the To address use the newly generated keypair in the section above. After this, click the transact button to execute the safeMint function. For the Signer, ensure that you are using the account that was used to deploy the smart contract. "))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177949113-3de5d538-852f-4a21-aa75-47d0231b6521.png",alt:"image"})),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},"To confirm what transfers have occurred, execute the Transfer event from the right most column. This will display the list of NFT transfers along with NFT token id, as shown in the figure below.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177945187-4e426ba2-a63f-4648-a259-fc9506ab5cb1.png",alt:"image"})),(0,o.kt)("ol",{start:6},(0,o.kt)("li",{parentName:"ol"},"To confirm owner of an NFT, use the ownerOf function. Pass the token id as input to the function, as illustrated in the figure below.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177945228-3a984146-dfa5-4a7b-9306-6258e9990f2a.png",alt:"image"})),(0,o.kt)("h2",{id:"view-your-nfts-in-metamask-wallet"},"View Your NFTs in Metamask Wallet"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"On the receiving end, the user can import the NFT token details into their Metamask wallet to view the assets. Please note that currently, Metamask Web Extension does not support the use of NFTs however, the mobile app version does support it. For the next steps to view the owned NFTs in your Metamask wallet, we will be using the Metamask Mobile Application.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Open Keypair manager on the Black IDE and copy the private key of the keypair that you minted i.e., transfer NFT."))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177945281-060b95ce-2912-49a2-aa5d-bbf848ba9688.png",alt:"image"})),(0,o.kt)("ol",{start:3},(0,o.kt)("li",{parentName:"ol"},"On the Metamask wallet mobile app, import an account using this key pair. Enter the private key copied in the previous step and click import.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177954799-b86dae87-5274-4408-9d0b-5b52682549d1.png",alt:"image"})),(0,o.kt)("ol",{start:4},(0,o.kt)("li",{parentName:"ol"},"After importing account, the next step is to add the BSC Testnet configuration to the wallet. Ensure that you are using the same account whose pubic address was issued the NFT.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177950571-4674930b-c8c6-4480-8808-ea587af2bb2d.png",alt:"image"})),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},"Ensure that your account is connected to the BSC Testnet. Also, ensure that you have enough BNB test tokens in your account. If not, you can use the BSC Testnet Faucet to acquire some, as mentioned earlier.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177945438-84033dff-6d51-4fe6-875b-3b12bfe815c1.png",alt:"image"})),(0,o.kt)("ol",{start:6},(0,o.kt)("li",{parentName:"ol"},"To view the owned NFT assets your Metamask Mobile Wallet, click on the NFTs tab and then on the Import Tokens. Fill in the NFT details. In the address field, pass the address of the deployed contract and in the Id field pass the tokenID. Then click the Import button.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/93580180/177949365-52efd22c-25ac-4eac-b47e-82349d6b0a5c.png",alt:"image"})),(0,o.kt)("h2",{id:"conclusion"},"Conclusion"),(0,o.kt)("p",null,"In this tutorial, we provided a step-to-step guide on how to issue, mint and transfer NFTs on the BSC Testnet using the BlackIDE from Obsidian Labs.. The technology stack used in this tutorial includes Solidity, Truffle, MetaMask, and BlackIDE. Check out our ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/bnb-chain/bnb-chain-tutorial"},"GitHub")," for more tutorials on how to develop on BSC. If you have any questions or are stuck, reach out to us on our ",(0,o.kt)("a",{parentName:"p",href:"https://discord.com/channels/789402563035660308/912296662834241597"},"Discord Channel"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e48c32e6.378086fd.js b/assets/js/e48c32e6.378086fd.js new file mode 100644 index 0000000000..50234f19c2 --- /dev/null +++ b/assets/js/e48c32e6.378086fd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeta_BNB_Docs=self.webpackChunkbeta_BNB_Docs||[]).push([[8489],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(n),d=o,k=u["".concat(l,".").concat(d)]||u[d]||m[d]||r;return n?a.createElement(k,i(i({ref:t},c),{},{components:n})):a.createElement(k,i({ref:t},c))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var a=n(87462),o=(n(67294),n(3905));const r={sidebar_label:"Storing NFT on IPFS & Filecoin",hide_table_of_contents:!1,sidebar_position:2},i="Storing NFTs on IPFS & Filecoin",s={unversionedId:"nft-storage",id:"nft-storage",title:"Storing NFTs on IPFS & Filecoin",description:"After the preview two tutorials, you must have learned how to write NFT smart contract and deploy it on BSC testNet. The most important part for any NFT project is that where your NFT assets are stored. If you want to avoid the risk of losing your NFT assets or not able to access them, storing your NFTs on decentralized network is the better option for you.",source:"@site/docs/nft-storage.md",sourceDirName:".",slug:"/nft-storage",permalink:"/docs/nft-storage",draft:!1,editUrl:"https://github.com/bnb-chain/bnb-chain.github.io/blob/master/docs/nft-storage.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_label:"Storing NFT on IPFS & Filecoin",hide_table_of_contents:!1,sidebar_position:2},sidebar:"bscSideBar",previous:{title:"Using Venly",permalink:"/docs/venly-nft-api"},next:{title:"Introduction",permalink:"/docs/BEP20"}},l={},p=[{value:"Store NFTs using NFT.storage",id:"store-nfts-using-nftstorage",level:2},{value:"Create an account and get an API token",id:"create-an-account-and-get-an-api-token",level:3},{value:"Upload NFTs using Javascript Client",id:"upload-nfts-using-javascript-client",level:3},{value:"Mint NFTs",id:"mint-nfts",level:2},{value:"Write NFT contract using Remix",id:"write-nft-contract-using-remix",level:3},{value:"Deploy your NFT contract",id:"deploy-your-nft-contract",level:3},{value:"Mint your NFT",id:"mint-your-nft",level:3}],c={toc:p},u="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"storing-nfts-on-ipfs--filecoin"},"Storing NFTs on IPFS & Filecoin"),(0,o.kt)("p",null,"After the preview two tutorials, you must have learned how to write NFT smart contract and deploy it on BSC testNet. The most important part for any NFT project is that where your NFT assets are stored. If you want to avoid the risk of losing your NFT assets or not able to access them, storing your NFTs on decentralized network is the better option for you."),(0,o.kt)("p",null,"So in this tutorial, we will walk you through the process of storing your NFT assets on decentralied storage network, like ",(0,o.kt)("a",{parentName:"p",href:"https://ipfs.io/"},"IPFS")," & ",(0,o.kt)("a",{parentName:"p",href:"https://filecoin.io/"},"Filecoin"),". We will use ",(0,o.kt)("a",{parentName:"p",href:"https://nft.storage/"},"NFT.Storage")," in this tutorial since it provides easy to use API/SDK for developers to upload their NFT assets on both IPFS and Filecoin. "),(0,o.kt)("p",null,"What we will use in this tutorial:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://nodejs.org/en/"},"Node.js")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://nft.storage/"},"NFT.Storage")),(0,o.kt)("li",{parentName:"ul"},"BSC Testnet"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://remix.ethereum.org/"},"Remix IDE")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://metamask.io/"},"Metamask"))),(0,o.kt)("h2",{id:"store-nfts-using-nftstorage"},"Store NFTs using NFT.storage"),(0,o.kt)("p",null,"NFT.Storage is a storage service that lets you store off-chain NFT assets decentralized for free. Your NFT assets will be stored on both IPFS and Filecoin for the guaranty of fast content-addressing and retrieval on IPFS, as well as verifiable long-term storage on Filecoin. "),(0,o.kt)("p",null,"NFT.Storage provides multiple ways to upload your NFTs, from user-friendly web UI and NFTUp application to easy to use API to support developers. So it is especially useful for individual creators who are minting NFTs, or NFT tooling developers looking to support creators and collectors! "),(0,o.kt)("p",null,"In this tutorial, we will more focus on developers who is integrating ",(0,o.kt)("a",{parentName:"p",href:"https://nft.storage/"},"NFT.Storage")," into their application to Mint NFTs. If you want to learn more about different ways to upload and manager your NFTs, you can check this ",(0,o.kt)("a",{parentName:"p",href:"https://nft.storage/docs/quickstart/"},"Quick Start docs"),". "),(0,o.kt)("p",null,"Then let's get started. "),(0,o.kt)("h3",{id:"create-an-account-and-get-an-api-token"},"Create an account and get an API token"),(0,o.kt)("p",null,"If this is the first time you use NFT.Storage, you need to create a NFT.Storage account to get a API token which you can use in your applications when you upload NFTs. "),(0,o.kt)("p",null,"You can sign up an account for free using either your email or GitHub."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Go to ",(0,o.kt)("a",{parentName:"p",href:"https://nft.storage/login"},"nft.storage/login")," to get started.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Click ",(0,o.kt)("strong",{parentName:"p"},"GitHub")," on the Login screen.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Authorize")," NFT.Storage when asked by GitHub.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Once you are logged in success, you can click the ",(0,o.kt)("strong",{parentName:"p"},"API Keys")," to create an token."),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{parentName:"p",src:"https://bafybeic55jy6d5gr5uvquz6jqg53wdqqqqtwqsgsch2dmoltsxirmtf3we.ipfs.w3s.link/API-token.png",alt:"API Token"}))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Click ",(0,o.kt)("strong",{parentName:"p"},"+ New Key"),", and enter a descriptive name for your API token and click ",(0,o.kt)("strong",{parentName:"p"},"Create"),".")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Now you have successfully create a API Token, you can click ",(0,o.kt)("strong",{parentName:"p"},"Action- Copy")," to copy it to your clipboard to use it later."))),(0,o.kt)("h3",{id:"upload-nfts-using-javascript-client"},"Upload NFTs using Javascript Client"),(0,o.kt)("p",null,"The NFT.Storage ",(0,o.kt)("a",{parentName:"p",href:"https://nft.storage/docs/quickstart/client/js/"},"JavaScript client")," makes it simple to upload files and create ERC-1155 compatible NFT metadata in your NFT applications. Both NFT and its metadata will be stored on IPFS and Filecoin, you will receive a IPFS URL for you metadata which you can use to mint your NFT."),(0,o.kt)("p",null,"We will use a simple node JS script to demonstrate the code to upload NFT and receive the corresponding IPFS URL for its metadata. You can easily integrate this function in your JavaScript or TypeScript applications."),(0,o.kt)("p",null,"You'll need ",(0,o.kt)("a",{parentName:"p",href:"https://nodejs.org/"},"Node.js")," version 16 or later for this example."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Make a new JavaScript project.")),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"mkdir nft-storage-quickstart\ncd nft-storage-quickstart\nnpm init\n")),(0,o.kt)("p",{parentName:"li"},"NPM will ask a few questions about your project and create a ",(0,o.kt)("inlineCode",{parentName:"p"},"package.json")," file.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Install ",(0,o.kt)("inlineCode",{parentName:"strong"},"nft.storage")," client in your project.")),(0,o.kt)("p",{parentName:"li"},"Run the following command to install the latest version of ",(0,o.kt)("inlineCode",{parentName:"p"},"nft.storage")," package, and also install ",(0,o.kt)("inlineCode",{parentName:"p"},"mime")," package for the file types."),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"npm install nft.storage\nnpm install mime\n"))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Create a file called ",(0,o.kt)("inlineCode",{parentName:"strong"},"upload.mjs")," and open it with your VS Code.")),(0,o.kt)("p",{parentName:"li"},"Below is the code you need to upload an image with ERC-1155 compatible NFT metadata.This code here will be used only as example, you can add similar upload logic in your application."),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-javascript"},"import { NFTStorage, File } from \"nft.storage\"\nimport fs from 'fs'\nimport dotenv from 'dotenv'\ndotenv.config()\n//This the the API token you have created earlier which is added as one env variable.\nconst API_KEY = process.env.NFT_STORAGE_API_KEY \n\nasync function storeAsset() {\n const client = new NFTStorage({ token: API_KEY })\n const metadata = await client.store({\n name: 'ExampleNFT',\n description: 'My ExampleNFT is an NFT example!',\n image: new File(\n [await fs.promises.readFile('MyExampleNFT.png')],\n 'MyExampleNFT.png',\n { type: 'image/png' }\n ),\n })\n console.log(\"Metadata stored on Filecoin and IPFS with URL:\", metadata.url)\n}\n\nstoreAsset()\n .then(() => process.exit(0))\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n")),(0,o.kt)("p",{parentName:"li"},"The main part of the script is the ",(0,o.kt)("inlineCode",{parentName:"p"},"storeAsset")," function. It creates a new client connecting to NFT.Storage using the API key you created earlier. Next we introduce the metadata consisting of the name, description, and image. Note that we are reading the NFT asset directly from the file system from the ",(0,o.kt)("inlineCode",{parentName:"p"},"assets")," directory. At the end of the function, we will print the metadata URL as we will use it later when creating the NFT on BNB Chain.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Run your script with nodeJS")),(0,o.kt)("p",{parentName:"li"},"Let's execute the upload logic by running the script and see the output."),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"node upload.mjs\n")),(0,o.kt)("p",{parentName:"li"},"The output should look like down blow. You can directly use the IPFS URL to mint NFT token, or use the URL of NFT.Strorage gateway. For instance, ",(0,o.kt)("inlineCode",{parentName:"p"},"https://nftstorage.link/ipfs//metadata.json")),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Metadata stored on Filecoin and IPFS with URL: ipfs://bafyreihegljuej4y4ai5ftzb2rdztseb5mmjzba5f5xcdktgd43rkoxhw4/metadata.json\n")))),(0,o.kt)("p",null,"Now you have your NFT assets stored on IPFS and Filecoin, you can access it via ",(0,o.kt)("a",{parentName:"p",href:"https://nftstorage.link/ipfs/bafyreihegljuej4y4ai5ftzb2rdztseb5mmjzba5f5xcdktgd43rkoxhw4/metadata.json"},"NFT.Strorage gateway")," and you are ready to mint your NFT. Please record the metadata url which we will use to mint NFT later."),(0,o.kt)("h2",{id:"mint-nfts"},"Mint NFTs"),(0,o.kt)("p",null,"This tutorial will more focus on how to store NFT assets on IPFS and Filecoin other them teaching how to develop NFT smart contract. If you wish to learn how to deploy NFTs on BSC, you should learn it from ",(0,o.kt)("a",{parentName:"p",href:"https://docs.bnbchain.org/docs/ERC721"},"Deploy NFTS on BSC using Truffle"),"."),(0,o.kt)("p",null,"In this section, I will simply use Remix to write NFT contract, deploy and invoke it via MetaMask. Before we move forward, let's make sure you have the following items ready."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Installed MetaMask."),(0,o.kt)("li",{parentName:"ul"},"Configured BNB Smart Chain TestNet on MetaMask."),(0,o.kt)("li",{parentName:"ul"},"Requested BNB TestNet tokens.")),(0,o.kt)("h3",{id:"write-nft-contract-using-remix"},"Write NFT contract using Remix"),(0,o.kt)("p",null,"We will use Remix IDE to write your NFT contract. In this example, we are going to use ERC721URIStorage from OpenZeppenlin. "),(0,o.kt)("p",null,"Open ",(0,o.kt)("a",{parentName:"p",href:"https://remix.ethereum.org/"},"Remix IDE"),", create a new solidify file, name it ",(0,o.kt)("inlineCode",{parentName:"p"},"NFTExample.sol")," and copy the contract code down blow. "),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-solidity"},'// SPDX-License-Identifier: UNLICENSED\npragma solidity >=0.4.22 <0.9.0;\nimport "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";\nimport "@openzeppelin/contracts/utils/Counters.sol";\n\ncontract BSCNFT is ERC721URIStorage{\n using Counters for Counters.Counter;\n Counters.Counter private _tokenIds;\n event NewNFTMinted(address sender, uint256 tokenId, string tokenURI);\n\n constructor() ERC721 ("NFT Examples on BSC", "BSC-NFT") {}\n\n function mintItem(string memory tokenURI) public{\n _tokenIds.increment();\n uint256 newItemId = _tokenIds.current();\n _mint(msg.sender, newItemId);\n _setTokenURI(newItemId, tokenURI);\n emit NewNFTMinted(msg.sender, newItemId, tokenURI);\n }\n}\n')),(0,o.kt)("p",null,"If everything works fine, the Remix will compile your smart contract automatically and it is ready to be deployed to BSC TestNet."),(0,o.kt)("h3",{id:"deploy-your-nft-contract"},"Deploy your NFT contract"),(0,o.kt)("p",null,"Before deploying your NFT smart contract, make sure you switch the network to BSC TestNet on MetaMask and also have some test tokens to pay for transaction fees."),(0,o.kt)("p",null,"On the Remix IDE, go to ",(0,o.kt)("inlineCode",{parentName:"p"},"Deployment")," page and make sure you choose ",(0,o.kt)("inlineCode",{parentName:"p"},"Injected Provider - MetaMask")," for the environment. Now, you can click the ",(0,o.kt)("inlineCode",{parentName:"p"},"Deply")," button and confirm the transaction on MetaMask."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://bafybeidvywca5576p7w445zaywsw5jf5gmyyktkhik2o52nlkjvlp7d6tu.ipfs.w3s.link/Remix-Deploy.png",alt:"Remix Deploy contract"})),(0,o.kt)("p",null,"Once the deployment transaction is confirmed on-chain, you will be able to verify the transaction and contract on ",(0,o.kt)("a",{parentName:"p",href:"https://testnet.bscscan.com/"},"BSC TestNet blockchain explorer"),". "),(0,o.kt)("p",null,"You can also directly interact with the deployed NFT contract on Remix IDE. Try to invoke the ",(0,o.kt)("inlineCode",{parentName:"p"},"name")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"symbol")," methods to verify if this is the NFT contract you deployed."),(0,o.kt)("h3",{id:"mint-your-nft"},"Mint your NFT"),(0,o.kt)("p",null,"Now, we are all set to mint the NFT. Instead of using metadata storing on centralized server, we will use the metadata which we stored on IPFS & Filecoin using NFT.Storage in previous steps. "),(0,o.kt)("p",null,"We will copy the NFT metedata URL, something like ",(0,o.kt)("inlineCode",{parentName:"p"},"ipfs://bafyreihegljuej4y4ai5ftzb2rdztseb5mmjzba5f5xcdktgd43rkoxhw4/metadata.json")," and mint NFT on Remix IDE. "),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"On Remix IDE, go to the ",(0,o.kt)("inlineCode",{parentName:"p"},"Deployed Contracts")," section and find ",(0,o.kt)("inlineCode",{parentName:"p"},"mintItem")," method.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Paste the NFT metadata URL in the tokenURI params field, and click ",(0,o.kt)("inlineCode",{parentName:"p"},"transact"),"."),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{parentName:"p",src:"https://bafybeidfqia4cfhj77g4n3wfstdf6qdauyrvxlubiwpvzbf5n6hlnmkg3m.ipfs.w3s.link/MintNFT.png",alt:"Mint NFT image"}))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"You will need to confirm and sign the transaction when MetaMask popup for confirmation. ")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Verify your newly minted NFT"),"\nOnce the transaction is confirmed on BSC TestNet, you will be able to verify whether your NFT is minted successfully or not by invoking either ",(0,o.kt)("inlineCode",{parentName:"p"},"balanceOf")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"ownerOf"),". I will take ",(0,o.kt)("inlineCode",{parentName:"p"},"balanceOf")," as the example here. "),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{parentName:"p",src:"https://bafybeibcjnrijqdlwml6iuknkg6c6ydwlcqihiobzomelctmcbond75ima.ipfs.w3s.link/balanceOf.png",alt:"Balance of Image"}),"You can also verify your NFT on ",(0,o.kt)("a",{parentName:"p",href:"https://testnets.opensea.io/account"},"Opensea Testnets")," once you connect to MetaMask account. Then you will be see the freshly minted NFT under your account. "),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{parentName:"p",src:"https://bafybeiapuxvoxxfdxjgyta6nl6uc65aoknvv57dq73x6vowfkq4c26ehb4.ipfs.w3s.link/NFT-OS.png",alt:"Your NFT on OpenSea"})))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e48c32e6.49423ed6.js b/assets/js/e48c32e6.49423ed6.js deleted file mode 100644 index 485746aadd..0000000000 --- a/assets/js/e48c32e6.49423ed6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkbeta_BNB_Docs=self.webpackChunkbeta_BNB_Docs||[]).push([[8489],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(n),d=o,k=u["".concat(l,".").concat(d)]||u[d]||m[d]||r;return n?a.createElement(k,i(i({ref:t},c),{},{components:n})):a.createElement(k,i({ref:t},c))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var a=n(87462),o=(n(67294),n(3905));const r={sidebar_label:"Storing NFT on IPFS & Filecoin",hide_table_of_contents:!1,sidebar_position:2},i="Storing NFTs on IPFS & Filecoin",s={unversionedId:"nft-storage",id:"nft-storage",title:"Storing NFTs on IPFS & Filecoin",description:"After the preview two tutorials, you must have learned how to write NFT smart contract and deploy it on BSC testNet. The most important part for any NFT project is that where your NFT assets are stored. If you want to avoid the risk of losing your NFT assets or not able to access them, storing your NFTs on decentralized network is the better option for you.",source:"@site/docs/nft-storage.md",sourceDirName:".",slug:"/nft-storage",permalink:"/docs/nft-storage",draft:!1,editUrl:"https://github.com/bnb-chain/bnb-chain.github.io/blob/master/docs/nft-storage.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_label:"Storing NFT on IPFS & Filecoin",hide_table_of_contents:!1,sidebar_position:2},sidebar:"bscSideBar",previous:{title:"Using Black IDE",permalink:"/docs/nft_blackide"},next:{title:"Introduction",permalink:"/docs/BEP20"}},l={},p=[{value:"Store NFTs using NFT.storage",id:"store-nfts-using-nftstorage",level:2},{value:"Create an account and get an API token",id:"create-an-account-and-get-an-api-token",level:3},{value:"Upload NFTs using Javascript Client",id:"upload-nfts-using-javascript-client",level:3},{value:"Mint NFTs",id:"mint-nfts",level:2},{value:"Write NFT contract using Remix",id:"write-nft-contract-using-remix",level:3},{value:"Deploy your NFT contract",id:"deploy-your-nft-contract",level:3},{value:"Mint your NFT",id:"mint-your-nft",level:3}],c={toc:p},u="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"storing-nfts-on-ipfs--filecoin"},"Storing NFTs on IPFS & Filecoin"),(0,o.kt)("p",null,"After the preview two tutorials, you must have learned how to write NFT smart contract and deploy it on BSC testNet. The most important part for any NFT project is that where your NFT assets are stored. If you want to avoid the risk of losing your NFT assets or not able to access them, storing your NFTs on decentralized network is the better option for you."),(0,o.kt)("p",null,"So in this tutorial, we will walk you through the process of storing your NFT assets on decentralied storage network, like ",(0,o.kt)("a",{parentName:"p",href:"https://ipfs.io/"},"IPFS")," & ",(0,o.kt)("a",{parentName:"p",href:"https://filecoin.io/"},"Filecoin"),". We will use ",(0,o.kt)("a",{parentName:"p",href:"https://nft.storage/"},"NFT.Storage")," in this tutorial since it provides easy to use API/SDK for developers to upload their NFT assets on both IPFS and Filecoin. "),(0,o.kt)("p",null,"What we will use in this tutorial:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://nodejs.org/en/"},"Node.js")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://nft.storage/"},"NFT.Storage")),(0,o.kt)("li",{parentName:"ul"},"BSC Testnet"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://remix.ethereum.org/"},"Remix IDE")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://metamask.io/"},"Metamask"))),(0,o.kt)("h2",{id:"store-nfts-using-nftstorage"},"Store NFTs using NFT.storage"),(0,o.kt)("p",null,"NFT.Storage is a storage service that lets you store off-chain NFT assets decentralized for free. Your NFT assets will be stored on both IPFS and Filecoin for the guaranty of fast content-addressing and retrieval on IPFS, as well as verifiable long-term storage on Filecoin. "),(0,o.kt)("p",null,"NFT.Storage provides multiple ways to upload your NFTs, from user-friendly web UI and NFTUp application to easy to use API to support developers. So it is especially useful for individual creators who are minting NFTs, or NFT tooling developers looking to support creators and collectors! "),(0,o.kt)("p",null,"In this tutorial, we will more focus on developers who is integrating ",(0,o.kt)("a",{parentName:"p",href:"https://nft.storage/"},"NFT.Storage")," into their application to Mint NFTs. If you want to learn more about different ways to upload and manager your NFTs, you can check this ",(0,o.kt)("a",{parentName:"p",href:"https://nft.storage/docs/quickstart/"},"Quick Start docs"),". "),(0,o.kt)("p",null,"Then let's get started. "),(0,o.kt)("h3",{id:"create-an-account-and-get-an-api-token"},"Create an account and get an API token"),(0,o.kt)("p",null,"If this is the first time you use NFT.Storage, you need to create a NFT.Storage account to get a API token which you can use in your applications when you upload NFTs. "),(0,o.kt)("p",null,"You can sign up an account for free using either your email or GitHub."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Go to ",(0,o.kt)("a",{parentName:"p",href:"https://nft.storage/login"},"nft.storage/login")," to get started.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Click ",(0,o.kt)("strong",{parentName:"p"},"GitHub")," on the Login screen.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Authorize")," NFT.Storage when asked by GitHub.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Once you are logged in success, you can click the ",(0,o.kt)("strong",{parentName:"p"},"API Keys")," to create an token."),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{parentName:"p",src:"https://bafybeic55jy6d5gr5uvquz6jqg53wdqqqqtwqsgsch2dmoltsxirmtf3we.ipfs.w3s.link/API-token.png",alt:"API Token"}))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Click ",(0,o.kt)("strong",{parentName:"p"},"+ New Key"),", and enter a descriptive name for your API token and click ",(0,o.kt)("strong",{parentName:"p"},"Create"),".")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Now you have successfully create a API Token, you can click ",(0,o.kt)("strong",{parentName:"p"},"Action- Copy")," to copy it to your clipboard to use it later."))),(0,o.kt)("h3",{id:"upload-nfts-using-javascript-client"},"Upload NFTs using Javascript Client"),(0,o.kt)("p",null,"The NFT.Storage ",(0,o.kt)("a",{parentName:"p",href:"https://nft.storage/docs/quickstart/client/js/"},"JavaScript client")," makes it simple to upload files and create ERC-1155 compatible NFT metadata in your NFT applications. Both NFT and its metadata will be stored on IPFS and Filecoin, you will receive a IPFS URL for you metadata which you can use to mint your NFT."),(0,o.kt)("p",null,"We will use a simple node JS script to demonstrate the code to upload NFT and receive the corresponding IPFS URL for its metadata. You can easily integrate this function in your JavaScript or TypeScript applications."),(0,o.kt)("p",null,"You'll need ",(0,o.kt)("a",{parentName:"p",href:"https://nodejs.org/"},"Node.js")," version 16 or later for this example."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Make a new JavaScript project.")),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"mkdir nft-storage-quickstart\ncd nft-storage-quickstart\nnpm init\n")),(0,o.kt)("p",{parentName:"li"},"NPM will ask a few questions about your project and create a ",(0,o.kt)("inlineCode",{parentName:"p"},"package.json")," file.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Install ",(0,o.kt)("inlineCode",{parentName:"strong"},"nft.storage")," client in your project.")),(0,o.kt)("p",{parentName:"li"},"Run the following command to install the latest version of ",(0,o.kt)("inlineCode",{parentName:"p"},"nft.storage")," package, and also install ",(0,o.kt)("inlineCode",{parentName:"p"},"mime")," package for the file types."),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"npm install nft.storage\nnpm install mime\n"))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Create a file called ",(0,o.kt)("inlineCode",{parentName:"strong"},"upload.mjs")," and open it with your VS Code.")),(0,o.kt)("p",{parentName:"li"},"Below is the code you need to upload an image with ERC-1155 compatible NFT metadata.This code here will be used only as example, you can add similar upload logic in your application."),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-javascript"},"import { NFTStorage, File } from \"nft.storage\"\nimport fs from 'fs'\nimport dotenv from 'dotenv'\ndotenv.config()\n//This the the API token you have created earlier which is added as one env variable.\nconst API_KEY = process.env.NFT_STORAGE_API_KEY \n\nasync function storeAsset() {\n const client = new NFTStorage({ token: API_KEY })\n const metadata = await client.store({\n name: 'ExampleNFT',\n description: 'My ExampleNFT is an NFT example!',\n image: new File(\n [await fs.promises.readFile('MyExampleNFT.png')],\n 'MyExampleNFT.png',\n { type: 'image/png' }\n ),\n })\n console.log(\"Metadata stored on Filecoin and IPFS with URL:\", metadata.url)\n}\n\nstoreAsset()\n .then(() => process.exit(0))\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n")),(0,o.kt)("p",{parentName:"li"},"The main part of the script is the ",(0,o.kt)("inlineCode",{parentName:"p"},"storeAsset")," function. It creates a new client connecting to NFT.Storage using the API key you created earlier. Next we introduce the metadata consisting of the name, description, and image. Note that we are reading the NFT asset directly from the file system from the ",(0,o.kt)("inlineCode",{parentName:"p"},"assets")," directory. At the end of the function, we will print the metadata URL as we will use it later when creating the NFT on BNB Chain.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Run your script with nodeJS")),(0,o.kt)("p",{parentName:"li"},"Let's execute the upload logic by running the script and see the output."),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"node upload.mjs\n")),(0,o.kt)("p",{parentName:"li"},"The output should look like down blow. You can directly use the IPFS URL to mint NFT token, or use the URL of NFT.Strorage gateway. For instance, ",(0,o.kt)("inlineCode",{parentName:"p"},"https://nftstorage.link/ipfs//metadata.json")),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Metadata stored on Filecoin and IPFS with URL: ipfs://bafyreihegljuej4y4ai5ftzb2rdztseb5mmjzba5f5xcdktgd43rkoxhw4/metadata.json\n")))),(0,o.kt)("p",null,"Now you have your NFT assets stored on IPFS and Filecoin, you can access it via ",(0,o.kt)("a",{parentName:"p",href:"https://nftstorage.link/ipfs/bafyreihegljuej4y4ai5ftzb2rdztseb5mmjzba5f5xcdktgd43rkoxhw4/metadata.json"},"NFT.Strorage gateway")," and you are ready to mint your NFT. Please record the metadata url which we will use to mint NFT later."),(0,o.kt)("h2",{id:"mint-nfts"},"Mint NFTs"),(0,o.kt)("p",null,"This tutorial will more focus on how to store NFT assets on IPFS and Filecoin other them teaching how to develop NFT smart contract. If you wish to learn how to deploy NFTs on BSC, you should learn it from ",(0,o.kt)("a",{parentName:"p",href:"https://docs.bnbchain.org/docs/ERC721"},"Deploy NFTS on BSC using Truffle"),"."),(0,o.kt)("p",null,"In this section, I will simply use Remix to write NFT contract, deploy and invoke it via MetaMask. Before we move forward, let's make sure you have the following items ready."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Installed MetaMask."),(0,o.kt)("li",{parentName:"ul"},"Configured BNB Smart Chain TestNet on MetaMask."),(0,o.kt)("li",{parentName:"ul"},"Requested BNB TestNet tokens.")),(0,o.kt)("h3",{id:"write-nft-contract-using-remix"},"Write NFT contract using Remix"),(0,o.kt)("p",null,"We will use Remix IDE to write your NFT contract. In this example, we are going to use ERC721URIStorage from OpenZeppenlin. "),(0,o.kt)("p",null,"Open ",(0,o.kt)("a",{parentName:"p",href:"https://remix.ethereum.org/"},"Remix IDE"),", create a new solidify file, name it ",(0,o.kt)("inlineCode",{parentName:"p"},"NFTExample.sol")," and copy the contract code down blow. "),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-solidity"},'// SPDX-License-Identifier: UNLICENSED\npragma solidity >=0.4.22 <0.9.0;\nimport "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";\nimport "@openzeppelin/contracts/utils/Counters.sol";\n\ncontract BSCNFT is ERC721URIStorage{\n using Counters for Counters.Counter;\n Counters.Counter private _tokenIds;\n event NewNFTMinted(address sender, uint256 tokenId, string tokenURI);\n\n constructor() ERC721 ("NFT Examples on BSC", "BSC-NFT") {}\n\n function mintItem(string memory tokenURI) public{\n _tokenIds.increment();\n uint256 newItemId = _tokenIds.current();\n _mint(msg.sender, newItemId);\n _setTokenURI(newItemId, tokenURI);\n emit NewNFTMinted(msg.sender, newItemId, tokenURI);\n }\n}\n')),(0,o.kt)("p",null,"If everything works fine, the Remix will compile your smart contract automatically and it is ready to be deployed to BSC TestNet."),(0,o.kt)("h3",{id:"deploy-your-nft-contract"},"Deploy your NFT contract"),(0,o.kt)("p",null,"Before deploying your NFT smart contract, make sure you switch the network to BSC TestNet on MetaMask and also have some test tokens to pay for transaction fees."),(0,o.kt)("p",null,"On the Remix IDE, go to ",(0,o.kt)("inlineCode",{parentName:"p"},"Deployment")," page and make sure you choose ",(0,o.kt)("inlineCode",{parentName:"p"},"Injected Provider - MetaMask")," for the environment. Now, you can click the ",(0,o.kt)("inlineCode",{parentName:"p"},"Deply")," button and confirm the transaction on MetaMask."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://bafybeidvywca5576p7w445zaywsw5jf5gmyyktkhik2o52nlkjvlp7d6tu.ipfs.w3s.link/Remix-Deploy.png",alt:"Remix Deploy contract"})),(0,o.kt)("p",null,"Once the deployment transaction is confirmed on-chain, you will be able to verify the transaction and contract on ",(0,o.kt)("a",{parentName:"p",href:"https://testnet.bscscan.com/"},"BSC TestNet blockchain explorer"),". "),(0,o.kt)("p",null,"You can also directly interact with the deployed NFT contract on Remix IDE. Try to invoke the ",(0,o.kt)("inlineCode",{parentName:"p"},"name")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"symbol")," methods to verify if this is the NFT contract you deployed."),(0,o.kt)("h3",{id:"mint-your-nft"},"Mint your NFT"),(0,o.kt)("p",null,"Now, we are all set to mint the NFT. Instead of using metadata storing on centralized server, we will use the metadata which we stored on IPFS & Filecoin using NFT.Storage in previous steps. "),(0,o.kt)("p",null,"We will copy the NFT metedata URL, something like ",(0,o.kt)("inlineCode",{parentName:"p"},"ipfs://bafyreihegljuej4y4ai5ftzb2rdztseb5mmjzba5f5xcdktgd43rkoxhw4/metadata.json")," and mint NFT on Remix IDE. "),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"On Remix IDE, go to the ",(0,o.kt)("inlineCode",{parentName:"p"},"Deployed Contracts")," section and find ",(0,o.kt)("inlineCode",{parentName:"p"},"mintItem")," method.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Paste the NFT metadata URL in the tokenURI params field, and click ",(0,o.kt)("inlineCode",{parentName:"p"},"transact"),"."),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{parentName:"p",src:"https://bafybeidfqia4cfhj77g4n3wfstdf6qdauyrvxlubiwpvzbf5n6hlnmkg3m.ipfs.w3s.link/MintNFT.png",alt:"Mint NFT image"}))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"You will need to confirm and sign the transaction when MetaMask popup for confirmation. ")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Verify your newly minted NFT"),"\nOnce the transaction is confirmed on BSC TestNet, you will be able to verify whether your NFT is minted successfully or not by invoking either ",(0,o.kt)("inlineCode",{parentName:"p"},"balanceOf")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"ownerOf"),". I will take ",(0,o.kt)("inlineCode",{parentName:"p"},"balanceOf")," as the example here. "),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{parentName:"p",src:"https://bafybeibcjnrijqdlwml6iuknkg6c6ydwlcqihiobzomelctmcbond75ima.ipfs.w3s.link/balanceOf.png",alt:"Balance of Image"}),"You can also verify your NFT on ",(0,o.kt)("a",{parentName:"p",href:"https://testnets.opensea.io/account"},"Opensea Testnets")," once you connect to MetaMask account. Then you will be see the freshly minted NFT under your account. "),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{parentName:"p",src:"https://bafybeiapuxvoxxfdxjgyta6nl6uc65aoknvv57dq73x6vowfkq4c26ehb4.ipfs.w3s.link/NFT-OS.png",alt:"Your NFT on OpenSea"})))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.44ad4b75.js b/assets/js/main.44ad4b75.js new file mode 100644 index 0000000000..5fd19af84c --- /dev/null +++ b/assets/js/main.44ad4b75.js @@ -0,0 +1,2 @@ +/*! For license information please see main.44ad4b75.js.LICENSE.txt */ +(self.webpackChunkbeta_BNB_Docs=self.webpackChunkbeta_BNB_Docs||[]).push([[179],{20830:(e,t,n)=>{"use strict";n.d(t,{W:()=>o});var a=n(67294);function o(){return a.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},a.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"}))}},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var a=n(67294),o=n(87462),r=n(68356),i=n.n(r),c=n(16887);const s={"00868d8e":[()=>n.e(905).then(n.bind(n,20537)),"@site/docs/beaconchain/wallet/tutorial/ledger-nano-s-usage-guide.md",20537],"015c4fcd":[()=>n.e(9863).then(n.bind(n,82613)),"@site/docs/BSC-FAQs-delegator.md",82613],"01df7f3f":[()=>n.e(2694).then(n.t.bind(n,83769,19)),"/home/runner/work/bnb-chain.github.io/bnb-chain.github.io/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",83769],"02e49d04":[()=>n.e(2025).then(n.bind(n,19944)),"@site/docs/parameters.md",19944],"03188927":[()=>n.e(3306).then(n.bind(n,6756)),"@site/docs/dstorages.md",6756],"039e4454":[()=>n.e(7009).then(n.bind(n,19112)),"@site/docs/beaconchain/learn/bc-staking.md",19112],"039f6af6":[()=>n.e(445).then(n.bind(n,47772)),"@site/docs/mev/overview.md",47772],"0480b142":[()=>n.e(836).then(n.bind(n,43584)),"@site/docs/faq.md",43584],"049c7c64":[()=>n.e(2596).then(n.bind(n,91716)),"@site/docs/stake/cli-commands.md",91716],"055d8f40":[()=>n.e(2733).then(n.bind(n,61268)),"@site/docs/validator/bc-slashing.md",61268],"05720bc7":[()=>n.e(5511).then(n.bind(n,85645)),"@site/docs/wallet/trezor.md",85645],"073e83ba":[()=>n.e(1753).then(n.bind(n,59896)),"@site/docs/beaconchain/learn/transactions.md",59896],"077dead9":[()=>n.e(8733).then(n.bind(n,44456)),"@site/docs/bcfusion/owners/bind.md",44456],"07d04c29":[()=>n.e(1221).then(n.bind(n,7199)),"@site/docs/boot-nodes.md",7199],"0866dc88":[()=>n.e(2980).then(n.bind(n,87157)),"@site/docs/wallet/extension/ledger.md",87157],"097a92d8":[()=>n.e(929).then(n.bind(n,45490)),"@site/docs/beaconchain/learn/BEP8.md",45490],"0a1df218":[()=>n.e(9371).then(n.bind(n,44574)),"@site/docs/BSC-FAQs-tokens.md",44574],"0a24bc6c":[()=>n.e(276).then(n.bind(n,61819)),"@site/docs/beaconchain/develop/api-reference/dex-api/ws-streams.md",61819],"0b13d5e8":[()=>n.e(3409).then(n.bind(n,76762)),"@site/docs/beaconchain/develop/api-reference/http-api.md",76762],"0d351afe":[()=>n.e(7861).then(n.bind(n,28699)),"@site/docs/fullnodeissue.md",28699],"0d52c50f":[()=>n.e(495).then(n.bind(n,6262)),"@site/docs/beaconchain/trading-spec.md",6262],"0d73c327":[()=>n.e(2673).then(n.bind(n,76659)),"@site/docs/beaconchain/develop/api-reference/dex-api/block-service.md",76659],"0d78eb08":[()=>n.e(4935).then(n.bind(n,61990)),"@site/docs/oracles.md",61990],"0db8ddbd":[()=>n.e(5107).then(n.bind(n,6489)),"@site/docs/bcfusion/developers/staking.md",6489],"0e19568b":[()=>n.e(188).then(n.bind(n,4522)),"@site/docs/beaconchain/tss.md",4522],"0e800433":[()=>n.e(1731).then(n.bind(n,15291)),"@site/docs/tokens.md",15291],"12690ca6":[()=>n.e(9247).then(n.bind(n,71140)),"@site/docs/truffle-new.md",71140],"12ad0883":[()=>n.e(5534).then(n.bind(n,18374)),"@site/docs/hardhat.md",18374],"13cbbc45":[()=>n.e(6160).then(n.bind(n,10197)),"@site/docs/api-reference/node-rpc.md",10197],14304958:[()=>n.e(7671).then(n.bind(n,16424)),"@site/docs/chainide.md",16424],"146e3239":[()=>n.e(6807).then(n.bind(n,28599)),"@site/docs/beaconchain/learn/matching-engine.md",28599],"168c1296":[()=>n.e(2800).then(n.bind(n,38956)),"@site/docs/validator/docker.md",38956],17896441:[()=>Promise.all([n.e(532),n.e(1690),n.e(7918)]).then(n.bind(n,10903)),"@theme/DocItem",10903],"1a12b3eb":[()=>n.e(78).then(n.bind(n,71905)),"@site/docs/wallet/extension/add-account.md",71905],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,56675)),"@theme/SearchPage",56675],"1bc24ad6":[()=>n.e(2010).then(n.bind(n,68036)),"@site/docs/beaconchain/CONTRIBUTING.md",68036],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,19963)),"@theme/DocPage",19963],"1d23a3cc":[()=>n.e(3343).then(n.bind(n,1883)),"@site/docs/beaconchain/resources.md",1883],"1db64337":[()=>n.e(1372).then(n.bind(n,26777)),"@site/docs/overview.md",26777],"1f391b9e":[()=>Promise.all([n.e(532),n.e(1690),n.e(3085)]).then(n.bind(n,14247)),"@theme/MDXPage",14247],"1f96dd1b":[()=>n.e(2409).then(n.bind(n,20282)),"@site/docs/validator/send-slash-evidence.md",20282],"1fe0b14c":[()=>n.e(6392).then(n.bind(n,11363)),"@site/docs/beaconchain/learn/walletconnect.md",11363],"2033fe1d":[()=>n.e(3470).then(n.bind(n,19538)),"@site/docs/stake/Staking.md",19538],"208ad0b7":[()=>n.e(1939).then(n.bind(n,51829)),"@site/docs/wallets/walletconnect-support.md",51829],"2179e181":[()=>n.e(5827).then(n.bind(n,79446)),"@site/docs/learn/cross-chain-bridges.md",79446],"243acfc7":[()=>n.e(9462).then(n.bind(n,8677)),"@site/docs/learn/bsc-relayer.md",8677],"266edd5c":[()=>n.e(8603).then(n.bind(n,6439)),"@site/docs/archivenode.md",6439],28682005:[()=>n.e(5334).then(n.bind(n,29179)),"@site/docs/validator/overview.md",29179],"2927d995":[()=>n.e(9962).then(n.bind(n,53279)),"@site/docs/beaconchain/get-extra-data-from-fullnode.md",53279],"2c8e0782":[()=>n.e(6911).then(n.bind(n,64606)),"@site/docs/more-help.md",64606],"2fa1e944":[()=>n.e(3819).then(n.bind(n,74115)),"@site/docs/validator/create-val.md",74115],"305f3035":[()=>n.e(1502).then(n.bind(n,1430)),"@site/docs/beaconchain/wallets.md",1430],"31ecfdf3":[()=>n.e(9373).then(n.bind(n,28005)),"@site/docs/wallet/arkane-developer.md",28005],"320800f4":[()=>n.e(5090).then(n.bind(n,62405)),"@site/docs/BSCtestnet.md",62405],"337885e6":[()=>n.e(4663).then(n.bind(n,37098)),"@site/docs/beaconchain/wallet/tutorial/trezor-model-t-user-guide.md",37098],37390557:[()=>n.e(7906).then(n.bind(n,894)),"@site/docs/beaconchain/develop/node/join-mainnet.md",894],"379ce79b":[()=>n.e(4526).then(n.bind(n,80474)),"@site/docs/beaconchain/develop/api-reference/dex-api/block-service-example.md",80474],"37c50b0a":[()=>n.e(5188).then(n.bind(n,69469)),"@site/docs/beaconchain/wallet/tutorial/videos.md",69469],"38ea6270":[()=>n.e(2136).then(n.bind(n,4441)),"@site/docs/BSC-FAQs-general.md",4441],"393be207":[()=>n.e(7414).then(n.bind(n,53123)),"@site/src/pages/markdown-page.md",53123],"39b3fdd1":[()=>n.e(4995).then(n.bind(n,77302)),"@site/docs/beaconchain/fullnodeissue.md",77302],"39c0d873":[()=>n.e(3550).then(n.bind(n,29264)),"@site/docs/wallets/tutorial/trezor-model-t-user-guide.md",29264],"3b7f1d9e":[()=>n.e(2962).then(n.bind(n,98536)),"@site/docs/learn/gnosis.md",98536],"3c355134":[()=>n.e(2320).then(n.bind(n,32785)),"@site/docs/learn/intro.md",32785],"3ca8d367":[()=>n.e(2280).then(n.bind(n,87236)),"@site/docs/api-reference/dex-api/paths.md",87236],"3d2e3c20":[()=>n.e(6408).then(n.bind(n,74694)),"@site/docs/beaconchain/match.md",74694],"3f4f1b85":[()=>n.e(2182).then(n.bind(n,61877)),"@site/docs/validator/unjail.md",61877],"3fe1b31e":[()=>n.e(6175).then(n.bind(n,6237)),"@site/docs/beaconchain/wallet/tutorial/bep8.md",6237],"3ffb3654":[()=>n.e(4117).then(n.bind(n,3004)),"@site/docs/verify-proxy.md",3004],"4248bf8f":[()=>n.e(8090).then(n.bind(n,81683)),"@site/docs/wallet/faq.md",81683],"426df75b":[()=>n.e(615).then(n.bind(n,65141)),"@site/docs/beaconchain/develop/api-reference/dex-api/migration-guide.md",65141],"42e796b7":[()=>n.e(6865).then(n.bind(n,1513)),"@site/docs/upgrade-fullnode.md",1513],"4356940c":[()=>n.e(6942).then(n.bind(n,69674)),"@site/docs/validator/Penalty-overview.md",69674],"436fdc09":[()=>n.e(9340).then(n.bind(n,97454)),"@site/docs/migration/evm-chains/chain-comparison.md",97454],"437509ae":[()=>n.e(9581).then(n.bind(n,54923)),"@site/docs/dev-outlook/scaling.md",54923],"4479d28a":[()=>n.e(3929).then(n.bind(n,69131)),"@site/docs/ERC721.md",69131],"44bcb8b6":[()=>n.e(8776).then(n.bind(n,89257)),"@site/docs/beaconchain/learn/transaction.md",89257],"45b5f33c":[()=>n.e(1224).then(n.bind(n,55272)),"@site/docs/BEP20.md",55272],"4779363e":[()=>n.e(9299).then(n.t.bind(n,15745,19)),"/home/runner/work/bnb-chain.github.io/bnb-chain.github.io/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",15745],"4904453e":[()=>n.e(841).then(n.bind(n,39548)),"@site/docs/migration/evm-chains/token-migration.md",39548],"49100cb7":[()=>n.e(2698).then(n.bind(n,65202)),"@site/docs/beaconchain/imToken.md",65202],49850653:[()=>n.e(5444).then(n.bind(n,48570)),"@site/docs/learn/incentives.md",48570],"4aeca0dd":[()=>n.e(2544).then(n.bind(n,51412)),"@site/docs/wallet/wallet_api.md",51412],"4af00c2c":[()=>n.e(2248).then(n.bind(n,72278)),"@site/docs/beaconchain/develop/node/synctypes.md",72278],"4b768e8d":[()=>n.e(8478).then(n.bind(n,52253)),"@site/docs/beaconchain/list.md",52253],"4b96ce56":[()=>n.e(4979).then(n.bind(n,70585)),"@site/docs/beaconchain/develop/node/snapshot.md",70585],"4ba7e5a3":[()=>n.e(9735).then(n.bind(n,75380)),"@site/docs/contribute.md",75380],"4c0e0ec5":[()=>n.e(3141).then(n.bind(n,89110)),"@site/docs/BSC-verify-node.md",89110],"4df2b942":[()=>n.e(5487).then(n.bind(n,61355)),"@site/docs/beaconchain/timelock.md",61355],"4e426588":[()=>n.e(5398).then(n.bind(n,60936)),"@site/docs/verify.md",60936],"4f0a142f":[()=>n.e(7232).then(n.bind(n,82301)),"@site/docs/beaconchain/learn/bc-bridge.md",82301],"52188b66":[()=>n.e(5756).then(n.bind(n,52117)),"@site/docs/wallets/wallets.md",52117],"53ba04fa":[()=>n.e(542).then(n.bind(n,71835)),"@site/docs/beaconchain/develop/testnetandexplorer.md",71835],"54a5b3e2":[()=>n.e(5174).then(n.bind(n,73782)),"@site/docs/hardhat-new.md",73782],55434762:[()=>n.e(4713).then(n.bind(n,7025)),"@site/docs/bcfusion/users/swaps.md",7025],"56834eaf":[()=>n.e(715).then(n.bind(n,21008)),"@site/docs/beaconchain/learn/bsc-gov.md",21008],"56cec7ea":[()=>n.e(9363).then(n.bind(n,40976)),"@site/docs/bcfusion/users/timelocks.md",40976],"5724b0c4":[()=>n.e(3268).then(n.bind(n,72690)),"@site/docs/issue-BEP20.md",72690],"57dfcb57":[()=>n.e(624).then(n.bind(n,16651)),"@site/docs/wallet/extension/seed.md",16651],"586689e4":[()=>n.e(1208).then(n.bind(n,48693)),"@site/docs/wallets/tutorial/videos.md",48693],"58fa094e":[()=>n.e(3013).then(n.bind(n,76148)),"@site/docs/bnb-chain-wallet.md",76148],"592d8667":[()=>n.e(754).then(n.bind(n,40111)),"@site/docs/BSC-testnet-explorers.md",40111],"597afff9":[()=>n.e(9551).then(n.bind(n,53414)),"@site/docs/beaconchain/trade.md",53414],"59fd2fc7":[()=>n.e(4002).then(n.bind(n,27291)),"@site/docs/beaconchain/develop/node/fullnodeissue.md",27291],"5d035c0c":[()=>n.e(9009).then(n.bind(n,42694)),"@site/docs/wallet/extension/reset.md",42694],"5d256d9e":[()=>n.e(2973).then(n.bind(n,16426)),"@site/docs/beaconchain/wallet/tutorial/How-to-use-BSC-on-imToken.md",16426],"5dc3c8f6":[()=>n.e(6843).then(n.bind(n,31885)),"@site/docs/beaconchain/develop/api-reference/dex-api/staking.md",31885],"5df04955":[()=>n.e(4330).then(n.bind(n,74838)),"@site/docs/beaconchain/develop/api-reference/dex-api/bridge-widget.md",74838],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,36809)),"@generated/docusaurus.config",36809],"5f00e493":[()=>n.e(5478).then(n.bind(n,50610)),"@site/docs/beaconchain/index.md",50610],"601bd9b3":[()=>n.e(9109).then(n.bind(n,31745)),"@site/docs/beaconchain/blockchain.md",31745],"606e9499":[()=>n.e(9402).then(n.bind(n,5992)),"@site/docs/migration/non-evm-chains/solana/architecture-comparison.md",5992],"61509a60":[()=>n.e(4225).then(n.bind(n,30786)),"@site/docs/beaconchain/learn/bc-slashing.md",30786],"61b88e35":[()=>n.e(1969).then(n.bind(n,16966)),"@site/docs/beaconchain/memo-validation.md",16966],"61c2b592":[()=>n.e(6128).then(n.bind(n,6939)),"@site/docs/validator/node-maintenance.md",6939],"658db2fd":[()=>n.e(7729).then(n.bind(n,48215)),"@site/docs/keys.md",48215],"65fc7665":[()=>n.e(1318).then(n.bind(n,94821)),"@site/docs/learn/oracle-relayer.md",94821],"6639555e":[()=>n.e(1938).then(n.bind(n,56638)),"@site/docs/cross.md",56638],"674b291d":[()=>n.e(6212).then(n.bind(n,61723)),"@site/docs/beaconchain/offline.md",61723],"6794fe4c":[()=>n.e(7086).then(n.bind(n,60372)),"@site/docs/wallet/extension/add-asset.md",60372],68396417:[()=>n.e(4554).then(n.bind(n,11222)),"@site/docs/beaconchain/encoding.md",11222],"687e506c":[()=>n.e(5941).then(n.bind(n,7471)),"@site/docs/venly-nft-api.md",7471],"695536cb":[()=>n.e(8148).then(n.bind(n,77154)),"@site/docs/wallet/bnb-chain-wallet.md",77154],"6974a59e":[()=>n.e(1577).then(n.bind(n,32091)),"@site/docs/beaconchain/acknowledgement.md",32091],"6976bb1a":[()=>n.e(6067).then(n.bind(n,37544)),"@site/docs/mev/faqs.md",37544],"699b933d":[()=>n.e(246).then(n.bind(n,9318)),"@site/docs/mirror.md",9318],"6b4e7cc0":[()=>n.e(7958).then(n.bind(n,42952)),"@site/docs/remix-new.md",42952],"6b502c6d":[()=>n.e(9835).then(n.bind(n,62488)),"@site/docs/BSCmainnet.md",62488],"6b7ff034":[()=>n.e(2271).then(n.bind(n,47106)),"@site/docs/beaconchain/learn/BEP82.md",47106],"6cf6a508":[()=>n.e(7560).then(n.bind(n,52129)),"@site/docs/beaconchain/learn/atomic-swaps.md",52129],"6d5ccf3c":[()=>n.e(5184).then(n.bind(n,7070)),"@site/docs/beaconchain/fullnode.md",7070],"6dd408b0":[()=>n.e(1902).then(n.bind(n,88546)),"@site/docs/beaconchain/develop/node/nodetypes.md",88546],"6e83d4d1":[()=>n.e(1805).then(n.bind(n,9596)),"@site/docs/dapp-dev/web3js-tutorial.md",9596],"6ecc76ed":[()=>n.e(910).then(n.bind(n,1739)),"@site/docs/migration/evm-chains/token-comparison.md",1739],"70ebf55c":[()=>n.e(1998).then(n.bind(n,59496)),"@site/docs/dev-outlook/decentralization.md",59496],"718d2dcc":[()=>n.e(7006).then(n.bind(n,93647)),"@site/docs/staking-with-ext-wallet.md",93647],"725bcd8a":[()=>n.e(2100).then(n.bind(n,52364)),"@site/docs/wallet/extension/safe.md",52364],"7335f490":[()=>n.e(6670).then(n.bind(n,70345)),"@site/docs/beaconchain/develop/api-reference/dex-api/bridge.md",70345],"74da69c6":[()=>n.e(8566).then(n.bind(n,30916)),"@site/docs/beaconchain/develop/api-reference/dex-api/paths.md",30916],76061115:[()=>n.e(9392).then(n.bind(n,1352)),"@site/docs/beaconchain/learn/threshold-signature-scheme.md",1352],"767b2b71":[()=>n.e(3406).then(n.bind(n,58967)),"@site/docs/beaconchain/anti-frontrun.md",58967],"776f2dca":[()=>n.e(1994).then(n.bind(n,29156)),"@site/docs/api-reference/sdk.md",29156],"7819d3b5":[()=>n.e(913).then(n.bind(n,50443)),"@site/docs/beaconchain/learn/trading-interface.md",50443],"7b298cde":[()=>n.e(8795).then(n.bind(n,28285)),"@site/docs/bind-tokens.md",28285],"7b6b3838":[()=>n.e(5333).then(n.bind(n,53912)),"@site/docs/wallets/tutorial/ledger-nano-s-usage-guide.md",53912],"7bf9570a":[()=>n.e(6980).then(n.bind(n,66174)),"@site/docs/beaconchain/develop/api-reference/dex-api/ws-connection.md",66174],"7ca3659a":[()=>n.e(6453).then(n.bind(n,34396)),"@site/docs/BSC-separate-node.md",34396],"7cc3c980":[()=>n.e(7457).then(n.bind(n,22117)),"@site/docs/submit-dapp.md",22117],"7cc7300b":[()=>n.e(3913).then(n.bind(n,42047)),"@site/docs/wallet/binance-cn.md",42047],"7d370da3":[()=>n.e(2212).then(n.bind(n,36754)),"@site/docs/wallet/AlphaWallet.md",36754],"7d79a86a":[()=>n.e(4835).then(n.bind(n,52798)),"@site/docs/beaconchain/atomic-swap.md",52798],"7d930281":[()=>n.e(2264).then(n.bind(n,85398)),"@site/docs/BSC-mainnet-explorers.md",85398],"7da45d1b":[()=>n.e(76).then(n.bind(n,250)),"@site/docs/BSC-fast-node.md",250],"7f9f2386":[()=>n.e(6899).then(n.bind(n,51456)),"@site/docs/beaconchain/validator/create-val.md",51456],"80118b91":[()=>n.e(5182).then(n.t.bind(n,7085,19)),"/home/runner/work/bnb-chain.github.io/bnb-chain.github.io/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7085],"819aea7e":[()=>n.e(789).then(n.bind(n,93310)),"@site/docs/bcfusion/validators/migrations.md",93310],"820a1e19":[()=>n.e(3479).then(n.bind(n,59208)),"@site/docs/beaconchain/faq/faq.md",59208],"823c31cd":[()=>n.e(6516).then(n.bind(n,78497)),"@site/docs/bcfusion/users/stake-migration.md",78497],"827c765e":[()=>n.e(9868).then(n.bind(n,95755)),"@site/docs/beaconchain/learn/architecture.md",95755],"82c6054d":[()=>n.e(2211).then(n.bind(n,50381)),"@site/docs/beaconchain/develop/rpc.md",50381],"8311baf6":[()=>n.e(6022).then(n.bind(n,83993)),"@site/docs/validator/best-practice.md",83993],"8388d427":[()=>n.e(6342).then(n.bind(n,28543)),"@site/docs/BSC-FAQs.md",28543],"841a1ae5":[()=>n.e(5894).then(n.bind(n,72296)),"@site/docs/circulation-model.md",72296],"843b88bc":[()=>n.e(5687).then(n.bind(n,6767)),"@site/docs/beaconchain/learn/genesis.md",6767],"84c6b5d4":[()=>n.e(2403).then(n.bind(n,29349)),"@site/docs/wallet/withdraw-en.md",29349],"864b21f2":[()=>n.e(6266).then(n.bind(n,97106)),"@site/docs/BC-FAQs.md",97106],"86e33bb9":[()=>n.e(4099).then(n.bind(n,12942)),"@site/docs/replit.md",12942],"8864f5f8":[()=>n.e(3753).then(n.bind(n,79354)),"@site/docs/dev-tools.md",79354],"8882742c":[()=>n.e(1327).then(n.bind(n,8419)),"@site/docs/wallets/tutorial/bep8.md",8419],"89381d81":[()=>n.e(4450).then(n.bind(n,80719)),"@site/docs/validator/upgrade-fullnode.md",80719],"8a67881a":[()=>n.e(1830).then(n.bind(n,35569)),"@site/docs/bcfusion/developers/system-contracts.md",35569],"8bd870ef":[()=>n.e(2970).then(n.bind(n,61215)),"@site/docs/beaconchain/learn/escrow-accounts.md",61215],"8c20990f":[()=>n.e(859).then(n.bind(n,93406)),"@site/docs/validator/slash-fee.md",93406],"8c8eed79":[()=>n.e(3311).then(n.bind(n,16686)),"@site/docs/beaconchain/account.md",16686],"8dca7265":[()=>n.e(4717).then(n.bind(n,84309)),"@site/docs/bcfusion/validators/key-management.md",84309],"8f96c667":[()=>n.e(3719).then(n.bind(n,5467)),"@site/docs/validator/monitor-and-query-slash.md",5467],"913d1df3":[()=>n.e(5677).then(n.bind(n,41393)),"@site/docs/nft-metadata-standard.md",41393],"9233b6a0":[()=>n.e(6112).then(n.bind(n,1210)),"@site/docs/beaconchain/learn/breathe-block.md",1210],"931e9fae":[()=>n.e(7144).then(n.bind(n,43224)),"@site/docs/beaconchain/learn/fees.md",43224],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"936cbf1c":[()=>n.e(1595).then(n.bind(n,19369)),"@site/docs/learn/bsc-gov.md",19369],"93991a3d":[()=>n.e(4417).then(n.bind(n,84724)),"@site/docs/wallet/withdraw-cn.md",84724],"95a2a291":[()=>n.e(7479).then(n.bind(n,64227)),"@site/docs/beaconchain/light-client.md",64227],"9609c8f6":[()=>n.e(4132).then(n.bind(n,98535)),"@site/docs/beaconchain/tokens.md",98535],"96b89644":[()=>n.e(1861).then(n.bind(n,46022)),"@site/docs/sync.md",46022],"97a1f5f3":[()=>n.e(933).then(n.bind(n,99437)),"@site/docs/beaconchain/wallet/tutorial/how-to-trade-on-binance-dex.md",99437],"98ee90af":[()=>n.e(3259).then(n.bind(n,10597)),"@site/docs/learn/consensus.md",10597],"99ef32f4":[()=>n.e(3277).then(n.bind(n,50553)),"@site/docs/beaconchain/learn/assets.md",50553],"9b41c68f":[()=>n.e(3014).then(n.bind(n,77942)),"@site/docs/bcfusion/users/assets.md",77942],"9bfac0a1":[()=>n.e(7372).then(n.bind(n,825)),"@site/docs/create-wallet.md",825],"9d12552c":[()=>n.e(1915).then(n.bind(n,68856)),"@site/docs/link.md",68856],"9e9695ea":[()=>n.e(740).then(n.bind(n,93770)),"@site/docs/truffle.md",93770],"9ea974a1":[()=>n.e(5227).then(n.bind(n,71380)),"@site/docs/manual.md",71380],"9ee78e3d":[()=>n.e(2042).then(n.bind(n,34132)),"@site/docs/learn/system-contract.md",34132],a126a101:[()=>n.e(1051).then(n.bind(n,17727)),"@site/docs/dapp-dev/Hello-World.md",17727],a1d0e770:[()=>n.e(9263).then(n.bind(n,33348)),"@site/docs/learn/oracle-module.md",33348],a2a686b1:[()=>n.e(3447).then(n.bind(n,45703)),"@site/docs/bcfusion/users/new-stake.md",45703],a30d6a39:[()=>n.e(3436).then(n.bind(n,97380)),"@site/docs/beaconchain/develop/node/join-testnet.md",97380],a585c99c:[()=>n.e(655).then(n.bind(n,88909)),"@site/docs/mev/validator-integration.md",88909],a719f608:[()=>n.e(8452).then(n.bind(n,19640)),"@site/docs/beaconchain/learn/trading-specification.md",19640],a72ad06f:[()=>n.e(9539).then(n.bind(n,39906)),"@site/docs/validator/security.md",39906],a8c31594:[()=>n.e(512).then(n.bind(n,33819)),"@site/docs/beaconchain/develop/api-reference/dex-api/paths-testnet.md",33819],a8e5477a:[()=>n.e(1544).then(n.bind(n,43533)),"@site/docs/beaconchain/validator/run-val.md",43533],a9d4f8dd:[()=>n.e(7631).then(n.bind(n,78679)),"@site/docs/BSCexplorers.md",78679],aa4704fa:[()=>n.e(7554).then(n.bind(n,74037)),"@site/docs/wallet/metamask.md",74037],ab6ec9c9:[()=>n.e(5766).then(n.bind(n,79170)),"@site/docs/beaconchain/learn/encoding/encoding.md",79170],aba2fd11:[()=>n.e(5178).then(n.bind(n,89488)),"@site/docs/beaconchain/learn/encoding/amino-example.md",89488],ac3eef92:[()=>n.e(6434).then(n.bind(n,62153)),"@site/docs/tokens-cross-chain.md",62153],ae1b1adb:[()=>n.e(6891).then(n.bind(n,5276)),"@site/docs/beaconchain/develop/bcsdk.md",5276],ae5b1410:[()=>n.e(956).then(n.bind(n,10507)),"@site/docs/beaconchain/chain-access.md",10507],aeb57ceb:[()=>n.e(1213).then(n.bind(n,47073)),"@site/docs/beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet.md",47073],af50bec2:[()=>n.e(2692).then(n.bind(n,37224)),"@site/docs/wallet/myetherwallet.md",37224],b0d837a2:[()=>n.e(5353).then(n.bind(n,41253)),"@site/docs/beaconchain/walletconnect-support.md",41253],b172b294:[()=>n.e(5816).then(n.bind(n,94737)),"@site/docs/beaconchain/walletconnect.md",94737],b5189564:[()=>n.e(8609).then(n.bind(n,39531)),"@site/docs/beaconchain/develop/node/upgrade.md",39531],b694928c:[()=>n.e(4341).then(n.bind(n,9462)),"@site/docs/beaconchain/develop/node/localnetwork.md",9462],b77aed85:[()=>n.e(7021).then(n.bind(n,13551)),"@site/docs/wallet_api.md",13551],b79fb02a:[()=>n.e(5614).then(n.bind(n,50851)),"@site/docs/beaconchain/develop/api-reference/node-rpc.md",50851],b7a8c418:[()=>n.e(8852).then(n.bind(n,42181)),"@site/docs/wallet/ledger.md",42181],b8327182:[()=>n.e(8629).then(n.bind(n,66295)),"@site/docs/dia.md",66295],bb56c414:[()=>n.e(2258).then(n.bind(n,59829)),"@site/docs/bsc-faucet.md",59829],bba8d026:[()=>n.e(4165).then(n.bind(n,81446)),"@site/docs/wallet/math-resource.md",81446],bc8da1ef:[()=>n.e(5074).then(n.bind(n,90331)),"@site/docs/beaconchain/match-examples.md",90331],be68102f:[()=>n.e(899).then(n.bind(n,71522)),"@site/docs/wallet/coin98wallet.md",71522],bef893b8:[()=>n.e(5352).then(n.bind(n,18515)),"@site/docs/token-bind-tool.md",18515],c0602f71:[()=>n.e(1637).then(n.bind(n,12432)),"@site/docs/wallet/trustwallet.md",12432],c1d67c6f:[()=>n.e(1806).then(n.bind(n,58440)),"@site/docs/wallets/wallet-tutorial-overview.md",58440],c24cede4:[()=>n.e(3226).then(n.bind(n,24075)),"@site/docs/bsc-tutorials.md",24075],c29fd1d9:[()=>n.e(1373).then(n.bind(n,37882)),"@site/docs/BSC-FAQs-validator.md",37882],c4f5d8e4:[()=>n.e(4195).then(n.bind(n,62841)),"@site/src/pages/index.js",62841],c52b2720:[()=>n.e(2691).then(n.bind(n,58012)),"@site/docs/learn/beaconIntro.md",58012],c801e96e:[()=>n.e(6833).then(n.bind(n,60430)),"@site/docs/beaconchain/get-started.md",60430],c8a2ef77:[()=>n.e(3990).then(n.bind(n,54045)),"@site/docs/learn/cross-chain.md",54045],c9229a84:[()=>n.e(775).then(n.bind(n,36279)),"@site/docs/beaconchain/exchange-integration.md",36279],ca21e936:[()=>Promise.all([n.e(532),n.e(2040),n.e(8573)]).then(n.bind(n,67955)),"@site/src/pages/bc-start.js",67955],cad38203:[()=>n.e(9943).then(n.bind(n,7950)),"@site/docs/beaconchain/learn/signature.md",7950],cb751f93:[()=>n.e(4039).then(n.bind(n,91760)),"@site/docs/bcfusion/validators/slash.md",91760],cc32ad1c:[()=>n.e(4234).then(n.bind(n,55803)),"@site/docs/wallets/tutorial/how-to-create-a-wallet-on-trustwallet.md",55803],cd5a7ece:[()=>n.e(5546).then(n.bind(n,60235)),"@site/docs/proxy.md",60235],ceddd399:[()=>n.e(3012).then(n.bind(n,55083)),"@site/docs/validator/run-val.md",55083],cf85ede8:[()=>n.e(4581).then(n.bind(n,14002)),"@site/docs/beaconchain/develop/node/install.md",14002],cff456ab:[()=>n.e(5605).then(n.bind(n,46315)),"@site/docs/beaconchain/develop/api-reference/block-service-example.md",46315],d045f752:[()=>n.e(6812).then(n.bind(n,34781)),"@site/docs/bcfusion/developers/gov.md",34781],d21a06aa:[()=>n.e(7608).then(n.bind(n,54766)),"@site/docs/api-reference/cli.md",54766],d2ef7841:[()=>n.e(5898).then(n.bind(n,61476)),"@site/docs/beaconchain/bc-tutorials.md",61476],d4187e8a:[()=>n.e(6338).then(n.bind(n,59842)),"@site/docs/wallet/venly.md",59842],d589d3a7:[()=>n.e(7162).then(n.bind(n,99390)),"@site/docs/getting-started.md",99390],d5a087f5:[()=>n.e(372).then(n.bind(n,31111)),"@site/docs/bcfusion/validators/creation.md",31111],d7c447b7:[()=>n.e(5160).then(n.bind(n,49208)),"@site/docs/beaconchain/develop/node/fullnode-faq.md",49208],d8c7cd00:[()=>n.e(9883).then(n.bind(n,63516)),"@site/docs/beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet.md",63516],d9b93d98:[()=>n.e(3831).then(n.bind(n,65085)),"@site/docs/beaconchain/learn/accounts.md",65085],d9d6f3fe:[()=>n.e(8340).then(n.bind(n,26157)),"@site/docs/bcfusion/users/bep153-stake-migration.md",26157],db0000f8:[()=>n.e(6711).then(n.bind(n,27688)),"@site/docs/rpc.md",27688],db2ee795:[()=>n.e(1950).then(n.bind(n,61340)),"@site/docs/learn/ecosystem.md",61340],dbb9ff6e:[()=>n.e(4317).then(n.bind(n,62914)),"@site/docs/beaconchain/validator/overview.md",62914],dca35320:[()=>n.e(8994).then(n.bind(n,60381)),"@site/docs/beaconchain/keys.md",60381],dcec6889:[()=>n.e(3231).then(n.bind(n,92310)),"@site/docs/nft_blackide.md",92310],dd386418:[()=>n.e(7808).then(n.bind(n,78560)),"@site/docs/bcfusion/developers/crosschain-redelegation.md",78560],de4a6a6c:[()=>n.e(7093).then(n.bind(n,6036)),"@site/docs/wallet/staking.md",6036],de5cb490:[()=>n.e(1623).then(n.bind(n,8716)),"@site/docs/beaconchain/transfer.md",8716],df23e008:[()=>n.e(2506).then(n.bind(n,10600)),"@site/docs/wallets/tutorial/BSCimToken.md",10600],df71083d:[()=>n.e(3369).then(n.bind(n,48663)),"@site/docs/wallet/math.md",48663],dfd3236d:[()=>n.e(617).then(n.bind(n,51237)),"@site/docs/add-account.md",51237],e0350bff:[()=>n.e(7055).then(n.bind(n,95764)),"@site/docs/beaconchain/develop/api-reference/transactions.md",95764],e29e6131:[()=>n.e(1824).then(n.bind(n,67906)),"@site/docs/get-extra-data-from-fullnode.md",67906],e3677851:[()=>n.e(3110).then(n.bind(n,88717)),"@site/docs/migration/non-evm-chains/solana/token-migration.md",88717],e48c32e6:[()=>n.e(8489).then(n.bind(n,57024)),"@site/docs/nft-storage.md",57024],e4fcb135:[()=>n.e(5845).then(n.bind(n,16753)),"@site/docs/encoding.md",16753],e588fe04:[()=>n.e(7724).then(n.bind(n,65241)),"@site/docs/wallet/create-wallet.md",65241],e64f9346:[()=>n.e(4662).then(n.bind(n,36691)),"@site/docs/learn/cross-chain-api.md",36691],e7245c0e:[()=>n.e(1120).then(n.bind(n,96795)),"@site/docs/beaconchain/dataseed_list.md",96795],e9e588e3:[()=>n.e(7976).then(n.bind(n,98530)),"@site/docs/Wallet.md",98530],ea8e0bfc:[()=>n.e(1166).then(n.bind(n,22131)),"@site/docs/beaconchain/develop/node/extra-info.md",22131],eab1b5b1:[()=>n.e(8475).then(n.bind(n,29116)),"@site/docs/beaconchain/develop/api-reference/cli.md",29116],eaea0c8e:[()=>n.e(5456).then(n.bind(n,63326)),"@site/docs/validator/fullnode.md",63326],ed42b368:[()=>n.e(4793).then(n.bind(n,62322)),"@site/docs/bcfusion/users/gov.md",62322],efa021b8:[()=>n.e(9248).then(n.bind(n,52039)),"@site/docs/band.md",52039],f0b44263:[()=>n.e(855).then(n.bind(n,6047)),"@site/docs/beaconchain/list_instruction.md",6047],f0bb5ae7:[()=>n.e(8764).then(n.bind(n,31036)),"@site/docs/bcfusion/validators/staking.md",31036],f25ec694:[()=>n.e(2874).then(n.bind(n,95333)),"@site/docs/bcfusion/overview.md",95333],f4b7dbf9:[()=>n.e(26).then(n.bind(n,45253)),"@site/docs/wallet/extension/direct.md",45253],f4c65d51:[()=>n.e(6798).then(n.bind(n,66269)),"@site/docs/learn/genesis.md",66269],f8f60af7:[()=>n.e(844).then(n.bind(n,11820)),"@site/docs/trading-spec.md",11820],fb2aac14:[()=>n.e(2303).then(n.bind(n,6894)),"@site/docs/wallets/tutorial/how-to-trade-on-binance-dex.md",6894],fbd7b53b:[()=>n.e(5667).then(n.bind(n,67091)),"@site/docs/bcfusion/validators/gov.md",67091],fda3c7b4:[()=>n.e(8247).then(n.bind(n,84813)),"@site/docs/wallet/infinitywallet.md",84813],fe67312f:[()=>n.e(210).then(n.bind(n,81627)),"@site/docs/mev/builder-integration.md",81627]};function l(e){let{error:t,retry:n,pastDelay:o}=e;return t?a.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},a.createElement("p",null,String(t)),a.createElement("div",null,a.createElement("button",{type:"button",onClick:n},"Retry"))):o?a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},a.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},a.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},a.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},a.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),a.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},a.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),a.createElement("circle",{cx:"22",cy:"22",r:"8"},a.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var d=n(99670),u=n(30226);function p(e,t){if("*"===e)return i()({loading:l,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return a.createElement(u.z,{value:{plugin:{name:"native",id:"default"}}},a.createElement(n,t))}});const r=c[`${e}-${t}`],p={},f=[],m=[],h=(0,d.Z)(r);return Object.entries(h).forEach((e=>{let[t,n]=e;const a=s[n];a&&(p[t]=a[0],f.push(a[1]),m.push(a[2]))})),i().Map({loading:l,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,a]=t;const o=a.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(a).filter((e=>"default"!==e)).forEach((e=>{o[e]=a[e]}));let r=i;const c=n.split(".");c.slice(0,-1).forEach((e=>{r=r[e]})),r[c[c.length-1]]=o}));const c=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,a.createElement(u.z,{value:s},a.createElement(c,(0,o.Z)({},i,n)))}})}const f=[{path:"/bc-start/",component:p("/bc-start/","d9f"),exact:!0},{path:"/markdown-page/",component:p("/markdown-page/","d8e"),exact:!0},{path:"/search/",component:p("/search/","ccc"),exact:!0},{path:"/docs/",component:p("/docs/","8d9"),routes:[{path:"/docs/add-account/",component:p("/docs/add-account/","e1b"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/api-reference/cli/",component:p("/docs/api-reference/cli/","33d"),exact:!0},{path:"/docs/api-reference/dex-api/paths/",component:p("/docs/api-reference/dex-api/paths/","c76"),exact:!0},{path:"/docs/api-reference/node-rpc/",component:p("/docs/api-reference/node-rpc/","ec9"),exact:!0},{path:"/docs/api-reference/sdk/",component:p("/docs/api-reference/sdk/","4c9"),exact:!0},{path:"/docs/archivenode/",component:p("/docs/archivenode/","f9f"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/band/",component:p("/docs/band/","0b4"),exact:!0},{path:"/docs/BC-FAQs/",component:p("/docs/BC-FAQs/","91f"),exact:!0},{path:"/docs/bcfusion/developers/crosschain-redelegation/",component:p("/docs/bcfusion/developers/crosschain-redelegation/","74a"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/developers/gov/",component:p("/docs/bcfusion/developers/gov/","82c"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/developers/staking/",component:p("/docs/bcfusion/developers/staking/","c9a"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/developers/system-contracts/",component:p("/docs/bcfusion/developers/system-contracts/","323"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/overview/",component:p("/docs/bcfusion/overview/","9db"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/owners/bind/",component:p("/docs/bcfusion/owners/bind/","0a8"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/users/assets/",component:p("/docs/bcfusion/users/assets/","5b4"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/users/bep153-stake-migration/",component:p("/docs/bcfusion/users/bep153-stake-migration/","b2b"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/users/gov/",component:p("/docs/bcfusion/users/gov/","237"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/users/new-stake/",component:p("/docs/bcfusion/users/new-stake/","0e0"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/users/stake-migration/",component:p("/docs/bcfusion/users/stake-migration/","f02"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/users/swaps/",component:p("/docs/bcfusion/users/swaps/","5db"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/users/timelocks/",component:p("/docs/bcfusion/users/timelocks/","b05"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/validators/creation/",component:p("/docs/bcfusion/validators/creation/","000"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/validators/gov/",component:p("/docs/bcfusion/validators/gov/","6c9"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/validators/key-management/",component:p("/docs/bcfusion/validators/key-management/","85f"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/validators/migrations/",component:p("/docs/bcfusion/validators/migrations/","c30"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/validators/slash/",component:p("/docs/bcfusion/validators/slash/","388"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bcfusion/validators/staking/",component:p("/docs/bcfusion/validators/staking/","065"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/",component:p("/docs/beaconchain/","d3e"),exact:!0},{path:"/docs/beaconchain/account/",component:p("/docs/beaconchain/account/","ed2"),exact:!0},{path:"/docs/beaconchain/acknowledgement/",component:p("/docs/beaconchain/acknowledgement/","a66"),exact:!0},{path:"/docs/beaconchain/anti-frontrun/",component:p("/docs/beaconchain/anti-frontrun/","c18"),exact:!0},{path:"/docs/beaconchain/atomic-swap/",component:p("/docs/beaconchain/atomic-swap/","cb9"),exact:!0},{path:"/docs/beaconchain/bc-tutorials/",component:p("/docs/beaconchain/bc-tutorials/","39d"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/blockchain/",component:p("/docs/beaconchain/blockchain/","3d3"),exact:!0},{path:"/docs/beaconchain/chain-access/",component:p("/docs/beaconchain/chain-access/","749"),exact:!0},{path:"/docs/beaconchain/CONTRIBUTING/",component:p("/docs/beaconchain/CONTRIBUTING/","363"),exact:!0},{path:"/docs/beaconchain/dataseed_list/",component:p("/docs/beaconchain/dataseed_list/","5ed"),exact:!0},{path:"/docs/beaconchain/develop/api-reference/block-service-example/",component:p("/docs/beaconchain/develop/api-reference/block-service-example/","b92"),exact:!0},{path:"/docs/beaconchain/develop/api-reference/cli/",component:p("/docs/beaconchain/develop/api-reference/cli/","d67"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/api-reference/dex-api/block-service-example/",component:p("/docs/beaconchain/develop/api-reference/dex-api/block-service-example/","16f"),exact:!0},{path:"/docs/beaconchain/develop/api-reference/dex-api/block-service/",component:p("/docs/beaconchain/develop/api-reference/dex-api/block-service/","2ca"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/api-reference/dex-api/bridge-widget/",component:p("/docs/beaconchain/develop/api-reference/dex-api/bridge-widget/","812"),exact:!0},{path:"/docs/beaconchain/develop/api-reference/dex-api/bridge/",component:p("/docs/beaconchain/develop/api-reference/dex-api/bridge/","04f"),exact:!0},{path:"/docs/beaconchain/develop/api-reference/dex-api/migration-guide/",component:p("/docs/beaconchain/develop/api-reference/dex-api/migration-guide/","345"),exact:!0},{path:"/docs/beaconchain/develop/api-reference/dex-api/paths-testnet/",component:p("/docs/beaconchain/develop/api-reference/dex-api/paths-testnet/","5a5"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/api-reference/dex-api/paths/",component:p("/docs/beaconchain/develop/api-reference/dex-api/paths/","cc0"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/api-reference/dex-api/staking/",component:p("/docs/beaconchain/develop/api-reference/dex-api/staking/","ef9"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/api-reference/dex-api/ws-connection/",component:p("/docs/beaconchain/develop/api-reference/dex-api/ws-connection/","9b8"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/api-reference/dex-api/ws-streams/",component:p("/docs/beaconchain/develop/api-reference/dex-api/ws-streams/","888"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/api-reference/http-api/",component:p("/docs/beaconchain/develop/api-reference/http-api/","083"),exact:!0},{path:"/docs/beaconchain/develop/api-reference/node-rpc/",component:p("/docs/beaconchain/develop/api-reference/node-rpc/","a5c"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/api-reference/transactions/",component:p("/docs/beaconchain/develop/api-reference/transactions/","76d"),exact:!0},{path:"/docs/beaconchain/develop/bcsdk/",component:p("/docs/beaconchain/develop/bcsdk/","885"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/node/extra-info/",component:p("/docs/beaconchain/develop/node/extra-info/","acc"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/node/fullnode-faq/",component:p("/docs/beaconchain/develop/node/fullnode-faq/","8cc"),exact:!0},{path:"/docs/beaconchain/develop/node/fullnodeissue/",component:p("/docs/beaconchain/develop/node/fullnodeissue/","96d"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/node/install/",component:p("/docs/beaconchain/develop/node/install/","07f"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/node/join-mainnet/",component:p("/docs/beaconchain/develop/node/join-mainnet/","40c"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/node/join-testnet/",component:p("/docs/beaconchain/develop/node/join-testnet/","e0c"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/node/localnetwork/",component:p("/docs/beaconchain/develop/node/localnetwork/","3d8"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/node/nodetypes/",component:p("/docs/beaconchain/develop/node/nodetypes/","7cb"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/node/snapshot/",component:p("/docs/beaconchain/develop/node/snapshot/","11e"),exact:!0},{path:"/docs/beaconchain/develop/node/synctypes/",component:p("/docs/beaconchain/develop/node/synctypes/","202"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/node/upgrade/",component:p("/docs/beaconchain/develop/node/upgrade/","3dc"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/rpc/",component:p("/docs/beaconchain/develop/rpc/","6e1"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/develop/testnetandexplorer/",component:p("/docs/beaconchain/develop/testnetandexplorer/","d5a"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/encoding/",component:p("/docs/beaconchain/encoding/","edd"),exact:!0},{path:"/docs/beaconchain/exchange-integration/",component:p("/docs/beaconchain/exchange-integration/","1df"),exact:!0},{path:"/docs/beaconchain/faq/",component:p("/docs/beaconchain/faq/","538"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/fullnode/",component:p("/docs/beaconchain/fullnode/","c59"),exact:!0},{path:"/docs/beaconchain/fullnodeissue/",component:p("/docs/beaconchain/fullnodeissue/","af6"),exact:!0},{path:"/docs/beaconchain/get-extra-data-from-fullnode/",component:p("/docs/beaconchain/get-extra-data-from-fullnode/","5c8"),exact:!0},{path:"/docs/beaconchain/get-started/",component:p("/docs/beaconchain/get-started/","aa6"),exact:!0},{path:"/docs/beaconchain/imToken/",component:p("/docs/beaconchain/imToken/","965"),exact:!0},{path:"/docs/beaconchain/keys/",component:p("/docs/beaconchain/keys/","78d"),exact:!0},{path:"/docs/beaconchain/learn/accounts/",component:p("/docs/beaconchain/learn/accounts/","48b"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/architecture/",component:p("/docs/beaconchain/learn/architecture/","ea7"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/assets/",component:p("/docs/beaconchain/learn/assets/","f67"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/atomic-swaps/",component:p("/docs/beaconchain/learn/atomic-swaps/","261"),exact:!0},{path:"/docs/beaconchain/learn/bc-bridge/",component:p("/docs/beaconchain/learn/bc-bridge/","c0c"),exact:!0},{path:"/docs/beaconchain/learn/bc-slashing/",component:p("/docs/beaconchain/learn/bc-slashing/","bb4"),exact:!0},{path:"/docs/beaconchain/learn/bc-staking/",component:p("/docs/beaconchain/learn/bc-staking/","48c"),exact:!0},{path:"/docs/beaconchain/learn/BEP8/",component:p("/docs/beaconchain/learn/BEP8/","069"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/BEP82/",component:p("/docs/beaconchain/learn/BEP82/","7c1"),exact:!0},{path:"/docs/beaconchain/learn/breathe-block/",component:p("/docs/beaconchain/learn/breathe-block/","538"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/bsc-gov/",component:p("/docs/beaconchain/learn/bsc-gov/","219"),exact:!0},{path:"/docs/beaconchain/learn/encoding/",component:p("/docs/beaconchain/learn/encoding/","09b"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/encoding/amino-example/",component:p("/docs/beaconchain/learn/encoding/amino-example/","c7e"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/escrow-accounts/",component:p("/docs/beaconchain/learn/escrow-accounts/","e66"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/fees/",component:p("/docs/beaconchain/learn/fees/","d16"),exact:!0},{path:"/docs/beaconchain/learn/genesis/",component:p("/docs/beaconchain/learn/genesis/","4c9"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/matching-engine/",component:p("/docs/beaconchain/learn/matching-engine/","bb7"),exact:!0},{path:"/docs/beaconchain/learn/signature/",component:p("/docs/beaconchain/learn/signature/","728"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/threshold-signature-scheme/",component:p("/docs/beaconchain/learn/threshold-signature-scheme/","7d9"),exact:!0},{path:"/docs/beaconchain/learn/trading-interface/",component:p("/docs/beaconchain/learn/trading-interface/","2c6"),exact:!0},{path:"/docs/beaconchain/learn/trading-specification/",component:p("/docs/beaconchain/learn/trading-specification/","79e"),exact:!0},{path:"/docs/beaconchain/learn/transaction/",component:p("/docs/beaconchain/learn/transaction/","63e"),exact:!0},{path:"/docs/beaconchain/learn/transactions/",component:p("/docs/beaconchain/learn/transactions/","24c"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/learn/walletconnect/",component:p("/docs/beaconchain/learn/walletconnect/","97b"),exact:!0},{path:"/docs/beaconchain/light-client/",component:p("/docs/beaconchain/light-client/","859"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/list_instruction/",component:p("/docs/beaconchain/list_instruction/","848"),exact:!0},{path:"/docs/beaconchain/list/",component:p("/docs/beaconchain/list/","acc"),exact:!0},{path:"/docs/beaconchain/match-examples/",component:p("/docs/beaconchain/match-examples/","9c3"),exact:!0},{path:"/docs/beaconchain/match/",component:p("/docs/beaconchain/match/","65f"),exact:!0},{path:"/docs/beaconchain/memo-validation/",component:p("/docs/beaconchain/memo-validation/","d2e"),exact:!0},{path:"/docs/beaconchain/offline/",component:p("/docs/beaconchain/offline/","ff6"),exact:!0},{path:"/docs/beaconchain/resources/",component:p("/docs/beaconchain/resources/","bdc"),exact:!0},{path:"/docs/beaconchain/timelock/",component:p("/docs/beaconchain/timelock/","85d"),exact:!0},{path:"/docs/beaconchain/tokens/",component:p("/docs/beaconchain/tokens/","1f9"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/trade/",component:p("/docs/beaconchain/trade/","289"),exact:!0},{path:"/docs/beaconchain/trading-spec/",component:p("/docs/beaconchain/trading-spec/","ffc"),exact:!0},{path:"/docs/beaconchain/transfer/",component:p("/docs/beaconchain/transfer/","d3a"),exact:!0},{path:"/docs/beaconchain/tss/",component:p("/docs/beaconchain/tss/","8f1"),exact:!0},{path:"/docs/beaconchain/validator/create-val/",component:p("/docs/beaconchain/validator/create-val/","eb9"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/validator/overview/",component:p("/docs/beaconchain/validator/overview/","aec"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/validator/run-val/",component:p("/docs/beaconchain/validator/run-val/","550"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet/",component:p("/docs/beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet/","6fb"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/wallet/tutorial/bep8/",component:p("/docs/beaconchain/wallet/tutorial/bep8/","bbb"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet/",component:p("/docs/beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet/","1cb"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/wallet/tutorial/how-to-trade-on-binance-dex/",component:p("/docs/beaconchain/wallet/tutorial/how-to-trade-on-binance-dex/","247"),exact:!0},{path:"/docs/beaconchain/wallet/tutorial/How-to-use-BSC-on-imToken/",component:p("/docs/beaconchain/wallet/tutorial/How-to-use-BSC-on-imToken/","f58"),exact:!0},{path:"/docs/beaconchain/wallet/tutorial/ledger-nano-s-usage-guide/",component:p("/docs/beaconchain/wallet/tutorial/ledger-nano-s-usage-guide/","623"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/wallet/tutorial/trezor-model-t-user-guide/",component:p("/docs/beaconchain/wallet/tutorial/trezor-model-t-user-guide/","f79"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/beaconchain/wallet/tutorial/videos/",component:p("/docs/beaconchain/wallet/tutorial/videos/","63c"),exact:!0},{path:"/docs/beaconchain/walletconnect-support/",component:p("/docs/beaconchain/walletconnect-support/","9cd"),exact:!0},{path:"/docs/beaconchain/walletconnect/",component:p("/docs/beaconchain/walletconnect/","2f9"),exact:!0},{path:"/docs/beaconchain/wallets/",component:p("/docs/beaconchain/wallets/","4a5"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BEP20/",component:p("/docs/BEP20/","5f6"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bind-tokens/",component:p("/docs/bind-tokens/","efa"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bnb-chain-wallet/",component:p("/docs/bnb-chain-wallet/","4e6"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/boot-nodes/",component:p("/docs/boot-nodes/","297"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSC-FAQs-delegator/",component:p("/docs/BSC-FAQs-delegator/","51a"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSC-FAQs-general/",component:p("/docs/BSC-FAQs-general/","925"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSC-FAQs-tokens/",component:p("/docs/BSC-FAQs-tokens/","d36"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSC-FAQs-validator/",component:p("/docs/BSC-FAQs-validator/","ea2"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSC-FAQs/",component:p("/docs/BSC-FAQs/","6ab"),exact:!0},{path:"/docs/BSC-fast-node/",component:p("/docs/BSC-fast-node/","8f2"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/bsc-faucet/",component:p("/docs/bsc-faucet/","e97"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSC-mainnet-explorers/",component:p("/docs/BSC-mainnet-explorers/","49c"),exact:!0},{path:"/docs/BSC-separate-node/",component:p("/docs/BSC-separate-node/","681"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSC-testnet-explorers/",component:p("/docs/BSC-testnet-explorers/","0c9"),exact:!0},{path:"/docs/bsc-tutorials/",component:p("/docs/bsc-tutorials/","c8b"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSC-verify-node/",component:p("/docs/BSC-verify-node/","c55"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSCexplorers/",component:p("/docs/BSCexplorers/","52d"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSCmainnet/",component:p("/docs/BSCmainnet/","997"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/BSCtestnet/",component:p("/docs/BSCtestnet/","8af"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/chainide/",component:p("/docs/chainide/","064"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/circulation-model/",component:p("/docs/circulation-model/","6e0"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/contribute/",component:p("/docs/contribute/","891"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/create-wallet/",component:p("/docs/create-wallet/","1a4"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/cross/",component:p("/docs/cross/","6b3"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/dapp-dev/Hello-World/",component:p("/docs/dapp-dev/Hello-World/","aab"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/dapp-dev/web3js-tutorial/",component:p("/docs/dapp-dev/web3js-tutorial/","ebb"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/dev-outlook/decentralization/",component:p("/docs/dev-outlook/decentralization/","62c"),exact:!0},{path:"/docs/dev-outlook/scaling/",component:p("/docs/dev-outlook/scaling/","574"),exact:!0},{path:"/docs/dev-tools/",component:p("/docs/dev-tools/","6a0"),exact:!0},{path:"/docs/dia/",component:p("/docs/dia/","6e8"),exact:!0},{path:"/docs/dstorages/",component:p("/docs/dstorages/","373"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/encoding/",component:p("/docs/encoding/","bb8"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/ERC721/",component:p("/docs/ERC721/","f06"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/faq/",component:p("/docs/faq/","2ae"),exact:!0},{path:"/docs/fullnodeissue/",component:p("/docs/fullnodeissue/","68a"),exact:!0},{path:"/docs/get-extra-data-from-fullnode/",component:p("/docs/get-extra-data-from-fullnode/","221"),exact:!0},{path:"/docs/getting-started/",component:p("/docs/getting-started/","d18"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/hardhat-new/",component:p("/docs/hardhat-new/","581"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/hardhat/",component:p("/docs/hardhat/","3f6"),exact:!0},{path:"/docs/issue-BEP20/",component:p("/docs/issue-BEP20/","5d6"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/keys/",component:p("/docs/keys/","2e1"),exact:!0},{path:"/docs/learn/beaconIntro/",component:p("/docs/learn/beaconIntro/","225"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/bsc-gov/",component:p("/docs/learn/bsc-gov/","150"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/bsc-relayer/",component:p("/docs/learn/bsc-relayer/","c87"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/consensus/",component:p("/docs/learn/consensus/","aa3"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/cross-chain-api/",component:p("/docs/learn/cross-chain-api/","789"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/cross-chain-bridges/",component:p("/docs/learn/cross-chain-bridges/","8ea"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/cross-chain/",component:p("/docs/learn/cross-chain/","83d"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/ecosystem/",component:p("/docs/learn/ecosystem/","0dc"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/genesis/",component:p("/docs/learn/genesis/","faf"),exact:!0},{path:"/docs/learn/gnosis/",component:p("/docs/learn/gnosis/","7ad"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/incentives/",component:p("/docs/learn/incentives/","c1a"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/intro/",component:p("/docs/learn/intro/","d19"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/oracle-module/",component:p("/docs/learn/oracle-module/","657"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/oracle-relayer/",component:p("/docs/learn/oracle-relayer/","bb1"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/learn/system-contract/",component:p("/docs/learn/system-contract/","310"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/link/",component:p("/docs/link/","62a"),exact:!0},{path:"/docs/manual/",component:p("/docs/manual/","5a4"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/mev/builder-integration/",component:p("/docs/mev/builder-integration/","cea"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/mev/faqs/",component:p("/docs/mev/faqs/","e07"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/mev/overview/",component:p("/docs/mev/overview/","f92"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/mev/validator-integration/",component:p("/docs/mev/validator-integration/","ec0"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/migration/evm-chains/chain-comparison/",component:p("/docs/migration/evm-chains/chain-comparison/","5a6"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/migration/evm-chains/token-comparison/",component:p("/docs/migration/evm-chains/token-comparison/","1b6"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/migration/evm-chains/token-migration/",component:p("/docs/migration/evm-chains/token-migration/","8dc"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/migration/non-evm-chains/solana/architecture-comparison/",component:p("/docs/migration/non-evm-chains/solana/architecture-comparison/","ed8"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/migration/non-evm-chains/solana/token-migration/",component:p("/docs/migration/non-evm-chains/solana/token-migration/","c2a"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/mirror/",component:p("/docs/mirror/","f57"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/more-help/",component:p("/docs/more-help/","359"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/nft_blackide/",component:p("/docs/nft_blackide/","724"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/nft-metadata-standard/",component:p("/docs/nft-metadata-standard/","f62"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/nft-storage/",component:p("/docs/nft-storage/","8ba"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/oracles/",component:p("/docs/oracles/","495"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/overview/",component:p("/docs/overview/","418"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/parameters/",component:p("/docs/parameters/","b4b"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/proxy/",component:p("/docs/proxy/","a27"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/remix-new/",component:p("/docs/remix-new/","81d"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/replit/",component:p("/docs/replit/","4ca"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/rpc/",component:p("/docs/rpc/","061"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/stake/cli-commands/",component:p("/docs/stake/cli-commands/","242"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/stake/Staking/",component:p("/docs/stake/Staking/","1af"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/staking-with-ext-wallet/",component:p("/docs/staking-with-ext-wallet/","7cf"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/submit-dapp/",component:p("/docs/submit-dapp/","303"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/sync/",component:p("/docs/sync/","21a"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/token-bind-tool/",component:p("/docs/token-bind-tool/","b6f"),exact:!0},{path:"/docs/tokens-cross-chain/",component:p("/docs/tokens-cross-chain/","fe9"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/tokens/",component:p("/docs/tokens/","268"),exact:!0},{path:"/docs/trading-spec/",component:p("/docs/trading-spec/","174"),exact:!0},{path:"/docs/truffle-new/",component:p("/docs/truffle-new/","3ee"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/truffle/",component:p("/docs/truffle/","c1b"),exact:!0},{path:"/docs/upgrade-fullnode/",component:p("/docs/upgrade-fullnode/","2cc"),exact:!0},{path:"/docs/validator/bc-slashing/",component:p("/docs/validator/bc-slashing/","708"),exact:!0},{path:"/docs/validator/best-practice/",component:p("/docs/validator/best-practice/","033"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/create-val/",component:p("/docs/validator/create-val/","f5a"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/docker/",component:p("/docs/validator/docker/","d18"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/fullnode/",component:p("/docs/validator/fullnode/","7aa"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/monitor-and-query-slash/",component:p("/docs/validator/monitor-and-query-slash/","e26"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/node-maintenance/",component:p("/docs/validator/node-maintenance/","f5a"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/overview/",component:p("/docs/validator/overview/","cad"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/Penalty-overview/",component:p("/docs/validator/Penalty-overview/","e7d"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/run-val/",component:p("/docs/validator/run-val/","504"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/security/",component:p("/docs/validator/security/","5de"),exact:!0},{path:"/docs/validator/send-slash-evidence/",component:p("/docs/validator/send-slash-evidence/","ed3"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/slash-fee/",component:p("/docs/validator/slash-fee/","932"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/unjail/",component:p("/docs/validator/unjail/","2b4"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/validator/upgrade-fullnode/",component:p("/docs/validator/upgrade-fullnode/","731"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/venly-nft-api/",component:p("/docs/venly-nft-api/","a56"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/verify-proxy/",component:p("/docs/verify-proxy/","61c"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/verify/",component:p("/docs/verify/","21e"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet_api/",component:p("/docs/wallet_api/","d1f"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/Wallet/",component:p("/docs/Wallet/","dc7"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/AlphaWallet/",component:p("/docs/wallet/AlphaWallet/","3e0"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/arkane-developer/",component:p("/docs/wallet/arkane-developer/","789"),exact:!0},{path:"/docs/wallet/binance-cn/",component:p("/docs/wallet/binance-cn/","1a1"),exact:!0},{path:"/docs/wallet/bnb-chain-wallet/",component:p("/docs/wallet/bnb-chain-wallet/","e2a"),exact:!0},{path:"/docs/wallet/coin98wallet/",component:p("/docs/wallet/coin98wallet/","046"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/create-wallet/",component:p("/docs/wallet/create-wallet/","7cc"),exact:!0},{path:"/docs/wallet/extension/add-account/",component:p("/docs/wallet/extension/add-account/","864"),exact:!0},{path:"/docs/wallet/extension/add-asset/",component:p("/docs/wallet/extension/add-asset/","a01"),exact:!0},{path:"/docs/wallet/extension/direct/",component:p("/docs/wallet/extension/direct/","db0"),exact:!0},{path:"/docs/wallet/extension/ledger/",component:p("/docs/wallet/extension/ledger/","db8"),exact:!0},{path:"/docs/wallet/extension/reset/",component:p("/docs/wallet/extension/reset/","536"),exact:!0},{path:"/docs/wallet/extension/safe/",component:p("/docs/wallet/extension/safe/","544"),exact:!0},{path:"/docs/wallet/extension/seed/",component:p("/docs/wallet/extension/seed/","70e"),exact:!0},{path:"/docs/wallet/faq/",component:p("/docs/wallet/faq/","13b"),exact:!0},{path:"/docs/wallet/infinitywallet/",component:p("/docs/wallet/infinitywallet/","f7d"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/ledger/",component:p("/docs/wallet/ledger/","266"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/math-resource/",component:p("/docs/wallet/math-resource/","088"),exact:!0},{path:"/docs/wallet/math/",component:p("/docs/wallet/math/","625"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/metamask/",component:p("/docs/wallet/metamask/","6fa"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/myetherwallet/",component:p("/docs/wallet/myetherwallet/","376"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/staking/",component:p("/docs/wallet/staking/","99b"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/trezor/",component:p("/docs/wallet/trezor/","e62"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/trustwallet/",component:p("/docs/wallet/trustwallet/","655"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/venly/",component:p("/docs/wallet/venly/","eed"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallet/wallet_api/",component:p("/docs/wallet/wallet_api/","318"),exact:!0},{path:"/docs/wallet/withdraw-cn/",component:p("/docs/wallet/withdraw-cn/","787"),exact:!0},{path:"/docs/wallet/withdraw-en/",component:p("/docs/wallet/withdraw-en/","c17"),exact:!0},{path:"/docs/wallets/",component:p("/docs/wallets/","f22"),exact:!0},{path:"/docs/wallets/tutorial/bep8/",component:p("/docs/wallets/tutorial/bep8/","271"),exact:!0},{path:"/docs/wallets/tutorial/BSCimToken/",component:p("/docs/wallets/tutorial/BSCimToken/","ead"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallets/tutorial/how-to-create-a-wallet-on-trustwallet/",component:p("/docs/wallets/tutorial/how-to-create-a-wallet-on-trustwallet/","664"),exact:!0},{path:"/docs/wallets/tutorial/how-to-trade-on-binance-dex/",component:p("/docs/wallets/tutorial/how-to-trade-on-binance-dex/","731"),exact:!0},{path:"/docs/wallets/tutorial/ledger-nano-s-usage-guide/",component:p("/docs/wallets/tutorial/ledger-nano-s-usage-guide/","b2c"),exact:!0},{path:"/docs/wallets/tutorial/trezor-model-t-user-guide/",component:p("/docs/wallets/tutorial/trezor-model-t-user-guide/","3f5"),exact:!0},{path:"/docs/wallets/tutorial/videos/",component:p("/docs/wallets/tutorial/videos/","fe8"),exact:!0},{path:"/docs/wallets/wallet-tutorial-overview/",component:p("/docs/wallets/wallet-tutorial-overview/","5b7"),exact:!0,sidebar:"bscSideBar"},{path:"/docs/wallets/walletconnect-support/",component:p("/docs/wallets/walletconnect-support/","368"),exact:!0}]},{path:"/",component:p("/","51c"),exact:!0},{path:"*",component:p("*")}]},83534:(e,t,n)=>{"use strict";n.r(t),n(10412).Z.canUseDOM&&(window.dinChatbotConfig={token:"F03vpUuT3em6KopZ",api:"https://reiki.web3go.xyz/aiweb"})},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>r});var a=n(67294);const o=a.createContext(!1);function r(e){let{children:t}=e;const[n,r]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{r(!0)}),[]),a.createElement(o.Provider,{value:n},t)}},97221:(e,t,n)=>{"use strict";var a=n(67294),o=n(73935),r=n(73727),i=n(70405),c=n(10412);const s=[n(32497),n(3310),n(18320),n(52295),n(94811),n(83534)];var l=n(723),d=n(16550),u=n(18790);function p(e){let{children:t}=e;return a.createElement(a.Fragment,null,t)}var f=n(87462),m=n(35742),h=n(52263),b=n(44996),g=n(86668),v=n(10833),y=n(94711),w=n(19727),k=n(43320),S=n(18780),E=n(90197);function x(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return a.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:o}]=e;return a.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:o})})),a.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),o=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:a}=(0,d.TH)();return e+(0,S.applyTrailingSlash)((0,b.Z)(a),{trailingSlash:n,baseUrl:t})}(),r=t?`${n}${t}`:o;return a.createElement(m.Z,null,a.createElement("meta",{property:"og:url",content:r}),a.createElement("link",{rel:"canonical",href:r}))}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,g.L)();return a.createElement(a.Fragment,null,a.createElement(m.Z,null,a.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),a.createElement("body",{className:w.h})),n&&a.createElement(v.d,{image:n}),a.createElement(_,null),a.createElement(x,null),a.createElement(E.Z,{tag:k.HX,locale:e}),a.createElement(m.Z,null,t.map(((e,t)=>a.createElement("meta",(0,f.Z)({key:t},e))))))}const T=new Map;function B(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,u.f)(l.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var A=n(98934),L=n(58940);function R(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a{const a=t.default?.[e]??t[e];return a?.(...n)}));return()=>o.forEach((e=>e?.()))}const N=function(e){let{children:t,location:n,previousLocation:o}=e;return(0,a.useLayoutEffect)((()=>{o!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const a=t.pathname===n.pathname,o=t.hash===n.hash,r=t.search===n.search;if(a&&o&&!r)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:o}),R("onRouteDidUpdate",{previousLocation:o,location:n}))}),[o,n]),t};function P(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,u.f)(l.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class O extends a.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=c.Z.canUseDOM?R("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),P(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return a.createElement(N,{previousLocation:this.previousLocation,location:t},a.createElement(d.AW,{location:t,render:()=>e}))}}const I=O,D="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",F="__docusaurus-base-url-issue-banner-suggestion-container",z="__DOCUSAURUS_INSERT_BASEURL_BANNER";function j(e){return`\nwindow['${z}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${z}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${D}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

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

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[z]=!1}),[]),a.createElement(a.Fragment,null,!c.Z.canUseDOM&&a.createElement(m.Z,null,a.createElement("script",null,j(e))),a.createElement("div",{id:D}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,d.TH)();return t&&n===e?a.createElement(U,null):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:o,localeConfigs:r}}=(0,h.Z)(),i=(0,b.Z)(e),{htmlLang:c,direction:s}=r[o];return a.createElement(m.Z,null,a.createElement("html",{lang:c,dir:s}),a.createElement("title",null,t),a.createElement("meta",{property:"og:title",content:t}),a.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&a.createElement("link",{rel:"icon",href:i}))}var H=n(44763),G=n(72389);function Z(){const e=(0,G.Z)();return a.createElement(m.Z,null,a.createElement("html",{"data-has-hydrated":e}))}function W(){const e=(0,u.H)(l.Z),t=(0,d.TH)();return a.createElement(H.Z,null,a.createElement(L.M,null,a.createElement(A.t,null,a.createElement(p,null,a.createElement(q,null),a.createElement(C,null),a.createElement($,null),a.createElement(I,{location:B(t)},e)),a.createElement(Z,null))))}var V=n(16887);const Q=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const a=document.createElement("link");a.setAttribute("rel","prefetch"),a.setAttribute("href",e),a.onload=()=>t(),a.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(a)}))}:function(e){return new Promise(((t,n)=>{const a=new XMLHttpRequest;a.open("GET",e,!0),a.withCredentials=!0,a.onload=()=>{200===a.status?t():n()},a.send(null)}))};var K=n(99670);const Y=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Y.has(e))(e))return!1;Y.add(e);const t=(0,u.f)(l.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(V).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Q(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),P(e))},te=Object.freeze(ee);if(c.Z.canUseDOM){window.docusaurus=te;const e=o.hydrate;P(window.location.pathname).then((()=>{e(a.createElement(i.B6,null,a.createElement(r.VK,null,a.createElement(W,null))),document.getElementById("__docusaurus"))}))}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>u});var a=n(67294),o=n(36809);const r=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"overview","docs":[{"id":"add-account","path":"/docs/add-account","sidebar":"bscSideBar"},{"id":"api-reference/cli","path":"/docs/api-reference/cli"},{"id":"api-reference/dex-api/paths","path":"/docs/api-reference/dex-api/paths"},{"id":"api-reference/node-rpc","path":"/docs/api-reference/node-rpc"},{"id":"api-reference/sdk","path":"/docs/api-reference/sdk"},{"id":"archivenode","path":"/docs/archivenode","sidebar":"bscSideBar"},{"id":"band","path":"/docs/band"},{"id":"BC-FAQs","path":"/docs/BC-FAQs"},{"id":"bcfusion/developers/crosschain-redelegation","path":"/docs/bcfusion/developers/crosschain-redelegation","sidebar":"bscSideBar"},{"id":"bcfusion/developers/gov","path":"/docs/bcfusion/developers/gov","sidebar":"bscSideBar"},{"id":"bcfusion/developers/staking","path":"/docs/bcfusion/developers/staking","sidebar":"bscSideBar"},{"id":"bcfusion/developers/system-contracts","path":"/docs/bcfusion/developers/system-contracts","sidebar":"bscSideBar"},{"id":"bcfusion/overview","path":"/docs/bcfusion/overview","sidebar":"bscSideBar"},{"id":"bcfusion/owners/bind","path":"/docs/bcfusion/owners/bind","sidebar":"bscSideBar"},{"id":"bcfusion/users/assets","path":"/docs/bcfusion/users/assets","sidebar":"bscSideBar"},{"id":"bcfusion/users/bep153-stake-migration","path":"/docs/bcfusion/users/bep153-stake-migration","sidebar":"bscSideBar"},{"id":"bcfusion/users/gov","path":"/docs/bcfusion/users/gov","sidebar":"bscSideBar"},{"id":"bcfusion/users/new-stake","path":"/docs/bcfusion/users/new-stake","sidebar":"bscSideBar"},{"id":"bcfusion/users/stake-migration","path":"/docs/bcfusion/users/stake-migration","sidebar":"bscSideBar"},{"id":"bcfusion/users/swaps","path":"/docs/bcfusion/users/swaps","sidebar":"bscSideBar"},{"id":"bcfusion/users/timelocks","path":"/docs/bcfusion/users/timelocks","sidebar":"bscSideBar"},{"id":"bcfusion/validators/creation","path":"/docs/bcfusion/validators/creation","sidebar":"bscSideBar"},{"id":"bcfusion/validators/gov","path":"/docs/bcfusion/validators/gov","sidebar":"bscSideBar"},{"id":"bcfusion/validators/key-management","path":"/docs/bcfusion/validators/key-management","sidebar":"bscSideBar"},{"id":"bcfusion/validators/migrations","path":"/docs/bcfusion/validators/migrations","sidebar":"bscSideBar"},{"id":"bcfusion/validators/slash","path":"/docs/bcfusion/validators/slash","sidebar":"bscSideBar"},{"id":"bcfusion/validators/staking","path":"/docs/bcfusion/validators/staking","sidebar":"bscSideBar"},{"id":"beaconchain/account","path":"/docs/beaconchain/account"},{"id":"beaconchain/acknowledgement","path":"/docs/beaconchain/acknowledgement"},{"id":"beaconchain/anti-frontrun","path":"/docs/beaconchain/anti-frontrun"},{"id":"beaconchain/atomic-swap","path":"/docs/beaconchain/atomic-swap"},{"id":"beaconchain/bc-tutorials","path":"/docs/beaconchain/bc-tutorials","sidebar":"bscSideBar"},{"id":"beaconchain/blockchain","path":"/docs/beaconchain/blockchain"},{"id":"beaconchain/chain-access","path":"/docs/beaconchain/chain-access"},{"id":"beaconchain/CONTRIBUTING","path":"/docs/beaconchain/CONTRIBUTING"},{"id":"beaconchain/dataseed_list","path":"/docs/beaconchain/dataseed_list"},{"id":"beaconchain/develop/api-reference/block-service-example","path":"/docs/beaconchain/develop/api-reference/block-service-example"},{"id":"beaconchain/develop/api-reference/cli","path":"/docs/beaconchain/develop/api-reference/cli","sidebar":"bscSideBar"},{"id":"beaconchain/develop/api-reference/dex-api/block-service","path":"/docs/beaconchain/develop/api-reference/dex-api/block-service","sidebar":"bscSideBar"},{"id":"beaconchain/develop/api-reference/dex-api/block-service-example","path":"/docs/beaconchain/develop/api-reference/dex-api/block-service-example"},{"id":"beaconchain/develop/api-reference/dex-api/bridge","path":"/docs/beaconchain/develop/api-reference/dex-api/bridge"},{"id":"beaconchain/develop/api-reference/dex-api/bridge-widget","path":"/docs/beaconchain/develop/api-reference/dex-api/bridge-widget"},{"id":"beaconchain/develop/api-reference/dex-api/migration-guide","path":"/docs/beaconchain/develop/api-reference/dex-api/migration-guide"},{"id":"beaconchain/develop/api-reference/dex-api/paths","path":"/docs/beaconchain/develop/api-reference/dex-api/paths","sidebar":"bscSideBar"},{"id":"beaconchain/develop/api-reference/dex-api/paths-testnet","path":"/docs/beaconchain/develop/api-reference/dex-api/paths-testnet","sidebar":"bscSideBar"},{"id":"beaconchain/develop/api-reference/dex-api/staking","path":"/docs/beaconchain/develop/api-reference/dex-api/staking","sidebar":"bscSideBar"},{"id":"beaconchain/develop/api-reference/dex-api/ws-connection","path":"/docs/beaconchain/develop/api-reference/dex-api/ws-connection","sidebar":"bscSideBar"},{"id":"beaconchain/develop/api-reference/dex-api/ws-streams","path":"/docs/beaconchain/develop/api-reference/dex-api/ws-streams","sidebar":"bscSideBar"},{"id":"beaconchain/develop/api-reference/http-api","path":"/docs/beaconchain/develop/api-reference/http-api"},{"id":"beaconchain/develop/api-reference/node-rpc","path":"/docs/beaconchain/develop/api-reference/node-rpc","sidebar":"bscSideBar"},{"id":"beaconchain/develop/api-reference/transactions","path":"/docs/beaconchain/develop/api-reference/transactions"},{"id":"beaconchain/develop/bcsdk","path":"/docs/beaconchain/develop/bcsdk","sidebar":"bscSideBar"},{"id":"beaconchain/develop/node/extra-info","path":"/docs/beaconchain/develop/node/extra-info","sidebar":"bscSideBar"},{"id":"beaconchain/develop/node/fullnode-faq","path":"/docs/beaconchain/develop/node/fullnode-faq"},{"id":"beaconchain/develop/node/fullnodeissue","path":"/docs/beaconchain/develop/node/fullnodeissue","sidebar":"bscSideBar"},{"id":"beaconchain/develop/node/install","path":"/docs/beaconchain/develop/node/install","sidebar":"bscSideBar"},{"id":"beaconchain/develop/node/join-mainnet","path":"/docs/beaconchain/develop/node/join-mainnet","sidebar":"bscSideBar"},{"id":"beaconchain/develop/node/join-testnet","path":"/docs/beaconchain/develop/node/join-testnet","sidebar":"bscSideBar"},{"id":"beaconchain/develop/node/localnetwork","path":"/docs/beaconchain/develop/node/localnetwork","sidebar":"bscSideBar"},{"id":"beaconchain/develop/node/nodetypes","path":"/docs/beaconchain/develop/node/nodetypes","sidebar":"bscSideBar"},{"id":"beaconchain/develop/node/snapshot","path":"/docs/beaconchain/develop/node/snapshot"},{"id":"beaconchain/develop/node/synctypes","path":"/docs/beaconchain/develop/node/synctypes","sidebar":"bscSideBar"},{"id":"beaconchain/develop/node/upgrade","path":"/docs/beaconchain/develop/node/upgrade","sidebar":"bscSideBar"},{"id":"beaconchain/develop/rpc","path":"/docs/beaconchain/develop/rpc","sidebar":"bscSideBar"},{"id":"beaconchain/develop/testnetandexplorer","path":"/docs/beaconchain/develop/testnetandexplorer","sidebar":"bscSideBar"},{"id":"beaconchain/encoding","path":"/docs/beaconchain/encoding"},{"id":"beaconchain/exchange-integration","path":"/docs/beaconchain/exchange-integration"},{"id":"beaconchain/faq/faq","path":"/docs/beaconchain/faq/","sidebar":"bscSideBar"},{"id":"beaconchain/fullnode","path":"/docs/beaconchain/fullnode"},{"id":"beaconchain/fullnodeissue","path":"/docs/beaconchain/fullnodeissue"},{"id":"beaconchain/get-extra-data-from-fullnode","path":"/docs/beaconchain/get-extra-data-from-fullnode"},{"id":"beaconchain/get-started","path":"/docs/beaconchain/get-started"},{"id":"beaconchain/imToken","path":"/docs/beaconchain/imToken"},{"id":"beaconchain/index","path":"/docs/beaconchain/"},{"id":"beaconchain/keys","path":"/docs/beaconchain/keys"},{"id":"beaconchain/learn/accounts","path":"/docs/beaconchain/learn/accounts","sidebar":"bscSideBar"},{"id":"beaconchain/learn/architecture","path":"/docs/beaconchain/learn/architecture","sidebar":"bscSideBar"},{"id":"beaconchain/learn/assets","path":"/docs/beaconchain/learn/assets","sidebar":"bscSideBar"},{"id":"beaconchain/learn/atomic-swaps","path":"/docs/beaconchain/learn/atomic-swaps"},{"id":"beaconchain/learn/bc-bridge","path":"/docs/beaconchain/learn/bc-bridge"},{"id":"beaconchain/learn/bc-slashing","path":"/docs/beaconchain/learn/bc-slashing"},{"id":"beaconchain/learn/bc-staking","path":"/docs/beaconchain/learn/bc-staking"},{"id":"beaconchain/learn/BEP8","path":"/docs/beaconchain/learn/BEP8","sidebar":"bscSideBar"},{"id":"beaconchain/learn/BEP82","path":"/docs/beaconchain/learn/BEP82"},{"id":"beaconchain/learn/breathe-block","path":"/docs/beaconchain/learn/breathe-block","sidebar":"bscSideBar"},{"id":"beaconchain/learn/bsc-gov","path":"/docs/beaconchain/learn/bsc-gov"},{"id":"beaconchain/learn/encoding/amino-example","path":"/docs/beaconchain/learn/encoding/amino-example","sidebar":"bscSideBar"},{"id":"beaconchain/learn/encoding/encoding","path":"/docs/beaconchain/learn/encoding/","sidebar":"bscSideBar"},{"id":"beaconchain/learn/escrow-accounts","path":"/docs/beaconchain/learn/escrow-accounts","sidebar":"bscSideBar"},{"id":"beaconchain/learn/fees","path":"/docs/beaconchain/learn/fees"},{"id":"beaconchain/learn/genesis","path":"/docs/beaconchain/learn/genesis","sidebar":"bscSideBar"},{"id":"beaconchain/learn/matching-engine","path":"/docs/beaconchain/learn/matching-engine"},{"id":"beaconchain/learn/signature","path":"/docs/beaconchain/learn/signature","sidebar":"bscSideBar"},{"id":"beaconchain/learn/threshold-signature-scheme","path":"/docs/beaconchain/learn/threshold-signature-scheme"},{"id":"beaconchain/learn/trading-interface","path":"/docs/beaconchain/learn/trading-interface"},{"id":"beaconchain/learn/trading-specification","path":"/docs/beaconchain/learn/trading-specification"},{"id":"beaconchain/learn/transaction","path":"/docs/beaconchain/learn/transaction"},{"id":"beaconchain/learn/transactions","path":"/docs/beaconchain/learn/transactions","sidebar":"bscSideBar"},{"id":"beaconchain/learn/walletconnect","path":"/docs/beaconchain/learn/walletconnect"},{"id":"beaconchain/light-client","path":"/docs/beaconchain/light-client","sidebar":"bscSideBar"},{"id":"beaconchain/list","path":"/docs/beaconchain/list"},{"id":"beaconchain/list_instruction","path":"/docs/beaconchain/list_instruction"},{"id":"beaconchain/match","path":"/docs/beaconchain/match"},{"id":"beaconchain/match-examples","path":"/docs/beaconchain/match-examples"},{"id":"beaconchain/memo-validation","path":"/docs/beaconchain/memo-validation"},{"id":"beaconchain/offline","path":"/docs/beaconchain/offline"},{"id":"beaconchain/resources","path":"/docs/beaconchain/resources"},{"id":"beaconchain/timelock","path":"/docs/beaconchain/timelock"},{"id":"beaconchain/tokens","path":"/docs/beaconchain/tokens","sidebar":"bscSideBar"},{"id":"beaconchain/trade","path":"/docs/beaconchain/trade"},{"id":"beaconchain/trading-spec","path":"/docs/beaconchain/trading-spec"},{"id":"beaconchain/transfer","path":"/docs/beaconchain/transfer"},{"id":"beaconchain/tss","path":"/docs/beaconchain/tss"},{"id":"beaconchain/validator/create-val","path":"/docs/beaconchain/validator/create-val","sidebar":"bscSideBar"},{"id":"beaconchain/validator/overview","path":"/docs/beaconchain/validator/overview","sidebar":"bscSideBar"},{"id":"beaconchain/validator/run-val","path":"/docs/beaconchain/validator/run-val","sidebar":"bscSideBar"},{"id":"beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet","path":"/docs/beaconchain/wallet/tutorial/assets/how-to-create-venly-wallet","sidebar":"bscSideBar"},{"id":"beaconchain/wallet/tutorial/bep8","path":"/docs/beaconchain/wallet/tutorial/bep8","sidebar":"bscSideBar"},{"id":"beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet","path":"/docs/beaconchain/wallet/tutorial/how-to-create-a-wallet-on-trustwallet","sidebar":"bscSideBar"},{"id":"beaconchain/wallet/tutorial/how-to-trade-on-binance-dex","path":"/docs/beaconchain/wallet/tutorial/how-to-trade-on-binance-dex"},{"id":"beaconchain/wallet/tutorial/How-to-use-BSC-on-imToken","path":"/docs/beaconchain/wallet/tutorial/How-to-use-BSC-on-imToken"},{"id":"beaconchain/wallet/tutorial/ledger-nano-s-usage-guide","path":"/docs/beaconchain/wallet/tutorial/ledger-nano-s-usage-guide","sidebar":"bscSideBar"},{"id":"beaconchain/wallet/tutorial/trezor-model-t-user-guide","path":"/docs/beaconchain/wallet/tutorial/trezor-model-t-user-guide","sidebar":"bscSideBar"},{"id":"beaconchain/wallet/tutorial/videos","path":"/docs/beaconchain/wallet/tutorial/videos"},{"id":"beaconchain/walletconnect","path":"/docs/beaconchain/walletconnect"},{"id":"beaconchain/walletconnect-support","path":"/docs/beaconchain/walletconnect-support"},{"id":"beaconchain/wallets","path":"/docs/beaconchain/wallets","sidebar":"bscSideBar"},{"id":"BEP20","path":"/docs/BEP20","sidebar":"bscSideBar"},{"id":"bind-tokens","path":"/docs/bind-tokens","sidebar":"bscSideBar"},{"id":"bnb-chain-wallet","path":"/docs/bnb-chain-wallet","sidebar":"bscSideBar"},{"id":"boot-nodes","path":"/docs/boot-nodes","sidebar":"bscSideBar"},{"id":"BSC-FAQs","path":"/docs/BSC-FAQs"},{"id":"BSC-FAQs-delegator","path":"/docs/BSC-FAQs-delegator","sidebar":"bscSideBar"},{"id":"BSC-FAQs-general","path":"/docs/BSC-FAQs-general","sidebar":"bscSideBar"},{"id":"BSC-FAQs-tokens","path":"/docs/BSC-FAQs-tokens","sidebar":"bscSideBar"},{"id":"BSC-FAQs-validator","path":"/docs/BSC-FAQs-validator","sidebar":"bscSideBar"},{"id":"BSC-fast-node","path":"/docs/BSC-fast-node","sidebar":"bscSideBar"},{"id":"bsc-faucet","path":"/docs/bsc-faucet","sidebar":"bscSideBar"},{"id":"BSC-mainnet-explorers","path":"/docs/BSC-mainnet-explorers"},{"id":"BSC-separate-node","path":"/docs/BSC-separate-node","sidebar":"bscSideBar"},{"id":"BSC-testnet-explorers","path":"/docs/BSC-testnet-explorers"},{"id":"bsc-tutorials","path":"/docs/bsc-tutorials","sidebar":"bscSideBar"},{"id":"BSC-verify-node","path":"/docs/BSC-verify-node","sidebar":"bscSideBar"},{"id":"BSCexplorers","path":"/docs/BSCexplorers","sidebar":"bscSideBar"},{"id":"BSCmainnet","path":"/docs/BSCmainnet","sidebar":"bscSideBar"},{"id":"BSCtestnet","path":"/docs/BSCtestnet","sidebar":"bscSideBar"},{"id":"chainide","path":"/docs/chainide","sidebar":"bscSideBar"},{"id":"circulation-model","path":"/docs/circulation-model","sidebar":"bscSideBar"},{"id":"contribute","path":"/docs/contribute","sidebar":"bscSideBar"},{"id":"create-wallet","path":"/docs/create-wallet","sidebar":"bscSideBar"},{"id":"cross","path":"/docs/cross","sidebar":"bscSideBar"},{"id":"dapp-dev/Hello-World","path":"/docs/dapp-dev/Hello-World","sidebar":"bscSideBar"},{"id":"dapp-dev/web3js-tutorial","path":"/docs/dapp-dev/web3js-tutorial","sidebar":"bscSideBar"},{"id":"dev-outlook/decentralization","path":"/docs/dev-outlook/decentralization"},{"id":"dev-outlook/scaling","path":"/docs/dev-outlook/scaling"},{"id":"dev-tools","path":"/docs/dev-tools"},{"id":"dia","path":"/docs/dia"},{"id":"dstorages","path":"/docs/dstorages","sidebar":"bscSideBar"},{"id":"encoding","path":"/docs/encoding","sidebar":"bscSideBar"},{"id":"ERC721","path":"/docs/ERC721","sidebar":"bscSideBar"},{"id":"faq","path":"/docs/faq"},{"id":"fullnodeissue","path":"/docs/fullnodeissue"},{"id":"get-extra-data-from-fullnode","path":"/docs/get-extra-data-from-fullnode"},{"id":"getting-started","path":"/docs/getting-started","sidebar":"bscSideBar"},{"id":"hardhat","path":"/docs/hardhat"},{"id":"hardhat-new","path":"/docs/hardhat-new","sidebar":"bscSideBar"},{"id":"issue-BEP20","path":"/docs/issue-BEP20","sidebar":"bscSideBar"},{"id":"keys","path":"/docs/keys"},{"id":"learn/beaconIntro","path":"/docs/learn/beaconIntro","sidebar":"bscSideBar"},{"id":"learn/bsc-gov","path":"/docs/learn/bsc-gov","sidebar":"bscSideBar"},{"id":"learn/bsc-relayer","path":"/docs/learn/bsc-relayer","sidebar":"bscSideBar"},{"id":"learn/consensus","path":"/docs/learn/consensus","sidebar":"bscSideBar"},{"id":"learn/cross-chain","path":"/docs/learn/cross-chain","sidebar":"bscSideBar"},{"id":"learn/cross-chain-api","path":"/docs/learn/cross-chain-api","sidebar":"bscSideBar"},{"id":"learn/cross-chain-bridges","path":"/docs/learn/cross-chain-bridges","sidebar":"bscSideBar"},{"id":"learn/ecosystem","path":"/docs/learn/ecosystem","sidebar":"bscSideBar"},{"id":"learn/genesis","path":"/docs/learn/genesis"},{"id":"learn/gnosis","path":"/docs/learn/gnosis","sidebar":"bscSideBar"},{"id":"learn/incentives","path":"/docs/learn/incentives","sidebar":"bscSideBar"},{"id":"learn/intro","path":"/docs/learn/intro","sidebar":"bscSideBar"},{"id":"learn/oracle-module","path":"/docs/learn/oracle-module","sidebar":"bscSideBar"},{"id":"learn/oracle-relayer","path":"/docs/learn/oracle-relayer","sidebar":"bscSideBar"},{"id":"learn/system-contract","path":"/docs/learn/system-contract","sidebar":"bscSideBar"},{"id":"link","path":"/docs/link"},{"id":"manual","path":"/docs/manual","sidebar":"bscSideBar"},{"id":"mev/builder-integration","path":"/docs/mev/builder-integration","sidebar":"bscSideBar"},{"id":"mev/faqs","path":"/docs/mev/faqs","sidebar":"bscSideBar"},{"id":"mev/overview","path":"/docs/mev/overview","sidebar":"bscSideBar"},{"id":"mev/validator-integration","path":"/docs/mev/validator-integration","sidebar":"bscSideBar"},{"id":"migration/evm-chains/chain-comparison","path":"/docs/migration/evm-chains/chain-comparison","sidebar":"bscSideBar"},{"id":"migration/evm-chains/token-comparison","path":"/docs/migration/evm-chains/token-comparison","sidebar":"bscSideBar"},{"id":"migration/evm-chains/token-migration","path":"/docs/migration/evm-chains/token-migration","sidebar":"bscSideBar"},{"id":"migration/non-evm-chains/solana/architecture-comparison","path":"/docs/migration/non-evm-chains/solana/architecture-comparison","sidebar":"bscSideBar"},{"id":"migration/non-evm-chains/solana/token-migration","path":"/docs/migration/non-evm-chains/solana/token-migration","sidebar":"bscSideBar"},{"id":"mirror","path":"/docs/mirror","sidebar":"bscSideBar"},{"id":"more-help","path":"/docs/more-help","sidebar":"bscSideBar"},{"id":"nft_blackide","path":"/docs/nft_blackide","sidebar":"bscSideBar"},{"id":"nft-metadata-standard","path":"/docs/nft-metadata-standard","sidebar":"bscSideBar"},{"id":"nft-storage","path":"/docs/nft-storage","sidebar":"bscSideBar"},{"id":"oracles","path":"/docs/oracles","sidebar":"bscSideBar"},{"id":"overview","path":"/docs/overview","sidebar":"bscSideBar"},{"id":"parameters","path":"/docs/parameters","sidebar":"bscSideBar"},{"id":"proxy","path":"/docs/proxy","sidebar":"bscSideBar"},{"id":"remix-new","path":"/docs/remix-new","sidebar":"bscSideBar"},{"id":"replit","path":"/docs/replit","sidebar":"bscSideBar"},{"id":"rpc","path":"/docs/rpc","sidebar":"bscSideBar"},{"id":"stake/cli-commands","path":"/docs/stake/cli-commands","sidebar":"bscSideBar"},{"id":"stake/Staking","path":"/docs/stake/Staking","sidebar":"bscSideBar"},{"id":"staking-with-ext-wallet","path":"/docs/staking-with-ext-wallet","sidebar":"bscSideBar"},{"id":"submit-dapp","path":"/docs/submit-dapp","sidebar":"bscSideBar"},{"id":"sync","path":"/docs/sync","sidebar":"bscSideBar"},{"id":"token-bind-tool","path":"/docs/token-bind-tool"},{"id":"tokens","path":"/docs/tokens"},{"id":"tokens-cross-chain","path":"/docs/tokens-cross-chain","sidebar":"bscSideBar"},{"id":"trading-spec","path":"/docs/trading-spec"},{"id":"truffle","path":"/docs/truffle"},{"id":"truffle-new","path":"/docs/truffle-new","sidebar":"bscSideBar"},{"id":"upgrade-fullnode","path":"/docs/upgrade-fullnode"},{"id":"validator/bc-slashing","path":"/docs/validator/bc-slashing"},{"id":"validator/best-practice","path":"/docs/validator/best-practice","sidebar":"bscSideBar"},{"id":"validator/create-val","path":"/docs/validator/create-val","sidebar":"bscSideBar"},{"id":"validator/docker","path":"/docs/validator/docker","sidebar":"bscSideBar"},{"id":"validator/fullnode","path":"/docs/validator/fullnode","sidebar":"bscSideBar"},{"id":"validator/monitor-and-query-slash","path":"/docs/validator/monitor-and-query-slash","sidebar":"bscSideBar"},{"id":"validator/node-maintenance","path":"/docs/validator/node-maintenance","sidebar":"bscSideBar"},{"id":"validator/overview","path":"/docs/validator/overview","sidebar":"bscSideBar"},{"id":"validator/Penalty-overview","path":"/docs/validator/Penalty-overview","sidebar":"bscSideBar"},{"id":"validator/run-val","path":"/docs/validator/run-val","sidebar":"bscSideBar"},{"id":"validator/security","path":"/docs/validator/security"},{"id":"validator/send-slash-evidence","path":"/docs/validator/send-slash-evidence","sidebar":"bscSideBar"},{"id":"validator/slash-fee","path":"/docs/validator/slash-fee","sidebar":"bscSideBar"},{"id":"validator/unjail","path":"/docs/validator/unjail","sidebar":"bscSideBar"},{"id":"validator/upgrade-fullnode","path":"/docs/validator/upgrade-fullnode","sidebar":"bscSideBar"},{"id":"venly-nft-api","path":"/docs/venly-nft-api","sidebar":"bscSideBar"},{"id":"verify","path":"/docs/verify","sidebar":"bscSideBar"},{"id":"verify-proxy","path":"/docs/verify-proxy","sidebar":"bscSideBar"},{"id":"Wallet","path":"/docs/Wallet","sidebar":"bscSideBar"},{"id":"wallet_api","path":"/docs/wallet_api","sidebar":"bscSideBar"},{"id":"wallet/AlphaWallet","path":"/docs/wallet/AlphaWallet","sidebar":"bscSideBar"},{"id":"wallet/arkane-developer","path":"/docs/wallet/arkane-developer"},{"id":"wallet/binance-cn","path":"/docs/wallet/binance-cn"},{"id":"wallet/bnb-chain-wallet","path":"/docs/wallet/bnb-chain-wallet"},{"id":"wallet/coin98wallet","path":"/docs/wallet/coin98wallet","sidebar":"bscSideBar"},{"id":"wallet/create-wallet","path":"/docs/wallet/create-wallet"},{"id":"wallet/extension/add-account","path":"/docs/wallet/extension/add-account"},{"id":"wallet/extension/add-asset","path":"/docs/wallet/extension/add-asset"},{"id":"wallet/extension/direct","path":"/docs/wallet/extension/direct"},{"id":"wallet/extension/ledger","path":"/docs/wallet/extension/ledger"},{"id":"wallet/extension/reset","path":"/docs/wallet/extension/reset"},{"id":"wallet/extension/safe","path":"/docs/wallet/extension/safe"},{"id":"wallet/extension/seed","path":"/docs/wallet/extension/seed"},{"id":"wallet/faq","path":"/docs/wallet/faq"},{"id":"wallet/infinitywallet","path":"/docs/wallet/infinitywallet","sidebar":"bscSideBar"},{"id":"wallet/ledger","path":"/docs/wallet/ledger","sidebar":"bscSideBar"},{"id":"wallet/math","path":"/docs/wallet/math","sidebar":"bscSideBar"},{"id":"wallet/math-resource","path":"/docs/wallet/math-resource"},{"id":"wallet/metamask","path":"/docs/wallet/metamask","sidebar":"bscSideBar"},{"id":"wallet/myetherwallet","path":"/docs/wallet/myetherwallet","sidebar":"bscSideBar"},{"id":"wallet/staking","path":"/docs/wallet/staking","sidebar":"bscSideBar"},{"id":"wallet/trezor","path":"/docs/wallet/trezor","sidebar":"bscSideBar"},{"id":"wallet/trustwallet","path":"/docs/wallet/trustwallet","sidebar":"bscSideBar"},{"id":"wallet/venly","path":"/docs/wallet/venly","sidebar":"bscSideBar"},{"id":"wallet/wallet_api","path":"/docs/wallet/wallet_api"},{"id":"wallet/withdraw-cn","path":"/docs/wallet/withdraw-cn"},{"id":"wallet/withdraw-en","path":"/docs/wallet/withdraw-en"},{"id":"wallets/tutorial/bep8","path":"/docs/wallets/tutorial/bep8"},{"id":"wallets/tutorial/BSCimToken","path":"/docs/wallets/tutorial/BSCimToken","sidebar":"bscSideBar"},{"id":"wallets/tutorial/how-to-create-a-wallet-on-trustwallet","path":"/docs/wallets/tutorial/how-to-create-a-wallet-on-trustwallet"},{"id":"wallets/tutorial/how-to-trade-on-binance-dex","path":"/docs/wallets/tutorial/how-to-trade-on-binance-dex"},{"id":"wallets/tutorial/ledger-nano-s-usage-guide","path":"/docs/wallets/tutorial/ledger-nano-s-usage-guide"},{"id":"wallets/tutorial/trezor-model-t-user-guide","path":"/docs/wallets/tutorial/trezor-model-t-user-guide"},{"id":"wallets/tutorial/videos","path":"/docs/wallets/tutorial/videos"},{"id":"wallets/wallet-tutorial-overview","path":"/docs/wallets/wallet-tutorial-overview","sidebar":"bscSideBar"},{"id":"wallets/walletconnect-support","path":"/docs/wallets/walletconnect-support"},{"id":"wallets/wallets","path":"/docs/wallets/"}],"draftIds":[],"sidebars":{"bscSideBar":{"link":{"path":"/docs/overview","label":"overview"}}}}],"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 c=n(57529);const s=JSON.parse('{"docusaurusVersion":"2.4.3","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"2.4.3"},"docusaurus-plugin-image-zoom":{"type":"package","name":"docusaurus-plugin-image-zoom","version":"0.1.1"},"docusaurus-plugin":{"type":"package","name":"docusaurus-gtm-plugin","version":"0.0.2"}}}'),l={siteConfig:o.default,siteMetadata:s,globalData:r,i18n:i,codeTranslations:c},d=a.createContext(l);function u(e){let{children:t}=e;return a.createElement(d.Provider,{value:l},t)}},44763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(67294),o=n(10412),r=n(35742),i=n(18780),c=n(7452);function s(e){let{error:t,tryAgain:n}=e;return a.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},a.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),a.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),a.createElement(l,{error:t}))}function l(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return a.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function d(e){let{error:t,tryAgain:n}=e;return a.createElement(p,{fallback:()=>a.createElement(s,{error:t,tryAgain:n})},a.createElement(r.Z,null,a.createElement("title",null,"Page Error")),a.createElement(c.Z,null,a.createElement(s,{error:t,tryAgain:n})))}const u=e=>a.createElement(d,e);class p extends a.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??u)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const a="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:a,canUseEventListeners:a&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:a&&"IntersectionObserver"in window,canUseViewport:a&&"screen"in window}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(67294),o=n(70405);function r(e){return a.createElement(o.ql,e)}},39960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var a=n(87462),o=n(67294),r=n(73727),i=n(18780),c=n(52263),s=n(13919),l=n(10412);const d=o.createContext({collectLink:()=>{}});var u=n(44996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":b,autoAddBaseUrl:g=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,c.Z)(),{withBaseUrl:k}=(0,u.C)(),S=(0,o.useContext)(d),E=(0,o.useRef)(null);(0,o.useImperativeHandle)(t,(()=>E.current));const x=p||f;const _=(0,s.Z)(x),C=x?.replace("pathname://","");let T=void 0!==C?(B=C,g&&(e=>e.startsWith("/"))(B)?k(B):B):void 0;var B;T&&_&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const A=(0,o.useRef)(!1),L=n?r.OL:r.rU,R=l.Z.canUseIntersectionObserver,N=(0,o.useRef)(),P=()=>{A.current||null==T||(window.docusaurus.preload(T),A.current=!0)};(0,o.useEffect)((()=>(!R&&_&&null!=T&&window.docusaurus.prefetch(T),()=>{R&&N.current&&N.current.disconnect()})),[N,T,R,_]);const O=T?.startsWith("#")??!1,I=!T||!_||O;return I||b||S.collectLink(T),I?o.createElement("a",(0,a.Z)({ref:E,href:T},x&&!_&&{target:"_blank",rel:"noopener noreferrer"},v)):o.createElement(L,(0,a.Z)({},v,{onMouseEnter:P,onTouchStart:P,innerRef:e=>{E.current=e,R&&e&&_&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),N.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const f=o.forwardRef(p)},95999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>c});var a=n(67294);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,a.isValidElement)(e)))?n.map(((e,t)=>(0,a.isValidElement)(e)?a.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var r=n(57529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return r[t??n]??n??t}function c(e,t){let{message:n,id:a}=e;return o(i({message:n,id:a}),t)}function s(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const c=i({message:t,id:n});return a.createElement(a.Fragment,null,o(c,r))}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>a});const a="default"},13919:(e,t,n)=>{"use strict";function a(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!a(e)}n.d(t,{Z:()=>o,b:()=>a})},44996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>c});var a=n(67294),o=n(52263),r=n(13919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.Z)(),n=(0,a.useCallback)(((n,a)=>function(e,t,n,a){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===a?{}:a;if(!n||n.startsWith("#")||(0,r.b)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const c=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+c:c}(t,e,n,a)),[t,e]);return{withBaseUrl:n}}function c(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},52263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(67294),o=n(58940);function r(){return(0,a.useContext)(o._)}},72389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(67294),o=n(98934);function r(){return(0,a.useContext)(o._)}},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const a=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[r,i]=n;const c=o?`${o}.${r}`:r;a(i)?e(i,c):t[c]=i}))}(e),t}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>r});var a=n(67294);const o=a.createContext(null);function r(e){let{children:t,value:n}=e;const r=a.useContext(o),i=(0,a.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const a={...t.data,...n?.data};return{plugin:t.plugin,data:a}}({parent:r,value:n})),[r,n]);return a.createElement(o.Provider,{value:i},t)}},80143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>g,gA:()=>f,WS:()=>m,_r:()=>u,Jo:()=>v,zh:()=>p,yW:()=>b,gB:()=>h});var a=n(16550),o=n(52263),r=n(29935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const c=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=c(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,a.LX)(t,{path:e.path,exact:!1,strict:!1})))}function l(e,t){const n=s(e,t),o=n?.docs.find((e=>!!(0,a.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((a=>{a.id===t&&(n[e.name]=a)}))})),n}(o.id):{}}}const d={},u=()=>i("docusaurus-plugin-content-docs")??d,p=e=>function(e,t,n){void 0===t&&(t=r.m),void 0===n&&(n={});const a=i(e),o=a?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,a.TH)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,a.LX)(t,{path:n.path,exact:!1,strict:!1})})),r=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!r&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return r}(t,n,e)}function m(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,a.TH)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function h(e){return p(e).versions}function b(e){const t=p(e);return c(t)}function g(e){const t=p(e),{pathname:n}=(0,a.TH)();return l(t,n)}function v(e){const t=p(e),{pathname:n}=(0,a.TH)();return function(e,t){const n=c(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});var a=n(74865),o=n.n(a);o().configure({showSpinner:!1});const r={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var a=n(87410),o=n(36809);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:a}=t;globalThis.Prism=e,a.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(a.Z)},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(67294);const o={iconExternalLink:"iconExternalLink_nPIU"};function r(e){let{width:t=13.5,height:n=13.5}=e;return a.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:o.iconExternalLink},a.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},7452:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Lt});var a=n(67294),o=n(86010),r=n(44763),i=n(10833),c=n(87462),s=n(16550),l=n(95999),d=n(85936);const u="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,a.useRef)(null),{action:t}=(0,s.k6)(),n=(0,a.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(u);t&&p(t)}),[]);return(0,d.S)((n=>{let{location:a}=n;e.current&&!a.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,l.I)({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){const t=e.children??m,{containerRef:n,onClick:o}=f();return a.createElement("div",{ref:n,role:"region","aria-label":m},a.createElement("a",(0,c.Z)({},e,{href:`#${u}`,onClick:o}),t))}var b=n(35281),g=n(19727);const v={skipToContent:"skipToContent_fXgn"};function y(){return a.createElement(h,{className:v.skipToContent})}var w=n(86668),k=n(59689);function S(e){let{width:t=21,height:n=21,color:o="currentColor",strokeWidth:r=1.2,className:i,...s}=e;return a.createElement("svg",(0,c.Z)({viewBox:"0 0 15 15",width:t,height:n},s),a.createElement("g",{stroke:o,strokeWidth:r},a.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const E={closeButton:"closeButton_CVFx"};function x(e){return a.createElement("button",(0,c.Z)({type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,o.Z)("clean-btn close",E.closeButton,e.className)}),a.createElement(S,{width:14,height:14,strokeWidth:3.1}))}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return a.createElement("div",(0,c.Z)({},e,{className:(0,o.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function B(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:o,textColor:r,isCloseable:i}=e;return a.createElement("div",{className:T.announcementBar,style:{backgroundColor:o,color:r},role:"banner"},i&&a.createElement("div",{className:T.announcementBarPlaceholder}),a.createElement(C,{className:T.announcementBarContent}),i&&a.createElement(x,{onClick:n,className:T.announcementBarClose}))}var A=n(93163),L=n(12466);var R=n(902),N=n(13102);const P=a.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,A.e)(),t=(0,N.HY)(),[n,o]=(0,a.useState)(!1),r=null!==t.component,i=(0,R.D9)(r);return(0,a.useEffect)((()=>{r&&!i&&o(!0)}),[r,i]),(0,a.useEffect)((()=>{r?e.shown||o(!0):o(!1)}),[e.shown,r]),(0,a.useMemo)((()=>[n,o]),[n])}();return a.createElement(P.Provider,{value:n},t)}function I(e){if(e.component){const t=e.component;return a.createElement(t,e.props)}}function D(){const e=(0,a.useContext)(P);if(!e)throw new R.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,a.useCallback)((()=>n(!1)),[n]),r=(0,N.HY)();return(0,a.useMemo)((()=>({shown:t,hide:o,content:I(r)})),[o,r,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:i}=D();return a.createElement("div",{className:"navbar-sidebar"},t,a.createElement("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},a.createElement("div",{className:"navbar-sidebar__item menu"},n),a.createElement("div",{className:"navbar-sidebar__item menu"},r)))}var F=n(92949),z=n(72389);function j(e){return a.createElement("svg",(0,c.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function U(e){return a.createElement("svg",(0,c.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:i}=e;const c=(0,z.Z)(),s=(0,l.I)({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,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return a.createElement("div",{className:(0,o.Z)($.toggle,t)},a.createElement("button",{className:(0,o.Z)("clean-btn",$.toggleButton,!c&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===r?"light":"dark"),disabled:!c,title:s,"aria-label":s,"aria-live":"polite"},a.createElement(j,{className:(0,o.Z)($.toggleIcon,$.lightToggleIcon)}),a.createElement(U,{className:(0,o.Z)($.toggleIcon,$.darkToggleIcon)})))}const H=a.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,o=(0,w.L)().colorMode.disableSwitch,{colorMode:r,setColorMode:i}=(0,F.I)();return o?null:a.createElement(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:r,onChange:i})}var W=n(21327);function V(){return a.createElement(W.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Q(){const e=(0,A.e)();return a.createElement("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},a.createElement(S,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return a.createElement("div",{className:"navbar-sidebar__brand"},a.createElement(V,null),a.createElement(Z,{className:"margin-right--md"}),a.createElement(Q,null))}var Y=n(39960),X=n(44996),J=n(13919),ee=n(98022),te=n(39471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:o,href:r,label:i,html:s,isDropdownLink:l,prependBaseUrlToHref:d,...u}=e;const p=(0,X.Z)(o),f=(0,X.Z)(t),m=(0,X.Z)(r,{forcePrependBaseUrl:!0}),h=i&&r&&!(0,J.Z)(r),b=s?{dangerouslySetInnerHTML:{__html:s}}:{children:a.createElement(a.Fragment,null,i,h&&a.createElement(te.Z,l&&{width:12,height:12}))};return r?a.createElement(Y.Z,(0,c.Z)({href:d?m:r},u,b)):a.createElement(Y.Z,(0,c.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?(0,ee.F)(n,t.pathname):t.pathname.startsWith(f)},u,b))}function ae(e){let{className:t,isDropdownItem:n=!1,...r}=e;const i=a.createElement(ne,(0,c.Z)({className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},r));return n?a.createElement("li",null,i):i}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return a.createElement("li",{className:"menu__list-item"},a.createElement(ne,(0,c.Z)({className:(0,o.Z)("menu__link",t)},r)))}function re(e){let{mobile:t=!1,position:n,...o}=e;const r=t?oe:ae;return a.createElement(r,(0,c.Z)({},o,{activeClassName:o.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(86043),ce=n(48596),se=n(52263);function le(e,t){return e.some((e=>function(e,t){return!!(0,ce.Mg)(e.to,t)||!!(0,ee.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:r,onClick:i,...s}=e;const l=(0,a.useRef)(null),[d,u]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&u(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),a.createElement("div",{ref:l,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":d})},a.createElement(ne,(0,c.Z)({"aria-haspopup":"true","aria-expanded":d,role:"button",href:s.to?void 0:"#",className:(0,o.Z)("navbar__link",r)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),u(!d))}}),s.children??s.label),a.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>a.createElement(qe,(0,c.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function ue(e){let{items:t,className:n,position:r,onClick:i,...l}=e;const d=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),u=le(t,d),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!u});return(0,a.useEffect)((()=>{u&&m(!u)}),[d,u,m]),a.createElement("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":p})},a.createElement(ne,(0,c.Z)({role:"button",className:(0,o.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},l,{onClick:e=>{e.preventDefault(),f()}}),l.children??l.label),a.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>a.createElement(qe,(0,c.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function pe(e){let{mobile:t=!1,...n}=e;const o=t?ue:de;return a.createElement(o,n)}var fe=n(94711);function me(e){let{width:t=20,height:n=20,...o}=e;return a.createElement("svg",(0,c.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},o),a.createElement("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 he="iconLanguage_nlXk";function be(){return a.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},a.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"}))}var ge=n(20830),ve=["translations"];function ye(){return ye=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,a=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Ee="Ctrl";var xe=a.forwardRef((function(e,t){var n=e.translations,o=void 0===n?{}:n,r=Se(e,ve),i=o.buttonText,c=void 0===i?"Search":i,s=o.buttonAriaLabel,l=void 0===s?"Search":s,d=we((0,a.useState)(null),2),u=d[0],p=d[1];return(0,a.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?p("\u2318"):p(Ee))}),[]),a.createElement("button",ye({type:"button",className:"DocSearch DocSearch-Button","aria-label":l},r,{ref:t}),a.createElement("span",{className:"DocSearch-Button-Container"},a.createElement(ge.W,null),a.createElement("span",{className:"DocSearch-Button-Placeholder"},c)),a.createElement("span",{className:"DocSearch-Button-Keys"},null!==u&&a.createElement(a.Fragment,null,a.createElement("kbd",{className:"DocSearch-Button-Key"},u===Ee?a.createElement(be,null):u),a.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),_e=n(35742),Ce=n(66177),Te=n(239),Be=n(43320);var Ae=n(73935);const Le={button:{buttonText:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,l.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,l.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,l.I)({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,l.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,l.I)({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,l.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,l.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,l.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,l.I)({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,l.I)({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,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,l.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Re=null;function Ne(e){let{hit:t,children:n}=e;return a.createElement(Y.Z,{to:t.url},n)}function Pe(e){let{state:t,onClose:n}=e;const o=(0,Ce.M)();return a.createElement(Y.Z,{to:o(t.query),onClick:n},a.createElement(l.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits}},"See all {count} results"))}function Oe(e){let{contextualSearch:t,externalUrlRegex:o,...r}=e;const{siteMetadata:i}=(0,se.Z)(),l=(0,Te.l)(),d=function(){const{locale:e,tags:t}=(0,Be._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),u=r.searchParameters?.facetFilters??[],p=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(d,u):u,f={...r.searchParameters,facetFilters:p},m=(0,s.k6)(),h=(0,a.useRef)(null),b=(0,a.useRef)(null),[g,v]=(0,a.useState)(!1),[y,w]=(0,a.useState)(void 0),k=(0,a.useCallback)((()=>Re?Promise.resolve():Promise.all([n.e(1426).then(n.bind(n,61426)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,46945)),Promise.all([n.e(532),n.e(8894)]).then(n.bind(n,18894))]).then((e=>{let[{DocSearchModal:t}]=e;Re=t}))),[]),S=(0,a.useCallback)((()=>{k().then((()=>{h.current=document.createElement("div"),document.body.insertBefore(h.current,document.body.firstChild),v(!0)}))}),[k,v]),E=(0,a.useCallback)((()=>{v(!1),h.current?.remove()}),[v]),x=(0,a.useCallback)((e=>{k().then((()=>{v(!0),w(e.key)}))}),[k,v,w]),_=(0,a.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.F)(o,t)?window.location.href=t:m.push(t)}}).current,C=(0,a.useRef)((e=>r.transformItems?r.transformItems(e):e.map((e=>({...e,url:l(e.url)}))))).current,T=(0,a.useMemo)((()=>e=>a.createElement(Pe,(0,c.Z)({},e,{onClose:E}))),[E]),B=(0,a.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,o=e.onClose,r=e.onInput,i=e.searchButtonRef;a.useEffect((function(){function e(e){var a;(27===e.keyCode&&t||"k"===(null===(a=e.key)||void 0===a?void 0:a.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)&&(e.preventDefault(),t?o():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&r&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&r(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,o,r,i])}({isOpen:g,onOpen:S,onClose:E,onInput:x,searchButtonRef:b}),a.createElement(a.Fragment,null,a.createElement(_e.Z,null,a.createElement("link",{rel:"preconnect",href:`https://${r.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})),a.createElement(xe,{onTouchStart:k,onFocus:k,onMouseOver:k,onClick:S,ref:b,translations:Le.button}),g&&Re&&h.current&&(0,Ae.createPortal)(a.createElement(Re,(0,c.Z)({onClose:E,initialScrollY:window.scrollY,initialQuery:y,navigator:_,transformItems:C,hitComponent:Ne,transformSearchClient:B},r.searchPagePath&&{resultsFooterComponent:T},r,{searchParameters:f,placeholder:Le.placeholder,translations:Le.modal})),h.current))}function Ie(){const{siteConfig:e}=(0,se.Z)();return a.createElement(Oe,e.themeConfig.algolia)}const De={searchBox:"searchBox_ZlJk"};function Me(e){let{children:t,className:n}=e;return a.createElement("div",{className:(0,o.Z)(n,De.searchBox)},t)}var Fe=n(80143),ze=n(52802);var je=n(60373);const Ue=e=>e.docs.find((t=>t.id===e.mainDocId));const $e={default:re,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:o,...r}=e;const{i18n:{currentLocale:i,locales:d,localeConfigs:u}}=(0,se.Z)(),p=(0,fe.l)(),{search:f,hash:m}=(0,s.TH)(),h=[...n,...d.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;return{label:u[e].label,lang:u[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...o],b=t?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):u[i].label;return a.createElement(pe,(0,c.Z)({},r,{mobile:t,label:a.createElement(a.Fragment,null,a.createElement(me,{className:he}),b),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:a.createElement(Me,{className:n},a.createElement(Ie,null))},dropdown:pe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:i=!1}=e;const c=i?"li":"div";return a.createElement(c,{className:(0,o.Z)({navbar__item:!r&&!i,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:o,...r}=e;const{activeDoc:i}=(0,Fe.Iw)(o),s=(0,ze.vY)(t,o);return null===s?null:a.createElement(re,(0,c.Z)({exact:!0},r,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:o,...r}=e;const{activeDoc:i}=(0,Fe.Iw)(o),s=(0,ze.oz)(t,o).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return a.createElement(re,(0,c.Z)({exact:!0},r,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:o,...r}=e;const i=(0,ze.lO)(o)[0],s=t??i.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return a.createElement(re,(0,c.Z)({},r,{label:s,to:l}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:o,dropdownItemsBefore:r,dropdownItemsAfter:i,...d}=e;const{search:u,hash:p}=(0,s.TH)(),f=(0,Fe.Iw)(n),m=(0,Fe.gB)(n),{savePreferredVersionName:h}=(0,je.J)(n),b=[...r,...m.map((e=>{const t=f.alternateDocVersions[e.name]??Ue(e);return{label:e.label,to:`${t.path}${u}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>h(e.name)}})),...i],g=(0,ze.lO)(n)[0],v=t&&b.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,y=t&&b.length>1?void 0:Ue(g).path;return b.length<=1?a.createElement(re,(0,c.Z)({},d,{mobile:t,label:v,to:y,isActive:o?()=>!1:void 0})):a.createElement(pe,(0,c.Z)({},d,{mobile:t,label:v,to:y,items:b,isActive:o?()=>!1:void 0}))}};function qe(e){let{type:t,...n}=e;const o=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),r=$e[o];if(!r)throw new Error(`No NavbarItem component found for type "${t}".`);return a.createElement(r,n)}function He(){const e=(0,A.e)(),t=(0,w.L)().navbar.items;return a.createElement("ul",{className:"menu__list"},t.map(((t,n)=>a.createElement(qe,(0,c.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ge(e){return a.createElement("button",(0,c.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),a.createElement(l.Z,{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)"},"\u2190 Back to main menu"))}function Ze(){const e=0===(0,w.L)().navbar.items.length,t=D();return a.createElement(a.Fragment,null,!e&&a.createElement(Ge,{onClick:()=>t.hide()}),t.content)}function We(){const e=(0,A.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,a.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?a.createElement(M,{header:a.createElement(K,null),primaryMenu:a.createElement(He,null),secondaryMenu:a.createElement(Ze,null)}):null}const Ve={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Qe(e){return a.createElement("div",(0,c.Z)({role:"presentation"},e,{className:(0,o.Z)("navbar-sidebar__backdrop",e.className)}))}function Ke(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:r}}=(0,w.L)(),i=(0,A.e)(),{navbarRef:c,isNavbarVisible:s}=function(e){const[t,n]=(0,a.useState)(e),o=(0,a.useRef)(!1),r=(0,a.useRef)(0),i=(0,a.useCallback)((e=>{null!==e&&(r.current=e.getBoundingClientRect().height)}),[]);return(0,L.RF)(((t,a)=>{let{scrollY:i}=t;if(!e)return;if(i=c?n(!1):i+l{if(!e)return;const a=t.location.hash;if(a?document.getElementById(a.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return a.createElement("nav",{ref:c,"aria-label":(0,l.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.Z)("navbar","navbar--fixed-top",n&&[Ve.navbarHideable,!s&&Ve.navbarHidden],{"navbar--dark":"dark"===r,"navbar--primary":"primary"===r,"navbar-sidebar--show":i.shown})},t,a.createElement(Qe,{onClick:i.toggle}),a.createElement(We,null))}var Ye=n(18780);const Xe={errorBoundaryError:"errorBoundaryError_a6uf"};function Je(e){return a.createElement("button",(0,c.Z)({type:"button"},e),a.createElement(l.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function et(e){let{error:t}=e;const n=(0,Ye.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return a.createElement("p",{className:Xe.errorBoundaryError},n)}class tt extends a.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const nt="right";function at(e){let{width:t=30,height:n=30,className:o,...r}=e;return a.createElement("svg",(0,c.Z)({className:o,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},r),a.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function ot(){const{toggle:e,shown:t}=(0,A.e)();return a.createElement("button",{onClick:e,"aria-label":(0,l.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},a.createElement(at,null))}const rt={colorModeToggle:"colorModeToggle_DEke"};function it(e){let{items:t}=e;return a.createElement(a.Fragment,null,t.map(((e,t)=>a.createElement(tt,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},a.createElement(qe,e)))))}function ct(e){let{left:t,right:n}=e;return a.createElement("div",{className:"navbar__inner"},a.createElement("div",{className:"navbar__items"},t),a.createElement("div",{className:"navbar__items navbar__items--right"},n))}function st(){const e=(0,A.e)(),t=(0,w.L)().navbar.items,[n,o]=function(e){function t(e){return"left"===(e.position??nt)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),r=t.find((e=>"search"===e.type));return a.createElement(ct,{left:a.createElement(a.Fragment,null,!e.disabled&&a.createElement(ot,null),a.createElement(V,null),a.createElement(it,{items:n})),right:a.createElement(a.Fragment,null,a.createElement(it,{items:o}),a.createElement(Z,{className:rt.colorModeToggle}),!r&&a.createElement(Me,null,a.createElement(Ie,null)))})}function lt(){return a.createElement(Ke,null,a.createElement(st,null))}function dt(e){let{item:t}=e;const{to:n,href:o,label:r,prependBaseUrlToHref:i,...s}=t,l=(0,X.Z)(n),d=(0,X.Z)(o,{forcePrependBaseUrl:!0});return a.createElement(Y.Z,(0,c.Z)({className:"footer__link-item"},o?{href:i?d:o}:{to:l},s),r,o&&!(0,J.Z)(o)&&a.createElement(te.Z,null))}function ut(e){let{item:t}=e;return t.html?a.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):a.createElement("li",{key:t.href??t.to,className:"footer__item"},a.createElement(dt,{item:t}))}function pt(e){let{column:t}=e;return a.createElement("div",{className:"col footer__col"},a.createElement("div",{className:"footer__title"},t.title),a.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>a.createElement(ut,{key:t,item:e})))))}function ft(e){let{columns:t}=e;return a.createElement("div",{className:"row footer__links"},t.map(((e,t)=>a.createElement(pt,{key:t,column:e}))))}function mt(){return a.createElement("span",{className:"footer__link-separator"},"\xb7")}function ht(e){let{item:t}=e;return t.html?a.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):a.createElement(dt,{item:t})}function bt(e){let{links:t}=e;return a.createElement("div",{className:"footer__links text--center"},a.createElement("div",{className:"footer__links"},t.map(((e,n)=>a.createElement(a.Fragment,{key:n},a.createElement(ht,{item:e}),t.length!==n+1&&a.createElement(mt,null))))))}function gt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?a.createElement(ft,{columns:t}):a.createElement(bt,{links:t})}var vt=n(50941);const yt={footerLogoLink:"footerLogoLink_BH7S"};function wt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return a.createElement(vt.Z,{className:(0,o.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function kt(e){let{logo:t}=e;return t.href?a.createElement(Y.Z,{href:t.href,className:yt.footerLogoLink,target:t.target},a.createElement(wt,{logo:t})):a.createElement(wt,{logo:t})}function St(e){let{copyright:t}=e;return a.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Et(e){let{style:t,links:n,logo:r,copyright:i}=e;return a.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===t})},a.createElement("div",{className:"container container-fluid"},n,(r||i)&&a.createElement("div",{className:"footer__bottom text--center"},r&&a.createElement("div",{className:"margin-bottom--sm"},r),i)))}function xt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:o,style:r}=e;return a.createElement(Et,{style:r,links:n&&n.length>0&&a.createElement(gt,{links:n}),logo:o&&a.createElement(kt,{logo:o}),copyright:t&&a.createElement(St,{copyright:t})})}const _t=a.memo(xt),Ct=(0,R.Qc)([F.S,k.pl,L.OC,je.L5,i.VC,function(e){let{children:t}=e;return a.createElement(N.n2,null,a.createElement(A.M,null,a.createElement(O,null,t)))}]);function Tt(e){let{children:t}=e;return a.createElement(Ct,null,t)}function Bt(e){let{error:t,tryAgain:n}=e;return a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),a.createElement("div",{className:"margin-vert--lg"},a.createElement(Je,{onClick:n,className:"button button--primary shadow--lw"})),a.createElement("hr",null),a.createElement("div",{className:"margin-vert--md"},a.createElement(et,{error:t})))))}const At={mainWrapper:"mainWrapper_z2l0"};function Lt(e){const{children:t,noFooter:n,wrapperClassName:c,title:s,description:l}=e;return(0,g.t)(),a.createElement(Tt,null,a.createElement(i.d,{title:s,description:l}),a.createElement(y,null),a.createElement(B,null),a.createElement(lt,null),a.createElement("div",{id:u,className:(0,o.Z)(b.k.wrapper.main,At.mainWrapper,c)},a.createElement(r.Z,{fallback:e=>a.createElement(Bt,e)},t)),!n&&a.createElement(_t,null))}},21327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var a=n(87462),o=n(67294),r=n(39960),i=n(44996),c=n(52263),s=n(86668),l=n(50941);function d(e){let{logo:t,alt:n,imageClassName:a}=e;const r={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},c=o.createElement(l.Z,{className:t.className,sources:r,height:t.height,width:t.width,alt:n,style:t.style});return a?o.createElement("div",{className:a},c):c}function u(e){const{siteConfig:{title:t}}=(0,c.Z)(),{navbar:{title:n,logo:l}}=(0,s.L)(),{imageClassName:u,titleClassName:p,...f}=e,m=(0,i.Z)(l?.href||"/"),h=n?"":t,b=l?.alt??h;return o.createElement(r.Z,(0,a.Z)({to:m},f,l?.target&&{target:l.target}),l&&o.createElement(d,{logo:l,alt:b,imageClassName:u}),null!=n&&o.createElement("b",{className:p},n))}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(67294),o=n(35742);function r(e){let{locale:t,version:n,tag:r}=e;const i=t;return a.createElement(o.Z,null,t&&a.createElement("meta",{name:"docusaurus_locale",content:t}),n&&a.createElement("meta",{name:"docusaurus_version",content:n}),r&&a.createElement("meta",{name:"docusaurus_tag",content:r}),i&&a.createElement("meta",{name:"docsearch:language",content:i}),n&&a.createElement("meta",{name:"docsearch:version",content:n}),r&&a.createElement("meta",{name:"docsearch:docusaurus_tag",content:r}))}},50941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var a=n(87462),o=n(67294),r=n(86010),i=n(72389),c=n(92949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function l(e){const t=(0,i.Z)(),{colorMode:n}=(0,c.I)(),{sources:l,className:d,alt:u,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,f.map((e=>o.createElement("img",(0,a.Z)({key:e,src:l[e],alt:u,className:(0,r.Z)(s.themedImage,s[`themedImage--${e}`],d)},p)))))}},86043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>b});var a=n(87462),o=n(67294),r=n(10412),i=n(91442);const c="ease-in-out";function s(e){let{initialState:t}=e;const[n,a]=(0,o.useState)(t??!1),r=(0,o.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:r}}const l={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function u(e,t){const n=t?l:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const r=(0,o.useRef)(!1);(0,o.useEffect)((()=>{const e=t.current;function o(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??c}`,height:`${t}px`}}function s(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!r.current)return u(e,n),void(r.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=l.height,e.style.overflow=l.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function f(e){if(!r.Z.canUseDOM)return e?l:d}function m(e){let{as:t="div",collapsed:n,children:a,animation:r,onCollapseTransitionEnd:i,className:c,disableSSRStyle:s}=e;const l=(0,o.useRef)(null);return p({collapsibleRef:l,collapsed:n,animation:r}),o.createElement(t,{ref:l,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(u(l.current,n),i?.(n))},className:c},a)}function h(e){let{collapsed:t,...n}=e;const[r,i]=(0,o.useState)(!t),[c,s]=(0,o.useState)(t);return(0,o.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,o.useLayoutEffect)((()=>{r&&s(t)}),[r,t]),r?o.createElement(m,(0,a.Z)({},n,{collapsed:c})):null}function b(e){let{lazy:t,...n}=e;const a=t?h:m;return o.createElement(a,n)}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var a=n(67294),o=n(72389),r=n(50012),i=n(902),c=n(86668);const s=(0,r.WA)("docusaurus.announcement.dismiss"),l=(0,r.WA)("docusaurus.announcement.id"),d=()=>"true"===s.get(),u=e=>s.set(String(e)),p=a.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,c.L)(),t=(0,o.Z)(),[n,r]=(0,a.useState)((()=>!!t&&d()));(0,a.useEffect)((()=>{r(d())}),[]);const i=(0,a.useCallback)((()=>{u(!0),r(!0)}),[]);return(0,a.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=l.get();"annoucement-bar"===n&&(n="announcement-bar");const a=t!==n;l.set(t),a&&u(!1),!a&&d()||r(!1)}),[e]),(0,a.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return a.createElement(p.Provider,{value:n},t)}function m(){const e=(0,a.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>b,S:()=>h});var a=n(67294),o=n(10412),r=n(902),i=n(50012),c=n(86668);const s=a.createContext(void 0),l="theme",d=(0,i.WA)(l),u={light:"light",dark:"dark"},p=e=>e===u.dark?u.dark:u.light,f=e=>o.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{d.set(p(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,c.L)(),[o,r]=(0,a.useState)(f(e));(0,a.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,a.useCallback)((function(t,a){void 0===a&&(a={});const{persist:o=!0}=a;t?(r(t),o&&m(t)):(r(n?window.matchMedia("(prefers-color-scheme: dark)").matches?u.dark:u.light:e),d.del())}),[n,e]);(0,a.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(o))}),[o]),(0,a.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==l)return;const t=d.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,a.useRef)(!1);return(0,a.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),a=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(a),()=>e.removeListener(a)}),[i,t,n]),(0,a.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===u.dark},setLightTheme(){i(u.light)},setDarkTheme(){i(u.dark)}})),[o,i])}();return a.createElement(s.Provider,{value:n},t)}function b(){const e=(0,a.useContext)(s);if(null==e)throw new r.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>b,Oh:()=>y});var a=n(67294),o=n(80143),r=n(29935),i=n(86668),c=n(52802),s=n(902),l=n(50012);const d=e=>`docs-preferred-version-${e}`,u={save:(e,t,n)=>{(0,l.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,l.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,l.WA)(d(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=a.createContext(null);function m(){const e=(0,o._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,a.useMemo)((()=>Object.keys(e)),[e]),[r,c]=(0,a.useState)((()=>p(n)));(0,a.useEffect)((()=>{c(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:a}=e;function o(e){const t=u.read(e,n);return a[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(u.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[r,(0,a.useMemo)((()=>({savePreferredVersion:function(e,n){u.save(e,t,n),c((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return a.createElement(f.Provider,{value:n},t)}function b(e){let{children:t}=e;return c.cE?a.createElement(h,null,t):a.createElement(a.Fragment,null,t)}function g(){const e=(0,a.useContext)(f);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=r.m);const t=(0,o.zh)(e),[n,i]=g(),{preferredVersionName:c}=n[e];return{preferredVersion:t.versions.find((e=>e.name===c))??null,savePreferredVersionName:(0,a.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function y(){const e=(0,o._r)(),[t]=g();function n(n){const a=e[n],{preferredVersionName:o}=t[n];return a.versions.find((e=>e.name===o))??null}const a=Object.keys(e);return Object.fromEntries(a.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>c});var a=n(67294),o=n(902);const r=Symbol("EmptyContext"),i=a.createContext(r);function c(e){let{children:t,name:n,items:o}=e;const r=(0,a.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return a.createElement(i.Provider,{value:r},t)}function s(){const e=(0,a.useContext)(i);if(e===r)throw new o.i6("DocsSidebarProvider");return e}},93163:(e,t,n)=>{"use strict";n.d(t,{M:()=>u,e:()=>p});var a=n(67294),o=n(13102),r=n(87524),i=n(91980),c=n(86668),s=n(902);const l=a.createContext(void 0);function d(){const e=function(){const e=(0,o.HY)(),{items:t}=(0,c.L)().navbar;return 0===t.length&&!e.component}(),t=(0,r.i)(),n=!e&&"mobile"===t,[s,l]=(0,a.useState)(!1);(0,i.Rb)((()=>{if(s)return l(!1),!1}));const d=(0,a.useCallback)((()=>{l((e=>!e))}),[]);return(0,a.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,a.useMemo)((()=>({disabled:e,shouldRender:n,toggle:d,shown:s})),[e,n,d,s])}function u(e){let{children:t}=e;const n=d();return a.createElement(l.Provider,{value:n},t)}function p(){const e=a.useContext(l);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>c,Zo:()=>s,n2:()=>i});var a=n(67294),o=n(902);const r=a.createContext(null);function i(e){let{children:t}=e;const n=(0,a.useState)({component:null,props:null});return a.createElement(r.Provider,{value:n},t)}function c(){const e=(0,a.useContext)(r);if(!e)throw new o.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,a.useContext)(r);if(!i)throw new o.i6("NavbarSecondaryMenuContentProvider");const[,c]=i,s=(0,o.Ql)(n);return(0,a.useEffect)((()=>{c({component:t,props:s})}),[c,t,s]),(0,a.useEffect)((()=>()=>c({component:null,props:null})),[c]),null}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>o,t:()=>r});var a=n(67294);const o="navigation-with-keyboard";function r(){(0,a.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},66177:(e,t,n)=>{"use strict";n.d(t,{K:()=>c,M:()=>s});var a=n(67294),o=n(52263),r=n(91980);const i="q";function c(){return(0,r.Nc)(i)}function s(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,o.Z)(),{algolia:{searchPagePath:n}}=t;return(0,a.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var a=n(67294),o=n(10412);const r={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function c(){return o.Z.canUseDOM?window.innerWidth>i?r.desktop:r.mobile:r.ssr}const s=!1;function l(){const[e,t]=(0,a.useState)((()=>s?"ssr":c()));return(0,a.useEffect)((()=>{function e(){t(c())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>a});const a={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},91442:(e,t,n)=>{"use strict";function a(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>a})},52802:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>p,_F:()=>h,cE:()=>u,hI:()=>k,lO:()=>v,vY:()=>w,oz:()=>y,s1:()=>g});var a=n(67294),o=n(16550),r=n(18790),i=n(80143),c=n(60373),s=n(1116);function l(e){return Array.from(new Set(e))}var d=n(48596);const u=!!i._r;function p(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=p(t);if(e)return e}}}const f=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),m=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?f(e.href,t):"category"===e.type&&(f(e.href,t)||m(e.items,t))}function b(e){let{sidebarItems:t,pathname:n,onlyCategories:a=!1}=e;const o=[];return function e(t){for(const r of t)if("category"===r.type&&((0,d.Mg)(r.href,n)||e(r.items))||"link"===r.type&&(0,d.Mg)(r.href,n)){return a&&"category"!==r.type||o.unshift(r),!0}return!1}(t),o}function g(){const e=(0,s.V)(),{pathname:t}=(0,o.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?b({sidebarItems:e.items,pathname:t}):null}function v(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,c.J)(e),o=(0,i.yW)(e);return(0,a.useMemo)((()=>l([t,n,o].filter(Boolean))),[t,n,o])}function y(e,t){const n=v(t);return(0,a.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),a=t.find((t=>t[0]===e));if(!a)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return a[1]}),[e,n])}function w(e,t){const n=v(t);return(0,a.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),a=t.find((t=>t.id===e));if(!a){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${l(t.map((e=>e.id))).join("\n- ")}`)}return a}),[e,n])}function k(e){let{route:t,versionMetadata:n}=e;const a=(0,o.TH)(),i=t.routes,c=i.find((e=>(0,o.LX)(a.pathname,e)));if(!c)return null;const s=c.sidebar,l=s?n.docsSidebars[s]:void 0;return{docElement:(0,r.H)(i),sidebarName:s,sidebarItems:l}}},82128:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var a=n(52263);function o(e){const{siteConfig:t}=(0,a.Z)(),{title:n,titleDelimiter:o}=t;return e?.trim().length?`${e.trim()} ${o} ${n}`:n}},91980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>l,Rb:()=>c});var a=n(67294),o=n(16550),r=n(61688),i=n(902);function c(e){!function(e){const t=(0,o.k6)(),n=(0,i.zX)(e);(0,a.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,o.k6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function l(e){const t=s(e)??"",n=function(){const e=(0,o.k6)();return(0,a.useCallback)(((t,n,a)=>{const o=new URLSearchParams(e.location.search);n?o.set(t,n):o.delete(t),(a?.push?e.push:e.replace)({search:o.toString()})}),[e])}();return[t,(0,a.useCallback)(((t,a)=>{n(e,t,a)}),[n,e])]}},10833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>d,VC:()=>f});var a=n(67294),o=n(86010),r=n(35742),i=n(30226);function c(){const e=a.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(44996),l=n(82128);function d(e){let{title:t,description:n,keywords:o,image:i,children:c}=e;const d=(0,l.p)(t),{withBaseUrl:u}=(0,s.C)(),p=i?u(i,{absolute:!0}):void 0;return a.createElement(r.Z,null,t&&a.createElement("title",null,d),t&&a.createElement("meta",{property:"og:title",content:d}),n&&a.createElement("meta",{name:"description",content:n}),n&&a.createElement("meta",{property:"og:description",content:n}),o&&a.createElement("meta",{name:"keywords",content:Array.isArray(o)?o.join(","):o}),p&&a.createElement("meta",{property:"og:image",content:p}),p&&a.createElement("meta",{name:"twitter:image",content:p}),c)}const u=a.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=a.useContext(u),c=(0,o.Z)(i,t);return a.createElement(u.Provider,{value:c},a.createElement(r.Z,null,a.createElement("html",{className:c})),n)}function f(e){let{children:t}=e;const n=c(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return a.createElement(p,{className:(0,o.Z)(r,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>l,Ql:()=>s,i6:()=>c,zX:()=>r});var a=n(67294);const o=n(10412).Z.canUseDOM?a.useLayoutEffect:a.useEffect;function r(e){const t=(0,a.useRef)(e);return o((()=>{t.current=e}),[e]),(0,a.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,a.useRef)();return o((()=>{t.current=e})),t.current}class c extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,a.useMemo)((()=>e),t.flat())}function l(e){return t=>{let{children:n}=t;return a.createElement(a.Fragment,null,e.reduceRight(((e,t)=>a.createElement(t,null,e)),n))}}},98022:(e,t,n)=>{"use strict";function a(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>a})},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>c});var a=n(67294),o=n(723),r=n(52263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function c(){const{baseUrl:e}=(0,r.Z)().siteConfig;return(0,a.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function a(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(a)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>u});var a=n(67294),o=n(10412),r=n(72389),i=n(902);const c=a.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,a.useRef)(!0);return(0,a.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return a.createElement(c.Provider,{value:n},t)}function l(){const e=(0,a.useContext)(c);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const d=()=>o.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function u(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=l(),o=(0,a.useRef)(d()),r=(0,i.zX)(e);(0,a.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();r(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[r,n,...t])}function p(){const e=(0,a.useRef)(null),t=(0,r.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function a(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>c});var a=n(80143),o=n(52263),r=n(60373);const i="default";function c(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,o.Z)(),t=(0,a._r)(),n=(0,a.WS)(),s=(0,r.Oh)();const l=[i,...Object.keys(t).map((function(e){const a=n?.activePlugin.pluginId===e?n.activeVersion:void 0,o=s[e],r=t[e].versions.find((e=>e.isLast));return c(e,(a??o??r).name)}))];return{locale:e.currentLocale,tags:l}}},50012:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(67294),n(61688);const a="localStorage";function o(e){let{key:t,oldValue:n,newValue:a,storage:o}=e;if(n===a)return;const r=document.createEvent("StorageEvent");r.initStorageEvent("storage",!1,!1,t,n,a,window.location.href,o),window.dispatchEvent(r)}function r(e){if(void 0===e&&(e=a),"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,i||(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),i=!0),null}var t}let i=!1;const c={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=r(t?.persistence);return null===n?c:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const a=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:a,newValue:t,storage:n})}catch(a){console.error(`Docusaurus storage error, can't set ${e}=${t}`,a)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const a=a=>{a.storageArea===n&&a.key===e&&t(a)};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)}catch(a){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,a),()=>{}}}}}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var a=n(52263),o=n(16550),r=n(18780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:c}}=(0,a.Z)(),{pathname:s}=(0,o.TH)(),l=(0,r.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),d=c===i?e:e.replace(`/${c}/`,"/"),u=l.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===i?`${d}`:`${d}${e}/`}(n)}${u}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var a=n(67294),o=n(16550),r=n(902);function i(e){const t=(0,o.TH)(),n=(0,r.D9)(t),i=(0,r.zX)(e);(0,a.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var a=n(52263);function o(){return(0,a.Z)().siteConfig.themeConfig}},6278:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var a=n(52263);function o(){const{siteConfig:{themeConfig:e}}=(0,a.Z)();return e}},239:(e,t,n)=>{"use strict";n.d(t,{l:()=>c});var a=n(67294),o=n(98022),r=n(44996),i=n(6278);function c(){const{withBaseUrl:e}=(0,r.C)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,a.useCallback)((a=>{const r=new URL(a);if((0,o.F)(t,r.href))return a;const i=`${r.pathname+r.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:a}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),r="/"===o||o===a?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,r)}},54143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},18780:function(e,t,n){"use strict";var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return a(o).default}});var r=n(54143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return r.getErrorCausalChain}})},94811:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var a=n(36809),o=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},a=window.Promise||function(e){function t(){}e(t,t)},r=function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{}).target,t=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(g.container)if(g.container instanceof Object)t=(e=o({},e,g.container)).width-e.left-e.right-2*g.margin,n=e.height-e.top-e.bottom-2*g.margin;else{var a=(i(g.container)?g.container:document.querySelector(g.container)).getBoundingClientRect(),r=a.width,s=a.height,l=a.left,d=a.top;e=o({},e,{width:r,height:s,left:l,top:d})}t=t||e.width-2*g.margin,n=n||e.height-2*g.margin;var u=v.zoomedHd||v.original,p=c(u)?t:u.naturalWidth||t,f=c(u)?n:u.naturalHeight||n,m=u.getBoundingClientRect(),h=m.top,b=m.left,y=m.width,w=m.height,k=Math.min(p,t)/y,S=Math.min(f,n)/w,E=Math.min(k,S),x="scale("+E+") translate3d("+((t-y)/2-b+g.margin+e.left)/E+"px, "+((n-w)/2-h+g.margin+e.top)/E+"px, 0)";v.zoomed.style.transform=x,v.zoomedHd&&(v.zoomedHd.style.transform=x)};return new a((function(n){if(e&&-1===f.indexOf(e))n(w);else{if(v.zoomed)n(w);else{if(e)v.original=e;else{if(!(f.length>0))return void n(w);var a=f;v.original=a[0]}if(v.original.dispatchEvent(l("medium-zoom:open",{detail:{zoom:w}})),b=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,h=!0,v.zoomed=function(e){var t=e.getBoundingClientRect(),n=t.top,a=t.left,o=t.width,r=t.height,i=e.cloneNode(),c=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,s=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return i.removeAttribute("id"),i.style.position="absolute",i.style.top=n+c+"px",i.style.left=a+s+"px",i.style.width=o+"px",i.style.height=r+"px",i.style.transform="",i}(v.original),document.body.appendChild(y),g.template){var o=i(g.template)?g.template:document.querySelector(g.template);v.template=document.createElement("div"),v.template.appendChild(o.content.cloneNode(!0)),document.body.appendChild(v.template)}if(document.body.appendChild(v.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),v.original.classList.add("medium-zoom-image--hidden"),v.zoomed.classList.add("medium-zoom-image--opened"),v.zoomed.addEventListener("click",u),v.zoomed.addEventListener("transitionend",(function e(){h=!1,v.zoomed.removeEventListener("transitionend",e),v.original.dispatchEvent(l("medium-zoom:opened",{detail:{zoom:w}})),n(w)})),v.original.getAttribute("data-zoom-src")){v.zoomedHd=v.zoomed.cloneNode(),v.zoomedHd.removeAttribute("srcset"),v.zoomedHd.removeAttribute("sizes"),v.zoomedHd.src=v.zoomed.getAttribute("data-zoom-src"),v.zoomedHd.onerror=function(){clearInterval(r),console.warn("Unable to reach the zoom image target "+v.zoomedHd.src),v.zoomedHd=null,t()};var r=setInterval((function(){v.zoomedHd.complete&&(clearInterval(r),v.zoomedHd.classList.add("medium-zoom-image--opened"),v.zoomedHd.addEventListener("click",u),document.body.appendChild(v.zoomedHd),t())}),10)}else if(v.original.hasAttribute("srcset")){v.zoomedHd=v.zoomed.cloneNode(),v.zoomedHd.removeAttribute("sizes"),v.zoomedHd.removeAttribute("loading");var c=v.zoomedHd.addEventListener("load",(function(){v.zoomedHd.removeEventListener("load",c),v.zoomedHd.classList.add("medium-zoom-image--opened"),v.zoomedHd.addEventListener("click",u),document.body.appendChild(v.zoomedHd),t()}))}else t()}}}))},u=function(){return new a((function(e){if(!h&&v.original){h=!0,document.body.classList.remove("medium-zoom--opened"),v.zoomed.style.transform="",v.zoomedHd&&(v.zoomedHd.style.transform=""),v.template&&(v.template.style.transition="opacity 150ms",v.template.style.opacity=0),v.original.dispatchEvent(l("medium-zoom:close",{detail:{zoom:w}})),v.zoomed.addEventListener("transitionend",(function t(){v.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(v.zoomed),v.zoomedHd&&document.body.removeChild(v.zoomedHd),document.body.removeChild(y),v.zoomed.classList.remove("medium-zoom-image--opened"),v.template&&document.body.removeChild(v.template),h=!1,v.zoomed.removeEventListener("transitionend",t),v.original.dispatchEvent(l("medium-zoom:closed",{detail:{zoom:w}})),v.original=null,v.zoomed=null,v.zoomedHd=null,v.template=null,e(w)}))}else e(w)}))},p=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).target;return v.original?u():d({target:e})},f=[],m=[],h=!1,b=0,g=n,v={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?g=t:(t||"string"==typeof t)&&r(t);var y=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t}((g=o({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},g)).background);document.addEventListener("click",(function(e){var t=e.target;t!==y?-1!==f.indexOf(t)&&p({target:t}):u()})),document.addEventListener("keyup",(function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||u()})),document.addEventListener("scroll",(function(){if(!h&&v.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(b-e)>g.scrollOffset&&setTimeout(u,150)}})),window.addEventListener("resize",u);var w={open:d,close:u,toggle:p,update:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e;if(e.background&&(y.style.background=e.background),e.container&&e.container instanceof Object&&(t.container=o({},g.container,e.container)),e.template){var n=i(e.template)?e.template:document.querySelector(e.template);t.template=n}return g=o({},g,t),f.forEach((function(e){e.dispatchEvent(l("medium-zoom:update",{detail:{zoom:w}}))})),w},clone:function(){return e(o({},g,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}))},attach:r,detach:function(){for(var e=arguments.length,t=Array(e),n=0;n0?t.reduce((function(e,t){return[].concat(e,s(t))}),[]):f;return a.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(l("medium-zoom:detach",{detail:{zoom:w}}))})),f=f.filter((function(e){return-1===a.indexOf(e)})),w},on:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach((function(a){a.addEventListener("medium-zoom:"+e,t,n)})),m.push({type:"medium-zoom:"+e,listener:t,options:n}),w},off:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach((function(a){a.removeEventListener("medium-zoom:"+e,t,n)})),m=m.filter((function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())})),w},getOptions:function(){return g},getImages:function(){return f},getZoomedImage:function(){return v.original}};return w},{themeConfig:u}=a.default;function p(e){return document.querySelector('html[data-theme="dark"]')?e.background?.dark||"rgb(50, 50, 50)":e.background?.light||"rgb(255, 255, 255)"}const f=function(){if("undefined"==typeof window)return null;let e;const{zoom:t}=u,{selector:n=".markdown img",config:a={}}=t||{};return a.background=p(t),new MutationObserver((function(n){e&&e.update({background:p(t)})})).observe(document.querySelector("html"),{attributes:!0,attributeFilter:["data-theme"]}),setTimeout((()=>{e&&e.detach(),e=d(n,a)}),1e3),{onRouteUpdate(){setTimeout((()=>{e&&e.detach(),e=d(n,a)}),1e3)}}}()},86010:(e,t,n)=>{"use strict";function a(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,n=0,o="";n{"use strict";n.d(t,{lX:()=>E,q_:()=>A,ob:()=>h,PP:()=>R,Ep:()=>m,Hp:()=>b});var a=n(87462);function o(e){return"/"===e.charAt(0)}function r(e,t){for(var n=t,a=n+1,o=e.length;a=0;p--){var f=i[p];"."===f?r(i,p):".."===f?(r(i,p),u++):u&&(r(i,p),u--)}if(!l)for(;u--;u)i.unshift("..");!l||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};function c(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const s=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,a){return e(t,n[a])}));if("object"==typeof t||"object"==typeof n){var a=c(t),o=c(n);return a!==t||o!==n?e(a,o):Object.keys(Object.assign({},t,n)).every((function(a){return e(t[a],n[a])}))}return!1};var l=n(38776);function d(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function p(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 f(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function m(e){var t=e.pathname,n=e.search,a=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),a&&"#"!==a&&(o+="#"===a.charAt(0)?a:"#"+a),o}function h(e,t,n,o){var r;"string"==typeof e?(r=function(e){var t=e||"/",n="",a="",o=t.indexOf("#");-1!==o&&(a=t.substr(o),t=t.substr(0,o));var r=t.indexOf("?");return-1!==r&&(n=t.substr(r),t=t.substr(0,r)),{pathname:t,search:"?"===n?"":n,hash:"#"===a?"":a}}(e),r.state=t):(void 0===(r=(0,a.Z)({},e)).pathname&&(r.pathname=""),r.search?"?"!==r.search.charAt(0)&&(r.search="?"+r.search):r.search="",r.hash?"#"!==r.hash.charAt(0)&&(r.hash="#"+r.hash):r.hash="",void 0!==t&&void 0===r.state&&(r.state=t));try{r.pathname=decodeURI(r.pathname)}catch(c){throw c instanceof URIError?new URIError('Pathname "'+r.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):c}return n&&(r.key=n),o?r.pathname?"/"!==r.pathname.charAt(0)&&(r.pathname=i(r.pathname,o.pathname)):r.pathname=o.pathname:r.pathname||(r.pathname="/"),r}function b(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&s(e.state,t.state)}function g(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,a,o){if(null!=e){var r="function"==typeof e?e(t,n):e;"string"==typeof r?"function"==typeof a?a(r,o):o(!0):o(!1!==r)}else o(!0)},appendListener:function(e){var n=!0;function a(){n&&e.apply(void 0,arguments)}return t.push(a),function(){n=!1,t=t.filter((function(e){return e!==a}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),a=0;at?n.splice(t,n.length-t,o):n.push(o),u({action:a,location:o,index:t,entries:n})}}))},replace:function(e,t){var a="REPLACE",o=h(e,t,p(),w.location);d.confirmTransitionTo(o,a,n,(function(e){e&&(w.entries[w.index]=o,u({action:a,location:o}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var a=n(59864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},r={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},c={};function s(e){return a.isMemo(e)?i:c[e.$$typeof]||o}c[a.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},c[a.Memo]=i;var l=Object.defineProperty,d=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,a){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,a)}var i=d(n);u&&(i=i.concat(u(n)));for(var c=s(t),h=s(n),b=0;b{"use strict";e.exports=function(e,t,n,a,o,r,i,c){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,a,o,r,i,c],d=0;(s=new Error(t.replace(/%s/g,(function(){return l[d++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},32497:(e,t,n)=>{"use strict";n.r(t)},52295:(e,t,n)=>{"use strict";n.r(t)},74865:function(e,t,n){var a,o;a=function(){var e,t,n={version:"0.2.0"},a=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 o(e,t,n){return en?n:e}function r(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===a.positionUsing?{transform:"translate3d("+r(e)+"%,0,0)"}:"translate"===a.positionUsing?{transform:"translate("+r(e)+"%,0)"}:{"margin-left":r(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(a[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,a.minimum,1),n.status=1===e?null:e;var r=n.render(!t),l=r.querySelector(a.barSelector),d=a.speed,u=a.easing;return r.offsetWidth,c((function(t){""===a.positionUsing&&(a.positionUsing=n.getPositioningCSS()),s(l,i(e,d,u)),1===e?(s(r,{transition:"none",opacity:1}),r.offsetWidth,setTimeout((function(){s(r,{transition:"all "+d+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),d)}),d)):setTimeout(t,d)})),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())}),a.trickleSpeed)};return a.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)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*a.trickleRate)},e=0,t=0,n.promise=function(a){return a&&"resolved"!==a.state()?(0===t&&n.start(),e++,t++,a.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");d(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=a.template;var o,i=t.querySelector(a.barSelector),c=e?"-100":r(n.status||0),l=document.querySelector(a.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),a.showSpinner||(o=t.querySelector(a.spinnerSelector))&&f(o),l!=document.body&&d(l,"nprogress-custom-parent"),l.appendChild(t),t},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(a.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 c=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function a(t){var n=document.body.style;if(t in n)return t;for(var a,o=e.length,r=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((a=e[o]+r)in n)return a;return t}function o(e){return e=n(e),t[e]||(t[e]=a(e))}function r(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,a,o=arguments;if(2==o.length)for(n in t)void 0!==(a=t[n])&&t.hasOwnProperty(n)&&r(e,n,a);else r(e,o[1],o[2])}}();function l(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function d(e,t){var n=p(e),a=n+t;l(n,t)||(e.className=a.substring(1))}function u(e,t){var n,a=p(e);l(e,t)&&(n=a.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===(o="function"==typeof a?a.call(t,n,t,e):a)||(e.exports=o)},27418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach((function(e){a[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},a)).join("")}catch(o){return!1}}()?Object.assign:function(e,o){for(var r,i,c=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s{"use strict";n.d(t,{Z:()=>r});var a=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},a={util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=u.reach);E+=S.value.length,S=S.next){var x=S.value;if(t.length>e.length)return;if(!(x instanceof o)){var _,C=1;if(v){if(!(_=r(k,E,e,g))||_.index>=e.length)break;var T=_.index,B=_.index+_[0].length,A=E;for(A+=S.value.length;T>=A;)A+=(S=S.next).value.length;if(E=A-=S.value.length,S.value instanceof o)continue;for(var L=S;L!==t.tail&&(Au.reach&&(u.reach=O);var I=S.prev;if(N&&(I=s(t,I,N),E+=N.length),l(t,I,C),S=s(t,I,new o(p,b?a.tokenize(R,b):R,y,R)),P&&s(t,S,P),C>1){var D={cause:p+","+m,reach:O};i(e,t,n,S.prev,E,D),u&&D.reach>u.reach&&(u.reach=D.reach)}}}}}}function c(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var a=t.next,o={value:n,prev:t,next:a};return t.next=o,a.prev=o,e.length++,o}function l(e,t,n){for(var a=t.next,o=0;o"+r.content+""},a}(),o=a;a.default=a,o.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},o.languages.markup.tag.inside["attr-value"].inside.entity=o.languages.markup.entity,o.languages.markup.doctype.inside["internal-subset"].inside=o.languages.markup,o.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(o.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:o.languages[t]},n.cdata=/^$/i;var a={"included-cdata":{pattern://i,inside:n}};a["language-"+t]={pattern:/[\s\S]+/,inside:o.languages[t]};var r={};r[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:a},o.languages.insertBefore("markup","cdata",r)}}),Object.defineProperty(o.languages.markup.tag,"addAttribute",{value:function(e,t){o.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:o.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),o.languages.html=o.languages.markup,o.languages.mathml=o.languages.markup,o.languages.svg=o.languages.markup,o.languages.xml=o.languages.extend("markup",{}),o.languages.ssml=o.languages.xml,o.languages.atom=o.languages.xml,o.languages.rss=o.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],r=a.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},o.languages.c=o.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),o.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),o.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},o.languages.c.string],char:o.languages.c.char,comment:o.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:o.languages.c}}}}),o.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete o.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(o),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(o),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var a={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},o={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:a,number:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:a,number:o})}(o),o.languages.javascript=o.languages.extend("clike",{"class-name":[o.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),o.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,o.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:o.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:o.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:o.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:o.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:o.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),o.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:o.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),o.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),o.languages.markup&&(o.languages.markup.tag.addInlined("script","javascript"),o.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),o.languages.js=o.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(o),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,a="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),r=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return a})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return a}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return a})).replace(/<>/g,(function(){return"(?:"+o+"|"+r+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(r),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(o),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var a=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return a})),r=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+r+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+r+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(a),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+r+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(a),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,a=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(o),o.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:o.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},o.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var c=p(/^\{$/,/^\}$/);if(-1===c)continue;for(var s=n;s=0&&f(l,"variable-input")}}}}function d(e){return t[n+e]}function u(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,a=t.inside.interpolation,o=a.inside["interpolation-punctuation"],r=a.pattern.source;function i(t,a){if(e.languages[t])return{pattern:RegExp("((?:"+a+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function c(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,a){var o={code:t,grammar:n,language:a};return e.hooks.run("before-tokenize",o),o.tokens=e.tokenize(o.code,o.grammar),e.hooks.run("after-tokenize",o),o.tokens}function l(t){var n={};n["interpolation-punctuation"]=o;var r=e.tokenize(t,n);if(3===r.length){var i=[1,1];i.push.apply(i,s(r[1],e.languages.javascript,"javascript")),r.splice.apply(r,i)}return new e.Token("interpolation",r,a.alias,t)}function d(t,n,a){var o=e.tokenize(t,{interpolation:{pattern:RegExp(r),lookbehind:!0}}),i=0,d={},u=s(o.map((function(e){if("string"==typeof e)return e;for(var n,o=e.content;-1!==t.indexOf(n=c(i++,a)););return d[n]=o,n})).join(""),n,a),p=Object.keys(d);return i=0,function e(t){for(var n=0;n=p.length)return;var a=t[n];if("string"==typeof a||"string"==typeof a.content){var o=p[i],r="string"==typeof a?a:a.content,c=r.indexOf(o);if(-1!==c){++i;var s=r.substring(0,c),u=l(d[o]),f=r.substring(c+o.length),m=[];if(s&&m.push(s),m.push(u),f){var h=[f];e(h),m.push.apply(m,h)}"string"==typeof a?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):a.content=m}}else{var b=a.content;Array.isArray(b)?e(b):e([b])}}}(u),new e.Token(a,u,"language-"+a,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in u&&function t(n){for(var a=0,o=n.length;a]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(o),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],a=0;a*\.{3}(?:[^{}]|)*\})/.source;function r(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return a})).replace(//g,(function(){return o})),RegExp(e,t)}o=r(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=r(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:r(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:r(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},c=function(t){for(var n=[],a=0;a0&&n[n.length-1].tagName===i(o.content[0].content[1])&&n.pop():"/>"===o.content[o.content.length-1].content||n.push({tagName:i(o.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:r=!0),(r||"string"==typeof o)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(o);a0&&("string"==typeof t[a-1]||"plain-text"===t[a-1].type)&&(s=i(t[a-1])+s,t.splice(a-1,1),a--),t[a]=new e.Token("plain-text",s,null,s)}o.content&&"string"!=typeof o.content&&c(o.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||c(e.tokens)}))}(o),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var a=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+a+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(o),o.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},o.languages.go=o.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),o.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete o.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,a,o,r){if(n.language===a){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof r&&!r(e))return e;for(var o,c=i.length;-1!==n.code.indexOf(o=t(a,c));)++c;return i[c]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,a){if(n.language===a&&n.tokenStack){n.grammar=e.languages[a];var o=0,r=Object.keys(n.tokenStack);!function i(c){for(var s=0;s=r.length);s++){var l=c[s];if("string"==typeof l||l.content&&"string"==typeof l.content){var d=r[o],u=n.tokenStack[d],p="string"==typeof l?l:l.content,f=t(a,d),m=p.indexOf(f);if(m>-1){++o;var h=p.substring(0,m),b=new e.Token(a,e.tokenize(u,n.grammar),"language-"+a,u),g=p.substring(m+f.length),v=[];h&&v.push.apply(v,i([h])),v.push(b),g&&v.push.apply(v,i([g])),"string"==typeof l?c.splice.apply(c,[s,1].concat(v)):l.content=v}}else l.content&&i(l.content)}return c}(n.tokens)}}}})}(o),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(o),o.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},o.languages.webmanifest=o.languages.json,o.languages.less=o.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),o.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),o.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},o.languages.objectivec=o.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete o.languages.objectivec["class-name"],o.languages.objc=o.languages.objectivec,o.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},o.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},o.languages.python["string-interpolation"].inside.interpolation.inside.rest=o.languages.python,o.languages.py=o.languages.python,o.languages.reason=o.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),o.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete o.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(o),o.languages.scss=o.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),o.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),o.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),o.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),o.languages.scss.atrule.inside.rest=o.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},a={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};a.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:a}},a.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:a}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:a}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:a}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:a}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:a.interpolation}},rest:a}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:a.interpolation,comment:a.comment,punctuation:/[{},]/}},func:a.func,string:a.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:a.interpolation,punctuation:/[{}()\[\];:.]/}}(o),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(o),o.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const r=o},29901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const a=n(29901),o=n(39642),r=new Set;function i(e){void 0===e?e=Object.keys(a.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...r,...Object.keys(Prism.languages)];o(a,e,t).load((e=>{if(!(e in a.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(16500).resolve(t)],delete Prism.languages[e],n(16500)(t),r.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var a={"./":2885};function o(e){var t=r(e);return n(t)}function r(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}o.keys=function(){return Object.keys(a)},o.resolve=r,e.exports=o,o.id=6726},16500:(e,t,n)=>{var a={"./":2885};function o(e){var t=r(e);return n(t)}function r(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}o.keys=function(){return Object.keys(a)},o.resolve=r,e.exports=o,o.id=16500},39642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,a=e.length;n "));var c={},s=e[a];if(s){function l(t){if(!(t in e))throw new Error(a+" depends on an unknown component "+t);if(!(t in c))for(var i in o(t,r),c[t]=!0,n[t])c[i]=!0}t(s.require,l),t(s.optional,l),t(s.modify,l)}n[a]=c,r.pop()}}return function(e){var t=n[e];return t||(o(e,a),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(r,i,c){var s=function(e){var t={};for(var n in e){var a=e[n];for(var o in a)if("meta"!=o){var r=a[o];t[o]="string"==typeof r?{title:r}:r}}return t}(r),l=function(e){var n;return function(a){if(a in e)return a;if(!n)for(var o in n={},e){var r=e[o];t(r&&r.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[a]||a}}(s);i=i.map(l),c=(c||[]).map(l);var d=n(i),u=n(c);i.forEach((function e(n){var a=s[n];t(a&&a.require,(function(t){t in u||(d[t]=!0,e(t))}))}));for(var p,f=a(s),m=d;o(m);){for(var h in p={},m){var b=s[h];t(b&&b.modify,(function(e){e in u&&(p[e]=!0)}))}for(var g in u)if(!(g in d))for(var v in f(g))if(v in d){p[g]=!0;break}for(var y in m=p)d[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,a,o){var r=o?o.series:void 0,i=o?o.parallel:e,c={},s={};function l(e){if(e in c)return c[e];s[e]=!0;var o,d=[];for(var u in t(e))u in n&&d.push(u);if(0===d.length)o=a(e);else{var p=i(d.map((function(e){var t=l(e);return delete s[e],t})));r?o=r(p,(function(){return a(e)})):a(e)}return c[e]=o}for(var d in n)l(d);var u=[];for(var p in s)u.push(c[p]);return i(u)}(f,d,t,n)}};return w}}();e.exports=t},92703:(e,t,n)=>{"use strict";var a=n(50414);function o(){}function r(){}r.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,r,i){if(i!==a){var c=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 c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array: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:r,resetWarningCache:o};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var a=n(67294),o=n(27418),r=n(63840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n